From 0ee13755a8e2ae5ec5422adbdb13fecbe8e72bb6 Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Sun, 14 Feb 2021 06:23:55 +0900 Subject: [PATCH] d3d11: Add a method for conversion from DXGI format to GstVideoFormat Part-of: --- gst-libs/gst/d3d11/gstd3d11format.c | 41 +++++++++++++++++++++++++++++ gst-libs/gst/d3d11/gstd3d11format.h | 3 +++ 2 files changed, 44 insertions(+) diff --git a/gst-libs/gst/d3d11/gstd3d11format.c b/gst-libs/gst/d3d11/gstd3d11format.c index 8d5088dfd0..ab70c1adef 100644 --- a/gst-libs/gst/d3d11/gstd3d11format.c +++ b/gst-libs/gst/d3d11/gstd3d11format.c @@ -150,3 +150,44 @@ gst_d3d11_dxgi_format_get_size (DXGI_FORMAT format, guint width, guint height, return TRUE; } + +/** + * gst_d3d11_dxgi_format_to_gst: + * @format: a DXGI_FORMAT + * + * Converts the @format to its #GstVideoFormat representation. + * + * Returns: a #GstVideoFormat equivalent to @format + * + * Since: 1.20 + */ +GstVideoFormat +gst_d3d11_dxgi_format_to_gst (DXGI_FORMAT format) +{ + switch (format) { + case DXGI_FORMAT_B8G8R8A8_UNORM: + return GST_VIDEO_FORMAT_BGRA; + case DXGI_FORMAT_R8G8B8A8_UNORM: + return GST_VIDEO_FORMAT_RGBA; + case DXGI_FORMAT_R10G10B10A2_UNORM: + return GST_VIDEO_FORMAT_RGB10A2_LE; + case DXGI_FORMAT_AYUV: + return GST_VIDEO_FORMAT_VUYA; + case DXGI_FORMAT_YUY2: + return GST_VIDEO_FORMAT_YUY2; + case DXGI_FORMAT_Y210: + return GST_VIDEO_FORMAT_Y210; + case DXGI_FORMAT_Y410: + return GST_VIDEO_FORMAT_Y410; + case DXGI_FORMAT_NV12: + return GST_VIDEO_FORMAT_NV12; + case DXGI_FORMAT_P010: + return GST_VIDEO_FORMAT_P010_10LE; + case DXGI_FORMAT_P016: + return GST_VIDEO_FORMAT_P016_LE; + default: + break; + } + + return GST_VIDEO_FORMAT_UNKNOWN; +} diff --git a/gst-libs/gst/d3d11/gstd3d11format.h b/gst-libs/gst/d3d11/gstd3d11format.h index 2f41f8811c..10ae5e14c1 100644 --- a/gst-libs/gst/d3d11/gstd3d11format.h +++ b/gst-libs/gst/d3d11/gstd3d11format.h @@ -69,6 +69,9 @@ gboolean gst_d3d11_dxgi_format_get_size (DXGI_FORMAT format, gint stride[GST_VIDEO_MAX_PLANES], gsize *size); +GST_D3D11_API +GstVideoFormat gst_d3d11_dxgi_format_to_gst (DXGI_FORMAT format); + G_END_DECLS #endif /* __GST_D3D11_FORMAT_H__ */