mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-09-29 23:32:33 +00:00
d3d11videosink: Use only tested color space for swapchain
We are querying supported swapchain colorspace via CheckColorSpaceSupport() but it doesn't seem to be reliable. Use only tested full-range RGB formats which are: - sRGB - BT709 primaries with linear RGB - BT2020 primaries with PQ gamma Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1433>
This commit is contained in:
parent
d82efb47aa
commit
f10867dfb5
1 changed files with 21 additions and 3 deletions
|
@ -519,6 +519,12 @@ gst_d3d11_find_swap_chain_color_space (GstVideoInfo * info,
|
||||||
const GstDxgiColorSpace *colorspace = NULL;
|
const GstDxgiColorSpace *colorspace = NULL;
|
||||||
gint best_score = G_MAXINT;
|
gint best_score = G_MAXINT;
|
||||||
guint i;
|
guint i;
|
||||||
|
/* list of tested display color spaces */
|
||||||
|
static GST_DXGI_COLOR_SPACE_TYPE whitelist[] = {
|
||||||
|
GST_DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709,
|
||||||
|
GST_DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709,
|
||||||
|
GST_DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020,
|
||||||
|
};
|
||||||
|
|
||||||
g_return_val_if_fail (info != NULL, FALSE);
|
g_return_val_if_fail (info != NULL, FALSE);
|
||||||
g_return_val_if_fail (swapchain != NULL, FALSE);
|
g_return_val_if_fail (swapchain != NULL, FALSE);
|
||||||
|
@ -532,10 +538,22 @@ gst_d3d11_find_swap_chain_color_space (GstVideoInfo * info,
|
||||||
UINT can_support = 0;
|
UINT can_support = 0;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
gint score;
|
gint score;
|
||||||
DXGI_COLOR_SPACE_TYPE cur_type =
|
gboolean valid = FALSE;
|
||||||
(DXGI_COLOR_SPACE_TYPE) rgb_colorspace_map[i].dxgi_color_space_type;
|
GST_DXGI_COLOR_SPACE_TYPE cur_type =
|
||||||
|
(GST_DXGI_COLOR_SPACE_TYPE) rgb_colorspace_map[i].dxgi_color_space_type;
|
||||||
|
|
||||||
hr = swapchain->CheckColorSpaceSupport (cur_type, &can_support);
|
for (guint j = 0; j < G_N_ELEMENTS (whitelist); j++) {
|
||||||
|
if (whitelist[j] == cur_type) {
|
||||||
|
valid = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!valid)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
hr = swapchain->CheckColorSpaceSupport ((DXGI_COLOR_SPACE_TYPE) cur_type,
|
||||||
|
&can_support);
|
||||||
|
|
||||||
if (FAILED (hr))
|
if (FAILED (hr))
|
||||||
continue;
|
continue;
|
||||||
|
|
Loading…
Reference in a new issue