diff mpegvideo.c @ 297:a1234c032636 libavcodec

force frame type for 2-pass encoding
author michaelni
date Thu, 28 Mar 2002 22:50:22 +0000
parents 6622b0fd036c
children e20de99b6295
line wrap: on
line diff
--- a/mpegvideo.c	Thu Mar 28 13:41:04 2002 +0000
+++ b/mpegvideo.c	Thu Mar 28 22:50:22 2002 +0000
@@ -514,9 +514,10 @@
 
     init_put_bits(&s->pb, buf, buf_size, NULL, NULL);
 
+    s->force_type= avctx->force_type;
     if (!s->intra_only) {
         /* first picture of GOP is intra */
-        if (s->picture_in_gop_number % s->gop_size==0){
+        if (s->picture_in_gop_number % s->gop_size==0 || s->force_type==I_TYPE){
             s->picture_in_gop_number=0;
             s->pict_type = I_TYPE;
         }else
@@ -1313,7 +1314,7 @@
         memset(s->mb_type      , MB_TYPE_INTRA, sizeof(UINT8)*s->mb_width*s->mb_height);
     }
 
-    if(s->avg_mb_var < s->mc_mb_var && s->pict_type != B_TYPE){ //FIXME subtract MV bits
+    if(s->avg_mb_var < s->mc_mb_var && s->pict_type != B_TYPE && (!s->force_type)){ //FIXME subtract MV bits
         s->pict_type= I_TYPE;
         s->picture_in_gop_number=0;
         memset(s->mb_type   , MB_TYPE_INTRA, sizeof(UINT8)*s->mb_width*s->mb_height);
@@ -1955,7 +1956,7 @@
     double fps;
     INT64 wanted_bits;
     emms_c();
-    
+
     fps= (double)s->frame_rate / FRAME_RATE_BASE;
     wanted_bits= s->bit_rate*(double)s->picture_number/fps;