d3d11: Add support for planar RGB formats

Adding RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, and
GBRA_12LE format support

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3392>
This commit is contained in:
Seungha Yang 2022-11-12 22:55:52 +09:00 committed by GStreamer Marge Bot
parent b4d59e4e43
commit d0572622fa
5 changed files with 312 additions and 106 deletions

View file

@ -7323,12 +7323,12 @@
"klass": "Filter/Converter/Video/Hardware",
"pad-templates": {
"sink": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "sink",
"presence": "always"
},
"src": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "src",
"presence": "always"
}
@ -7379,7 +7379,7 @@
"klass": "Filter/Editor/Video/Compositor",
"pad-templates": {
"sink_%%u": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "sink",
"presence": "request",
"type": "GstD3D11CompositorPad"
@ -7440,12 +7440,12 @@
"klass": "Filter/Converter/Scaler/Effect/Video/Hardware",
"pad-templates": {
"sink": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "sink",
"presence": "always"
},
"src": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "src",
"presence": "always"
}
@ -7521,12 +7521,12 @@
"klass": "Filter/Effect/Video/Deinterlace/Hardware",
"pad-templates": {
"sink": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n",
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n",
"direction": "sink",
"presence": "always"
},
"src": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n",
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n",
"direction": "src",
"presence": "always"
}
@ -7722,12 +7722,12 @@
"klass": "Filter/Video",
"pad-templates": {
"sink": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "sink",
"presence": "always"
},
"src": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "src",
"presence": "always"
}
@ -7963,12 +7963,12 @@
"klass": "Filter/Converter/Video/Scaler/Hardware",
"pad-templates": {
"sink": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "sink",
"presence": "always"
},
"src": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "src",
"presence": "always"
}
@ -8188,7 +8188,7 @@
"klass": "Source/Video",
"pad-templates": {
"src": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "src",
"presence": "always"
}
@ -8250,12 +8250,12 @@
"klass": "Filter/Video",
"pad-templates": {
"sink": {
"caps": "video/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"caps": "video/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "sink",
"presence": "always"
},
"src": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "src",
"presence": "always"
}
@ -8281,7 +8281,7 @@
"klass": "Sink/Video",
"pad-templates": {
"sink": {
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBRA, GBRA_10LE, GBRA_12LE, Y410, YUY2 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "sink",
"presence": "always"
}

View file

@ -33,7 +33,8 @@ G_BEGIN_DECLS
"RGBA64_LE, RGB10A2_LE, BGRA, RGBA, BGRx, RGBx, VUYA, NV12, NV21, " \
"P010_10LE, P012_LE, P016_LE, I420, YV12, I420_10LE, I420_12LE, " \
"Y42B, I422_10LE, I422_12LE, Y444, Y444_10LE, Y444_12LE, Y444_16LE, " \
"GRAY8, GRAY16_LE, AYUV, AYUV64"
"GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, " \
"GBRA, GBRA_10LE, GBRA_12LE"
#define GST_D3D11_EXTRA_IN_FORMATS \
"Y410, YUY2"
@ -86,6 +87,12 @@ void gst_d3d11_device_dxgi_debug (GstD3D11Device * device,
{ DXGI_FORMAT_ ##d, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, \
(D3D11_FORMAT_SUPPORT) (D3D11_FORMAT_SUPPORT_RENDER_TARGET | D3D11_FORMAT_SUPPORT_SHADER_SAMPLE) }
#define MAKE_FORMAT_MAP_RGBP(g,d,a) \
{ GST_VIDEO_FORMAT_ ##g, DXGI_FORMAT_UNKNOWN, \
{ DXGI_FORMAT_ ##d, DXGI_FORMAT_ ##d, DXGI_FORMAT_ ##d, DXGI_FORMAT_ ##a }, \
{ DXGI_FORMAT_ ##d, DXGI_FORMAT_ ##d, DXGI_FORMAT_ ##d, DXGI_FORMAT_ ##a }, \
(D3D11_FORMAT_SUPPORT) (D3D11_FORMAT_SUPPORT_RENDER_TARGET | D3D11_FORMAT_SUPPORT_SHADER_SAMPLE) }
static const GstD3D11Format _gst_d3d11_default_format_map[] = {
MAKE_FORMAT_MAP_RGB (BGRA, B8G8R8A8_UNORM),
MAKE_FORMAT_MAP_RGB (RGBA, R8G8B8A8_UNORM),
@ -123,6 +130,14 @@ static const GstD3D11Format _gst_d3d11_default_format_map[] = {
D3D11_FORMAT_SUPPORT_SHADER_SAMPLE),
MAKE_FORMAT_MAP_YUV_FULL (YUY2, YUY2, R8G8B8A8_UNORM, UNKNOWN, UNKNOWN, UNKNOWN,
D3D11_FORMAT_SUPPORT_SHADER_SAMPLE),
MAKE_FORMAT_MAP_RGBP (RGBP, R8_UNORM, UNKNOWN),
MAKE_FORMAT_MAP_RGBP (BGRP, R8_UNORM, UNKNOWN),
MAKE_FORMAT_MAP_RGBP (GBR, R8_UNORM, UNKNOWN),
MAKE_FORMAT_MAP_RGBP (GBR_10LE, R16_UNORM, UNKNOWN),
MAKE_FORMAT_MAP_RGBP (GBR_12LE, R16_UNORM, UNKNOWN),
MAKE_FORMAT_MAP_RGBP (GBRA, R8_UNORM, R8_UNORM),
MAKE_FORMAT_MAP_RGBP (GBRA_10LE, R16_UNORM, R16_UNORM),
MAKE_FORMAT_MAP_RGBP (GBRA_12LE, R16_UNORM, R16_UNORM),
};
#undef MAKE_FORMAT_MAP_YUV

View file

@ -140,6 +140,15 @@ static const gchar templ_OUTPUT_THREE_PLANES[] =
" float4 Plane_2: SV_TARGET2;\n"
"};";
static const gchar templ_OUTPUT_FOUR_PLANES[] =
"struct PS_OUTPUT\n"
"{\n"
" float4 Plane_0: SV_TARGET0;\n"
" float4 Plane_1: SV_TARGET1;\n"
" float4 Plane_2: SV_TARGET2;\n"
" float4 Plane_3: SV_TARGET3;\n"
"};";
typedef struct
{
const gchar *output_template;
@ -151,12 +160,14 @@ enum
OUTPUT_SINGLE_PLANE = 0,
OUTPUT_TWO_PLANES,
OUTPUT_THREE_PLANES,
OUTPUT_FOUR_PLANES,
};
static const PSOutputType output_types[] = {
{templ_OUTPUT_SINGLE_PLANE, 1},
{templ_OUTPUT_TWO_PLANES, 2},
{templ_OUTPUT_THREE_PLANES, 3},
{templ_OUTPUT_FOUR_PLANES, 4},
};
/* colorspace conversion */
@ -266,12 +277,23 @@ static const gchar templ_SAMPLE_PLANAR[] =
"float4 sample_texture (float2 uv)\n"
"{\n"
" float3 sample;\n"
" sample.x = shaderTexture[0].Sample(samplerState, uv).x;\n"
" sample.%c = shaderTexture[0].Sample(samplerState, uv).x;\n"
" sample.%c = shaderTexture[1].Sample(samplerState, uv).x;\n"
" sample.%c = shaderTexture[2].Sample(samplerState, uv).x;\n"
" return float4 (saturate(sample * %d), 1.0);\n"
"}";
static const gchar templ_SAMPLE_PLANAR_4[] =
"float4 sample_texture (float2 uv)\n"
"{\n"
" float4 sample;\n"
" sample.%c = shaderTexture[0].Sample(samplerState, uv).x;\n"
" sample.%c = shaderTexture[1].Sample(samplerState, uv).x;\n"
" sample.%c = shaderTexture[2].Sample(samplerState, uv).x;\n"
" sample.%c = shaderTexture[3].Sample(samplerState, uv).x;\n"
" return saturate(sample * %d);\n"
"}";
static const gchar templ_SAMPLE_PLANAR_CHROMA[] =
"float4 sample_texture (float2 uv)\n"
"{\n"
@ -370,24 +392,47 @@ static const gchar templ_OUTPUT_CHROMA_PLANAR_SCALED[] =
" return output;\n"
"}";
static const gchar templ_OUTPUT_Y444[] =
static const gchar templ_OUTPUT_PLANAR[] =
"PS_OUTPUT build_output (float4 sample)\n"
"{\n"
" PS_OUTPUT output;\n"
" output.Plane_0 = float4 (sample.x, 0.0, 0.0, 1.0);\n"
" output.Plane_1 = float4 (sample.y, 0.0, 0.0, 1.0);\n"
" output.Plane_2 = float4 (sample.z, 0.0, 0.0, 1.0);\n"
" output.Plane_0 = float4 (sample.%c, 0.0, 0.0, 1.0);\n"
" output.Plane_1 = float4 (sample.%c, 0.0, 0.0, 1.0);\n"
" output.Plane_2 = float4 (sample.%c, 0.0, 0.0, 1.0);\n"
" return output;\n"
"}";
static const gchar templ_OUTPUT_Y444_SCALED[] =
static const gchar templ_OUTPUT_PLANAR_SCALED[] =
"PS_OUTPUT build_output (float4 sample)\n"
"{\n"
" PS_OUTPUT output;\n"
" float3 scaled = sample.xyz / %d;\n"
" output.Plane_0 = float4 (scaled.x, 0.0, 0.0, 1.0);\n"
" output.Plane_1 = float4 (scaled.y, 0.0, 0.0, 1.0);\n"
" output.Plane_2 = float4 (scaled.z, 0.0, 0.0, 1.0);\n"
" output.Plane_0 = float4 (scaled.%c, 0.0, 0.0, 1.0);\n"
" output.Plane_1 = float4 (scaled.%c, 0.0, 0.0, 1.0);\n"
" output.Plane_2 = float4 (scaled.%c, 0.0, 0.0, 1.0);\n"
" return output;\n"
"}";
static const gchar templ_OUTPUT_PLANAR_4[] =
"PS_OUTPUT build_output (float4 sample)\n"
"{\n"
" PS_OUTPUT output;\n"
" output.Plane_0 = float4 (sample.%c, 0.0, 0.0, 1.0);\n"
" output.Plane_1 = float4 (sample.%c, 0.0, 0.0, 1.0);\n"
" output.Plane_2 = float4 (sample.%c, 0.0, 0.0, 1.0);\n"
" output.Plane_3 = float4 (sample.%c, 0.0, 0.0, 1.0);\n"
" return output;\n"
"}";
static const gchar templ_OUTPUT_PLANAR_4_SCALED[] =
"PS_OUTPUT build_output (float4 sample)\n"
"{\n"
" PS_OUTPUT output;\n"
" float4 scaled = sample / %d;\n"
" output.Plane_0 = float4 (scaled.%c, 0.0, 0.0, 1.0);\n"
" output.Plane_1 = float4 (scaled.%c, 0.0, 0.0, 1.0);\n"
" output.Plane_2 = float4 (scaled.%c, 0.0, 0.0, 1.0);\n"
" output.Plane_3 = float4 (scaled.%c, 0.0, 0.0, 1.0);\n"
" return output;\n"
"}";
@ -1089,18 +1134,22 @@ get_packed_yuv_components (GstVideoFormat format, gchar * y, gchar * u,
}
static void
get_planar_component (GstVideoFormat format, gchar * u, gchar * v,
guint * scale)
get_planar_component (GstVideoFormat format, gchar * x, gchar * y, gchar * z,
gchar * w, guint * scale)
{
switch (format) {
case GST_VIDEO_FORMAT_I420_10LE:
case GST_VIDEO_FORMAT_I422_10LE:
case GST_VIDEO_FORMAT_Y444_10LE:
case GST_VIDEO_FORMAT_GBR_10LE:
case GST_VIDEO_FORMAT_GBRA_10LE:
*scale = (1 << 6);
break;
case GST_VIDEO_FORMAT_I420_12LE:
case GST_VIDEO_FORMAT_I422_12LE:
case GST_VIDEO_FORMAT_Y444_12LE:
case GST_VIDEO_FORMAT_GBR_12LE:
case GST_VIDEO_FORMAT_GBRA_12LE:
*scale = (1 << 4);
break;
default:
@ -1108,12 +1157,42 @@ get_planar_component (GstVideoFormat format, gchar * u, gchar * v,
break;
}
if (format == GST_VIDEO_FORMAT_YV12) {
*u = 'z';
*v = 'y';
} else {
*u = 'y';
*v = 'z';
switch (format) {
case GST_VIDEO_FORMAT_RGBP:
*x = 'x';
*y = 'y';
*z = 'z';
break;
case GST_VIDEO_FORMAT_BGRP:
*x = 'z';
*y = 'y';
*z = 'x';
break;
case GST_VIDEO_FORMAT_GBR:
case GST_VIDEO_FORMAT_GBR_10LE:
case GST_VIDEO_FORMAT_GBR_12LE:
*x = 'y';
*y = 'z';
*z = 'x';
break;
case GST_VIDEO_FORMAT_GBRA:
case GST_VIDEO_FORMAT_GBRA_10LE:
case GST_VIDEO_FORMAT_GBRA_12LE:
*x = 'y';
*y = 'z';
*z = 'x';
*w = 'w';
break;
case GST_VIDEO_FORMAT_YV12:
*x = 'x';
*y = 'z';
*z = 'y';
break;
default:
*x = 'x';
*y = 'y';
*z = 'z';
break;
}
}
@ -1768,6 +1847,14 @@ gst_d3d11_converter_update_dest_rect (GstD3D11Converter * self)
case GST_VIDEO_FORMAT_Y444_10LE:
case GST_VIDEO_FORMAT_Y444_12LE:
case GST_VIDEO_FORMAT_Y444_16LE:
case GST_VIDEO_FORMAT_RGBP:
case GST_VIDEO_FORMAT_BGRP:
case GST_VIDEO_FORMAT_GBR:
case GST_VIDEO_FORMAT_GBR_10LE:
case GST_VIDEO_FORMAT_GBR_12LE:
case GST_VIDEO_FORMAT_GBRA:
case GST_VIDEO_FORMAT_GBRA_10LE:
case GST_VIDEO_FORMAT_GBRA_12LE:
for (guint i = 1; i < GST_VIDEO_INFO_N_PLANES (&priv->out_info); i++)
priv->viewport[i] = priv->viewport[0];
break;
@ -1840,10 +1927,10 @@ gst_d3d11_converter_prepare_output (GstD3D11Converter * self,
case GST_VIDEO_FORMAT_Y42B:
case GST_VIDEO_FORMAT_I422_10LE:
case GST_VIDEO_FORMAT_I422_12LE:{
gchar u, v;
gchar y, u, v, w;
guint scale;
get_planar_component (format, &u, &v, &scale);
get_planar_component (format, &y, &u, &v, &w, &scale);
cinfo->ps_output[0] = &output_types[OUTPUT_SINGLE_PLANE];
cinfo->ps_output[1] = &output_types[OUTPUT_TWO_PLANES];
@ -1864,18 +1951,44 @@ gst_d3d11_converter_prepare_output (GstD3D11Converter * self,
case GST_VIDEO_FORMAT_Y444:
case GST_VIDEO_FORMAT_Y444_10LE:
case GST_VIDEO_FORMAT_Y444_12LE:
case GST_VIDEO_FORMAT_Y444_16LE:{
gchar u, v;
case GST_VIDEO_FORMAT_Y444_16LE:
case GST_VIDEO_FORMAT_RGBP:
case GST_VIDEO_FORMAT_BGRP:
case GST_VIDEO_FORMAT_GBR:
case GST_VIDEO_FORMAT_GBR_10LE:
case GST_VIDEO_FORMAT_GBR_12LE:
{
gchar x, y, z, w;
guint scale;
get_planar_component (format, &u, &v, &scale);
get_planar_component (format, &x, &y, &z, &w, &scale);
cinfo->ps_output[0] = &output_types[OUTPUT_THREE_PLANES];
if (info->finfo->depth[0] == 8) {
cinfo->build_output_func[0] = g_strdup (templ_OUTPUT_Y444);
cinfo->build_output_func[0] = g_strdup_printf (templ_OUTPUT_PLANAR,
x, y, z);
} else {
cinfo->build_output_func[0] = g_strdup_printf (templ_OUTPUT_Y444_SCALED,
scale);
cinfo->build_output_func[0] =
g_strdup_printf (templ_OUTPUT_PLANAR_SCALED, scale, x, y, z);
}
break;
}
case GST_VIDEO_FORMAT_GBRA:
case GST_VIDEO_FORMAT_GBRA_10LE:
case GST_VIDEO_FORMAT_GBRA_12LE:
{
gchar x, y, z, w;
guint scale;
get_planar_component (format, &x, &y, &z, &w, &scale);
cinfo->ps_output[0] = &output_types[OUTPUT_FOUR_PLANES];
if (info->finfo->depth[0] == 8) {
cinfo->build_output_func[0] = g_strdup_printf (templ_OUTPUT_PLANAR_4,
x, y, z, w);
} else {
cinfo->build_output_func[0] =
g_strdup_printf (templ_OUTPUT_PLANAR_4_SCALED, scale, x, y, z, w);
}
break;
}
@ -1980,14 +2093,15 @@ gst_d3d11_converter_prepare_sample_texture (GstD3D11Converter * self,
case GST_VIDEO_FORMAT_Y444:
case GST_VIDEO_FORMAT_Y444_10LE:
case GST_VIDEO_FORMAT_Y444_12LE:
case GST_VIDEO_FORMAT_Y444_16LE:{
gchar u, v;
case GST_VIDEO_FORMAT_Y444_16LE:
{
gchar x, y, z, w;
guint scale;
get_planar_component (format, &u, &v, &scale);
get_planar_component (format, &x, &y, &z, &w, &scale);
if (out_rgb) {
cinfo->sample_texture_func[0] = g_strdup_printf (templ_SAMPLE_PLANAR,
u, v, scale);
x, y, z, scale);
} else if (out_gray) {
cinfo->sample_texture_func[0] =
g_strdup_printf (templ_SAMPLE_YUV_LUMA_SCALED, scale);
@ -1996,16 +2110,16 @@ gst_d3d11_converter_prepare_sample_texture (GstD3D11Converter * self,
cinfo->ps_output[0] == &output_types[OUTPUT_THREE_PLANES]) {
/* YUV packed or Y444 */
cinfo->sample_texture_func[0] = g_strdup_printf (templ_SAMPLE_PLANAR,
u, v, scale);
x, y, z, scale);
} else {
if (priv->fast_path) {
cinfo->sample_texture_func[0] =
g_strdup_printf (templ_SAMPLE_YUV_LUMA_SCALED, scale);
cinfo->sample_texture_func[1] =
g_strdup_printf (templ_SAMPLE_PLANAR_CHROMA, u, v, scale);
g_strdup_printf (templ_SAMPLE_PLANAR_CHROMA, y, z, scale);
} else {
cinfo->sample_texture_func[0] =
g_strdup_printf (templ_SAMPLE_PLANAR, u, v, scale);
g_strdup_printf (templ_SAMPLE_PLANAR, x, y, z, scale);
cinfo->sample_texture_func[1] =
g_strdup (cinfo->sample_texture_func[0]);
}
@ -2015,6 +2129,35 @@ gst_d3d11_converter_prepare_sample_texture (GstD3D11Converter * self,
return FALSE;
}
break;
}
/* RGB planar */
case GST_VIDEO_FORMAT_RGBP:
case GST_VIDEO_FORMAT_BGRP:
case GST_VIDEO_FORMAT_GBR:
case GST_VIDEO_FORMAT_GBR_10LE:
case GST_VIDEO_FORMAT_GBR_12LE:
case GST_VIDEO_FORMAT_GBRA:
case GST_VIDEO_FORMAT_GBRA_10LE:
case GST_VIDEO_FORMAT_GBRA_12LE:
{
gchar x, y, z, w;
guint scale;
get_planar_component (format, &x, &y, &z, &w, &scale);
if (GST_VIDEO_INFO_N_PLANES (in_info) == 4) {
cinfo->sample_texture_func[0] = g_strdup_printf (templ_SAMPLE_PLANAR_4,
x, y, z, w, scale);
} else {
cinfo->sample_texture_func[0] = g_strdup_printf (templ_SAMPLE_PLANAR,
x, y, z, scale);
}
if (cinfo->ps_output[1]) {
cinfo->sample_texture_func[1] =
g_strdup (cinfo->sample_texture_func[0]);
}
break;
}
/* yuv packed */
case GST_VIDEO_FORMAT_Y410:{
@ -2634,23 +2777,45 @@ gst_d3d11_converter_calculate_border_color (GstD3D11Converter * self)
GST_DEBUG_OBJECT (self, "Calculated background color ARGB: %f, %f, %f, %f",
a, converted[0], converted[1], converted[2]);
if (GST_VIDEO_INFO_IS_RGB (out_info) || GST_VIDEO_INFO_IS_GRAY (out_info)) {
/* background color for video processor */
priv->background_color.RGBA.R = converted[0];
priv->background_color.RGBA.G = converted[1];
priv->background_color.RGBA.B = converted[2];
priv->background_color.RGBA.A = a;
/* background color for video processor */
priv->background_color.RGBA.R = converted[0];
priv->background_color.RGBA.G = converted[1];
priv->background_color.RGBA.B = converted[2];
priv->background_color.RGBA.A = a;
/* scale down if output is planar high bitdepth format */
switch (format) {
case GST_VIDEO_FORMAT_I420_10LE:
case GST_VIDEO_FORMAT_I422_10LE:
case GST_VIDEO_FORMAT_Y444_10LE:
case GST_VIDEO_FORMAT_GBR_10LE:
case GST_VIDEO_FORMAT_GBRA_10LE:
for (guint i = 0; i < 3; i++) {
converted[i] /= 64.0;
}
a /= 64.0;
break;
case GST_VIDEO_FORMAT_I420_12LE:
case GST_VIDEO_FORMAT_I422_12LE:
case GST_VIDEO_FORMAT_Y444_12LE:
case GST_VIDEO_FORMAT_GBR_12LE:
case GST_VIDEO_FORMAT_GBRA_12LE:
for (guint i = 0; i < 3; i++) {
converted[i] /= 16.0;
}
a /= 16.0;
break;
default:
break;
}
if ((GST_VIDEO_INFO_IS_RGB (out_info) &&
GST_VIDEO_INFO_N_PLANES (out_info) == 1) ||
GST_VIDEO_INFO_IS_GRAY (out_info)) {
for (guint i = 0; i < 3; i++)
priv->clear_color[0][i] = converted[i];
priv->clear_color[0][3] = a;
} else {
/* background color for video processor */
priv->background_color.YCbCr.Y = converted[0];
priv->background_color.YCbCr.Cb = converted[1];
priv->background_color.YCbCr.Cr = converted[2];
priv->background_color.YCbCr.A = a;
switch (format) {
case GST_VIDEO_FORMAT_VUYA:
priv->clear_color[0][0] = converted[2];
@ -2713,6 +2878,31 @@ gst_d3d11_converter_calculate_border_color (GstD3D11Converter * self)
priv->clear_color[2][2] = 0;
priv->clear_color[2][3] = 1.0;
break;
case GST_VIDEO_FORMAT_RGBP:
priv->clear_color[0][0] = converted[0];
priv->clear_color[1][0] = converted[1];
priv->clear_color[2][0] = converted[2];
break;
case GST_VIDEO_FORMAT_BGRP:
priv->clear_color[0][0] = converted[2];
priv->clear_color[1][0] = converted[1];
priv->clear_color[2][0] = converted[0];
break;
case GST_VIDEO_FORMAT_GBR:
case GST_VIDEO_FORMAT_GBR_10LE:
case GST_VIDEO_FORMAT_GBR_12LE:
priv->clear_color[0][0] = converted[1];
priv->clear_color[1][0] = converted[2];
priv->clear_color[2][0] = converted[0];
break;
case GST_VIDEO_FORMAT_GBRA:
case GST_VIDEO_FORMAT_GBRA_10LE:
case GST_VIDEO_FORMAT_GBRA_12LE:
priv->clear_color[0][0] = converted[1];
priv->clear_color[1][0] = converted[2];
priv->clear_color[2][0] = converted[0];
priv->clear_color[3][0] = a;
break;
default:
g_assert_not_reached ();
break;

View file

@ -543,7 +543,7 @@ gst_d3d11_device_setup_format_table (GstD3D11Device * self)
}
break;
}
/* YUV non-DXGI native formats */
/* non-DXGI native formats */
case GST_VIDEO_FORMAT_NV21:
case GST_VIDEO_FORMAT_I420:
case GST_VIDEO_FORMAT_YV12:
@ -557,7 +557,17 @@ gst_d3d11_device_setup_format_table (GstD3D11Device * self)
case GST_VIDEO_FORMAT_Y444_12LE:
case GST_VIDEO_FORMAT_Y444_16LE:
case GST_VIDEO_FORMAT_AYUV:
case GST_VIDEO_FORMAT_AYUV64:{
case GST_VIDEO_FORMAT_AYUV64:
/* RGB planar formats */
case GST_VIDEO_FORMAT_RGBP:
case GST_VIDEO_FORMAT_BGRP:
case GST_VIDEO_FORMAT_GBR:
case GST_VIDEO_FORMAT_GBR_10LE:
case GST_VIDEO_FORMAT_GBR_12LE:
case GST_VIDEO_FORMAT_GBRA:
case GST_VIDEO_FORMAT_GBRA_10LE:
case GST_VIDEO_FORMAT_GBRA_12LE:
{
gboolean supported = TRUE;
native = FALSE;

View file

@ -1,6 +1,6 @@
/* GStreamer
*
* unit test for d3d11colorconvert element
* unit test for d3d11convert element
* Copyright (C) 2019 Matthew Waters <matthew@centricular.com>
* Copyright (C) 2019 Seungha Yang <seungha.yang@navercorp.com>
*
@ -54,11 +54,12 @@ static const gchar *YUV_FORMATS[] = {
};
static const gchar *RGB_FORMATS[] = {
"BGRA", "RGBA", "RGB10A2_LE", "BGRx", "RGBx", "RGBA64_LE"
"BGRA", "RGBA", "RGB10A2_LE", "BGRx", "RGBx", "RGBA64_LE", "RGBP", "BGRP",
"GBR", "GBR_10LE", "GBR_12LE", "GBRA", "GBRA_10LE", "GBRA_12LE"
};
static const gchar *PACKED_YUV_FORMATS[] = {
"Y410",
"Y410", "YUY2",
};
static const gchar *GRAY_FORMATS[] = {
@ -70,7 +71,7 @@ static TestFrame test_rgba_reorder[] = {
{1, 1, GST_VIDEO_FORMAT_BGRA, {(guint8 *) & bgra_reorder_data}},
};
GST_START_TEST (test_d3d11_color_convert_rgba_reorder)
GST_START_TEST (test_d3d11_convert_rgba_reorder)
{
GstHarness *h =
gst_harness_new_parse ("d3d11upload ! d3d11convert ! d3d11download");
@ -157,8 +158,10 @@ run_convert_pipelne (const gchar * in_format, const gchar * out_format)
GMainLoop *loop = g_main_loop_new (NULL, FALSE);
gchar *pipeline_str =
g_strdup_printf ("videotestsrc num-buffers=1 is-live=true ! "
"video/x-raw,format=%s,framerate=3/1 ! d3d11upload ! "
"d3d11convert ! d3d11download ! video/x-raw,format=%s ! "
"video/x-raw,format=%s,framerate=3/1,width=128,height=64,"
"pixel-aspect-ratio=1/1 ! d3d11upload ! "
"d3d11convert border-color=0xffffaaaaaaaaaaaa ! d3d11download ! "
"video/x-raw,format=%s,width=320,height=240,pixel-aspect-ratio=1/1 ! "
"videoconvert ! %s", in_format, out_format,
run_visual_test ? "d3d11videosink" : "fakesink");
GstElement *pipeline;
@ -180,15 +183,12 @@ run_convert_pipelne (const gchar * in_format, const gchar * out_format)
g_main_loop_unref (loop);
}
GST_START_TEST (test_d3d11_color_convert_yuv_yuv)
GST_START_TEST (test_d3d11_convert_yuv_yuv)
{
gint i, j;
for (i = 0; i < G_N_ELEMENTS (YUV_FORMATS); i++) {
for (j = 0; j < G_N_ELEMENTS (YUV_FORMATS); j++) {
if (i == j)
continue;
GST_DEBUG ("run conversion %s to %s", YUV_FORMATS[i], YUV_FORMATS[j]);
run_convert_pipelne (YUV_FORMATS[i], YUV_FORMATS[j]);
}
@ -197,15 +197,12 @@ GST_START_TEST (test_d3d11_color_convert_yuv_yuv)
GST_END_TEST;
GST_START_TEST (test_d3d11_color_convert_yuv_rgb)
GST_START_TEST (test_d3d11_convert_yuv_rgb)
{
gint i, j;
for (i = 0; i < G_N_ELEMENTS (YUV_FORMATS); i++) {
for (j = 0; j < G_N_ELEMENTS (RGB_FORMATS); j++) {
if (i == j)
continue;
GST_DEBUG ("run conversion %s to %s", YUV_FORMATS[i], RGB_FORMATS[j]);
run_convert_pipelne (YUV_FORMATS[i], RGB_FORMATS[j]);
}
@ -214,15 +211,12 @@ GST_START_TEST (test_d3d11_color_convert_yuv_rgb)
GST_END_TEST;
GST_START_TEST (test_d3d11_color_convert_yuv_gray)
GST_START_TEST (test_d3d11_convert_yuv_gray)
{
gint i, j;
for (i = 0; i < G_N_ELEMENTS (YUV_FORMATS); i++) {
for (j = 0; j < G_N_ELEMENTS (GRAY_FORMATS); j++) {
if (i == j)
continue;
GST_DEBUG ("run conversion %s to %s", YUV_FORMATS[i], GRAY_FORMATS[j]);
run_convert_pipelne (YUV_FORMATS[i], GRAY_FORMATS[j]);
}
@ -231,7 +225,7 @@ GST_START_TEST (test_d3d11_color_convert_yuv_gray)
GST_END_TEST;
GST_START_TEST (test_d3d11_color_convert_rgb_yuv)
GST_START_TEST (test_d3d11_convert_rgb_yuv)
{
gint i, j;
@ -245,15 +239,12 @@ GST_START_TEST (test_d3d11_color_convert_rgb_yuv)
GST_END_TEST;
GST_START_TEST (test_d3d11_color_convert_rgb_rgb)
GST_START_TEST (test_d3d11_convert_rgb_rgb)
{
gint i, j;
for (i = 0; i < G_N_ELEMENTS (RGB_FORMATS); i++) {
for (j = 0; j < G_N_ELEMENTS (RGB_FORMATS); j++) {
if (i == j)
continue;
GST_DEBUG ("run conversion %s to %s", RGB_FORMATS[i], RGB_FORMATS[j]);
run_convert_pipelne (RGB_FORMATS[i], RGB_FORMATS[j]);
}
@ -262,7 +253,7 @@ GST_START_TEST (test_d3d11_color_convert_rgb_rgb)
GST_END_TEST;
GST_START_TEST (test_d3d11_color_convert_rgb_gray)
GST_START_TEST (test_d3d11_convert_rgb_gray)
{
gint i, j;
@ -276,7 +267,7 @@ GST_START_TEST (test_d3d11_color_convert_rgb_gray)
GST_END_TEST;
GST_START_TEST (test_d3d11_color_convert_packed_yuv_yuv)
GST_START_TEST (test_d3d11_convert_packed_yuv_yuv)
{
gint i, j;
@ -291,7 +282,7 @@ GST_START_TEST (test_d3d11_color_convert_packed_yuv_yuv)
GST_END_TEST;
GST_START_TEST (test_d3d11_color_convert_packed_yuv_rgb)
GST_START_TEST (test_d3d11_convert_packed_yuv_rgb)
{
gint i, j;
@ -306,7 +297,7 @@ GST_START_TEST (test_d3d11_color_convert_packed_yuv_rgb)
GST_END_TEST;
GST_START_TEST (test_d3d11_color_convert_packed_yuv_gray)
GST_START_TEST (test_d3d11_convert_packed_yuv_gray)
{
gint i, j;
@ -321,7 +312,7 @@ GST_START_TEST (test_d3d11_color_convert_packed_yuv_gray)
GST_END_TEST;
GST_START_TEST (test_d3d11_color_convert_gray_yuv)
GST_START_TEST (test_d3d11_convert_gray_yuv)
{
gint i, j;
@ -335,7 +326,7 @@ GST_START_TEST (test_d3d11_color_convert_gray_yuv)
GST_END_TEST;
GST_START_TEST (test_d3d11_color_convert_gray_rgb)
GST_START_TEST (test_d3d11_convert_gray_rgb)
{
gint i, j;
@ -350,33 +341,33 @@ GST_START_TEST (test_d3d11_color_convert_gray_rgb)
GST_END_TEST;
static Suite *
d3d11colorconvert_suite (void)
d3d11convert_suite (void)
{
Suite *s = suite_create ("d3d11colorconvert");
Suite *s = suite_create ("d3d11convert");
TCase *tc_basic = tcase_create ("general");
run_visual_test = g_getenv ("ENABLE_D3D11_VISUAL_TEST");
suite_add_tcase (s, tc_basic);
tcase_add_test (tc_basic, test_d3d11_color_convert_rgba_reorder);
tcase_add_test (tc_basic, test_d3d11_convert_rgba_reorder);
/* XXX: Some methods for device's capability checking and initialization
* are plugin internal. Enable conversion tests only when it's enabled */
if (g_getenv ("ENABLE_D3D11_CONVERSION_TEST")) {
tcase_add_test (tc_basic, test_d3d11_color_convert_yuv_yuv);
tcase_add_test (tc_basic, test_d3d11_color_convert_yuv_rgb);
tcase_add_test (tc_basic, test_d3d11_color_convert_yuv_gray);
tcase_add_test (tc_basic, test_d3d11_color_convert_rgb_yuv);
tcase_add_test (tc_basic, test_d3d11_color_convert_rgb_rgb);
tcase_add_test (tc_basic, test_d3d11_color_convert_rgb_gray);
tcase_add_test (tc_basic, test_d3d11_color_convert_packed_yuv_yuv);
tcase_add_test (tc_basic, test_d3d11_color_convert_packed_yuv_rgb);
tcase_add_test (tc_basic, test_d3d11_color_convert_packed_yuv_gray);
tcase_add_test (tc_basic, test_d3d11_color_convert_gray_yuv);
tcase_add_test (tc_basic, test_d3d11_color_convert_gray_rgb);
tcase_add_test (tc_basic, test_d3d11_convert_yuv_yuv);
tcase_add_test (tc_basic, test_d3d11_convert_yuv_rgb);
tcase_add_test (tc_basic, test_d3d11_convert_yuv_gray);
tcase_add_test (tc_basic, test_d3d11_convert_rgb_yuv);
tcase_add_test (tc_basic, test_d3d11_convert_rgb_rgb);
tcase_add_test (tc_basic, test_d3d11_convert_rgb_gray);
tcase_add_test (tc_basic, test_d3d11_convert_packed_yuv_yuv);
tcase_add_test (tc_basic, test_d3d11_convert_packed_yuv_rgb);
tcase_add_test (tc_basic, test_d3d11_convert_packed_yuv_gray);
tcase_add_test (tc_basic, test_d3d11_convert_gray_yuv);
tcase_add_test (tc_basic, test_d3d11_convert_gray_rgb);
}
return s;
}
GST_CHECK_MAIN (d3d11colorconvert);
GST_CHECK_MAIN (d3d11convert);