diff mpegvideo.c @ 910:eb448df811be libavcodec

fixing files where the first frame isn a keyframe
author michaelni
date Wed, 04 Dec 2002 22:16:24 +0000
parents 8ae1e4c24e91
children 4a1e6bb1f41c
line wrap: on
line diff
--- a/mpegvideo.c	Wed Dec 04 21:13:02 2002 +0000
+++ b/mpegvideo.c	Wed Dec 04 22:16:24 2002 +0000
@@ -801,8 +801,8 @@
             }
         }
     }
-
-    if(!s->encoding){        
+alloc:
+    if(!s->encoding){
         /* find unused Picture */
         for(i=0; i<MAX_PICTURE_COUNT; i++){
             if(s->picture[i].data[0]==NULL) break;
@@ -829,14 +829,20 @@
         s->current_picture= s->picture[i];
     }
 
-    s->hurry_up= s->avctx->hurry_up;
-    s->error_resilience= avctx->error_resilience;
-
     if (s->pict_type != B_TYPE) {
         s->last_picture= s->next_picture;
         s->next_picture= s->current_picture;
     }
+    
+    if(s->pict_type != I_TYPE && s->last_picture.data[0]==NULL){
+        fprintf(stderr, "warning: first frame is no keyframe\n");
+        assert(s->pict_type != B_TYPE); //these should have been dropped if we dont have a reference
+        goto alloc;
+    }
    
+    s->hurry_up= s->avctx->hurry_up;
+    s->error_resilience= avctx->error_resilience;
+
     /* set dequantizer, we cant do it during init as it might change for mpeg4
        and we cant do it in the header decode as init isnt called for mpeg4 there yet */
     if(s->out_format == FMT_H263){