ffmpeg / libavcodec / mjpegdec.h @ d37f007d
History  View  Annotate  Download (3.53 KB)
1 
/*


2 
* MJPEG decoder

3 
* Copyright (c) 2000, 2001 Fabrice Bellard.

4 
* Copyright (c) 2003 Alex Beregszaszi

5 
* Copyright (c) 20032004 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 021101301 USA

22 
*/

23  
24 
/**

25 
* @file mjpegdec.h

26 
* MJPEG decoder.

27 
*/

28  
29 
#ifndef FFMPEG_MJPEGDEC_H

30 
#define FFMPEG_MJPEGDEC_H

31  
32 
#include "avcodec.h" 
33 
#include "bitstream.h" 
34 
#include "dsputil.h" 
35  
36 
#define MAX_COMPONENTS 4 
37  
38 
typedef struct MJpegDecodeContext { 
39 
AVCodecContext *avctx; 
40 
GetBitContext gb; 
41  
42 
int start_code; /* current start code */ 
43 
int buffer_size;

44 
uint8_t *buffer; 
45  
46 
int16_t quant_matrixes[4][64]; 
47 
VLC vlcs[2][4]; 
48 
int qscale[4]; ///< quantizer scale calculated from quant_matrixes 
49  
50 
int org_height; /* size given at codec init */ 
51 
int first_picture; /* true if decoding first picture */ 
52 
int interlaced; /* true if interlaced */ 
53 
int bottom_field; /* true if bottom field */ 
54 
int lossless;

55 
int ls;

56 
int progressive;

57 
int rgb;

58 
int rct; /* standard rct */ 
59 
int pegasus_rct; /* pegasus reversible colorspace transform */ 
60 
int bits; /* bits per component */ 
61  
62 
int maxval;

63 
int near; ///< near lossless bound (si 0 for lossless) 
64 
int t1,t2,t3;

65 
int reset; ///< context halfing intervall ?rename 
66  
67 
int width, height;

68 
int mb_width, mb_height;

69 
int nb_components;

70 
int component_id[MAX_COMPONENTS];

71 
int h_count[MAX_COMPONENTS]; /* horizontal and vertical count for each component */ 
72 
int v_count[MAX_COMPONENTS];

73 
int comp_index[MAX_COMPONENTS];

74 
int dc_index[MAX_COMPONENTS];

75 
int ac_index[MAX_COMPONENTS];

76 
int nb_blocks[MAX_COMPONENTS];

77 
int h_scount[MAX_COMPONENTS];

78 
int v_scount[MAX_COMPONENTS];

79 
int h_max, v_max; /* maximum h and v counts */ 
80 
int quant_index[4]; /* quant table index for each component */ 
81 
int last_dc[MAX_COMPONENTS]; /* last DEQUANTIZED dc (XXX: am I right to do that ?) */ 
82 
AVFrame picture; /* picture structure */

83 
int linesize[MAX_COMPONENTS]; ///< linesize << interlaced 
84 
int8_t *qscale_table; 
85 
DECLARE_ALIGNED_8(DCTELEM, block[64]);

86 
ScanTable scantable; 
87 
DSPContext dsp; 
88  
89 
int restart_interval;

90 
int restart_count;

91  
92 
int buggy_avid;

93 
int cs_itu601;

94 
int interlace_polarity;

95  
96 
int mjpb_skiptosod;

97  
98 
int cur_scan; /* current scan, used by JPEGLS */ 
99 
} MJpegDecodeContext; 
100  
101 
int ff_mjpeg_decode_init(AVCodecContext *avctx);

102 
int ff_mjpeg_decode_end(AVCodecContext *avctx);

103 
int ff_mjpeg_decode_frame(AVCodecContext *avctx,

104 
void *data, int *data_size, 
105 
const uint8_t *buf, int buf_size); 
106 
int ff_mjpeg_decode_dqt(MJpegDecodeContext *s);

107 
int ff_mjpeg_decode_dht(MJpegDecodeContext *s);

108 
int ff_mjpeg_decode_sof(MJpegDecodeContext *s);

109 
int ff_mjpeg_decode_sos(MJpegDecodeContext *s);

110  
111 
#endif /* FFMPEG_MJPEGDEC_H */ 