Mercurial > libavcodec.hg
comparison mjpeg.c @ 1064:b32afefe7d33 libavcodec
* UINTX -> uintx_t INTX -> intx_t
| author | kabi |
|---|---|
| date | Tue, 11 Feb 2003 16:35:48 +0000 |
| parents | 081b1f28c1ae |
| children | f59c3f66363b |
comparison
equal
deleted
inserted
replaced
| 1063:fdeac9642346 | 1064:b32afefe7d33 |
|---|---|
| 28 /* use two quantizer tables (one for luminance and one for chrominance) */ | 28 /* use two quantizer tables (one for luminance and one for chrominance) */ |
| 29 /* not yet working */ | 29 /* not yet working */ |
| 30 #undef TWOMATRIXES | 30 #undef TWOMATRIXES |
| 31 | 31 |
| 32 typedef struct MJpegContext { | 32 typedef struct MJpegContext { |
| 33 UINT8 huff_size_dc_luminance[12]; | 33 uint8_t huff_size_dc_luminance[12]; |
| 34 UINT16 huff_code_dc_luminance[12]; | 34 uint16_t huff_code_dc_luminance[12]; |
| 35 UINT8 huff_size_dc_chrominance[12]; | 35 uint8_t huff_size_dc_chrominance[12]; |
| 36 UINT16 huff_code_dc_chrominance[12]; | 36 uint16_t huff_code_dc_chrominance[12]; |
| 37 | 37 |
| 38 UINT8 huff_size_ac_luminance[256]; | 38 uint8_t huff_size_ac_luminance[256]; |
| 39 UINT16 huff_code_ac_luminance[256]; | 39 uint16_t huff_code_ac_luminance[256]; |
| 40 UINT8 huff_size_ac_chrominance[256]; | 40 uint8_t huff_size_ac_chrominance[256]; |
| 41 UINT16 huff_code_ac_chrominance[256]; | 41 uint16_t huff_code_ac_chrominance[256]; |
| 42 } MJpegContext; | 42 } MJpegContext; |
| 43 | 43 |
| 44 /* JPEG marker codes */ | 44 /* JPEG marker codes */ |
| 45 typedef enum { | 45 typedef enum { |
| 46 /* start of frame */ | 46 /* start of frame */ |
| 150 }; | 150 }; |
| 151 #endif | 151 #endif |
| 152 | 152 |
| 153 /* Set up the standard Huffman tables (cf. JPEG standard section K.3) */ | 153 /* Set up the standard Huffman tables (cf. JPEG standard section K.3) */ |
| 154 /* IMPORTANT: these are only valid for 8-bit data precision! */ | 154 /* IMPORTANT: these are only valid for 8-bit data precision! */ |
| 155 static const UINT8 bits_dc_luminance[17] = | 155 static const uint8_t bits_dc_luminance[17] = |
| 156 { /* 0-base */ 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }; | 156 { /* 0-base */ 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }; |
| 157 static const UINT8 val_dc_luminance[] = | 157 static const uint8_t val_dc_luminance[] = |
| 158 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; | 158 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; |
| 159 | 159 |
| 160 static const UINT8 bits_dc_chrominance[17] = | 160 static const uint8_t bits_dc_chrominance[17] = |
| 161 { /* 0-base */ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }; | 161 { /* 0-base */ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }; |
| 162 static const UINT8 val_dc_chrominance[] = | 162 static const uint8_t val_dc_chrominance[] = |
| 163 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; | 163 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; |
| 164 | 164 |
| 165 static const UINT8 bits_ac_luminance[17] = | 165 static const uint8_t bits_ac_luminance[17] = |
| 166 { /* 0-base */ 0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d }; | 166 { /* 0-base */ 0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d }; |
| 167 static const UINT8 val_ac_luminance[] = | 167 static const uint8_t val_ac_luminance[] = |
| 168 { 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, | 168 { 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, |
| 169 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, | 169 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, |
| 170 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, | 170 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, |
| 171 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, | 171 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, |
| 172 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, | 172 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, |
| 186 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, | 186 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, |
| 187 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, | 187 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, |
| 188 0xf9, 0xfa | 188 0xf9, 0xfa |
| 189 }; | 189 }; |
| 190 | 190 |
| 191 static const UINT8 bits_ac_chrominance[17] = | 191 static const uint8_t bits_ac_chrominance[17] = |
| 192 { /* 0-base */ 0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77 }; | 192 { /* 0-base */ 0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77 }; |
| 193 | 193 |
| 194 static const UINT8 val_ac_chrominance[] = | 194 static const uint8_t val_ac_chrominance[] = |
| 195 { 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, | 195 { 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, |
| 196 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, | 196 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, |
| 197 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, | 197 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, |
| 198 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, | 198 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, |
| 199 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, | 199 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, |
| 214 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, | 214 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, |
| 215 0xf9, 0xfa | 215 0xf9, 0xfa |
| 216 }; | 216 }; |
| 217 | 217 |
| 218 /* isn't this function nicer than the one in the libjpeg ? */ | 218 /* isn't this function nicer than the one in the libjpeg ? */ |
| 219 static void build_huffman_codes(UINT8 *huff_size, UINT16 *huff_code, | 219 static void build_huffman_codes(uint8_t *huff_size, uint16_t *huff_code, |
| 220 const UINT8 *bits_table, const UINT8 *val_table) | 220 const uint8_t *bits_table, const uint8_t *val_table) |
| 221 { | 221 { |
| 222 int i, j, k,nb, code, sym; | 222 int i, j, k,nb, code, sym; |
| 223 | 223 |
| 224 code = 0; | 224 code = 0; |
| 225 k = 0; | 225 k = 0; |
| 280 put_bits(p, 8, code); | 280 put_bits(p, 8, code); |
| 281 } | 281 } |
| 282 | 282 |
| 283 /* table_class: 0 = DC coef, 1 = AC coefs */ | 283 /* table_class: 0 = DC coef, 1 = AC coefs */ |
| 284 static int put_huffman_table(MpegEncContext *s, int table_class, int table_id, | 284 static int put_huffman_table(MpegEncContext *s, int table_class, int table_id, |
| 285 const UINT8 *bits_table, const UINT8 *value_table) | 285 const uint8_t *bits_table, const uint8_t *value_table) |
| 286 { | 286 { |
| 287 PutBitContext *p = &s->pb; | 287 PutBitContext *p = &s->pb; |
| 288 int n, i; | 288 int n, i; |
| 289 | 289 |
| 290 put_bits(p, 4, table_class); | 290 put_bits(p, 4, table_class); |
| 304 | 304 |
| 305 static void jpeg_table_header(MpegEncContext *s) | 305 static void jpeg_table_header(MpegEncContext *s) |
| 306 { | 306 { |
| 307 PutBitContext *p = &s->pb; | 307 PutBitContext *p = &s->pb; |
| 308 int i, j, size; | 308 int i, j, size; |
| 309 UINT8 *ptr; | 309 uint8_t *ptr; |
| 310 | 310 |
| 311 /* quant matrixes */ | 311 /* quant matrixes */ |
| 312 put_marker(p, DQT); | 312 put_marker(p, DQT); |
| 313 #ifdef TWOMATRIXES | 313 #ifdef TWOMATRIXES |
| 314 put_bits(p, 16, 2 + 2 * (1 + 64)); | 314 put_bits(p, 16, 2 + 2 * (1 + 64)); |
| 347 | 347 |
| 348 static void jpeg_put_comments(MpegEncContext *s) | 348 static void jpeg_put_comments(MpegEncContext *s) |
| 349 { | 349 { |
| 350 PutBitContext *p = &s->pb; | 350 PutBitContext *p = &s->pb; |
| 351 int size; | 351 int size; |
| 352 UINT8 *ptr; | 352 uint8_t *ptr; |
| 353 | 353 |
| 354 if (s->aspect_ratio_info) | 354 if (s->aspect_ratio_info) |
| 355 { | 355 { |
| 356 /* JFIF header */ | 356 /* JFIF header */ |
| 357 put_marker(p, APP0); | 357 put_marker(p, APP0); |
| 539 | 539 |
| 540 put_marker(&s->pb, EOI); | 540 put_marker(&s->pb, EOI); |
| 541 } | 541 } |
| 542 | 542 |
| 543 static inline void mjpeg_encode_dc(MpegEncContext *s, int val, | 543 static inline void mjpeg_encode_dc(MpegEncContext *s, int val, |
| 544 UINT8 *huff_size, UINT16 *huff_code) | 544 uint8_t *huff_size, uint16_t *huff_code) |
| 545 { | 545 { |
| 546 int mant, nbits; | 546 int mant, nbits; |
| 547 | 547 |
| 548 if (val == 0) { | 548 if (val == 0) { |
| 549 put_bits(&s->pb, huff_size[0], huff_code[0]); | 549 put_bits(&s->pb, huff_size[0], huff_code[0]); |
| 570 static void encode_block(MpegEncContext *s, DCTELEM *block, int n) | 570 static void encode_block(MpegEncContext *s, DCTELEM *block, int n) |
| 571 { | 571 { |
| 572 int mant, nbits, code, i, j; | 572 int mant, nbits, code, i, j; |
| 573 int component, dc, run, last_index, val; | 573 int component, dc, run, last_index, val; |
| 574 MJpegContext *m = s->mjpeg_ctx; | 574 MJpegContext *m = s->mjpeg_ctx; |
| 575 UINT8 *huff_size_ac; | 575 uint8_t *huff_size_ac; |
| 576 UINT16 *huff_code_ac; | 576 uint16_t *huff_code_ac; |
| 577 | 577 |
| 578 /* DC coef */ | 578 /* DC coef */ |
| 579 component = (n <= 3 ? 0 : n - 4 + 1); | 579 component = (n <= 3 ? 0 : n - 4 + 1); |
| 580 dc = block[0]; /* overflow is impossible */ | 580 dc = block[0]; /* overflow is impossible */ |
| 581 val = dc - s->last_dc[component]; | 581 val = dc - s->last_dc[component]; |
| 649 GetBitContext gb; | 649 GetBitContext gb; |
| 650 int mpeg_enc_ctx_allocated; /* true if decoding context allocated */ | 650 int mpeg_enc_ctx_allocated; /* true if decoding context allocated */ |
| 651 | 651 |
| 652 int start_code; /* current start code */ | 652 int start_code; /* current start code */ |
| 653 int buffer_size; | 653 int buffer_size; |
| 654 UINT8 *buffer; | 654 uint8_t *buffer; |
| 655 | 655 |
| 656 INT16 quant_matrixes[4][64]; | 656 int16_t quant_matrixes[4][64]; |
| 657 VLC vlcs[2][4]; | 657 VLC vlcs[2][4]; |
| 658 | 658 |
| 659 int org_width, org_height; /* size given at codec init */ | 659 int org_width, org_height; /* size given at codec init */ |
| 660 int first_picture; /* true if decoding first picture */ | 660 int first_picture; /* true if decoding first picture */ |
| 661 int interlaced; /* true if interlaced */ | 661 int interlaced; /* true if interlaced */ |
| 667 int h_count[MAX_COMPONENTS]; /* horizontal and vertical count for each component */ | 667 int h_count[MAX_COMPONENTS]; /* horizontal and vertical count for each component */ |
| 668 int v_count[MAX_COMPONENTS]; | 668 int v_count[MAX_COMPONENTS]; |
| 669 int h_max, v_max; /* maximum h and v counts */ | 669 int h_max, v_max; /* maximum h and v counts */ |
| 670 int quant_index[4]; /* quant table index for each component */ | 670 int quant_index[4]; /* quant table index for each component */ |
| 671 int last_dc[MAX_COMPONENTS]; /* last DEQUANTIZED dc (XXX: am I right to do that ?) */ | 671 int last_dc[MAX_COMPONENTS]; /* last DEQUANTIZED dc (XXX: am I right to do that ?) */ |
| 672 UINT8 *current_picture[MAX_COMPONENTS]; /* picture structure */ | 672 uint8_t *current_picture[MAX_COMPONENTS]; /* picture structure */ |
| 673 int linesize[MAX_COMPONENTS]; | 673 int linesize[MAX_COMPONENTS]; |
| 674 DCTELEM block[64] __align8; | 674 DCTELEM block[64] __align8; |
| 675 ScanTable scantable; | 675 ScanTable scantable; |
| 676 void (*idct_put)(UINT8 *dest/*align 8*/, int line_size, DCTELEM *block/*align 16*/); | 676 void (*idct_put)(uint8_t *dest/*align 8*/, int line_size, DCTELEM *block/*align 16*/); |
| 677 | 677 |
| 678 int restart_interval; | 678 int restart_interval; |
| 679 int restart_count; | 679 int restart_count; |
| 680 | 680 |
| 681 int buggy_avid; | 681 int buggy_avid; |
| 682 int interlace_polarity; | 682 int interlace_polarity; |
| 683 } MJpegDecodeContext; | 683 } MJpegDecodeContext; |
| 684 | 684 |
| 685 static int mjpeg_decode_dht(MJpegDecodeContext *s); | 685 static int mjpeg_decode_dht(MJpegDecodeContext *s); |
| 686 | 686 |
| 687 static void build_vlc(VLC *vlc, const UINT8 *bits_table, const UINT8 *val_table, | 687 static void build_vlc(VLC *vlc, const uint8_t *bits_table, const uint8_t *val_table, |
| 688 int nb_codes) | 688 int nb_codes) |
| 689 { | 689 { |
| 690 UINT8 huff_size[256]; | 690 uint8_t huff_size[256]; |
| 691 UINT16 huff_code[256]; | 691 uint16_t huff_code[256]; |
| 692 | 692 |
| 693 memset(huff_size, 0, sizeof(huff_size)); | 693 memset(huff_size, 0, sizeof(huff_size)); |
| 694 build_huffman_codes(huff_size, huff_code, bits_table, val_table); | 694 build_huffman_codes(huff_size, huff_code, bits_table, val_table); |
| 695 | 695 |
| 696 init_vlc(vlc, 9, nb_codes, huff_size, 1, 1, huff_code, 2, 2); | 696 init_vlc(vlc, 9, nb_codes, huff_size, 1, 1, huff_code, 2, 2); |
| 774 | 774 |
| 775 /* decode huffman tables and build VLC decoders */ | 775 /* decode huffman tables and build VLC decoders */ |
| 776 static int mjpeg_decode_dht(MJpegDecodeContext *s) | 776 static int mjpeg_decode_dht(MJpegDecodeContext *s) |
| 777 { | 777 { |
| 778 int len, index, i, class, n, v, code_max; | 778 int len, index, i, class, n, v, code_max; |
| 779 UINT8 bits_table[17]; | 779 uint8_t bits_table[17]; |
| 780 UINT8 val_table[256]; | 780 uint8_t val_table[256]; |
| 781 | 781 |
| 782 len = get_bits(&s->gb, 16) - 2; | 782 len = get_bits(&s->gb, 16) - 2; |
| 783 | 783 |
| 784 while (len > 0) { | 784 while (len > 0) { |
| 785 if (len < 17) | 785 if (len < 17) |
| 926 int component, int dc_index, int ac_index, int quant_index) | 926 int component, int dc_index, int ac_index, int quant_index) |
| 927 { | 927 { |
| 928 int nbits, code, i, j, level; | 928 int nbits, code, i, j, level; |
| 929 int run, val; | 929 int run, val; |
| 930 VLC *ac_vlc; | 930 VLC *ac_vlc; |
| 931 INT16 *quant_matrix; | 931 int16_t *quant_matrix; |
| 932 | 932 |
| 933 /* DC coef */ | 933 /* DC coef */ |
| 934 val = mjpeg_decode_dc(s, dc_index); | 934 val = mjpeg_decode_dc(s, dc_index); |
| 935 if (val == 0xffff) { | 935 if (val == 0xffff) { |
| 936 dprintf("error dc\n"); | 936 dprintf("error dc\n"); |
| 1069 } | 1069 } |
| 1070 | 1070 |
| 1071 for(mb_y = 0; mb_y < mb_height; mb_y++) { | 1071 for(mb_y = 0; mb_y < mb_height; mb_y++) { |
| 1072 for(mb_x = 0; mb_x < mb_width; mb_x++) { | 1072 for(mb_x = 0; mb_x < mb_width; mb_x++) { |
| 1073 for(i=0;i<nb_components;i++) { | 1073 for(i=0;i<nb_components;i++) { |
| 1074 UINT8 *ptr; | 1074 uint8_t *ptr; |
| 1075 int x, y, c; | 1075 int x, y, c; |
| 1076 n = nb_blocks[i]; | 1076 n = nb_blocks[i]; |
| 1077 c = comp_index[i]; | 1077 c = comp_index[i]; |
| 1078 h = h_count[i]; | 1078 h = h_count[i]; |
| 1079 v = v_count[i]; | 1079 v = v_count[i]; |
| 1264 { | 1264 { |
| 1265 /* XXX: verify len field validity */ | 1265 /* XXX: verify len field validity */ |
| 1266 unsigned int len = get_bits(&s->gb, 16); | 1266 unsigned int len = get_bits(&s->gb, 16); |
| 1267 if (len >= 2 && len < 32768) { | 1267 if (len >= 2 && len < 32768) { |
| 1268 /* XXX: any better upper bound */ | 1268 /* XXX: any better upper bound */ |
| 1269 UINT8 *cbuf = av_malloc(len - 1); | 1269 uint8_t *cbuf = av_malloc(len - 1); |
| 1270 if (cbuf) { | 1270 if (cbuf) { |
| 1271 int i; | 1271 int i; |
| 1272 for (i = 0; i < len - 2; i++) | 1272 for (i = 0; i < len - 2; i++) |
| 1273 cbuf[i] = get_bits(&s->gb, 8); | 1273 cbuf[i] = get_bits(&s->gb, 8); |
| 1274 if (i > 0 && cbuf[i-1] == '\n') | 1274 if (i > 0 && cbuf[i-1] == '\n') |
| 1316 } | 1316 } |
| 1317 #endif | 1317 #endif |
| 1318 | 1318 |
| 1319 /* return the 8 bit start code value and update the search | 1319 /* return the 8 bit start code value and update the search |
| 1320 state. Return -1 if no start code found */ | 1320 state. Return -1 if no start code found */ |
| 1321 static int find_marker(UINT8 **pbuf_ptr, UINT8 *buf_end) | 1321 static int find_marker(uint8_t **pbuf_ptr, uint8_t *buf_end) |
| 1322 { | 1322 { |
| 1323 UINT8 *buf_ptr; | 1323 uint8_t *buf_ptr; |
| 1324 unsigned int v, v2; | 1324 unsigned int v, v2; |
| 1325 int val; | 1325 int val; |
| 1326 #ifdef DEBUG | 1326 #ifdef DEBUG |
| 1327 int skipped=0; | 1327 int skipped=0; |
| 1328 #endif | 1328 #endif |
| 1348 return val; | 1348 return val; |
| 1349 } | 1349 } |
| 1350 | 1350 |
| 1351 static int mjpeg_decode_frame(AVCodecContext *avctx, | 1351 static int mjpeg_decode_frame(AVCodecContext *avctx, |
| 1352 void *data, int *data_size, | 1352 void *data, int *data_size, |
| 1353 UINT8 *buf, int buf_size) | 1353 uint8_t *buf, int buf_size) |
| 1354 { | 1354 { |
| 1355 MJpegDecodeContext *s = avctx->priv_data; | 1355 MJpegDecodeContext *s = avctx->priv_data; |
| 1356 UINT8 *buf_end, *buf_ptr; | 1356 uint8_t *buf_end, *buf_ptr; |
| 1357 int i, start_code; | 1357 int i, start_code; |
| 1358 AVPicture *picture = data; | 1358 AVPicture *picture = data; |
| 1359 | 1359 |
| 1360 *data_size = 0; | 1360 *data_size = 0; |
| 1361 | 1361 |
| 1385 } | 1385 } |
| 1386 | 1386 |
| 1387 /* unescape buffer of SOS */ | 1387 /* unescape buffer of SOS */ |
| 1388 if (start_code == SOS) | 1388 if (start_code == SOS) |
| 1389 { | 1389 { |
| 1390 UINT8 *src = buf_ptr; | 1390 uint8_t *src = buf_ptr; |
| 1391 UINT8 *dst = s->buffer; | 1391 uint8_t *dst = s->buffer; |
| 1392 | 1392 |
| 1393 while (src<buf_end) | 1393 while (src<buf_end) |
| 1394 { | 1394 { |
| 1395 UINT8 x = *(src++); | 1395 uint8_t x = *(src++); |
| 1396 | 1396 |
| 1397 *(dst++) = x; | 1397 *(dst++) = x; |
| 1398 if (x == 0xff) | 1398 if (x == 0xff) |
| 1399 { | 1399 { |
| 1400 while(*src == 0xff) src++; | 1400 while(*src == 0xff) src++; |
| 1525 return buf_ptr - buf; | 1525 return buf_ptr - buf; |
| 1526 } | 1526 } |
| 1527 | 1527 |
| 1528 static int mjpegb_decode_frame(AVCodecContext *avctx, | 1528 static int mjpegb_decode_frame(AVCodecContext *avctx, |
| 1529 void *data, int *data_size, | 1529 void *data, int *data_size, |
| 1530 UINT8 *buf, int buf_size) | 1530 uint8_t *buf, int buf_size) |
| 1531 { | 1531 { |
| 1532 MJpegDecodeContext *s = avctx->priv_data; | 1532 MJpegDecodeContext *s = avctx->priv_data; |
| 1533 UINT8 *buf_end, *buf_ptr; | 1533 uint8_t *buf_end, *buf_ptr; |
| 1534 int i; | 1534 int i; |
| 1535 AVPicture *picture = data; | 1535 AVPicture *picture = data; |
| 1536 GetBitContext hgb; /* for the header */ | 1536 GetBitContext hgb; /* for the header */ |
| 1537 uint32_t dqt_offs, dht_offs, sof_offs, sos_offs, second_field_offs; | 1537 uint32_t dqt_offs, dht_offs, sof_offs, sos_offs, second_field_offs; |
| 1538 uint32_t field_size; | 1538 uint32_t field_size; |
