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