From: Seungha Yang Date: Sat, 16 Apr 2022 12:27:57 +0000 (+0900) Subject: d3d11decoder: Copy HDR10 related caps field manually X-Git-Tag: 1.22.0~1849 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b5a8bef5a7ff4c4feab1783789316302b2eb79e6;p=platform%2Fupstream%2Fgstreamer.git d3d11decoder: Copy HDR10 related caps field manually If negotiate() is called from the set_format() chain, sinkpad may not hold caps yet, so baseclass cannot copy it over to srcpad caps. Copy them manually. Part-of: --- diff --git a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11decoder.cpp b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11decoder.cpp index c517b68..3e0aae1 100644 --- a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11decoder.cpp +++ b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11decoder.cpp @@ -1452,6 +1452,8 @@ gst_d3d11_decoder_negotiate (GstD3D11Decoder * decoder, gboolean alternate_supported = FALSE; gboolean d3d11_supported = FALSE; GstVideoCodecState *input_state; + GstStructure *s; + const gchar *str; g_return_val_if_fail (GST_IS_D3D11_DECODER (decoder), FALSE); g_return_val_if_fail (GST_IS_VIDEO_DECODER (videodec), FALSE); @@ -1543,6 +1545,19 @@ gst_d3d11_decoder_negotiate (GstD3D11Decoder * decoder, state->caps = gst_video_info_to_caps (&state->info); + s = gst_caps_get_structure (input_state->caps, 0); + str = gst_structure_get_string (s, "mastering-display-info"); + if (str) { + gst_caps_set_simple (state->caps, + "mastering-display-info", G_TYPE_STRING, str, nullptr); + } + + str = gst_structure_get_string (s, "content-light-level"); + if (str) { + gst_caps_set_simple (state->caps, + "content-light-level", G_TYPE_STRING, str, nullptr); + } + g_clear_pointer (&decoder->output_state, gst_video_codec_state_unref); decoder->output_state = state;