comparison mjpegbdec.c @ 5436:b4d41cc053b8 libavcodec

use buf_ptr to correctly decode second field
author bcoudurier
date Wed, 01 Aug 2007 13:18:23 +0000
parents 924fdd6175b1
children 51b4b51fa622
comparison
equal deleted inserted replaced
5435:fff2e4b07e28 5436:b4d41cc053b8
67 67
68 dqt_offs = get_bits_long(&hgb, 32); 68 dqt_offs = get_bits_long(&hgb, 32);
69 av_log(avctx, AV_LOG_DEBUG, "dqt offs: 0x%x\n", dqt_offs); 69 av_log(avctx, AV_LOG_DEBUG, "dqt offs: 0x%x\n", dqt_offs);
70 if (dqt_offs) 70 if (dqt_offs)
71 { 71 {
72 init_get_bits(&s->gb, buf+dqt_offs, (buf_end - (buf+dqt_offs))*8); 72 init_get_bits(&s->gb, buf_ptr+dqt_offs, (buf_end - (buf_ptr+dqt_offs))*8);
73 s->start_code = DQT; 73 s->start_code = DQT;
74 ff_mjpeg_decode_dqt(s); 74 ff_mjpeg_decode_dqt(s);
75 } 75 }
76 76
77 dht_offs = get_bits_long(&hgb, 32); 77 dht_offs = get_bits_long(&hgb, 32);
78 av_log(avctx, AV_LOG_DEBUG, "dht offs: 0x%x\n", dht_offs); 78 av_log(avctx, AV_LOG_DEBUG, "dht offs: 0x%x\n", dht_offs);
79 if (dht_offs) 79 if (dht_offs)
80 { 80 {
81 init_get_bits(&s->gb, buf+dht_offs, (buf_end - (buf+dht_offs))*8); 81 init_get_bits(&s->gb, buf_ptr+dht_offs, (buf_end - (buf_ptr+dht_offs))*8);
82 s->start_code = DHT; 82 s->start_code = DHT;
83 ff_mjpeg_decode_dht(s); 83 ff_mjpeg_decode_dht(s);
84 } 84 }
85 85
86 sof_offs = get_bits_long(&hgb, 32); 86 sof_offs = get_bits_long(&hgb, 32);
87 av_log(avctx, AV_LOG_DEBUG, "sof offs: 0x%x\n", sof_offs); 87 av_log(avctx, AV_LOG_DEBUG, "sof offs: 0x%x\n", sof_offs);
88 if (sof_offs) 88 if (sof_offs)
89 { 89 {
90 init_get_bits(&s->gb, buf+sof_offs, (buf_end - (buf+sof_offs))*8); 90 init_get_bits(&s->gb, buf_ptr+sof_offs, (buf_end - (buf_ptr+sof_offs))*8);
91 s->start_code = SOF0; 91 s->start_code = SOF0;
92 if (ff_mjpeg_decode_sof(s) < 0) 92 if (ff_mjpeg_decode_sof(s) < 0)
93 return -1; 93 return -1;
94 } 94 }
95 95
98 sod_offs = get_bits_long(&hgb, 32); 98 sod_offs = get_bits_long(&hgb, 32);
99 av_log(avctx, AV_LOG_DEBUG, "sod offs: 0x%x\n", sod_offs); 99 av_log(avctx, AV_LOG_DEBUG, "sod offs: 0x%x\n", sod_offs);
100 if (sos_offs) 100 if (sos_offs)
101 { 101 {
102 // init_get_bits(&s->gb, buf+sos_offs, (buf_end - (buf+sos_offs))*8); 102 // init_get_bits(&s->gb, buf+sos_offs, (buf_end - (buf+sos_offs))*8);
103 init_get_bits(&s->gb, buf+sos_offs, field_size*8); 103 init_get_bits(&s->gb, buf_ptr+sos_offs, field_size*8);
104 s->mjpb_skiptosod = (sod_offs - sos_offs - show_bits(&s->gb, 16)); 104 s->mjpb_skiptosod = (sod_offs - sos_offs - show_bits(&s->gb, 16));
105 s->start_code = SOS; 105 s->start_code = SOS;
106 ff_mjpeg_decode_sos(s); 106 ff_mjpeg_decode_sos(s);
107 } 107 }
108 108