Browse code

another try at fixing rv20 ...

Originally committed as revision 3749 to svn://svn.ffmpeg.org/ffmpeg/trunk

Michael Niedermayer authored on 2004/12/13 20:41:59
Showing 1 changed files
... ...
@@ -429,28 +429,21 @@ static int rv20_decode_picture_header(MpegEncContext *s)
429 429
     }
430 430
         
431 431
     if(s->avctx->has_b_frames){
432
-        int f1=9;
433
-        int f2=9;
434
-        int f3=9;
432
+        int f=9;
433
+        int v= s->avctx->extradata_size >= 4 ? ((uint8_t*)s->avctx->extradata)[1] : 0;
435 434
 
436 435
         if (get_bits(&s->gb, 1)){
437 436
             av_log(s->avctx, AV_LOG_ERROR, "unknown bit3 set\n");
438 437
 //            return -1;
439 438
         }
440 439
         seq= get_bits(&s->gb, 14)<<1;
441
-        
442
-        if(s->avctx->extradata_size >= 4 && ((uint8_t*)s->avctx->extradata)[1]&1){
443
-            f1= get_bits(&s->gb, 1);
444
-        }
445
-        if(s->avctx->extradata_size >= 4 && ((uint8_t*)s->avctx->extradata)[1]&2){
446
-            f2= get_bits(&s->gb, 1);
447
-        }
448
-        if(s->avctx->extradata_size >= 4 && ((uint8_t*)s->avctx->extradata)[1]&4){
449
-            f3= get_bits(&s->gb, 2);
440
+
441
+        if(v>1){
442
+            f= get_bits(&s->gb, av_log2(v-1)+1);
450 443
         }
451 444
         
452 445
         if(s->avctx->debug & FF_DEBUG_PICT_INFO){
453
-            av_log(s->avctx, AV_LOG_DEBUG, "F %d %d %d\n", f1,f2,f3);            
446
+            av_log(s->avctx, AV_LOG_DEBUG, "F %d\n", f);
454 447
         }
455 448
 
456 449
         mb_pos= get_bits(&s->gb, av_log2(s->mb_num-1)+1);