FFmpeg
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
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
38
#define MAX_COMPONENTS 4
39
40
typedef
struct
MJpegDecodeContext
{
41
AVClass
*
class
;
42
AVCodecContext
*
avctx
;
43
GetBitContext
gb
;
44
45
int
start_code
;
/* current start code */
46
int
buffer_size
;
47
uint8_t
*
buffer
;
48
49
int16_t
quant_matrixes
[4][64];
50
VLC
vlcs
[3][4];
51
int
qscale
[4];
///< quantizer scale calculated from quant_matrixes
52
53
int
org_height
;
/* size given at codec init */
54
int
first_picture
;
/* true if decoding first picture */
55
int
interlaced
;
/* true if interlaced */
56
int
bottom_field
;
/* true if bottom field */
57
int
lossless
;
58
int
ls
;
59
int
progressive
;
60
int
rgb
;
61
int
upscale_h
;
62
int
chroma_height
;
63
int
upscale_v
;
64
int
rct
;
/* standard rct */
65
int
pegasus_rct
;
/* pegasus reversible colorspace transform */
66
int
bits
;
/* bits per component */
67
68
int
maxval
;
69
int
near
;
///< near lossless bound (si 0 for lossless)
70
int
t1
,
t2
,
t3
;
71
int
reset
;
///< context halfing interval ?rename
72
73
int
width
,
height
;
74
int
mb_width
,
mb_height
;
75
int
nb_components
;
76
int
block_stride
[
MAX_COMPONENTS
];
77
int
component_id
[
MAX_COMPONENTS
];
78
int
h_count
[
MAX_COMPONENTS
];
/* horizontal and vertical count for each component */
79
int
v_count
[
MAX_COMPONENTS
];
80
int
comp_index
[
MAX_COMPONENTS
];
81
int
dc_index
[
MAX_COMPONENTS
];
82
int
ac_index
[
MAX_COMPONENTS
];
83
int
nb_blocks
[
MAX_COMPONENTS
];
84
int
h_scount
[
MAX_COMPONENTS
];
85
int
v_scount
[
MAX_COMPONENTS
];
86
int
h_max
,
v_max
;
/* maximum h and v counts */
87
int
quant_index
[4];
/* quant table index for each component */
88
int
last_dc
[
MAX_COMPONENTS
];
/* last DEQUANTIZED dc (XXX: am I right to do that ?) */
89
AVFrame
picture
;
/* picture structure */
90
AVFrame
*
picture_ptr
;
/* pointer to picture structure */
91
int
got_picture
;
///< we found a SOF and picture is valid, too.
92
int
linesize
[
MAX_COMPONENTS
];
///< linesize << interlaced
93
int8_t *
qscale_table
;
94
DECLARE_ALIGNED
(16,
DCTELEM
,
block
)[64];
95
DCTELEM
(*
blocks
[
MAX_COMPONENTS
])[64];
///< intermediate sums (progressive mode)
96
uint8_t
*
last_nnz
[
MAX_COMPONENTS
];
97
uint64_t
coefs_finished
[
MAX_COMPONENTS
];
///< bitmask of which coefs have been completely decoded (progressive mode)
98
ScanTable
scantable
;
99
DSPContext
dsp
;
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
}
MJpegDecodeContext
;
118
119
int
ff_mjpeg_decode_init
(
AVCodecContext
*avctx);
120
int
ff_mjpeg_decode_end
(
AVCodecContext
*avctx);
121
int
ff_mjpeg_decode_frame
(
AVCodecContext
*avctx,
122
void
*
data
,
int
*got_frame,
123
AVPacket
*avpkt);
124
int
ff_mjpeg_decode_dqt
(
MJpegDecodeContext
*s);
125
int
ff_mjpeg_decode_dht
(
MJpegDecodeContext
*s);
126
int
ff_mjpeg_decode_sof
(
MJpegDecodeContext
*s);
127
int
ff_mjpeg_decode_sos
(
MJpegDecodeContext
*s,
128
const
uint8_t
*mb_bitmask,
const
AVFrame
*reference);
129
int
ff_mjpeg_find_marker
(
MJpegDecodeContext
*s,
130
const
uint8_t
**buf_ptr,
const
uint8_t
*buf_end,
131
const
uint8_t
**unescaped_buf_ptr,
int
*unescaped_buf_size);
132
133
#endif
/* AVCODEC_MJPEGDEC_H */
Generated on Sat May 25 2013 03:58:37 for FFmpeg by
1.8.2