summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/mpeg12.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c
index ed7409157a..5b006c3c0f 100644
--- a/libavcodec/mpeg12.c
+++ b/libavcodec/mpeg12.c
@@ -2329,8 +2329,10 @@ static int mpeg_decode_frame(AVCodecContext *avctx,
if(s2->last_picture_ptr==NULL){
/* Skip B-frames if we do not have reference frames. */
if(s2->pict_type==B_TYPE) break;
+ }
+ if(s2->next_picture_ptr==NULL){
/* Skip P-frames if we do not have reference frame no valid header. */
-// if(s2->pict_type==P_TYPE && s2->first_field && !s2->first_slice) break;
+ if(s2->pict_type==P_TYPE && (s2->first_field || s2->picture_structure==PICT_FRAME)) break;
}
/* Skip B-frames if we are in a hurry. */
if(avctx->hurry_up && s2->pict_type==B_TYPE) break;