diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index f1d045622ad40..cbc0e0cea3723 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -761,6 +761,10 @@ Video :top: top field first :bottom: bottom field first + .. note:: + + Setting either :top: or :bottom: will flag all frames as interlaced. + ``--frames=`` Play/convert only first ```` video frames, then quit. diff --git a/video/decode/dec_video.c b/video/decode/dec_video.c index 34b437aa52022..f46d1c47ac5ce 100644 --- a/video/decode/dec_video.c +++ b/video/decode/dec_video.c @@ -326,11 +326,13 @@ struct mp_image *video_decode(struct dec_video *d_video, return NULL; // error / skipped frame } - if (opts->field_dominance == 0) - mpi->fields |= MP_IMGFIELD_TOP_FIRST; - else if (opts->field_dominance == 1) + if (opts->field_dominance == 0) { + mpi->fields |= MP_IMGFIELD_TOP_FIRST | MP_IMGFIELD_INTERLACED; + } else if (opts->field_dominance == 1) { mpi->fields &= ~MP_IMGFIELD_TOP_FIRST; - + mpi->fields |= MP_IMGFIELD_INTERLACED; + } + // Note: the PTS is reordered, but the DTS is not. Both should be monotonic. double pts = d_video->codec_pts; double dts = d_video->codec_dts;