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