Mercurial > libavcodec.hg
comparison rv10.c @ 621:980b661a494a libavcodec
fixes rv10 decoding crash
author | michaelni |
---|---|
date | Wed, 28 Aug 2002 09:19:28 +0000 |
parents | 468d4800dbf1 |
children | a1e54c24f221 |
comparison
equal
deleted
inserted
replaced
620:a5aa53b6e648 | 621:980b661a494a |
---|---|
294 | 294 |
295 if (pb_frame) | 295 if (pb_frame) |
296 return -1; | 296 return -1; |
297 | 297 |
298 s->qscale = get_bits(&s->gb, 5); | 298 s->qscale = get_bits(&s->gb, 5); |
299 if(s->qscale==0){ | |
300 fprintf(stderr, "error, qscale:0\n"); | |
301 return -1; | |
302 } | |
299 | 303 |
300 if (s->pict_type == I_TYPE) { | 304 if (s->pict_type == I_TYPE) { |
301 if (s->rv10_version == 3) { | 305 if (s->rv10_version == 3) { |
302 /* specific MPEG like DC coding not used */ | 306 /* specific MPEG like DC coding not used */ |
303 s->last_dc[0] = get_bits(&s->gb, 8); | 307 s->last_dc[0] = get_bits(&s->gb, 8); |
320 } else { | 324 } else { |
321 s->mb_x = 0; | 325 s->mb_x = 0; |
322 s->mb_y = 0; | 326 s->mb_y = 0; |
323 mb_count = s->mb_width * s->mb_height; | 327 mb_count = s->mb_width * s->mb_height; |
324 } | 328 } |
325 | 329 //printf("%d\n", get_bits(&s->gb, 3)); |
326 get_bits(&s->gb, 3); /* ignored */ | 330 get_bits(&s->gb, 3); /* ignored */ |
327 s->f_code = 1; | 331 s->f_code = 1; |
328 s->unrestricted_mv = 1; | 332 s->unrestricted_mv = 1; |
329 #if 0 | 333 #if 0 |
330 s->h263_long_vectors = 1; | 334 s->h263_long_vectors = 1; |
350 | 354 |
351 if (MPV_common_init(s) < 0) | 355 if (MPV_common_init(s) < 0) |
352 return -1; | 356 return -1; |
353 | 357 |
354 h263_decode_init_vlc(s); | 358 h263_decode_init_vlc(s); |
359 | |
360 s->y_dc_scale_table= | |
361 s->c_dc_scale_table= ff_mpeg1_dc_scale_table; | |
355 | 362 |
356 /* init rv vlc */ | 363 /* init rv vlc */ |
357 if (!done) { | 364 if (!done) { |
358 init_vlc(&rv_dc_lum, DC_VLC_BITS, 256, | 365 init_vlc(&rv_dc_lum, DC_VLC_BITS, 256, |
359 rv_lum_bits, 1, 1, | 366 rv_lum_bits, 1, 1, |