comparison mdec.c @ 1436:b57e910e4235 libavcodec

some fixes (still buggy though)
author michaelni
date Mon, 01 Sep 2003 16:40:25 +0000
parents 62c797a19bdf
children ba444d478ffe
comparison
equal deleted inserted replaced
1435:62c797a19bdf 1436:b57e910e4235
63 const uint16_t *quant_matrix= ff_mpeg1_default_intra_matrix; 63 const uint16_t *quant_matrix= ff_mpeg1_default_intra_matrix;
64 const int qscale= a->qscale; 64 const int qscale= a->qscale;
65 65
66 /* DC coef */ 66 /* DC coef */
67 if(a->version==2){ 67 if(a->version==2){
68 block[0]= get_sbits(&a->gb, 11); 68 block[0]= get_sbits(&a->gb, 10);
69 }else{ 69 }else{
70 component = (n <= 3 ? 0 : n - 4 + 1); 70 component = (n <= 3 ? 0 : n - 4 + 1);
71 diff = decode_dc(&a->gb, component); 71 diff = decode_dc(&a->gb, component);
72 if (diff >= 0xffff) 72 if (diff >= 0xffff)
73 return -1; 73 return -1;
94 LAST_SKIP_BITS(re, &a->gb, 1); 94 LAST_SKIP_BITS(re, &a->gb, 1);
95 } else { 95 } else {
96 /* escape */ 96 /* escape */
97 run = SHOW_UBITS(re, &a->gb, 6)+1; LAST_SKIP_BITS(re, &a->gb, 6); 97 run = SHOW_UBITS(re, &a->gb, 6)+1; LAST_SKIP_BITS(re, &a->gb, 6);
98 UPDATE_CACHE(re, &a->gb); 98 UPDATE_CACHE(re, &a->gb);
99 level = SHOW_SBITS(re, &a->gb, 8); SKIP_BITS(re, &a->gb, 8); 99 level = SHOW_SBITS(re, &a->gb, 10); SKIP_BITS(re, &a->gb, 10);
100 if (level == -128) {
101 level = SHOW_UBITS(re, &a->gb, 8) - 256; LAST_SKIP_BITS(re, &a->gb, 8);
102 } else if (level == 0) {
103 level = SHOW_UBITS(re, &a->gb, 8) ; LAST_SKIP_BITS(re, &a->gb, 8);
104 }
105 i += run; 100 i += run;
106 j = scantable[i]; 101 j = scantable[i];
107 /* if(level<0){ 102 /* if(level<0){
108 level= -level; 103 level= -level;
109 level= (level*qscale*quant_matrix[j])>>4; 104 level= (level*qscale*quant_matrix[j])>>4;
191 a->bitstream_buffer= av_fast_realloc(a->bitstream_buffer, &a->bitstream_buffer_size, buf_size + FF_INPUT_BUFFER_PADDING_SIZE); 186 a->bitstream_buffer= av_fast_realloc(a->bitstream_buffer, &a->bitstream_buffer_size, buf_size + FF_INPUT_BUFFER_PADDING_SIZE);
192 for(i=0; i<buf_size; i+=2){ 187 for(i=0; i<buf_size; i+=2){
193 a->bitstream_buffer[i] = buf[i+1]; 188 a->bitstream_buffer[i] = buf[i+1];
194 a->bitstream_buffer[i+1]= buf[i ]; 189 a->bitstream_buffer[i+1]= buf[i ];
195 } 190 }
196 // a->dsp.bswap_buf((uint32_t*)a->bitstream_buffer, (uint32_t*)buf, buf_size/4);
197 init_get_bits(&a->gb, a->bitstream_buffer, buf_size*8); 191 init_get_bits(&a->gb, a->bitstream_buffer, buf_size*8);
198 192
199 /* skip over 4 preamble bytes in stream (typically 0xXX 0xXX 0x00 0x38) */ 193 /* skip over 4 preamble bytes in stream (typically 0xXX 0xXX 0x00 0x38) */
200 skip_bits(&a->gb, 32); 194 skip_bits(&a->gb, 32);
201 195
202 a->qscale= get_bits(&a->gb, 16); 196 a->qscale= get_bits(&a->gb, 16);
203 a->version= get_bits(&a->gb, 16); 197 a->version= get_bits(&a->gb, 16);
204 skip_bits(&a->gb, 8*8);
205 198
206 printf("qscale:%d (0x%X), version:%d (0x%X)\n", a->qscale, a->qscale, a->version, a->version); 199 printf("qscale:%d (0x%X), version:%d (0x%X)\n", a->qscale, a->qscale, a->version, a->version);
207 200
208 for(a->mb_y=0; a->mb_y<a->mb_height; a->mb_y++){ 201 for(a->mb_x=0; a->mb_x<a->mb_width; a->mb_x++){
209 for(a->mb_x=0; a->mb_x<a->mb_width; a->mb_x++){ 202 for(a->mb_y=0; a->mb_y<a->mb_height; a->mb_y++){
210 if( decode_mb(a, a->block) <0) 203 if( decode_mb(a, a->block) <0)
211 return -1; 204 return -1;
212 205
213 idct_put(a, a->mb_x, a->mb_y); 206 idct_put(a, a->mb_x, a->mb_y);
214 } 207 }
215 } 208 }
216
217 #if 0
218 int i;
219 printf("%d %d\n", 8*buf_size, get_bits_count(&a->gb));
220 for(i=get_bits_count(&a->gb); i<8*buf_size; i++){
221 printf("%d", get_bits1(&a->gb));
222 }
223
224 for(i=0; i<s->avctx->extradata_size; i++){
225 printf("%c\n", ((uint8_t*)s->avctx->extradata)[i]);
226 }
227 #endif
228 209
229 // p->quality= (32 + a->inv_qscale/2)/a->inv_qscale; 210 // p->quality= (32 + a->inv_qscale/2)/a->inv_qscale;
230 // memset(p->qscale_table, p->quality, p->qstride*a->mb_height); 211 // memset(p->qscale_table, p->quality, p->qstride*a->mb_height);
231 212
232 *picture= *(AVFrame*)&a->picture; 213 *picture= *(AVFrame*)&a->picture;