diff --git a/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json b/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json index bf6df130f3..9356161cec 100644 --- a/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json +++ b/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json @@ -8924,12 +8924,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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "src", "presence": "always" } @@ -9004,7 +9004,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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "sink", "presence": "request", "type": "GstD3D11CompositorPad" @@ -9077,12 +9077,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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "src", "presence": "always" } @@ -9290,12 +9290,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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n", + "caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\nvideo/x-raw:\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n", + "caps": "video/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n\nvideo/x-raw(memory:D3D11Memory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\nvideo/x-raw:\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n\nvideo/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition):\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n", "direction": "src", "presence": "always" } @@ -9491,12 +9491,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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "src", "presence": "always" } @@ -9934,12 +9934,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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "src", "presence": "always" } @@ -10171,7 +10171,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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "src", "presence": "always" } @@ -10259,12 +10259,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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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):\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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "caps": "video/x-raw:\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:D3D11Memory):\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "src", "presence": "always" } @@ -10290,7 +10290,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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, 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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, YUY2, Y410, Y210, Y212_LE, Y412_LE, GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\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, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, NV12, AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, I420, YV12, GRAY16_LE, GRAY8, v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, RGB15, BGR15 }\n width: [ 1, 16384 ]\n height: [ 1, 16384 ]\n framerate: [ 0/1, 2147483647/1 ]\n", "direction": "sink", "presence": "always" } diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11-private.h b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11-private.h index 17cf92e079..e2639a91eb 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11-private.h +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11-private.h @@ -29,13 +29,41 @@ G_BEGIN_DECLS +/* + * Preferred sorting order in a tier + * - number of components + * - depth + * - subsampling + * - supports both SRV and RTV + * - prefer smaller number of planes + * - prefer non-complex formats + * - prefer YUV formats over RGB ones + * - prefer I420 over YV12 + * - format name + */ + +/* DXGI (semi) native formats */ +#define GST_D3D11_TIER_0_FORMATS \ + "RGBA64_LE, BGRA64_LE, Y412_LE, RGB10A2_LE, Y410, BGR10A2_LE, Y212_LE, " \ + "Y210, VUYA, RGBA, BGRA, P016_LE, P012_LE, P010_10LE, RGBx, BGRx, YUY2, " \ + "NV12" + +/* both SRV and RTV are supported */ +#define GST_D3D11_TIER_1_FORMATS \ + "AYUV64, GBRA_12LE, GBRA_10LE, AYUV, ABGR, ARGB, GBRA, Y444_16LE, " \ + "GBR_16LE, Y444_12LE, GBR_12LE, I422_12LE, I420_12LE, Y444_10LE, GBR_10LE, " \ + "I422_10LE, I420_10LE, Y444, BGRP, GBR, RGBP, xBGR, xRGB, Y42B, NV21, " \ + "I420, YV12, GRAY16_LE, GRAY8" + +/* pre/post processing required formats */ +#define GST_D3D11_TIER_LAST_FORMATS \ + "v216, v210, r210, v308, IYU2, RGB, BGR, UYVY, VYUY, YVYU, RGB16, BGR16, " \ + "RGB15, BGR15" + #define GST_D3D11_COMMON_FORMATS \ - "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, YUY2, Y410, " \ - "Y210, Y212_LE, Y412_LE, " \ - "GRAY8, GRAY16_LE, AYUV, AYUV64, RGBP, BGRP, GBR, GBR_10LE, GBR_12LE, " \ - "GBR_16LE, GBRA, GBRA_10LE, GBRA_12LE" + GST_D3D11_TIER_0_FORMATS ", " \ + GST_D3D11_TIER_1_FORMATS ", " \ + GST_D3D11_TIER_LAST_FORMATS #define GST_D3D11_SINK_FORMATS \ "{ " GST_D3D11_COMMON_FORMATS " }" @@ -78,8 +106,8 @@ void gst_d3d11_device_log_live_objects (GstD3D11Device * device, { DXGI_FORMAT_ ##r0, DXGI_FORMAT_ ##r1, DXGI_FORMAT_ ##r2, DXGI_FORMAT_ ##r3 }, \ (D3D11_FORMAT_SUPPORT) (D3D11_FORMAT_SUPPORT_RENDER_TARGET | D3D11_FORMAT_SUPPORT_SHADER_SAMPLE) } -#define MAKE_FORMAT_MAP_YUV_FULL(g,d,r0,r1,r2,r3,f) \ - { GST_VIDEO_FORMAT_ ##g, DXGI_FORMAT_ ##d, \ +#define MAKE_FORMAT_MAP_FULL(g,d,r0,r1,r2,r3,f) \ + { g, DXGI_FORMAT_ ##d, \ { DXGI_FORMAT_ ##r0, DXGI_FORMAT_ ##r1, DXGI_FORMAT_ ##r2, DXGI_FORMAT_ ##r3 }, \ { DXGI_FORMAT_ ##r0, DXGI_FORMAT_ ##r1, DXGI_FORMAT_ ##r2, DXGI_FORMAT_ ##r3 }, \ (D3D11_FORMAT_SUPPORT) (f) } @@ -101,6 +129,10 @@ static const GstD3D11Format _gst_d3d11_default_format_map[] = { MAKE_FORMAT_MAP_RGB (RGBA, R8G8B8A8_UNORM), MAKE_FORMAT_MAP_RGB (BGRx, B8G8R8A8_UNORM), MAKE_FORMAT_MAP_RGB (RGBx, R8G8B8A8_UNORM), + MAKE_FORMAT_MAP_RGB (ARGB, R8G8B8A8_UNORM), + MAKE_FORMAT_MAP_RGB (xRGB, R8G8B8A8_UNORM), + MAKE_FORMAT_MAP_RGB (ABGR, R8G8B8A8_UNORM), + MAKE_FORMAT_MAP_RGB (xBGR, R8G8B8A8_UNORM), MAKE_FORMAT_MAP_RGB (RGB10A2_LE, R10G10B10A2_UNORM), MAKE_FORMAT_MAP_RGB (RGBA64_LE, R16G16B16A16_UNORM), MAKE_FORMAT_MAP_YUV (AYUV, UNKNOWN, R8G8B8A8_UNORM, UNKNOWN, UNKNOWN, UNKNOWN), @@ -122,6 +154,9 @@ static const GstD3D11Format _gst_d3d11_default_format_map[] = { MAKE_FORMAT_MAP_YUV (Y444_10LE, UNKNOWN, R16_UNORM, R16_UNORM, R16_UNORM, UNKNOWN), MAKE_FORMAT_MAP_YUV (Y444_12LE, UNKNOWN, R16_UNORM, R16_UNORM, R16_UNORM, UNKNOWN), MAKE_FORMAT_MAP_YUV (Y444_16LE, UNKNOWN, R16_UNORM, R16_UNORM, R16_UNORM, UNKNOWN), + MAKE_FORMAT_MAP_YUV (UYVY, UNKNOWN, R8G8B8A8_UNORM, UNKNOWN, UNKNOWN, UNKNOWN), + MAKE_FORMAT_MAP_YUV (VYUY, UNKNOWN, R8G8B8A8_UNORM, UNKNOWN, UNKNOWN, UNKNOWN), + MAKE_FORMAT_MAP_YUV (YVYU, UNKNOWN, R8G8B8A8_UNORM, UNKNOWN, UNKNOWN, UNKNOWN), /* GRAY */ /* NOTE: To support conversion by using video processor, * mark DXGI_FORMAT_{R8,R16}_UNORM formats as known dxgi_format. @@ -129,15 +164,59 @@ static const GstD3D11Format _gst_d3d11_default_format_map[] = { * those formats */ MAKE_FORMAT_MAP_RGB (GRAY8, R8_UNORM), MAKE_FORMAT_MAP_RGB (GRAY16_LE, R16_UNORM), - MAKE_FORMAT_MAP_YUV_FULL (Y410, Y410, R10G10B10A2_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_Y410, Y410, + R10G10B10A2_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), - MAKE_FORMAT_MAP_YUV_FULL (YUY2, YUY2, R8G8B8A8_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_BGR10A2_LE, Y410, + R10G10B10A2_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), - MAKE_FORMAT_MAP_YUV_FULL (Y210, Y210, R16G16B16A16_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_YUY2, YUY2, + R8G8B8A8_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), - MAKE_FORMAT_MAP_YUV_FULL (Y212_LE, Y216, R16G16B16A16_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_Y210, Y210, + R16G16B16A16_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), - MAKE_FORMAT_MAP_YUV_FULL (Y412_LE, Y416, R16G16B16A16_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_Y212_LE, Y216, + R16G16B16A16_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_Y412_LE, Y416, + R16G16B16A16_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_BGRA64_LE, Y416, + R16G16B16A16_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_RGB, UNKNOWN, + R8G8B8A8_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_BGR, UNKNOWN, + R8G8B8A8_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_v210, UNKNOWN, + R10G10B10A2_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_v216, UNKNOWN, + R16G16B16A16_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_v308, UNKNOWN, + R8G8B8A8_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_IYU2, UNKNOWN, + R8G8B8A8_UNORM, UNKNOWN, UNKNOWN, UNKNOWN, + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_RGB16, UNKNOWN, + R16_UINT, UNKNOWN, UNKNOWN, UNKNOWN, + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_BGR16, UNKNOWN, + R16_UINT, UNKNOWN, UNKNOWN, UNKNOWN, + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_RGB15, UNKNOWN, + R16_UINT, UNKNOWN, UNKNOWN, UNKNOWN, + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_BGR15, UNKNOWN, + R16_UINT, UNKNOWN, UNKNOWN, UNKNOWN, + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), + MAKE_FORMAT_MAP_FULL (GST_VIDEO_FORMAT_r210, UNKNOWN, + R32_UINT, UNKNOWN, UNKNOWN, UNKNOWN, D3D11_FORMAT_SUPPORT_SHADER_SAMPLE), MAKE_FORMAT_MAP_RGBP (RGBP, R8_UNORM, UNKNOWN), MAKE_FORMAT_MAP_RGBP (BGRP, R8_UNORM, UNKNOWN), @@ -151,8 +230,9 @@ static const GstD3D11Format _gst_d3d11_default_format_map[] = { }; #undef MAKE_FORMAT_MAP_YUV -#undef MAKE_FORMAT_MAP_YUV_FULL +#undef MAKE_FORMAT_MAP_FULL #undef MAKE_FORMAT_MAP_RGB +#undef MAKE_FORMAT_MAP_RGBP #define GST_D3D11_N_FORMATS G_N_ELEMENTS(_gst_d3d11_default_format_map) diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter-builder.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter-builder.cpp index 75125a616f..20b813a70d 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter-builder.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter-builder.cpp @@ -129,6 +129,18 @@ make_input (GstVideoFormat format, gboolean premul) case GST_VIDEO_FORMAT_RGBx: case GST_VIDEO_FORMAT_BGRx: return "RGBx"; + case GST_VIDEO_FORMAT_ARGB: + if (premul) + return "ARGBPremul"; + return "ARGB"; + case GST_VIDEO_FORMAT_xRGB: + return "xRGB"; + case GST_VIDEO_FORMAT_ABGR: + if (premul) + return "ABGRPremul"; + return "ABGR"; + case GST_VIDEO_FORMAT_xBGR: + return "xBGR"; case GST_VIDEO_FORMAT_VUYA: if (premul) return "VUYAPremul"; @@ -190,6 +202,12 @@ make_input (GstVideoFormat format, gboolean premul) if (premul) return "Y412Premul"; return "Y412"; + case GST_VIDEO_FORMAT_BGR10A2_LE: + return "BGR10A2"; + case GST_VIDEO_FORMAT_BGRA64_LE: + if (premul) + return "BGRA64Premul"; + return "BGRA64"; default: g_assert_not_reached (); break; @@ -217,6 +235,24 @@ make_output (GstVideoFormat format, gboolean premul) case GST_VIDEO_FORMAT_BGRx: ret.push_back(std::make_pair(PS_OUTPUT::PACKED, "RGBx")); break; + case GST_VIDEO_FORMAT_ARGB: + if (premul) + ret.push_back(std::make_pair(PS_OUTPUT::PACKED, "ARGBPremul")); + else + ret.push_back(std::make_pair(PS_OUTPUT::PACKED, "ARGB")); + break; + case GST_VIDEO_FORMAT_xRGB: + ret.push_back(std::make_pair(PS_OUTPUT::PACKED, "xRGB")); + break; + case GST_VIDEO_FORMAT_ABGR: + if (premul) + ret.push_back(std::make_pair(PS_OUTPUT::PACKED, "ABGRPremul")); + else + ret.push_back(std::make_pair(PS_OUTPUT::PACKED, "ABGR")); + break; + case GST_VIDEO_FORMAT_xBGR: + ret.push_back(std::make_pair(PS_OUTPUT::PACKED, "xBGR")); + break; case GST_VIDEO_FORMAT_VUYA: if (premul) ret.push_back(std::make_pair(PS_OUTPUT::PACKED, "VUYAPremul")); diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter-helper.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter-helper.cpp index 7314fb570d..e6e9b7ab44 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter-helper.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter-helper.cpp @@ -108,7 +108,7 @@ gst_d3d11_converter_helper_new (GstD3D11Device * device, D3D_FEATURE_LEVEL feature_level; DXGI_FORMAT srv_format = DXGI_FORMAT_UNKNOWN; DXGI_FORMAT uav_format = DXGI_FORMAT_UNKNOWN; - guint x_unit = 16; + guint x_unit = 8; guint y_unit = 8; std::string entry_point; HRESULT hr; @@ -121,11 +121,83 @@ gst_d3d11_converter_helper_new (GstD3D11Device * device, case GST_VIDEO_FORMAT_YUY2: srv_format = DXGI_FORMAT_R8G8B8A8_UNORM; in_format_str = "YUY2"; + x_unit = 16; + break; + case GST_VIDEO_FORMAT_UYVY: + srv_format = DXGI_FORMAT_R8G8B8A8_UNORM; + in_format_str = "UYVY"; + x_unit = 16; + break; + case GST_VIDEO_FORMAT_VYUY: + srv_format = DXGI_FORMAT_R8G8B8A8_UNORM; + in_format_str = "VYUY"; + x_unit = 16; + break; + case GST_VIDEO_FORMAT_YVYU: + srv_format = DXGI_FORMAT_R8G8B8A8_UNORM; + in_format_str = "YVYU"; + x_unit = 16; break; case GST_VIDEO_FORMAT_Y210: case GST_VIDEO_FORMAT_Y212_LE: srv_format = DXGI_FORMAT_R16G16B16A16_UNORM; in_format_str = "YUY2"; + x_unit = 16; + break; + case GST_VIDEO_FORMAT_v210: + srv_format = DXGI_FORMAT_R10G10B10A2_UNORM; + in_format_str = "v210"; + x_unit = 48; + break; + case GST_VIDEO_FORMAT_v216: + srv_format = DXGI_FORMAT_R16G16B16A16_UNORM; + in_format_str = "UYVY"; + x_unit = 16; + break; + case GST_VIDEO_FORMAT_v308: + srv_format = DXGI_FORMAT_R8G8B8A8_UNORM; + in_format_str = "v308"; + x_unit = 32; + break; + case GST_VIDEO_FORMAT_IYU2: + srv_format = DXGI_FORMAT_R8G8B8A8_UNORM; + in_format_str = "IYU2"; + x_unit = 32; + break; + case GST_VIDEO_FORMAT_RGB: + srv_format = DXGI_FORMAT_R8G8B8A8_UNORM; + in_format_str = "RGB"; + x_unit = 32; + break; + case GST_VIDEO_FORMAT_BGR: + srv_format = DXGI_FORMAT_R8G8B8A8_UNORM; + in_format_str = "BGR"; + x_unit = 32; + break; + case GST_VIDEO_FORMAT_RGB16: + srv_format = DXGI_FORMAT_R16_UINT; + in_format_str = "RGB16"; + x_unit = 8; + break; + case GST_VIDEO_FORMAT_BGR16: + srv_format = DXGI_FORMAT_R16_UINT; + in_format_str = "BGR16"; + x_unit = 8; + break; + case GST_VIDEO_FORMAT_RGB15: + srv_format = DXGI_FORMAT_R16_UINT; + in_format_str = "RGB15"; + x_unit = 8; + break; + case GST_VIDEO_FORMAT_BGR15: + srv_format = DXGI_FORMAT_R16_UINT; + in_format_str = "BGR15"; + x_unit = 8; + break; + case GST_VIDEO_FORMAT_r210: + srv_format = DXGI_FORMAT_R32_UINT; + in_format_str = "r210"; + x_unit = 8; break; case GST_VIDEO_FORMAT_AYUV: srv_format = DXGI_FORMAT_R8G8B8A8_UNORM; @@ -135,6 +207,18 @@ gst_d3d11_converter_helper_new (GstD3D11Device * device, srv_format = DXGI_FORMAT_R16G16B16A16_UNORM; in_format_str = "AYUV"; break; + case GST_VIDEO_FORMAT_RGBA: + srv_format = DXGI_FORMAT_R8G8B8A8_UNORM; + in_format_str = "RGBA"; + break; + case GST_VIDEO_FORMAT_RGB10A2_LE: + srv_format = DXGI_FORMAT_R10G10B10A2_UNORM; + in_format_str = "RGBA"; + break; + case GST_VIDEO_FORMAT_RGBA64_LE: + srv_format = DXGI_FORMAT_R16G16B16A16_UNORM; + in_format_str = "RGBA"; + break; default: g_assert_not_reached (); return nullptr; @@ -144,11 +228,48 @@ gst_d3d11_converter_helper_new (GstD3D11Device * device, case GST_VIDEO_FORMAT_YUY2: uav_format = DXGI_FORMAT_R8G8B8A8_UNORM; out_format_str = "YUY2"; + x_unit = 16; + break; + case GST_VIDEO_FORMAT_UYVY: + uav_format = DXGI_FORMAT_R8G8B8A8_UNORM; + out_format_str = "UYVY"; + x_unit = 16; + break; + case GST_VIDEO_FORMAT_VYUY: + uav_format = DXGI_FORMAT_R8G8B8A8_UNORM; + out_format_str = "VYUY"; + x_unit = 16; + break; + case GST_VIDEO_FORMAT_YVYU: + uav_format = DXGI_FORMAT_R8G8B8A8_UNORM; + out_format_str = "YVYU"; + x_unit = 16; break; case GST_VIDEO_FORMAT_Y210: case GST_VIDEO_FORMAT_Y212_LE: uav_format = DXGI_FORMAT_R16G16B16A16_UNORM; out_format_str = "YUY2"; + x_unit = 16; + break; + case GST_VIDEO_FORMAT_v210: + uav_format = DXGI_FORMAT_R10G10B10A2_UNORM; + out_format_str = "v210"; + x_unit = 48; + break; + case GST_VIDEO_FORMAT_v216: + uav_format = DXGI_FORMAT_R16G16B16A16_UNORM; + out_format_str = "UYVY"; + x_unit = 16; + break; + case GST_VIDEO_FORMAT_v308: + uav_format = DXGI_FORMAT_R8G8B8A8_UNORM; + out_format_str = "v308"; + x_unit = 32; + break; + case GST_VIDEO_FORMAT_IYU2: + uav_format = DXGI_FORMAT_R8G8B8A8_UNORM; + out_format_str = "IYU2"; + x_unit = 32; break; case GST_VIDEO_FORMAT_Y410: uav_format = DXGI_FORMAT_R10G10B10A2_UNORM; @@ -160,6 +281,51 @@ gst_d3d11_converter_helper_new (GstD3D11Device * device, out_format_str = "Y410"; x_unit = 8; break; + case GST_VIDEO_FORMAT_RGB: + uav_format = DXGI_FORMAT_R8G8B8A8_UNORM; + out_format_str = "RGB"; + x_unit = 32; + break; + case GST_VIDEO_FORMAT_BGR: + uav_format = DXGI_FORMAT_R8G8B8A8_UNORM; + out_format_str = "BGR"; + x_unit = 32; + break; + case GST_VIDEO_FORMAT_RGB16: + uav_format = DXGI_FORMAT_R16_UINT; + out_format_str = "RGB16"; + x_unit = 8; + break; + case GST_VIDEO_FORMAT_BGR16: + uav_format = DXGI_FORMAT_R16_UINT; + out_format_str = "BGR16"; + x_unit = 8; + break; + case GST_VIDEO_FORMAT_RGB15: + uav_format = DXGI_FORMAT_R16_UINT; + out_format_str = "RGB15"; + x_unit = 8; + break; + case GST_VIDEO_FORMAT_BGR15: + uav_format = DXGI_FORMAT_R16_UINT; + out_format_str = "BGR15"; + x_unit = 8; + break; + case GST_VIDEO_FORMAT_r210: + uav_format = DXGI_FORMAT_R32_UINT; + out_format_str = "r210"; + x_unit = 8; + break; + case GST_VIDEO_FORMAT_BGRA64_LE: + uav_format = DXGI_FORMAT_R16G16B16A16_UNORM; + out_format_str = "BGRA"; + x_unit = 8; + break; + case GST_VIDEO_FORMAT_BGR10A2_LE: + uav_format = DXGI_FORMAT_R10G10B10A2_UNORM; + out_format_str = "BGRA"; + x_unit = 8; + break; case GST_VIDEO_FORMAT_AYUV: uav_format = DXGI_FORMAT_R8G8B8A8_UNORM; out_format_str = "AYUV"; @@ -168,6 +334,14 @@ gst_d3d11_converter_helper_new (GstD3D11Device * device, uav_format = DXGI_FORMAT_R16G16B16A16_UNORM; out_format_str = "AYUV"; break; + case GST_VIDEO_FORMAT_RGBA: + uav_format = DXGI_FORMAT_R8G8B8A8_UNORM; + out_format_str = "RGBA"; + break; + case GST_VIDEO_FORMAT_RGB10A2_LE: + uav_format = DXGI_FORMAT_R10G10B10A2_UNORM; + out_format_str = "RGBA"; + break; default: g_assert_not_reached (); return nullptr; diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter.cpp index b5b9cca51a..9a14aefb29 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter.cpp @@ -1594,6 +1594,24 @@ gst_d3d11_converter_setup_lut (GstD3D11Converter * self, return TRUE; } +static gboolean +is_custom_format (GstVideoFormat format) +{ + switch (format) { + case GST_VIDEO_FORMAT_xRGB: + case GST_VIDEO_FORMAT_xBGR: + case GST_VIDEO_FORMAT_ARGB: + case GST_VIDEO_FORMAT_ABGR: + case GST_VIDEO_FORMAT_BGRA64_LE: + case GST_VIDEO_FORMAT_BGR10A2_LE: + return TRUE; + default: + break; + } + + return FALSE; +} + static void gst_d3d11_converter_calculate_border_color (GstD3D11Converter * self) { @@ -1657,8 +1675,8 @@ gst_d3d11_converter_calculate_border_color (GstD3D11Converter * self) } if ((GST_VIDEO_INFO_IS_RGB (out_info) && - GST_VIDEO_INFO_N_PLANES (out_info) == 1) || - GST_VIDEO_INFO_IS_GRAY (out_info)) { + GST_VIDEO_INFO_N_PLANES (out_info) == 1 && + !is_custom_format (format)) || 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; @@ -1677,6 +1695,20 @@ gst_d3d11_converter_calculate_border_color (GstD3D11Converter * self) priv->clear_color[0][2] = converted[1]; priv->clear_color[0][3] = converted[2]; break; + case GST_VIDEO_FORMAT_ARGB: + case GST_VIDEO_FORMAT_xRGB: + priv->clear_color[0][0] = a; + priv->clear_color[0][1] = converted[0]; + priv->clear_color[0][2] = converted[1]; + priv->clear_color[0][3] = converted[2]; + break; + case GST_VIDEO_FORMAT_ABGR: + case GST_VIDEO_FORMAT_xBGR: + priv->clear_color[0][0] = a; + priv->clear_color[0][1] = converted[2]; + priv->clear_color[0][2] = converted[1]; + priv->clear_color[0][3] = converted[0]; + break; case GST_VIDEO_FORMAT_NV12: case GST_VIDEO_FORMAT_NV21: case GST_VIDEO_FORMAT_P010_10LE: @@ -1791,6 +1823,11 @@ gst_d3d11_converter_setup_processor (GstD3D11Converter * self) return FALSE; } + if (is_custom_format (GST_VIDEO_INFO_FORMAT (&priv->in_info)) || + is_custom_format (GST_VIDEO_INFO_FORMAT (&priv->out_info))) { + return FALSE; + } + /* cannot bind to processor in/out view */ if ((in_format_flags & D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_INPUT) == 0 || (out_format_flags & D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_OUTPUT) == 0) { @@ -1913,6 +1950,51 @@ gst_d3d11_converter_setup_processor (GstD3D11Converter * self) return TRUE; } +static GstVideoFormat +get_shader_format (GstVideoFormat format, gboolean is_input) +{ + switch (format) { + case GST_VIDEO_FORMAT_YUY2: + case GST_VIDEO_FORMAT_UYVY: + case GST_VIDEO_FORMAT_VYUY: + case GST_VIDEO_FORMAT_YVYU: + case GST_VIDEO_FORMAT_v308: + case GST_VIDEO_FORMAT_IYU2: + return GST_VIDEO_FORMAT_AYUV; + case GST_VIDEO_FORMAT_Y210: + case GST_VIDEO_FORMAT_Y212_LE: + case GST_VIDEO_FORMAT_v210: + case GST_VIDEO_FORMAT_v216: + return GST_VIDEO_FORMAT_AYUV64; + case GST_VIDEO_FORMAT_Y410: + case GST_VIDEO_FORMAT_Y412_LE: + if (!is_input) + return GST_VIDEO_FORMAT_AYUV64; + break; + case GST_VIDEO_FORMAT_RGB: + case GST_VIDEO_FORMAT_BGR: + case GST_VIDEO_FORMAT_RGB16: + case GST_VIDEO_FORMAT_BGR16: + case GST_VIDEO_FORMAT_RGB15: + case GST_VIDEO_FORMAT_BGR15: + return GST_VIDEO_FORMAT_RGBA; + case GST_VIDEO_FORMAT_r210: + return GST_VIDEO_FORMAT_RGB10A2_LE; + case GST_VIDEO_FORMAT_BGRA64_LE: + if (!is_input) + return GST_VIDEO_FORMAT_RGBA64_LE; + break; + case GST_VIDEO_FORMAT_BGR10A2_LE: + if (!is_input) + return GST_VIDEO_FORMAT_RGB10A2_LE; + break; + default: + break; + } + + return format; +} + /** * gst_d3d11_converter_new: * @device: a #GstD3D11Device @@ -1945,6 +2027,8 @@ gst_d3d11_converter_new (GstD3D11Device * device, const GstVideoInfo * in_info, gchar *backend_str; GstVideoInfo matrix_in_info; GstVideoInfo matrix_out_info; + GstVideoFormat org_format; + GstVideoFormat shader_format; g_return_val_if_fail (GST_IS_D3D11_DEVICE (device), nullptr); g_return_val_if_fail (in_info != nullptr, nullptr); @@ -2037,16 +2121,12 @@ gst_d3d11_converter_new (GstD3D11Device * device, const GstVideoInfo * in_info, priv->border_color = 0xffff000000000000; /* Preprocess packed and subsampled texture */ - if (GST_VIDEO_INFO_FORMAT (in_info) == GST_VIDEO_FORMAT_YUY2 || - GST_VIDEO_INFO_FORMAT (in_info) == GST_VIDEO_FORMAT_Y210 || - GST_VIDEO_INFO_FORMAT (in_info) == GST_VIDEO_FORMAT_Y212_LE) { + org_format = GST_VIDEO_INFO_FORMAT (in_info); + shader_format = get_shader_format (org_format, TRUE); + if (org_format != shader_format) { GstVideoInfo tmp_info; - GstVideoFormat postproc_format = GST_VIDEO_FORMAT_AYUV; - if (GST_VIDEO_INFO_FORMAT (in_info) != GST_VIDEO_FORMAT_YUY2) - postproc_format = GST_VIDEO_FORMAT_AYUV64; - - gst_video_info_set_interlaced_format (&tmp_info, postproc_format, + gst_video_info_set_interlaced_format (&tmp_info, shader_format, GST_VIDEO_INFO_INTERLACE_MODE (in_info), GST_VIDEO_INFO_WIDTH (in_info), GST_VIDEO_INFO_HEIGHT (in_info)); tmp_info.chroma_site = in_info->chroma_site; @@ -2060,18 +2140,12 @@ gst_d3d11_converter_new (GstD3D11Device * device, const GstVideoInfo * in_info, priv->need_preproc = TRUE; } - if (GST_VIDEO_INFO_FORMAT (out_info) == GST_VIDEO_FORMAT_YUY2 || - GST_VIDEO_INFO_FORMAT (out_info) == GST_VIDEO_FORMAT_Y410 || - GST_VIDEO_INFO_FORMAT (out_info) == GST_VIDEO_FORMAT_Y210 || - GST_VIDEO_INFO_FORMAT (out_info) == GST_VIDEO_FORMAT_Y212_LE || - GST_VIDEO_INFO_FORMAT (out_info) == GST_VIDEO_FORMAT_Y412_LE) { + org_format = GST_VIDEO_INFO_FORMAT (out_info); + shader_format = get_shader_format (org_format, FALSE); + if (org_format != shader_format) { GstVideoInfo tmp_info; - GstVideoFormat postproc_format = GST_VIDEO_FORMAT_AYUV; - if (GST_VIDEO_INFO_FORMAT (out_info) != GST_VIDEO_FORMAT_YUY2) - postproc_format = GST_VIDEO_FORMAT_AYUV64; - - gst_video_info_set_interlaced_format (&tmp_info, postproc_format, + gst_video_info_set_interlaced_format (&tmp_info, shader_format, GST_VIDEO_INFO_INTERLACE_MODE (out_info), GST_VIDEO_INFO_WIDTH (out_info), GST_VIDEO_INFO_HEIGHT (out_info)); tmp_info.chroma_site = out_info->chroma_site; diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11device.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11device.cpp index 13462c04fa..7ab43a272d 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11device.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11device.cpp @@ -524,6 +524,8 @@ gst_d3d11_device_setup_format_table (GstD3D11Device * self) case GST_VIDEO_FORMAT_Y210: case GST_VIDEO_FORMAT_Y212_LE: case GST_VIDEO_FORMAT_Y412_LE: + case GST_VIDEO_FORMAT_BGRA64_LE: + case GST_VIDEO_FORMAT_BGR10A2_LE: { gboolean supported = TRUE; @@ -573,6 +575,24 @@ gst_d3d11_device_setup_format_table (GstD3D11Device * self) case GST_VIDEO_FORMAT_Y444_16LE: case GST_VIDEO_FORMAT_AYUV: case GST_VIDEO_FORMAT_AYUV64: + case GST_VIDEO_FORMAT_UYVY: + case GST_VIDEO_FORMAT_VYUY: + case GST_VIDEO_FORMAT_YVYU: + case GST_VIDEO_FORMAT_ARGB: + case GST_VIDEO_FORMAT_xRGB: + case GST_VIDEO_FORMAT_ABGR: + case GST_VIDEO_FORMAT_xBGR: + case GST_VIDEO_FORMAT_RGB: + case GST_VIDEO_FORMAT_BGR: + case GST_VIDEO_FORMAT_v210: + case GST_VIDEO_FORMAT_v216: + case GST_VIDEO_FORMAT_v308: + case GST_VIDEO_FORMAT_IYU2: + case GST_VIDEO_FORMAT_RGB16: + case GST_VIDEO_FORMAT_BGR16: + case GST_VIDEO_FORMAT_RGB15: + case GST_VIDEO_FORMAT_BGR15: + case GST_VIDEO_FORMAT_r210: /* RGB planar formats */ case GST_VIDEO_FORMAT_RGBP: case GST_VIDEO_FORMAT_BGRP: diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11format.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11format.cpp index 41b145751b..b001e3ad06 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11format.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11format.cpp @@ -155,6 +155,8 @@ gst_d3d11_dxgi_format_get_size (DXGI_FORMAT format, guint width, guint height, case DXGI_FORMAT_Y216: case DXGI_FORMAT_R16G16B16A16_UNORM: case DXGI_FORMAT_Y416: + case DXGI_FORMAT_R16_UINT: + case DXGI_FORMAT_R32_UINT: offset[0] = 0; stride[0] = pitch; *size = pitch * height; diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/hlsl/CSMain_converter.hlsl b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/hlsl/CSMain_converter.hlsl index 488d188172..523d224ee0 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/hlsl/CSMain_converter.hlsl +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/hlsl/CSMain_converter.hlsl @@ -18,10 +18,10 @@ */ #ifdef BUILDING_HLSL +#ifdef BUILDING_CSMain_YUY2_to_AYUV Texture2D inTex : register(t0); RWTexture2D outTex : register(u0); -#ifdef BUILDING_CSMain_YUY2_to_AYUV void Execute (uint3 tid) { float4 val = inTex.Load (tid); @@ -35,7 +35,160 @@ void Execute (uint3 tid) } #endif +#ifdef BUILDING_CSMain_UYVY_to_AYUV +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float4 val = inTex.Load (tid); + float Y0 = val.g; + float U = val.r; + float Y1 = val.a; + float V = val.b; + + outTex[uint2(tid.x * 2, tid.y)] = float4 (1.0, Y0, U, V); + outTex[uint2(tid.x * 2 + 1, tid.y)] = float4 (1.0, Y1, U, V); +} +#endif + +#ifdef BUILDING_CSMain_VYUY_to_AYUV +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float4 val = inTex.Load (tid); + float Y0 = val.g; + float U = val.b; + float Y1 = val.a; + float V = val.r; + + outTex[uint2(tid.x * 2, tid.y)] = float4 (1.0, Y0, U, V); + outTex[uint2(tid.x * 2 + 1, tid.y)] = float4 (1.0, Y1, U, V); +} +#endif + +#ifdef BUILDING_CSMain_YVYU_to_AYUV +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float4 val = inTex.Load (tid); + float Y0 = val.r; + float U = val.a; + float Y1 = val.b; + float V = val.g; + + outTex[uint2(tid.x * 2, tid.y)] = float4 (1.0, Y0, U, V); + outTex[uint2(tid.x * 2 + 1, tid.y)] = float4 (1.0, Y1, U, V); +} +#endif + +#ifdef BUILDING_CSMain_v210_to_AYUV +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + uint xpos = tid.x * 4; + float3 val = inTex.Load (uint3 (xpos, tid.y, 0)).xyz; + float U0 = val.r; + float Y0 = val.g; + float V0 = val.b; + + val = inTex.Load (uint3 (xpos + 1, tid.y, 0)).xyz; + float Y1 = val.r; + float U2 = val.g; + float Y2 = val.b; + + val = inTex.Load (uint3 (xpos + 2, tid.y, 0)).xyz; + float V2 = val.r; + float Y3 = val.g; + float U4 = val.b; + + val = inTex.Load (uint3 (xpos + 3, tid.y, 0)).xyz; + float Y4 = val.r; + float V4 = val.g; + float Y5 = val.b; + + xpos = tid.x * 6; + outTex[uint2(xpos, tid.y)] = float4 (1.0, Y0, U0, V0); + outTex[uint2(xpos + 1, tid.y)] = float4 (1.0, Y1, U0, V0); + outTex[uint2(xpos + 2, tid.y)] = float4 (1.0, Y2, U2, V2); + outTex[uint2(xpos + 3, tid.y)] = float4 (1.0, Y3, U2, V2); + outTex[uint2(xpos + 4, tid.y)] = float4 (1.0, Y4, U4, V4); + outTex[uint2(xpos + 5, tid.y)] = float4 (1.0, Y5, U4, V4); +} +#endif + +#ifdef BUILDING_CSMain_v308_to_AYUV +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float4 val = inTex.Load (uint3 (tid.x * 3, tid.y, 0)); + float Y0 = val.x; + float U0 = val.y; + float V0 = val.z; + float Y1 = val.w; + + val = inTex.Load (uint3 (tid.x * 3 + 1, tid.y, 0)); + float U1 = val.x; + float V1 = val.y; + float Y2 = val.z; + float U2 = val.w; + + val = inTex.Load (uint3 (tid.x * 3 + 2, tid.y, 0)); + float V2 = val.x; + float Y3 = val.y; + float U3 = val.z; + float V3 = val.w; + + outTex[uint2(tid.x * 4, tid.y)] = float4 (1.0, Y0, U0, V0); + outTex[uint2(tid.x * 4 + 1, tid.y)] = float4 (1.0, Y1, U1, V1); + outTex[uint2(tid.x * 4 + 2, tid.y)] = float4 (1.0, Y2, U2, V2); + outTex[uint2(tid.x * 4 + 3, tid.y)] = float4 (1.0, Y3, U3, V3); +} +#endif + +#ifdef BUILDING_CSMain_IYU2_to_AYUV +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float4 val = inTex.Load (uint3 (tid.x * 3, tid.y, 0)); + float U0 = val.x; + float Y0 = val.y; + float V0 = val.z; + float U1 = val.w; + + val = inTex.Load (uint3 (tid.x * 3 + 1, tid.y, 0)); + float Y1 = val.x; + float V1 = val.y; + float U2 = val.z; + float Y2 = val.w; + + val = inTex.Load (uint3 (tid.x * 3 + 2, tid.y, 0)); + float V2 = val.x; + float U3 = val.y; + float Y3 = val.z; + float V3 = val.w; + + outTex[uint2(tid.x * 4, tid.y)] = float4 (1.0, Y0, U0, V0); + outTex[uint2(tid.x * 4 + 1, tid.y)] = float4 (1.0, Y1, U1, V1); + outTex[uint2(tid.x * 4 + 2, tid.y)] = float4 (1.0, Y2, U2, V2); + outTex[uint2(tid.x * 4 + 3, tid.y)] = float4 (1.0, Y3, U3, V3); +} +#endif + #ifdef BUILDING_CSMain_AYUV_to_YUY2 +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + void Execute (uint3 tid) { float3 val = inTex.Load (uint3(tid.x * 2, tid.y, 0)).yzw; @@ -48,7 +201,125 @@ void Execute (uint3 tid) } #endif +#ifdef BUILDING_CSMain_AYUV_to_UYVY +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float3 val = inTex.Load (uint3(tid.x * 2, tid.y, 0)).yzw; + float Y0 = val.x; + float U = val.y; + float V = val.z; + float Y1 = inTex.Load (uint3(tid.x * 2 + 1, tid.y, 0)).y; + + outTex[tid.xy] = float4 (U, Y0, V, Y1); +} +#endif + +#ifdef BUILDING_CSMain_AYUV_to_VYUY +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float3 val = inTex.Load (uint3(tid.x * 2, tid.y, 0)).yzw; + float Y0 = val.x; + float U = val.y; + float V = val.z; + float Y1 = inTex.Load (uint3(tid.x * 2 + 1, tid.y, 0)).y; + + outTex[tid.xy] = float4 (V, Y0, U, Y1); +} +#endif + +#ifdef BUILDING_CSMain_AYUV_to_YVYU +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float3 val = inTex.Load (uint3(tid.x * 2, tid.y, 0)).yzw; + float Y0 = val.x; + float U = val.y; + float V = val.z; + float Y1 = inTex.Load (uint3(tid.x * 2 + 1, tid.y, 0)).y; + + outTex[tid.xy] = float4 (Y0, V, Y1, U); +} +#endif + +#ifdef BUILDING_CSMain_AYUV_to_v210 +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + uint xpos = tid.x * 6; + float3 val = inTex.Load (uint3 (xpos, tid.y, 0)).yzw; + float Y0 = val.x; + float U0 = val.y; + float V0 = val.z; + float Y1 = inTex.Load (uint3 (xpos + 1, tid.y, 0)).y; + + val = inTex.Load (uint3 (xpos + 2, tid.y, 0)).yzw; + float Y2 = val.x; + float U2 = val.y; + float V2 = val.z; + float Y3 = inTex.Load (uint3 (xpos + 3, tid.y, 0)).y; + + val = inTex.Load (uint3 (xpos + 4, tid.y, 0)).yzw; + float Y4 = val.x; + float U4 = val.y; + float V4 = val.z; + float Y5 = inTex.Load (uint3 (xpos + 5, tid.y, 0)).y; + + xpos = tid.x * 4; + outTex[uint2(xpos, tid.y)] = float4 (U0, Y0, V0, 0); + outTex[uint2(xpos + 1, tid.y)] = float4 (Y1, U2, Y2, 0); + outTex[uint2(xpos + 2, tid.y)] = float4 (V2, Y3, U4, 0); + outTex[uint2(xpos + 3, tid.y)] = float4 (Y4, V4, Y5, 0); +} +#endif + +#ifdef BUILDING_CSMain_AYUV_to_v308 +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float3 val0 = inTex.Load (uint3 (tid.x * 4, tid.y, 0)).yzw; + float3 val1 = inTex.Load (uint3 (tid.x * 4 + 1, tid.y, 0)).yzw; + float3 val2 = inTex.Load (uint3 (tid.x * 4 + 2, tid.y, 0)).yzw; + float3 val3 = inTex.Load (uint3 (tid.x * 4 + 3, tid.y, 0)).yzw; + + outTex[uint2(tid.x * 3, tid.y)] = float4 (val0.x, val0.y, val0.z, val1.x); + outTex[uint2(tid.x * 3 + 1, tid.y)] = float4 (val1.y, val1.z, val2.x, val2.y); + outTex[uint2(tid.x * 3 + 2, tid.y)] = float4 (val2.z, val3.x, val3.y, val3.z); +} +#endif + +#ifdef BUILDING_CSMain_AYUV_to_IYU2 +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float3 val0 = inTex.Load (uint3 (tid.x * 4, tid.y, 0)).zyw; + float3 val1 = inTex.Load (uint3 (tid.x * 4 + 1, tid.y, 0)).zyw; + float3 val2 = inTex.Load (uint3 (tid.x * 4 + 2, tid.y, 0)).zyw; + float3 val3 = inTex.Load (uint3 (tid.x * 4 + 3, tid.y, 0)).zyw; + + outTex[uint2(tid.x * 3, tid.y)] = float4 (val0.x, val0.y, val0.z, val1.x); + outTex[uint2(tid.x * 3 + 1, tid.y)] = float4 (val1.y, val1.z, val2.x, val2.y); + outTex[uint2(tid.x * 3 + 2, tid.y)] = float4 (val2.z, val3.x, val3.y, val3.z); +} +#endif + #ifdef BUILDING_CSMain_AYUV_to_Y410 +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + void Execute (uint3 tid) { float4 val = inTex.Load (tid); @@ -61,6 +332,260 @@ void Execute (uint3 tid) } #endif +#ifdef BUILDING_CSMain_RGB_to_RGBA +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float4 val = inTex.Load (uint3 (tid.x * 3, tid.y, 0)); + float R0 = val.r; + float G0 = val.g; + float B0 = val.b; + float R1 = val.a; + + val = inTex.Load (uint3 (tid.x * 3 + 1, tid.y, 0)); + float G1 = val.r; + float B1 = val.g; + float R2 = val.b; + float G2 = val.a; + + val = inTex.Load (uint3 (tid.x * 3 + 2, tid.y, 0)); + float B2 = val.r; + float R3 = val.g; + float G3 = val.b; + float B3 = val.a; + + outTex[uint2(tid.x * 4, tid.y)] = float4 (R0, G0, B0, 1.0); + outTex[uint2(tid.x * 4 + 1, tid.y)] = float4 (R1, G1, B1, 1.0); + outTex[uint2(tid.x * 4 + 2, tid.y)] = float4 (R2, G2, B2, 1.0); + outTex[uint2(tid.x * 4 + 3, tid.y)] = float4 (R3, G3, B3, 1.0); +} +#endif + +#ifdef BUILDING_CSMain_BGR_to_RGBA +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float4 val = inTex.Load (uint3 (tid.x * 3, tid.y, 0)); + float B0 = val.r; + float G0 = val.g; + float R0 = val.b; + float B1 = val.a; + + val = inTex.Load (uint3 (tid.x * 3 + 1, tid.y, 0)); + float G1 = val.r; + float R1 = val.g; + float B2 = val.b; + float G2 = val.a; + + val = inTex.Load (uint3 (tid.x * 3 + 2, tid.y, 0)); + float R2 = val.r; + float B3 = val.g; + float G3 = val.b; + float R3 = val.a; + + outTex[uint2(tid.x * 4, tid.y)] = float4 (R0, G0, B0, 1.0); + outTex[uint2(tid.x * 4 + 1, tid.y)] = float4 (R1, G1, B1, 1.0); + outTex[uint2(tid.x * 4 + 2, tid.y)] = float4 (R2, G2, B2, 1.0); + outTex[uint2(tid.x * 4 + 3, tid.y)] = float4 (R3, G3, B3, 1.0); +} +#endif + +#ifdef BUILDING_CSMain_RGB16_to_RGBA +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + uint val = inTex.Load (tid); + float R = float ((val & 0xf800) >> 11) / 31; + float G = float ((val & 0x7e0) >> 5) / 63; + float B = float ((val & 0x1f)) / 31; + + outTex[tid.xy] = float4 (R, G, B, 1.0); +} +#endif + +#ifdef BUILDING_CSMain_BGR16_to_RGBA +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + uint val = inTex.Load (tid); + float B = float ((val & 0xf800) >> 11) / 31; + float G = float ((val & 0x7e0) >> 5) / 63; + float R = float ((val & 0x1f)) / 31; + + outTex[tid.xy] = float4 (R, G, B, 1.0); +} +#endif + +#ifdef BUILDING_CSMain_RGB15_to_RGBA +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + uint val = inTex.Load (tid); + uint R = (val & 0x7c00) >> 10; + uint G = (val & 0x3e0) >> 5; + uint B = (val & 0x1f); + + outTex[tid.xy] = float4 (float3 (R, G, B) / 31, 1.0); +} +#endif + +#ifdef BUILDING_CSMain_BGR15_to_RGBA +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + uint val = inTex.Load (tid); + uint B = (val & 0x7c00) >> 10; + uint G = (val & 0x3e0) >> 5; + uint R = (val & 0x1f); + + outTex[tid.xy] = float4 (float3 (R, G, B) / 31, 1.0); +} +#endif + +#ifdef BUILDING_CSMain_r210_to_RGBA +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + uint val = inTex.Load (tid); + uint val_be = ((val & 0xff) << 24) | ((val & 0xff00) << 8) | + ((val & 0xff0000) >> 8) | ((val & 0xff000000) >> 24); + uint R = (val_be >> 20) & 0x3ff; + uint G = (val_be >> 10) & 0x3ff; + uint B = val_be & 0x3ff; + + outTex[tid.xy] = float4 (float3 (R, G, B) / 1023, 1.0); +} +#endif + +#ifdef BUILDING_CSMain_RGBA_to_RGB +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float3 val0 = inTex.Load (uint3 (tid.x * 4, tid.y, 0)).rgb; + float3 val1 = inTex.Load (uint3 (tid.x * 4 + 1, tid.y, 0)).rgb; + float3 val2 = inTex.Load (uint3 (tid.x * 4 + 2, tid.y, 0)).rgb; + float3 val3 = inTex.Load (uint3 (tid.x * 4 + 3, tid.y, 0)).rgb; + + outTex[uint2(tid.x * 3, tid.y)] = float4 (val0.r, val0.g, val0.b, val1.r); + outTex[uint2(tid.x * 3 + 1, tid.y)] = float4 (val1.g, val1.b, val2.r, val2.g); + outTex[uint2(tid.x * 3 + 2, tid.y)] = float4 (val2.b, val3.r, val3.g, val3.b); +} +#endif + +#ifdef BUILDING_CSMain_RGBA_to_BGR +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float3 val0 = inTex.Load (uint3 (tid.x * 4, tid.y, 0)).rgb; + float3 val1 = inTex.Load (uint3 (tid.x * 4 + 1, tid.y, 0)).rgb; + float3 val2 = inTex.Load (uint3 (tid.x * 4 + 2, tid.y, 0)).rgb; + float3 val3 = inTex.Load (uint3 (tid.x * 4 + 3, tid.y, 0)).rgb; + + outTex[uint2(tid.x * 3, tid.y)] = float4 (val0.b, val0.g, val0.r, val1.b); + outTex[uint2(tid.x * 3 + 1, tid.y)] = float4 (val1.g, val1.r, val2.b, val2.g); + outTex[uint2(tid.x * 3 + 2, tid.y)] = float4 (val2.r, val3.b, val3.g, val3.r); +} +#endif + +#ifdef BUILDING_CSMain_RGBA_to_RGB16 +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float3 val = inTex.Load (tid).rgb; + uint R = val.r * 31; + uint G = val.g * 63; + uint B = val.b * 31; + + outTex[tid.xy] = (R << 11) | (G << 5) | B; +} +#endif + +#ifdef BUILDING_CSMain_RGBA_to_BGR16 +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float3 val = inTex.Load (tid).rgb; + uint R = val.r * 31; + uint G = val.g * 63; + uint B = val.b * 31; + + outTex[tid.xy] = (B << 11) | (G << 5) | R; +} +#endif + +#ifdef BUILDING_CSMain_RGBA_to_RGB15 +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + uint3 val = inTex.Load (tid).rgb * 31; + + outTex[tid.xy] = (val.r << 10) | (val.g << 5) | val.b; +} +#endif + +#ifdef BUILDING_CSMain_RGBA_to_BGR15 +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + uint3 val = inTex.Load (tid).rgb * 31; + + outTex[tid.xy] = (val.b << 10) | (val.g << 5) | val.r; +} +#endif + +#ifdef BUILDING_CSMain_RGBA_to_r210 +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + uint3 val = inTex.Load (tid).rgb * 1023; + uint packed = (val.r << 20) | (val.g << 10) | val.b; + uint packed_be = ((packed & 0xff) << 24) | ((packed & 0xff00) << 8) | + ((packed & 0xff0000) >> 8) | ((packed & 0xff000000) >> 24); + + outTex[tid.xy] = packed_be; +} +#endif + +#ifdef BUILDING_CSMain_RGBA_to_BGRA +Texture2D inTex : register(t0); +RWTexture2D outTex : register(u0); + +void Execute (uint3 tid) +{ + float4 val = inTex.Load (tid); + + outTex[tid.xy] = val.bgra; +} +#endif + [numthreads(8, 8, 1)] void ENTRY_POINT (uint3 tid : SV_DispatchThreadID) { @@ -68,10 +593,10 @@ void ENTRY_POINT (uint3 tid : SV_DispatchThreadID) } #else static const char g_CSMain_converter_str[] = +"#ifdef BUILDING_CSMain_YUY2_to_AYUV\n" "Texture2D inTex : register(t0);\n" "RWTexture2D outTex : register(u0);\n" "\n" -"#ifdef BUILDING_CSMain_YUY2_to_AYUV\n" "void Execute (uint3 tid)\n" "{\n" " float4 val = inTex.Load (tid);\n" @@ -85,7 +610,160 @@ static const char g_CSMain_converter_str[] = "}\n" "#endif\n" "\n" +"#ifdef BUILDING_CSMain_UYVY_to_AYUV\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float4 val = inTex.Load (tid);\n" +" float Y0 = val.g;\n" +" float U = val.r;\n" +" float Y1 = val.a;\n" +" float V = val.b;\n" +"\n" +" outTex[uint2(tid.x * 2, tid.y)] = float4 (1.0, Y0, U, V);\n" +" outTex[uint2(tid.x * 2 + 1, tid.y)] = float4 (1.0, Y1, U, V);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_VYUY_to_AYUV\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float4 val = inTex.Load (tid);\n" +" float Y0 = val.g;\n" +" float U = val.b;\n" +" float Y1 = val.a;\n" +" float V = val.r;\n" +"\n" +" outTex[uint2(tid.x * 2, tid.y)] = float4 (1.0, Y0, U, V);\n" +" outTex[uint2(tid.x * 2 + 1, tid.y)] = float4 (1.0, Y1, U, V);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_YVYU_to_AYUV\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float4 val = inTex.Load (tid);\n" +" float Y0 = val.r;\n" +" float U = val.a;\n" +" float Y1 = val.b;\n" +" float V = val.g;\n" +"\n" +" outTex[uint2(tid.x * 2, tid.y)] = float4 (1.0, Y0, U, V);\n" +" outTex[uint2(tid.x * 2 + 1, tid.y)] = float4 (1.0, Y1, U, V);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_v210_to_AYUV\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" uint xpos = tid.x * 4;\n" +" float3 val = inTex.Load (uint3 (xpos, tid.y, 0)).xyz;\n" +" float U0 = val.r;\n" +" float Y0 = val.g;\n" +" float V0 = val.b;\n" +"\n" +" val = inTex.Load (uint3 (xpos + 1, tid.y, 0)).xyz;\n" +" float Y1 = val.r;\n" +" float U2 = val.g;\n" +" float Y2 = val.b;\n" +"\n" +" val = inTex.Load (uint3 (xpos + 2, tid.y, 0)).xyz;\n" +" float V2 = val.r;\n" +" float Y3 = val.g;\n" +" float U4 = val.b;\n" +"\n" +" val = inTex.Load (uint3 (xpos + 3, tid.y, 0)).xyz;\n" +" float Y4 = val.r;\n" +" float V4 = val.g;\n" +" float Y5 = val.b;\n" +"\n" +" xpos = tid.x * 6;\n" +" outTex[uint2(xpos, tid.y)] = float4 (1.0, Y0, U0, V0);\n" +" outTex[uint2(xpos + 1, tid.y)] = float4 (1.0, Y1, U0, V0);\n" +" outTex[uint2(xpos + 2, tid.y)] = float4 (1.0, Y2, U2, V2);\n" +" outTex[uint2(xpos + 3, tid.y)] = float4 (1.0, Y3, U2, V2);\n" +" outTex[uint2(xpos + 4, tid.y)] = float4 (1.0, Y4, U4, V4);\n" +" outTex[uint2(xpos + 5, tid.y)] = float4 (1.0, Y5, U4, V4);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_v308_to_AYUV\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float4 val = inTex.Load (uint3 (tid.x * 3, tid.y, 0));\n" +" float Y0 = val.x;\n" +" float U0 = val.y;\n" +" float V0 = val.z;\n" +" float Y1 = val.w;\n" +"\n" +" val = inTex.Load (uint3 (tid.x * 3 + 1, tid.y, 0));\n" +" float U1 = val.x;\n" +" float V1 = val.y;\n" +" float Y2 = val.z;\n" +" float U2 = val.w;\n" +"\n" +" val = inTex.Load (uint3 (tid.x * 3 + 2, tid.y, 0));\n" +" float V2 = val.x;\n" +" float Y3 = val.y;\n" +" float U3 = val.z;\n" +" float V3 = val.w;\n" +"\n" +" outTex[uint2(tid.x * 4, tid.y)] = float4 (1.0, Y0, U0, V0);\n" +" outTex[uint2(tid.x * 4 + 1, tid.y)] = float4 (1.0, Y1, U1, V1);\n" +" outTex[uint2(tid.x * 4 + 2, tid.y)] = float4 (1.0, Y2, U2, V2);\n" +" outTex[uint2(tid.x * 4 + 3, tid.y)] = float4 (1.0, Y3, U3, V3);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_IYU2_to_AYUV\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float4 val = inTex.Load (uint3 (tid.x * 3, tid.y, 0));\n" +" float U0 = val.x;\n" +" float Y0 = val.y;\n" +" float V0 = val.z;\n" +" float U1 = val.w;\n" +"\n" +" val = inTex.Load (uint3 (tid.x * 3 + 1, tid.y, 0));\n" +" float Y1 = val.x;\n" +" float V1 = val.y;\n" +" float U2 = val.z;\n" +" float Y2 = val.w;\n" +"\n" +" val = inTex.Load (uint3 (tid.x * 3 + 2, tid.y, 0));\n" +" float V2 = val.x;\n" +" float U3 = val.y;\n" +" float Y3 = val.z;\n" +" float V3 = val.w;\n" +"\n" +" outTex[uint2(tid.x * 4, tid.y)] = float4 (1.0, Y0, U0, V0);\n" +" outTex[uint2(tid.x * 4 + 1, tid.y)] = float4 (1.0, Y1, U1, V1);\n" +" outTex[uint2(tid.x * 4 + 2, tid.y)] = float4 (1.0, Y2, U2, V2);\n" +" outTex[uint2(tid.x * 4 + 3, tid.y)] = float4 (1.0, Y3, U3, V3);\n" +"}\n" +"#endif\n" +"\n" "#ifdef BUILDING_CSMain_AYUV_to_YUY2\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" "void Execute (uint3 tid)\n" "{\n" " float3 val = inTex.Load (uint3(tid.x * 2, tid.y, 0)).yzw;\n" @@ -98,7 +776,125 @@ static const char g_CSMain_converter_str[] = "}\n" "#endif\n" "\n" +"#ifdef BUILDING_CSMain_AYUV_to_UYVY\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float3 val = inTex.Load (uint3(tid.x * 2, tid.y, 0)).yzw;\n" +" float Y0 = val.x;\n" +" float U = val.y;\n" +" float V = val.z;\n" +" float Y1 = inTex.Load (uint3(tid.x * 2 + 1, tid.y, 0)).y;\n" +"\n" +" outTex[tid.xy] = float4 (U, Y0, V, Y1);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_AYUV_to_VYUY\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float3 val = inTex.Load (uint3(tid.x * 2, tid.y, 0)).yzw;\n" +" float Y0 = val.x;\n" +" float U = val.y;\n" +" float V = val.z;\n" +" float Y1 = inTex.Load (uint3(tid.x * 2 + 1, tid.y, 0)).y;\n" +"\n" +" outTex[tid.xy] = float4 (V, Y0, U, Y1);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_AYUV_to_YVYU\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float3 val = inTex.Load (uint3(tid.x * 2, tid.y, 0)).yzw;\n" +" float Y0 = val.x;\n" +" float U = val.y;\n" +" float V = val.z;\n" +" float Y1 = inTex.Load (uint3(tid.x * 2 + 1, tid.y, 0)).y;\n" +"\n" +" outTex[tid.xy] = float4 (Y0, V, Y1, U);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_AYUV_to_v210\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" uint xpos = tid.x * 6;\n" +" float3 val = inTex.Load (uint3 (xpos, tid.y, 0)).yzw;\n" +" float Y0 = val.x;\n" +" float U0 = val.y;\n" +" float V0 = val.z;\n" +" float Y1 = inTex.Load (uint3 (xpos + 1, tid.y, 0)).y;\n" +"\n" +" val = inTex.Load (uint3 (xpos + 2, tid.y, 0)).yzw;\n" +" float Y2 = val.x;\n" +" float U2 = val.y;\n" +" float V2 = val.z;\n" +" float Y3 = inTex.Load (uint3 (xpos + 3, tid.y, 0)).y;\n" +"\n" +" val = inTex.Load (uint3 (xpos + 4, tid.y, 0)).yzw;\n" +" float Y4 = val.x;\n" +" float U4 = val.y;\n" +" float V4 = val.z;\n" +" float Y5 = inTex.Load (uint3 (xpos + 5, tid.y, 0)).y;\n" +"\n" +" xpos = tid.x * 4;\n" +" outTex[uint2(xpos, tid.y)] = float4 (U0, Y0, V0, 0);\n" +" outTex[uint2(xpos + 1, tid.y)] = float4 (Y1, U2, Y2, 0);\n" +" outTex[uint2(xpos + 2, tid.y)] = float4 (V2, Y3, U4, 0);\n" +" outTex[uint2(xpos + 3, tid.y)] = float4 (Y4, V4, Y5, 0);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_AYUV_to_v308\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float3 val0 = inTex.Load (uint3 (tid.x * 4, tid.y, 0)).yzw;\n" +" float3 val1 = inTex.Load (uint3 (tid.x * 4 + 1, tid.y, 0)).yzw;\n" +" float3 val2 = inTex.Load (uint3 (tid.x * 4 + 2, tid.y, 0)).yzw;\n" +" float3 val3 = inTex.Load (uint3 (tid.x * 4 + 3, tid.y, 0)).yzw;\n" +"\n" +" outTex[uint2(tid.x * 3, tid.y)] = float4 (val0.x, val0.y, val0.z, val1.x);\n" +" outTex[uint2(tid.x * 3 + 1, tid.y)] = float4 (val1.y, val1.z, val2.x, val2.y);\n" +" outTex[uint2(tid.x * 3 + 2, tid.y)] = float4 (val2.z, val3.x, val3.y, val3.z);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_AYUV_to_IYU2\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float3 val0 = inTex.Load (uint3 (tid.x * 4, tid.y, 0)).zyw;\n" +" float3 val1 = inTex.Load (uint3 (tid.x * 4 + 1, tid.y, 0)).zyw;\n" +" float3 val2 = inTex.Load (uint3 (tid.x * 4 + 2, tid.y, 0)).zyw;\n" +" float3 val3 = inTex.Load (uint3 (tid.x * 4 + 3, tid.y, 0)).zyw;\n" +"\n" +" outTex[uint2(tid.x * 3, tid.y)] = float4 (val0.x, val0.y, val0.z, val1.x);\n" +" outTex[uint2(tid.x * 3 + 1, tid.y)] = float4 (val1.y, val1.z, val2.x, val2.y);\n" +" outTex[uint2(tid.x * 3 + 2, tid.y)] = float4 (val2.z, val3.x, val3.y, val3.z);\n" +"}\n" +"#endif\n" +"\n" "#ifdef BUILDING_CSMain_AYUV_to_Y410\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" "void Execute (uint3 tid)\n" "{\n" " float4 val = inTex.Load (tid);\n" @@ -111,6 +907,248 @@ static const char g_CSMain_converter_str[] = "}\n" "#endif\n" "\n" +"#ifdef BUILDING_CSMain_RGB_to_RGBA\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float4 val = inTex.Load (uint3 (tid.x * 3, tid.y, 0));\n" +" float R0 = val.r;\n" +" float G0 = val.g;\n" +" float B0 = val.b;\n" +" float R1 = val.a;\n" +"\n" +" val = inTex.Load (uint3 (tid.x * 3 + 1, tid.y, 0));\n" +" float G1 = val.r;\n" +" float B1 = val.g;\n" +" float R2 = val.b;\n" +" float G2 = val.a;\n" +"\n" +" val = inTex.Load (uint3 (tid.x * 3 + 2, tid.y, 0));\n" +" float B2 = val.r;\n" +" float R3 = val.g;\n" +" float G3 = val.b;\n" +" float B3 = val.a;\n" +"\n" +" outTex[uint2(tid.x * 4, tid.y)] = float4 (R0, G0, B0, 1.0);\n" +" outTex[uint2(tid.x * 4 + 1, tid.y)] = float4 (R1, G1, B1, 1.0);\n" +" outTex[uint2(tid.x * 4 + 2, tid.y)] = float4 (R2, G2, B2, 1.0);\n" +" outTex[uint2(tid.x * 4 + 3, tid.y)] = float4 (R3, G3, B3, 1.0);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_BGR_to_RGBA\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float4 val = inTex.Load (uint3 (tid.x * 3, tid.y, 0));\n" +" float B0 = val.r;\n" +" float G0 = val.g;\n" +" float R0 = val.b;\n" +" float B1 = val.a;\n" +"\n" +" val = inTex.Load (uint3 (tid.x * 3 + 1, tid.y, 0));\n" +" float G1 = val.r;\n" +" float R1 = val.g;\n" +" float B2 = val.b;\n" +" float G2 = val.a;\n" +"\n" +" val = inTex.Load (uint3 (tid.x * 3 + 2, tid.y, 0));\n" +" float R2 = val.r;\n" +" float B3 = val.g;\n" +" float G3 = val.b;\n" +" float R3 = val.a;\n" +"\n" +" outTex[uint2(tid.x * 4, tid.y)] = float4 (R0, G0, B0, 1.0);\n" +" outTex[uint2(tid.x * 4 + 1, tid.y)] = float4 (R1, G1, B1, 1.0);\n" +" outTex[uint2(tid.x * 4 + 2, tid.y)] = float4 (R2, G2, B2, 1.0);\n" +" outTex[uint2(tid.x * 4 + 3, tid.y)] = float4 (R3, G3, B3, 1.0);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_RGB16_to_RGBA\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" uint val = inTex.Load (tid);\n" +" float R = float ((val & 0xf800) >> 11) / 31;\n" +" float G = float ((val & 0x7e0) >> 5) / 63;\n" +" float B = float ((val & 0x1f)) / 31;\n" +"\n" +" outTex[tid.xy] = float4 (R, G, B, 1.0);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_BGR16_to_RGBA\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" uint val = inTex.Load (tid);\n" +" float B = float ((val & 0xf800) >> 11) / 31;\n" +" float G = float ((val & 0x7e0) >> 5) / 63;\n" +" float R = float ((val & 0x1f)) / 31;\n" +"\n" +" outTex[tid.xy] = float4 (R, G, B, 1.0);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_RGB15_to_RGBA\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" uint val = inTex.Load (tid);\n" +" uint R = (val & 0x7c00) >> 10;\n" +" uint G = (val & 0x3e0) >> 5;\n" +" uint B = (val & 0x1f);\n" +"\n" +" outTex[tid.xy] = float4 (float3 (R, G, B) / 31, 1.0);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_BGR15_to_RGBA\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" uint val = inTex.Load (tid);\n" +" uint B = (val & 0x7c00) >> 10;\n" +" uint G = (val & 0x3e0) >> 5;\n" +" uint R = (val & 0x1f);\n" +"\n" +" outTex[tid.xy] = float4 (float3 (R, G, B) / 31, 1.0);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_r210_to_RGBA\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" uint val = inTex.Load (tid);\n" +" uint val_be = ((val & 0xff) << 24) | ((val & 0xff00) << 8) |\n" +" ((val & 0xff0000) >> 8) | ((val & 0xff000000) >> 24);\n" +" uint R = (val_be >> 20) & 0x3ff;\n" +" uint G = (val_be >> 10) & 0x3ff;\n" +" uint B = val_be & 0x3ff;\n" +"\n" +" outTex[tid.xy] = float4 (float3 (R, G, B) / 1023, 1.0);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_RGBA_to_RGB\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float3 val0 = inTex.Load (uint3 (tid.x * 4, tid.y, 0)).rgb;\n" +" float3 val1 = inTex.Load (uint3 (tid.x * 4 + 1, tid.y, 0)).rgb;\n" +" float3 val2 = inTex.Load (uint3 (tid.x * 4 + 2, tid.y, 0)).rgb;\n" +" float3 val3 = inTex.Load (uint3 (tid.x * 4 + 3, tid.y, 0)).rgb;\n" +"\n" +" outTex[uint2(tid.x * 3, tid.y)] = float4 (val0.r, val0.g, val0.b, val1.r);\n" +" outTex[uint2(tid.x * 3 + 1, tid.y)] = float4 (val1.g, val1.b, val2.r, val2.g);\n" +" outTex[uint2(tid.x * 3 + 2, tid.y)] = float4 (val2.b, val3.r, val3.g, val3.b);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_RGBA_to_BGR\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float3 val0 = inTex.Load (uint3 (tid.x * 4, tid.y, 0)).rgb;\n" +" float3 val1 = inTex.Load (uint3 (tid.x * 4 + 1, tid.y, 0)).rgb;\n" +" float3 val2 = inTex.Load (uint3 (tid.x * 4 + 2, tid.y, 0)).rgb;\n" +" float3 val3 = inTex.Load (uint3 (tid.x * 4 + 3, tid.y, 0)).rgb;\n" +"\n" +" outTex[uint2(tid.x * 3, tid.y)] = float4 (val0.b, val0.g, val0.r, val1.b);\n" +" outTex[uint2(tid.x * 3 + 1, tid.y)] = float4 (val1.g, val1.r, val2.b, val2.g);\n" +" outTex[uint2(tid.x * 3 + 2, tid.y)] = float4 (val2.r, val3.b, val3.g, val3.r);\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_RGBA_to_RGB16\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float3 val = inTex.Load (tid).rgb;\n" +" uint R = val.r * 31;\n" +" uint G = val.g * 63;\n" +" uint B = val.b * 31;\n" +"\n" +" outTex[tid.xy] = (R << 11) | (G << 5) | B;\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_RGBA_to_BGR16\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float3 val = inTex.Load (tid).rgb;\n" +" uint R = val.r * 31;\n" +" uint G = val.g * 63;\n" +" uint B = val.b * 31;\n" +"\n" +" outTex[tid.xy] = (B << 11) | (G << 5) | R;\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_RGBA_to_RGB15\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" uint3 val = inTex.Load (tid).rgb * 31;\n" +"\n" +" outTex[tid.xy] = (val.r << 10) | (val.g << 5) | val.b;\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_RGBA_to_BGR15\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" uint3 val = inTex.Load (tid).rgb * 31;\n" +"\n" +" outTex[tid.xy] = (val.b << 10) | (val.g << 5) | val.r;\n" +"}\n" +"#endif\n" +"\n" +"#ifdef BUILDING_CSMain_RGBA_to_r210\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" uint3 val = inTex.Load (tid).rgb * 1023;\n" +" uint packed = (val.r << 20) | (val.g << 10) | val.b;\n" +" uint packed_be = ((packed & 0xff) << 24) | ((packed & 0xff00) << 8) |\n" +" ((packed & 0xff0000) >> 8) | ((packed & 0xff000000) >> 24);\n" +"\n" +" outTex[tid.xy] = packed_be;\n" +"}\n" +"#endif\n" +"\n" "[numthreads(8, 8, 1)]\n" "void ENTRY_POINT (uint3 tid : SV_DispatchThreadID)\n" "{\n" diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/hlsl/PSMain_converter.hlsl b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/hlsl/PSMain_converter.hlsl index 9ae941e2a5..57af83b6d5 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/hlsl/PSMain_converter.hlsl +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/hlsl/PSMain_converter.hlsl @@ -276,6 +276,78 @@ class SamplerRGBx : ISampler } }; +class SamplerxRGB : ISampler +{ + float4 Execute (float2 uv) + { + return float4 (shaderTexture[0].Sample(samplerState, uv).gba, 1.0); + } +}; + +class SamplerARGB : ISampler +{ + float4 Execute (float2 uv) + { + return shaderTexture[0].Sample(samplerState, uv).gbar; + } +}; + +class SamplerARGBPremul : ISampler +{ + float4 Execute (float2 uv) + { + return DoAlphaUnpremul (shaderTexture[0].Sample(samplerState, uv).gbar); + } +}; + +class SamplerxBGR : ISampler +{ + float4 Execute (float2 uv) + { + return float4 (shaderTexture[0].Sample(samplerState, uv).abg, 1.0); + } +}; + +class SamplerABGR : ISampler +{ + float4 Execute (float2 uv) + { + return shaderTexture[0].Sample(samplerState, uv).abgr; + } +}; + +class SamplerABGRPremul : ISampler +{ + float4 Execute (float2 uv) + { + return DoAlphaUnpremul (shaderTexture[0].Sample(samplerState, uv).abgr); + } +}; + +class SamplerBGR10A2 : ISampler +{ + float4 Execute (float2 uv) + { + return float4 (shaderTexture[0].Sample(samplerState, uv).zyx, 1.0); + } +}; + +class SamplerBGRA64 : ISampler +{ + float4 Execute (float2 uv) + { + return shaderTexture[0].Sample(samplerState, uv).bgra; + } +}; + +class SamplerBGRA64Premul : ISampler +{ + float4 Execute (float2 uv) + { + return DoAlphaUnpremul (shaderTexture[0].Sample(samplerState, uv).bgra); + } +}; + class SamplerGBR : ISampler { float4 Execute (float2 uv) @@ -904,6 +976,66 @@ class OutputRGBx : IOutputPacked } }; +class OutputxRGB : IOutputPacked +{ + PS_OUTPUT_PACKED Build (float4 sample) + { + PS_OUTPUT_PACKED output; + output.Plane0 = float4 (0.0, sample.rgb); + return output; + } +}; + +class OutputARGB : IOutputPacked +{ + PS_OUTPUT_PACKED Build (float4 sample) + { + PS_OUTPUT_PACKED output; + output.Plane0 = sample.argb; + return output; + } +}; + +class OutputARGBPremul : IOutputPacked +{ + PS_OUTPUT_PACKED Build (float4 sample) + { + PS_OUTPUT_PACKED output; + output.Plane0 = DoAlphaPremul (sample).argb; + return output; + } +}; + +class OutputxBGR : IOutputPacked +{ + PS_OUTPUT_PACKED Build (float4 sample) + { + PS_OUTPUT_PACKED output; + output.Plane0 = float4 (0.0, sample.bgr); + return output; + } +}; + +class OutputABGR : IOutputPacked +{ + PS_OUTPUT_PACKED Build (float4 sample) + { + PS_OUTPUT_PACKED output; + output.Plane0 = sample.abgr; + return output; + } +}; + +class OutputABGRPremul : IOutputPacked +{ + PS_OUTPUT_PACKED Build (float4 sample) + { + PS_OUTPUT_PACKED output; + output.Plane0 = DoAlphaPremul (sample.abgr); + return output; + } +}; + class OutputVUYA : IOutputPacked { PS_OUTPUT_PACKED Build (float4 sample) @@ -1215,6 +1347,78 @@ static const char g_PSMain_converter_str[] = " }\n" "};\n" "\n" +"class SamplerxRGB : ISampler\n" +"{\n" +" float4 Execute (float2 uv)\n" +" {\n" +" return float4 (shaderTexture[0].Sample(samplerState, uv).gba, 1.0);\n" +" }\n" +"};\n" +"\n" +"class SamplerARGB : ISampler\n" +"{\n" +" float4 Execute (float2 uv)\n" +" {\n" +" return shaderTexture[0].Sample(samplerState, uv).gbar;\n" +" }\n" +"};\n" +"\n" +"class SamplerARGBPremul : ISampler\n" +"{\n" +" float4 Execute (float2 uv)\n" +" {\n" +" return DoAlphaUnpremul (shaderTexture[0].Sample(samplerState, uv).gbar);\n" +" }\n" +"};\n" +"\n" +"class SamplerxBGR : ISampler\n" +"{\n" +" float4 Execute (float2 uv)\n" +" {\n" +" return float4 (shaderTexture[0].Sample(samplerState, uv).abg, 1.0);\n" +" }\n" +"};\n" +"\n" +"class SamplerABGR : ISampler\n" +"{\n" +" float4 Execute (float2 uv)\n" +" {\n" +" return shaderTexture[0].Sample(samplerState, uv).abgr;\n" +" }\n" +"};\n" +"\n" +"class SamplerABGRPremul : ISampler\n" +"{\n" +" float4 Execute (float2 uv)\n" +" {\n" +" return DoAlphaUnpremul (shaderTexture[0].Sample(samplerState, uv).abgr);\n" +" }\n" +"};\n" +"\n" +"class SamplerBGR10A2 : ISampler\n" +"{\n" +" float4 Execute (float2 uv)\n" +" {\n" +" return float4 (shaderTexture[0].Sample(samplerState, uv).zyx, 1.0);\n" +" }\n" +"};\n" +"\n" +"class SamplerBGRA64 : ISampler\n" +"{\n" +" float4 Execute (float2 uv)\n" +" {\n" +" return shaderTexture[0].Sample(samplerState, uv).bgra;\n" +" }\n" +"};\n" +"\n" +"class SamplerBGRA64Premul : ISampler\n" +"{\n" +" float4 Execute (float2 uv)\n" +" {\n" +" return DoAlphaUnpremul (shaderTexture[0].Sample(samplerState, uv).bgra);\n" +" }\n" +"};\n" +"\n" "class SamplerGBR : ISampler\n" "{\n" " float4 Execute (float2 uv)\n" @@ -1843,6 +2047,66 @@ static const char g_PSMain_converter_str[] = " }\n" "};\n" "\n" +"class OutputxRGB : IOutputPacked\n" +"{\n" +" PS_OUTPUT_PACKED Build (float4 sample)\n" +" {\n" +" PS_OUTPUT_PACKED output;\n" +" output.Plane0 = float4 (0.0, sample.rgb);\n" +" return output;\n" +" }\n" +"};\n" +"\n" +"class OutputARGB : IOutputPacked\n" +"{\n" +" PS_OUTPUT_PACKED Build (float4 sample)\n" +" {\n" +" PS_OUTPUT_PACKED output;\n" +" output.Plane0 = sample.argb;\n" +" return output;\n" +" }\n" +"};\n" +"\n" +"class OutputARGBPremul : IOutputPacked\n" +"{\n" +" PS_OUTPUT_PACKED Build (float4 sample)\n" +" {\n" +" PS_OUTPUT_PACKED output;\n" +" output.Plane0 = DoAlphaPremul (sample).argb;\n" +" return output;\n" +" }\n" +"};\n" +"\n" +"class OutputxBGR : IOutputPacked\n" +"{\n" +" PS_OUTPUT_PACKED Build (float4 sample)\n" +" {\n" +" PS_OUTPUT_PACKED output;\n" +" output.Plane0 = float4 (0.0, sample.bgr);\n" +" return output;\n" +" }\n" +"};\n" +"\n" +"class OutputABGR : IOutputPacked\n" +"{\n" +" PS_OUTPUT_PACKED Build (float4 sample)\n" +" {\n" +" PS_OUTPUT_PACKED output;\n" +" output.Plane0 = sample.abgr;\n" +" return output;\n" +" }\n" +"};\n" +"\n" +"class OutputABGRPremul : IOutputPacked\n" +"{\n" +" PS_OUTPUT_PACKED Build (float4 sample)\n" +" {\n" +" PS_OUTPUT_PACKED output;\n" +" output.Plane0 = DoAlphaPremul (sample.abgr);\n" +" return output;\n" +" }\n" +"};\n" +"\n" "class OutputVUYA : IOutputPacked\n" "{\n" " PS_OUTPUT_PACKED Build (float4 sample)\n" @@ -1887,6 +2151,18 @@ static const char g_PSMain_converter_str[] = " }\n" "};\n" "\n" +"#ifdef BUILDING_CSMain_RGBA_to_BGRA\n" +"Texture2D inTex : register(t0);\n" +"RWTexture2D outTex : register(u0);\n" +"\n" +"void Execute (uint3 tid)\n" +"{\n" +" float4 val = inTex.Load (tid);\n" +"\n" +" outTex[tid.xy] = val.bgra;\n" +"}\n" +"#endif\n" +"\n" "OUTPUT_TYPE ENTRY_POINT (PS_INPUT input)\n" "{\n" " SAMPLER g_sampler;\n" diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/hlsl/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/hlsl/meson.build index 5ff48c7135..7d4483bdc1 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/hlsl/meson.build +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/hlsl/meson.build @@ -28,6 +28,15 @@ hlsl_ps_input_formats = [ ['GBRAPremul_12', true], ['RGBP', true], ['BGRP', true], + ['xRGB', true], + ['ARGB', true], + ['ARGBPremul', true], + ['xBGR', true], + ['ABGR', true], + ['ABGRPremul', true], + ['BGR10A2', true], + ['BGRA64', true], + ['BGRA64Premul', true], ] hlsl_ps_output_formats = [ @@ -61,6 +70,12 @@ hlsl_ps_output_formats = [ ['PS_OUTPUT_PACKED', 'VUYAPremul', false], ['PS_OUTPUT_PACKED', 'AYUV', false], ['PS_OUTPUT_PACKED', 'AYUVPremul', false], + ['PS_OUTPUT_PACKED', 'xRGB', true], + ['PS_OUTPUT_PACKED', 'ARGB', true], + ['PS_OUTPUT_PACKED', 'ARGBPremul', true], + ['PS_OUTPUT_PACKED', 'xBGR', true], + ['PS_OUTPUT_PACKED', 'ABGR', true], + ['PS_OUTPUT_PACKED', 'ABGRPremul', true], ] header_collector = find_program('collect_hlsl_header.py') @@ -131,8 +146,35 @@ endforeach hlsl_cs_source = files('CSMain_converter.hlsl') hlsl_cs_entry_points = [ 'CSMain_YUY2_to_AYUV', + 'CSMain_UYVY_to_AYUV', + 'CSMain_VYUY_to_AYUV', + 'CSMain_YVYU_to_AYUV', + 'CSMain_v210_to_AYUV', + 'CSMain_v308_to_AYUV', + 'CSMain_IYU2_to_AYUV', 'CSMain_AYUV_to_YUY2', + 'CSMain_AYUV_to_UYVY', + 'CSMain_AYUV_to_VYUY', + 'CSMain_AYUV_to_YVYU', + 'CSMain_AYUV_to_v210', + 'CSMain_AYUV_to_v308', + 'CSMain_AYUV_to_IYU2', 'CSMain_AYUV_to_Y410', + 'CSMain_RGB_to_RGBA', + 'CSMain_BGR_to_RGBA', + 'CSMain_RGB16_to_RGBA', + 'CSMain_BGR16_to_RGBA', + 'CSMain_RGB15_to_RGBA', + 'CSMain_BGR15_to_RGBA', + 'CSMain_r210_to_RGBA', + 'CSMain_RGBA_to_RGB', + 'CSMain_RGBA_to_BGR', + 'CSMain_RGBA_to_RGB16', + 'CSMain_RGBA_to_BGR16', + 'CSMain_RGBA_to_RGB15', + 'CSMain_RGBA_to_BGR15', + 'CSMain_RGBA_to_r210', + 'CSMain_RGBA_to_BGRA', ] foreach shader : hlsl_cs_entry_points diff --git a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11convert.cpp b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11convert.cpp index 1adabaeb36..882f2c42d3 100644 --- a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11convert.cpp +++ b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11convert.cpp @@ -1484,6 +1484,10 @@ gst_d3d11_base_convert_decide_allocation (GstBaseTransform * trans, if ((supported & D3D11_FORMAT_SUPPORT_RENDER_TARGET) != 0) { bind_flags |= D3D11_BIND_RENDER_TARGET; + if (d3d11_format.dxgi_format == DXGI_FORMAT_UNKNOWN && + (supported & D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW) != 0) { + bind_flags |= D3D11_BIND_UNORDERED_ACCESS; + } } else { if (d3d11_format.dxgi_format != DXGI_FORMAT_UNKNOWN && (supported & D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_OUTPUT) != 0) { diff --git a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11testsrc.cpp b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11testsrc.cpp index 782017236c..42cc0574f3 100644 --- a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11testsrc.cpp +++ b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11testsrc.cpp @@ -1461,7 +1461,9 @@ gst_d3d11_test_src_decide_allocation (GstBaseSrc * bsrc, GstQuery * query) if ((device_format.format_support[0] & D3D11_FORMAT_SUPPORT_RENDER_TARGET) != 0) { bind_flags |= D3D11_BIND_RENDER_TARGET; - } else if ((device_format.format_support[0] & + } + + if ((device_format.format_support[0] & D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW) != 0) { bind_flags |= D3D11_BIND_UNORDERED_ACCESS; }