FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
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 FFmpeg.
8
*
9
* FFmpeg 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
* FFmpeg 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 FFmpeg; if not, write to the Free Software
21
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
*/
23
24
/**
25
* @file
26
* MJPEG decoder.
27
*/
28
29
#ifndef AVCODEC_MJPEGDEC_H
30
#define AVCODEC_MJPEGDEC_H
31
32
#include "
libavutil/log.h
"
33
34
#include "
avcodec.h
"
35
#include "
get_bits.h
"
36
#include "
dsputil.h
"
37
#include "
hpeldsp.h
"
38
39
#define MAX_COMPONENTS 4
40
41
typedef
struct
MJpegDecodeContext
{
42
AVClass
*
class
;
43
AVCodecContext
*
avctx
;
44
GetBitContext
gb
;
45
46
int
start_code
;
/* current start code */
47
int
buffer_size
;
48
uint8_t
*
buffer
;
49
50
int16_t
quant_matrixes
[4][64];
51
VLC
vlcs
[3][4];
52
int
qscale
[4];
///< quantizer scale calculated from quant_matrixes
53
54
int
org_height
;
/* size given at codec init */
55
int
first_picture
;
/* true if decoding first picture */
56
int
interlaced
;
/* true if interlaced */
57
int
bottom_field
;
/* true if bottom field */
58
int
lossless
;
59
int
ls
;
60
int
progressive
;
61
int
rgb
;
62
int
upscale_h
;
63
int
chroma_height
;
64
int
upscale_v
;
65
int
rct
;
/* standard rct */
66
int
pegasus_rct
;
/* pegasus reversible colorspace transform */
67
int
bits
;
/* bits per component */
68
69
int
maxval
;
70
int
near
;
///< near lossless bound (si 0 for lossless)
71
int
t1
,
t2
,
t3
;
72
int
reset
;
///< context halfing interval ?rename
73
74
int
width
,
height
;
75
int
mb_width
,
mb_height
;
76
int
nb_components
;
77
int
block_stride
[
MAX_COMPONENTS
];
78
int
component_id
[
MAX_COMPONENTS
];
79
int
h_count
[
MAX_COMPONENTS
];
/* horizontal and vertical count for each component */
80
int
v_count
[
MAX_COMPONENTS
];
81
int
comp_index
[
MAX_COMPONENTS
];
82
int
dc_index
[
MAX_COMPONENTS
];
83
int
ac_index
[
MAX_COMPONENTS
];
84
int
nb_blocks
[
MAX_COMPONENTS
];
85
int
h_scount
[
MAX_COMPONENTS
];
86
int
v_scount
[
MAX_COMPONENTS
];
87
int
h_max
,
v_max
;
/* maximum h and v counts */
88
int
quant_index
[4];
/* quant table index for each component */
89
int
last_dc
[
MAX_COMPONENTS
];
/* last DEQUANTIZED dc (XXX: am I right to do that ?) */
90
AVFrame
picture
;
/* picture structure */
91
AVFrame
*
picture_ptr
;
/* pointer to picture structure */
92
int
got_picture
;
///< we found a SOF and picture is valid, too.
93
int
linesize
[
MAX_COMPONENTS
];
///< linesize << interlaced
94
int8_t *
qscale_table
;
95
DECLARE_ALIGNED
(16, int16_t,
block
)[64];
96
int16_t (*
blocks
[
MAX_COMPONENTS
])[64];
///< intermediate sums (progressive mode)
97
uint8_t
*
last_nnz
[
MAX_COMPONENTS
];
98
uint64_t
coefs_finished
[
MAX_COMPONENTS
];
///< bitmask of which coefs have been completely decoded (progressive mode)
99
ScanTable
scantable
;
100
DSPContext
dsp
;
101
HpelDSPContext
hdsp
;
102
103
int
restart_interval
;
104
int
restart_count
;
105
106
int
buggy_avid
;
107
int
cs_itu601
;
108
int
interlace_polarity
;
109
110
int
mjpb_skiptosod
;
111
112
int
cur_scan
;
/* current scan, used by JPEG-LS */
113
int
flipped
;
/* true if picture is flipped */
114
115
uint16_t (*
ljpeg_buffer
)[4];
116
unsigned
int
ljpeg_buffer_size
;
117
118
int
extern_huff
;
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 Wed Jul 10 2013 23:48:01 for FFmpeg by
1.8.2