--- libavcodec/utils.c | 13 +++++++++++++ tests/api/api-codec-param-test.c | 3 +++ tests/fate/matroska.mak | 2 +- tests/ref/fate/api-mjpeg-codec-param | 2 +- tests/ref/fate/api-png-codec-param | 2 +- tests/ref/fate/mov-zombie | 2 +- 6 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/libavcodec/utils.c b/libavcodec/utils.c index d6dca18..b9af880 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -2296,6 +2296,12 @@ fail: guess_correct_pts(avctx, picture->pts, picture->pkt_dts)); + + if (avctx->field_order == AV_FIELD_UNKNOWN) { + avctx->field_order = picture->interlaced_frame + ? (picture->top_field_first ? AV_FIELD_TT : AV_FIELD_BB) + : AV_FIELD_PROGRESSIVE; + } } else av_frame_unref(picture); } else @@ -2895,6 +2901,13 @@ int attribute_align_arg avcodec_receive_frame(AVCodecContext *avctx, AVFrame *fr av_frame_set_best_effort_timestamp(frame, guess_correct_pts(avctx, frame->pts, frame->pkt_dts)); } + + if (avctx->field_order == AV_FIELD_UNKNOWN && + avctx->codec_type == AVMEDIA_TYPE_VIDEO) { + avctx->field_order = frame->interlaced_frame + ? (frame->top_field_first ? AV_FIELD_TT : AV_FIELD_BB) + : AV_FIELD_PROGRESSIVE; + } } return ret; } diff --git a/tests/api/api-codec-param-test.c b/tests/api/api-codec-param-test.c index 377a5e9..16ba8c6 100644 --- a/tests/api/api-codec-param-test.c +++ b/tests/api/api-codec-param-test.c @@ -211,6 +211,9 @@ static int check_video_streams(const AVFormatContext *fmt_ctx1, const AVFormatCo if (!strcmp(opt->name, "frame_number")) continue; + if (!strcmp(opt->name, "field_order")) + continue; + av_assert0(av_opt_get(codec_ctx1, opt->name, 0, &str1) >= 0); av_assert0(av_opt_get(codec_ctx2, opt->name, 0, &str2) >= 0); if (strcmp(str1, str2)) { diff --git a/tests/fate/matroska.mak b/tests/fate/matroska.mak index 35ed41f..16397b5 100644 --- a/tests/fate/matroska.mak +++ b/tests/fate/matroska.mak @@ -4,6 +4,6 @@ FATE_MATROSKA-$(call DEMMUX, MATROSKA, MATROSKA) += fate-matroska-remux fate-matroska-remux: CMD = md5 -i $(TARGET_SAMPLES)/vp9-test-vectors/vp90-2-2pass-akiyo.webm -color_trc 4 -c:v copy -fflags +bitexact -strict -2 -f matroska fate-matroska-remux: CMP = oneline -fate-matroska-remux: REF = 9b8398b42804ba12c39d2f47299a0996 +fate-matroska-remux: REF = cb6cc1cb581e31c98dd77173c7b4d221 FATE_SAMPLES_AVCONV += $(FATE_MATROSKA-yes) diff --git a/tests/ref/fate/api-mjpeg-codec-param b/tests/ref/fate/api-mjpeg-codec-param index c67d1b1..c7e8da2 100644 --- a/tests/ref/fate/api-mjpeg-codec-param +++ b/tests/ref/fate/api-mjpeg-codec-param @@ -307,7 +307,7 @@ stream=0, decode=1 refcounted_frames=false side_data_only_packets=true skip_alpha=false - field_order=0 + field_order=1 dump_separator= codec_whitelist= pixel_format=yuvj422p diff --git a/tests/ref/fate/api-png-codec-param b/tests/ref/fate/api-png-codec-param index bd53441..cba634e 100644 --- a/tests/ref/fate/api-png-codec-param +++ b/tests/ref/fate/api-png-codec-param @@ -307,7 +307,7 @@ stream=0, decode=1 refcounted_frames=false side_data_only_packets=true skip_alpha=false - field_order=0 + field_order=1 dump_separator= codec_whitelist= pixel_format=rgba diff --git a/tests/ref/fate/mov-zombie b/tests/ref/fate/mov-zombie index 42e3a6f..c9cf7db 100644 --- a/tests/ref/fate/mov-zombie +++ b/tests/ref/fate/mov-zombie @@ -129,5 +129,5 @@ packet|codec_type=video|stream_index=0|pts=188623|pts_time=2.095811|dts=188622|d frame|media_type=video|stream_index=0|key_frame=0|pkt_pts=188623|pkt_pts_time=2.095811|pkt_dts=188622|pkt_dts_time=2.095800|best_effort_timestamp=188623|best_effort_timestamp_time=2.095811|pkt_duration=3003|pkt_duration_time=0.033367|pkt_pos=100846|pkt_size=974|width=160|height=240|pix_fmt=yuv420p|sample_aspect_ratio=2:1|pict_type=B|coded_picture_number=64|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0 packet|codec_type=video|stream_index=0|pts=197632|pts_time=2.195911|dts=191625|dts_time=2.129167|duration=3003|duration_time=0.033367|convergence_duration=N/A|convergence_duration_time=N/A|size=580|pos=101820|flags=__ frame|media_type=video|stream_index=0|key_frame=0|pkt_pts=191626|pkt_pts_time=2.129178|pkt_dts=N/A|pkt_dts_time=N/A|best_effort_timestamp=191626|best_effort_timestamp_time=2.129178|pkt_duration=3003|pkt_duration_time=0.033367|pkt_pos=99180|pkt_size=1666|width=160|height=240|pix_fmt=yuv420p|sample_aspect_ratio=2:1|pict_type=P|coded_picture_number=63|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0 -stream|index=0|codec_name=h264|profile=77|codec_type=video|codec_time_base=212521/12744000|codec_tag_string=avc1|codec_tag=0x31637661|width=160|height=240|coded_width=160|coded_height=240|has_b_frames=0|sample_aspect_ratio=2:1|display_aspect_ratio=4:3|pix_fmt=yuv420p|level=12|color_range=tv|color_space=smpte170m|color_transfer=bt709|color_primaries=smpte170m|chroma_location=topleft|field_order=unknown|timecode=N/A|refs=2|is_avc=true|nal_length_size=4|id=N/A|r_frame_rate=30000/1001|avg_frame_rate=6372000/212521|time_base=1/90000|start_pts=0|start_time=0.000000|duration_ts=2125200|duration=23.613333|bit_rate=333874|max_bit_rate=N/A|bits_per_raw_sample=8|nb_frames=708|nb_read_frames=65|nb_read_packets=66|disposition:default=1|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|disposition:timed_thumbnails=0|tag:rotate=0|tag:creation_time=2008-05-12T20:59:27.000000Z|tag:language=eng|tag:handler_name=Apple Alias Data Handler|tag:encoder=H.264 +stream|index=0|codec_name=h264|profile=77|codec_type=video|codec_time_base=212521/12744000|codec_tag_string=avc1|codec_tag=0x31637661|width=160|height=240|coded_width=160|coded_height=240|has_b_frames=0|sample_aspect_ratio=2:1|display_aspect_ratio=4:3|pix_fmt=yuv420p|level=12|color_range=tv|color_space=smpte170m|color_transfer=bt709|color_primaries=smpte170m|chroma_location=topleft|field_order=progressive|timecode=N/A|refs=2|is_avc=true|nal_length_size=4|id=N/A|r_frame_rate=30000/1001|avg_frame_rate=6372000/212521|time_base=1/90000|start_pts=0|start_time=0.000000|duration_ts=2125200|duration=23.613333|bit_rate=333874|max_bit_rate=N/A|bits_per_raw_sample=8|nb_frames=708|nb_read_frames=65|nb_read_packets=66|disposition:default=1|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|disposition:timed_thumbnails=0|tag:rotate=0|tag:creation_time=2008-05-12T20:59:27.000000Z|tag:language=eng|tag:handler_name=Apple Alias Data Handler|tag:encoder=H.264 side_data|side_data_type=Display Matrix|side_data_size=36|displaymatrix=\n00000000: 131072 0 0\n00000001: 0 65536 0\n00000002: 0 0 1073741824\n|rotation=0 -- 2.10.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel