diff options
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/mpeg12.c | 6 | ||||
-rw-r--r-- | libavcodec/mpegvideo.c | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 8591877d37..9d4658d0c6 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -448,7 +448,11 @@ void mpeg1_encode_picture_header(MpegEncContext *s, int picture_number) } put_bits(&s->pb, 2, s->intra_dc_precision); put_bits(&s->pb, 2, s->picture_structure= PICT_FRAME); - put_bits(&s->pb, 1, s->top_field_first); + if (s->progressive_sequence) { + put_bits(&s->pb, 1, 0); /* no repeat */ + } else { + put_bits(&s->pb, 1, s->current_picture_ptr->top_field_first); + } /* XXX: optimize the generation of this flag with entropy measures */ s->frame_pred_frame_dct = s->progressive_sequence; diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 631262d7bc..4774709486 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -1560,7 +1560,9 @@ static int load_input_picture(MpegEncContext *s, AVFrame *pic_arg){ pic->quality= pic_arg->quality; pic->pict_type= pic_arg->pict_type; pic->pts = pic_arg->pts; - + pic->interlaced_frame = pic_arg->interlaced_frame; + pic->top_field_first = pic_arg->top_field_first; + if(s->input_picture[encoding_delay]) pic->display_picture_number= s->input_picture[encoding_delay]->display_picture_number + 1; |