From fed06df5f64f19838bf888e2bdcd152106edcccd Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Fri, 21 May 2021 20:02:53 +0900 Subject: [PATCH] d3d11compositor: Reuse converter on alpha update ... instead of creating converter object Part-of: --- sys/d3d11/gstd3d11compositor.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/sys/d3d11/gstd3d11compositor.cpp b/sys/d3d11/gstd3d11compositor.cpp index 6463ec1..d5de8d1 100644 --- a/sys/d3d11/gstd3d11compositor.cpp +++ b/sys/d3d11/gstd3d11compositor.cpp @@ -1199,7 +1199,7 @@ gst_d3d11_compositor_pad_setup_converter (GstVideoAggregatorPad * pad, guint zorder = 0; #endif - if (!cpad->convert || cpad->alpha_updated || self->reconfigured) { + if (!cpad->convert || self->reconfigured) { GstStructure *config; if (cpad->convert) @@ -1214,13 +1214,23 @@ gst_d3d11_compositor_pad_setup_converter (GstVideoAggregatorPad * pad, cpad->convert = gst_d3d11_converter_new (self->device, &pad->info, &vagg->info, config); - cpad->alpha_updated = FALSE; if (!cpad->convert) { GST_ERROR_OBJECT (pad, "Couldn't create converter"); return FALSE; } is_first = TRUE; + } else if (cpad->alpha_updated) { + GstStructure *config; + + config = gst_structure_new_empty ("config"); + if (cpad->alpha <= 1.0) { + gst_structure_set (config, GST_D3D11_CONVERTER_OPT_ALPHA_VALUE, + G_TYPE_DOUBLE, cpad->alpha, nullptr); + } + + gst_d3d11_converter_update_config (cpad->convert, config); + cpad->alpha_updated = FALSE; } if (!cpad->blend || cpad->blend_desc_updated) { -- 2.7.4