Mercurial > libavcodec.hg
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 |