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
int
colr
;
69
int
xfrm
;
70
71
int
maxval
;
72
int
near
;
///< near lossless bound (si 0 for lossless)
73
int
t1
,
t2
,
t3
;
74
int
reset
;
///< context halfing interval ?rename
75
76
int
width
,
height
;
77
int
mb_width
,
mb_height
;
78
int
nb_components
;
79
int
block_stride
[
MAX_COMPONENTS
];
80
int
component_id
[
MAX_COMPONENTS
];
81
int
h_count
[
MAX_COMPONENTS
];
/* horizontal and vertical count for each component */
82
int
v_count
[
MAX_COMPONENTS
];
83
int
comp_index
[
MAX_COMPONENTS
];
84
int
dc_index
[
MAX_COMPONENTS
];
85
int
ac_index
[
MAX_COMPONENTS
];
86
int
nb_blocks
[
MAX_COMPONENTS
];
87
int
h_scount
[
MAX_COMPONENTS
];
88
int
v_scount
[
MAX_COMPONENTS
];
89
int
quant_sindex
[
MAX_COMPONENTS
];
90
int
h_max
,
v_max
;
/* maximum h and v counts */
91
int
quant_index
[4];
/* quant table index for each component */
92
int
last_dc
[
MAX_COMPONENTS
];
/* last DEQUANTIZED dc (XXX: am I right to do that ?) */
93
AVFrame
*
picture
;
/* picture structure */
94
AVFrame
*
picture_ptr
;
/* pointer to picture structure */
95
int
got_picture
;
///< we found a SOF and picture is valid, too.
96
int
linesize
[
MAX_COMPONENTS
];
///< linesize << interlaced
97
int8_t *
qscale_table
;
98
DECLARE_ALIGNED
(16, int16_t,
block
)[64];
99
int16_t (*
blocks
[
MAX_COMPONENTS
])[64];
///< intermediate sums (progressive mode)
100
uint8_t
*
last_nnz
[
MAX_COMPONENTS
];
101
uint64_t
coefs_finished
[
MAX_COMPONENTS
];
///< bitmask of which coefs have been completely decoded (progressive mode)
102
ScanTable
scantable
;
103
DSPContext
dsp
;
104
HpelDSPContext
hdsp
;
105
106
int
restart_interval
;
107
int
restart_count
;
108
109
int
buggy_avid
;
110
int
cs_itu601
;
111
int
interlace_polarity
;
112
113
int
mjpb_skiptosod
;
114
115
int
cur_scan
;
/* current scan, used by JPEG-LS */
116
int
flipped
;
/* true if picture is flipped */
117
118
uint16_t (*
ljpeg_buffer
)[4];
119
unsigned
int
ljpeg_buffer_size
;
120
121
int
extern_huff
;
122
AVDictionary
*
exif_metadata
;
123
}
MJpegDecodeContext
;
124
125
int
ff_mjpeg_decode_init
(
AVCodecContext
*avctx);
126
int
ff_mjpeg_decode_end
(
AVCodecContext
*avctx);
127
int
ff_mjpeg_decode_frame
(
AVCodecContext
*avctx,
128
void
*
data
,
int
*got_frame,
129
AVPacket
*avpkt);
130
int
ff_mjpeg_decode_dqt
(
MJpegDecodeContext
*
s
);
131
int
ff_mjpeg_decode_dht
(
MJpegDecodeContext
*
s
);
132
int
ff_mjpeg_decode_sof
(
MJpegDecodeContext
*
s
);
133
int
ff_mjpeg_decode_sos
(
MJpegDecodeContext
*
s
,
134
const
uint8_t
*mb_bitmask,
const
AVFrame
*reference);
135
int
ff_mjpeg_find_marker
(
MJpegDecodeContext
*
s
,
136
const
uint8_t
**buf_ptr,
const
uint8_t
*buf_end,
137
const
uint8_t
**unescaped_buf_ptr,
int
*unescaped_buf_size);
138
139
#endif
/* AVCODEC_MJPEGDEC_H */
Generated on Sat Jan 25 2014 19:51:51 for FFmpeg by
1.8.2