diff mbox

[FFmpeg-devel] hwcontext_d3d11va: support bgr0 pixel format

Message ID 20190808003010.5713-1-silvo@gmx.net
State New
Headers show

Commit Message

Thomas Volkert Aug. 8, 2019, 12:30 a.m. UTC
From: Thomas Volkert <thomas.volkert@net-zeal.com>

---
 libavutil/hwcontext_d3d11va.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

--
2.22.0

Comments

Thomas Volkert Aug. 24, 2019, 2:45 p.m. UTC | #1
On 08.08.2019 02:30, Thomas Volkert wrote:
> From: Thomas Volkert <thomas.volkert@net-zeal.com>
>
> ---
>  libavutil/hwcontext_d3d11va.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/libavutil/hwcontext_d3d11va.c b/libavutil/hwcontext_d3d11va.c
> index 6670c47579..0204407330 100644
> --- a/libavutil/hwcontext_d3d11va.c
> +++ b/libavutil/hwcontext_d3d11va.c
> @@ -82,11 +82,12 @@ static const struct {
>      DXGI_FORMAT d3d_format;
>      enum AVPixelFormat pix_fmt;
>  } supported_formats[] = {
> -    { DXGI_FORMAT_NV12,         AV_PIX_FMT_NV12 },
> -    { DXGI_FORMAT_P010,         AV_PIX_FMT_P010 },
> +    { DXGI_FORMAT_NV12,           AV_PIX_FMT_NV12 },
> +    { DXGI_FORMAT_P010,           AV_PIX_FMT_P010 },
> +    { DXGI_FORMAT_B8G8R8A8_UNORM, AV_PIX_FMT_BGR0 },
>      // Special opaque formats. The pix_fmt is merely a place holder, as the
>      // opaque format cannot be accessed directly.
> -    { DXGI_FORMAT_420_OPAQUE,   AV_PIX_FMT_YUV420P },
> +    { DXGI_FORMAT_420_OPAQUE,     AV_PIX_FMT_YUV420P },
>  };
>
>  static void d3d11va_default_lock(void *ctx)
> --
> 2.22.0

I plan to push it in the next couple of days.

Best regards,
Thomas.
Carl Eugen Hoyos Aug. 24, 2019, 6:12 p.m. UTC | #2
Am Do., 8. Aug. 2019 um 02:35 Uhr schrieb Thomas Volkert <silvo@gmx.net>:
>
> From: Thomas Volkert <thomas.volkert@net-zeal.com>
>
> ---
>  libavutil/hwcontext_d3d11va.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/libavutil/hwcontext_d3d11va.c b/libavutil/hwcontext_d3d11va.c
> index 6670c47579..0204407330 100644
> --- a/libavutil/hwcontext_d3d11va.c
> +++ b/libavutil/hwcontext_d3d11va.c
> @@ -82,11 +82,12 @@ static const struct {
>      DXGI_FORMAT d3d_format;
>      enum AVPixelFormat pix_fmt;
>  } supported_formats[] = {
> -    { DXGI_FORMAT_NV12,         AV_PIX_FMT_NV12 },
> -    { DXGI_FORMAT_P010,         AV_PIX_FMT_P010 },
> +    { DXGI_FORMAT_NV12,           AV_PIX_FMT_NV12 },
> +    { DXGI_FORMAT_P010,           AV_PIX_FMT_P010 },

> +    { DXGI_FORMAT_B8G8R8A8_UNORM, AV_PIX_FMT_BGR0 },

The Microsoft documentation claims that this is BGRA,
DXGI_FORMAT_B8G8R8X8_UNORM_SRGB sounds more like BGR0.

Carl Eugen
Thomas Volkert Aug. 29, 2019, 3:02 p.m. UTC | #3
On 24.08.2019 20:12, Carl Eugen Hoyos wrote:
> Am Do., 8. Aug. 2019 um 02:35 Uhr schrieb Thomas Volkert <silvo@gmx.net>:
>> From: Thomas Volkert <thomas.volkert@net-zeal.com>
>>
>> ---
>>  libavutil/hwcontext_d3d11va.c | 7 ++++---
>>  1 file changed, 4 insertions(+), 3 deletions(-)
>>
>> diff --git a/libavutil/hwcontext_d3d11va.c b/libavutil/hwcontext_d3d11va.c
>> index 6670c47579..0204407330 100644
>> --- a/libavutil/hwcontext_d3d11va.c
>> +++ b/libavutil/hwcontext_d3d11va.c
>> @@ -82,11 +82,12 @@ static const struct {
>>      DXGI_FORMAT d3d_format;
>>      enum AVPixelFormat pix_fmt;
>>  } supported_formats[] = {
>> -    { DXGI_FORMAT_NV12,         AV_PIX_FMT_NV12 },
>> -    { DXGI_FORMAT_P010,         AV_PIX_FMT_P010 },
>> +    { DXGI_FORMAT_NV12,           AV_PIX_FMT_NV12 },
>> +    { DXGI_FORMAT_P010,           AV_PIX_FMT_P010 },
>> +    { DXGI_FORMAT_B8G8R8A8_UNORM, AV_PIX_FMT_BGR0 },
> The Microsoft documentation claims that this is BGRA,

Ah, yes, we only needed access to DXGI_FORMAT_B8G8R8A8_UNORM here.
BRG0/BGRA doesn't make a difference in this case here - so, it wasn't
obvious.

Thanks for the review.


Best regards,

Thomas.
diff mbox

Patch

diff --git a/libavutil/hwcontext_d3d11va.c b/libavutil/hwcontext_d3d11va.c
index 6670c47579..0204407330 100644
--- a/libavutil/hwcontext_d3d11va.c
+++ b/libavutil/hwcontext_d3d11va.c
@@ -82,11 +82,12 @@  static const struct {
     DXGI_FORMAT d3d_format;
     enum AVPixelFormat pix_fmt;
 } supported_formats[] = {
-    { DXGI_FORMAT_NV12,         AV_PIX_FMT_NV12 },
-    { DXGI_FORMAT_P010,         AV_PIX_FMT_P010 },
+    { DXGI_FORMAT_NV12,           AV_PIX_FMT_NV12 },
+    { DXGI_FORMAT_P010,           AV_PIX_FMT_P010 },
+    { DXGI_FORMAT_B8G8R8A8_UNORM, AV_PIX_FMT_BGR0 },
     // Special opaque formats. The pix_fmt is merely a place holder, as the
     // opaque format cannot be accessed directly.
-    { DXGI_FORMAT_420_OPAQUE,   AV_PIX_FMT_YUV420P },
+    { DXGI_FORMAT_420_OPAQUE,     AV_PIX_FMT_YUV420P },
 };

 static void d3d11va_default_lock(void *ctx)