Libav
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavcodec
mjpegdec.h
Go to the documentation of this file.
1
/*
2
* MJPEG decoder
3
* Copyright (c) 2000, 2001 Fabrice Bellard
4
* Copyright (c) 2003 Alex Beregszaszi
5
* Copyright (c) 2003-2004 Michael Niedermayer
6
*
7
* This file is part of Libav.
8
*
9
* Libav is free software; you can redistribute it and/or
10
* modify it under the terms of the GNU Lesser General Public
11
* License as published by the Free Software Foundation; either
12
* version 2.1 of the License, or (at your option) any later version.
13
*
14
* Libav is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
* Lesser General Public License for more details.
18
*
19
* You should have received a copy of the GNU Lesser General Public
20
* License along with Libav; if not, write to the Free Software
21
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
*/
23
29
#ifndef AVCODEC_MJPEGDEC_H
30
#define AVCODEC_MJPEGDEC_H
31
32
#include "
libavutil/log.h
"
33
#include "
libavutil/pixdesc.h
"
34
35
#include "
avcodec.h
"
36
#include "
get_bits.h
"
37
#include "
dsputil.h
"
38
#include "
hpeldsp.h
"
39
40
#define MAX_COMPONENTS 4
41
42
typedef
struct
MJpegDecodeContext
{
43
AVClass
*
class
;
44
AVCodecContext
*
avctx
;
45
GetBitContext
gb
;
46
47
int
start_code
;
/* current start code */
48
int
buffer_size
;
49
uint8_t
*
buffer
;
50
51
int16_t
quant_matrixes
[4][64];
52
VLC
vlcs
[3][4];
53
int
qscale
[4];
54
55
int
org_height
;
/* size given at codec init */
56
int
first_picture
;
/* true if decoding first picture */
57
int
interlaced
;
/* true if interlaced */
58
int
bottom_field
;
/* true if bottom field */
59
int
lossless
;
60
int
ls
;
61
int
progressive
;
62
int
rgb
;
63
int
rct
;
/* standard rct */
64
int
pegasus_rct
;
/* pegasus reversible colorspace transform */
65
int
bits
;
/* bits per component */
66
67
int
maxval
;
68
int
near
;
69
int
t1
,
t2
,
t3
;
70
int
reset
;
71
72
int
width
,
height
;
73
int
mb_width
,
mb_height
;
74
int
nb_components
;
75
int
block_stride
[
MAX_COMPONENTS
];
76
int
component_id
[
MAX_COMPONENTS
];
77
int
h_count
[
MAX_COMPONENTS
];
/* horizontal and vertical count for each component */
78
int
v_count
[
MAX_COMPONENTS
];
79
int
comp_index
[
MAX_COMPONENTS
];
80
int
dc_index
[
MAX_COMPONENTS
];
81
int
ac_index
[
MAX_COMPONENTS
];
82
int
nb_blocks
[
MAX_COMPONENTS
];
83
int
h_scount
[
MAX_COMPONENTS
];
84
int
v_scount
[
MAX_COMPONENTS
];
85
int
h_max
,
v_max
;
/* maximum h and v counts */
86
int
quant_index
[4];
/* quant table index for each component */
87
int
last_dc
[
MAX_COMPONENTS
];
/* last DEQUANTIZED dc (XXX: am I right to do that ?) */
88
AVFrame
*
picture
;
/* picture structure */
89
AVFrame
*
picture_ptr
;
/* pointer to picture structure */
90
int
got_picture
;
91
int
linesize
[
MAX_COMPONENTS
];
92
int8_t *
qscale_table
;
93
DECLARE_ALIGNED
(16, int16_t,
block
)[64];
94
int16_t (*
blocks
[
MAX_COMPONENTS
])[64];
95
uint8_t
*
last_nnz
[
MAX_COMPONENTS
];
96
uint64_t
coefs_finished
[
MAX_COMPONENTS
];
97
ScanTable
scantable
;
98
DSPContext
dsp
;
99
HpelDSPContext
hdsp
;
100
101
int
restart_interval
;
102
int
restart_count
;
103
104
int
buggy_avid
;
105
int
cs_itu601
;
106
int
interlace_polarity
;
107
108
int
mjpb_skiptosod
;
109
110
int
cur_scan
;
/* current scan, used by JPEG-LS */
111
int
flipped
;
/* true if picture is flipped */
112
113
uint16_t (*
ljpeg_buffer
)[4];
114
unsigned
int
ljpeg_buffer_size
;
115
116
int
extern_huff
;
117
118
const
AVPixFmtDescriptor
*
pix_desc
;
119
}
MJpegDecodeContext
;
120
121
int
ff_mjpeg_decode_init
(
AVCodecContext
*avctx);
122
int
ff_mjpeg_decode_end
(
AVCodecContext
*avctx);
123
int
ff_mjpeg_decode_frame
(
AVCodecContext
*avctx,
124
void
*
data
,
int
*got_frame,
125
AVPacket
*avpkt);
126
int
ff_mjpeg_decode_dqt
(
MJpegDecodeContext
*s);
127
int
ff_mjpeg_decode_dht
(
MJpegDecodeContext
*s);
128
int
ff_mjpeg_decode_sof
(
MJpegDecodeContext
*s);
129
int
ff_mjpeg_decode_sos
(
MJpegDecodeContext
*s,
130
const
uint8_t
*mb_bitmask,
const
AVFrame
*reference);
131
int
ff_mjpeg_find_marker
(
MJpegDecodeContext
*s,
132
const
uint8_t
**buf_ptr,
const
uint8_t
*buf_end,
133
const
uint8_t
**unescaped_buf_ptr,
int
*unescaped_buf_size);
134
135
#endif
/* AVCODEC_MJPEGDEC_H */
Generated on Thu Sep 30 2021 23:03:13 for Libav by
1.8.1.2