From e8fdf9177afca1b7663e17bb10bb0476d281daed Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Thu, 9 Jun 2022 23:19:24 +0900 Subject: [PATCH] d3d11decoder: Fix for alternate interlacing signalling Don't set d3d11+interlace caps feature. None of d3d11 elements support it Part-of: --- .../gst-plugins-bad/sys/d3d11/gstd3d11decoder.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11decoder.cpp b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11decoder.cpp index 40427ce47b..372a5cb798 100644 --- a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11decoder.cpp +++ b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11decoder.cpp @@ -1454,6 +1454,8 @@ gst_d3d11_decoder_negotiate (GstD3D11Decoder * decoder, gboolean alternate_interlaced; gboolean alternate_supported = FALSE; gboolean d3d11_supported = FALSE; + /* No d3d11 element supports alternate now */ + gboolean d3d11_alternate_supported = FALSE; GstVideoCodecState *input_state; GstStructure *s; const gchar *str; @@ -1488,10 +1490,13 @@ gst_d3d11_decoder_negotiate (GstD3D11Decoder * decoder, if (gst_caps_features_contains (features, GST_CAPS_FEATURE_MEMORY_D3D11_MEMORY)) { d3d11_supported = TRUE; + + if (gst_caps_features_contains (features, + GST_CAPS_FEATURE_FORMAT_INTERLACED)) { + d3d11_alternate_supported = TRUE; + } } - /* FIXME: software deinterlace element will not return interlaced caps - * feature... We should fix it */ if (gst_caps_features_contains (features, GST_CAPS_FEATURE_FORMAT_INTERLACED)) { alternate_supported = TRUE; @@ -1509,7 +1514,7 @@ gst_d3d11_decoder_negotiate (GstD3D11Decoder * decoder, GST_FIXME_OBJECT (videodec, "Implement alternating interlaced stream for D3D11"); - if (alternate_supported) { + if (d3d11_alternate_supported || (!d3d11_supported && alternate_supported)) { gint height = GST_VIDEO_INFO_HEIGHT (info); /* Set caps resolution with display size, that's how we designed