diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2019-06-19 15:44:49 +0300 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2019-08-07 01:06:10 +0100 |
commit | fa4c6c880bad0a3f481b5325a5491b64f1be3973 (patch) | |
tree | 0fc39f137a894e54e4a38e82f44a6c09dd049a62 | |
parent | 48134dbf600cb5f5a28636ecfbf1d5488f1ec5f0 (diff) | |
download | gst-libav-fa4c6c880bad0a3f481b5325a5491b64f1be3973.tar.gz |
avvidenc: Also set the repeat_pict flag correctly and take the TFF flag from caps if available
-rw-r--r-- | ext/libav/gstavvidenc.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/ext/libav/gstavvidenc.c b/ext/libav/gstavvidenc.c index ab44e9d..8dc514b 100644 --- a/ext/libav/gstavvidenc.c +++ b/ext/libav/gstavvidenc.c @@ -557,9 +557,12 @@ gst_ffmpegvidenc_send_frame (GstFFMpegVidEnc * ffmpegenc, if (ffmpegenc->context->flags & (AV_CODEC_FLAG_INTERLACED_DCT | AV_CODEC_FLAG_INTERLACED_ME)) { picture->interlaced_frame = TRUE; - /* if this is not the case, a filter element should be used to swap fields */ picture->top_field_first = - GST_BUFFER_FLAG_IS_SET (frame->input_buffer, GST_VIDEO_BUFFER_FLAG_TFF); + GST_BUFFER_FLAG_IS_SET (frame->input_buffer, GST_VIDEO_BUFFER_FLAG_TFF) + || GST_VIDEO_INFO_FIELD_ORDER (&ffmpegenc->input_state->info) == + GST_VIDEO_FIELD_ORDER_TOP_FIELD_FIRST; + picture->repeat_pict = + GST_BUFFER_FLAG_IS_SET (frame->input_buffer, GST_VIDEO_BUFFER_FLAG_RFF); } if (GST_VIDEO_INFO_MULTIVIEW_MODE (info) != GST_VIDEO_MULTIVIEW_MODE_NONE) { |