Mercurial > libavcodec.hg
comparison rv10.c @ 2376:ed9bb4a45afa libavcodec
next try at fixing rv20 decoding
author | michael |
---|---|
date | Sun, 05 Dec 2004 23:21:39 +0000 |
parents | 26560d4fdb1f |
children | 1f56314b3770 |
comparison
equal
deleted
inserted
replaced
2375:24d3a50d1b8b | 2376:ed9bb4a45afa |
---|---|
348 av_log(s->avctx, AV_LOG_DEBUG, "%d", get_bits1(&gb)); | 348 av_log(s->avctx, AV_LOG_DEBUG, "%d", get_bits1(&gb)); |
349 if(i%4==3) av_log(s->avctx, AV_LOG_DEBUG, " "); | 349 if(i%4==3) av_log(s->avctx, AV_LOG_DEBUG, " "); |
350 } | 350 } |
351 av_log(s->avctx, AV_LOG_DEBUG, "\n"); | 351 av_log(s->avctx, AV_LOG_DEBUG, "\n"); |
352 #endif | 352 #endif |
353 #if 0 | |
354 for(i=0; i<s->avctx->extradata_size; i++){ | |
355 av_log(s->avctx, AV_LOG_DEBUG, "%2X ", ((uint8_t*)s->avctx->extradata)[i]); | |
356 if(i%4==3) av_log(s->avctx, AV_LOG_DEBUG, " "); | |
357 } | |
358 av_log(s->avctx, AV_LOG_DEBUG, "\n"); | |
359 #endif | |
353 | 360 |
354 if(s->avctx->sub_id == 0x30202002 || s->avctx->sub_id == 0x30203002){ | 361 if(s->avctx->sub_id == 0x30202002 || s->avctx->sub_id == 0x30203002){ |
355 if (get_bits(&s->gb, 3)){ | 362 if (get_bits(&s->gb, 3)){ |
356 av_log(s->avctx, AV_LOG_ERROR, "unknown triplet set\n"); | 363 av_log(s->avctx, AV_LOG_ERROR, "unknown triplet set\n"); |
357 return -1; | 364 return -1; |
394 if(s->avctx->has_b_frames){ | 401 if(s->avctx->has_b_frames){ |
395 if (get_bits(&s->gb, 1)){ | 402 if (get_bits(&s->gb, 1)){ |
396 // av_log(s->avctx, AV_LOG_ERROR, "unknown bit3 set\n"); | 403 // av_log(s->avctx, AV_LOG_ERROR, "unknown bit3 set\n"); |
397 // return -1; | 404 // return -1; |
398 } | 405 } |
399 seq= get_bits(&s->gb, 15); | 406 seq= get_bits(&s->gb, 14)<<1; |
400 if (s->avctx->sub_id == 0x20201002 && 0 && get_bits(&s->gb, 1)){ | 407 |
401 av_log(s->avctx, AV_LOG_ERROR, "unknown bit4 set\n"); | 408 if(s->avctx->extradata_size >= 4 && ((uint8_t*)s->avctx->extradata)[1]&1){ |
402 // return -1; | 409 get_bits(&s->gb, 1); |
403 } | 410 } |
404 if(s->avctx->sub_id == 0x20201002){ | 411 if(s->avctx->extradata_size >= 4 && ((uint8_t*)s->avctx->extradata)[1]&2){ |
405 mb_pos= ff_h263_decode_mba(s); | 412 get_bits(&s->gb, 1); |
406 }else{ | 413 } |
407 mb_pos= get_bits(&s->gb, av_log2(s->mb_num-1)+1); | 414 if(s->avctx->extradata_size >= 4 && ((uint8_t*)s->avctx->extradata)[1]&4){ |
408 s->mb_x= mb_pos % s->mb_width; | 415 get_bits(&s->gb, 2); |
409 s->mb_y= mb_pos / s->mb_width; | 416 } |
410 } | 417 |
418 mb_pos= get_bits(&s->gb, av_log2(s->mb_num-1)+1); | |
419 s->mb_x= mb_pos % s->mb_width; | |
420 s->mb_y= mb_pos / s->mb_width; | |
411 }else{ | 421 }else{ |
412 seq= get_bits(&s->gb, 8)*128; | 422 seq= get_bits(&s->gb, 8)*128; |
413 mb_pos= ff_h263_decode_mba(s); | 423 mb_pos= ff_h263_decode_mba(s); |
414 } | 424 } |
415 //av_log(s->avctx, AV_LOG_DEBUG, "%d\n", seq); | 425 //av_log(s->avctx, AV_LOG_DEBUG, "%d\n", seq); |
506 s->avctx->has_b_frames=1; | 516 s->avctx->has_b_frames=1; |
507 break; | 517 break; |
508 default: | 518 default: |
509 av_log(s->avctx, AV_LOG_ERROR, "unknown header %X\n", avctx->sub_id); | 519 av_log(s->avctx, AV_LOG_ERROR, "unknown header %X\n", avctx->sub_id); |
510 } | 520 } |
511 //av_log(avctx, AV_LOG_DEBUG, "ver:%X\n", avctx->sub_id); | 521 |
522 if(avctx->debug & FF_DEBUG_PICT_INFO){ | |
523 av_log(avctx, AV_LOG_DEBUG, "ver:%X ver0:%X\n", avctx->sub_id, avctx->extradata_size >= 4 ? ((uint32_t*)avctx->extradata)[0] : -1); | |
524 } | |
525 | |
512 if (MPV_common_init(s) < 0) | 526 if (MPV_common_init(s) < 0) |
513 return -1; | 527 return -1; |
514 | 528 |
515 h263_decode_init_vlc(s); | 529 h263_decode_init_vlc(s); |
516 | 530 |