From 06afe8aa8fa39c53b46bf3c60de2792fc27726c6 Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Mon, 20 Jan 2025 02:55:03 +0900 Subject: [PATCH] docs: Add nvcomp plugin docs Part-of: --- .../docs/plugins/gst_plugins_cache.json | 293 ++++++++++++++++++ .../ext/nvcomp/gstnvcompvideoenc.cpp | 8 + .../gst-plugins-bad/ext/nvcomp/plugin.cpp | 6 + 3 files changed, 307 insertions(+) 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 d986f5ed6e..ccb99a11cb 100644 --- a/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json +++ b/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json @@ -235016,6 +235016,299 @@ "tracers": {}, "url": "Unknown package origin" }, + "nvcomp": { + "description": "GStreamer nvCOMP plugin", + "elements": { + "nvcompvideodec": { + "author": "Seungha Yang ", + "description": "Decompress a video stream using nvCOMP library", + "hierarchy": [ + "GstNvCompVideoDec", + "GstVideoDecoder", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "klass": "Decoder/Video/Hardware", + "pad-templates": { + "sink": { + "caps": "video/x-nvcomp:\nvideo/x-nvcomp-lz4:\nvideo/x-nvcomp-snappy:\nvideo/x-nvcomp-gdeflate:\nvideo/x-nvcomp-deflate:\nvideo/x-nvcomp-zstd:\nvideo/x-nvcomp-cascaded:\nvideo/x-nvcomp-bitcomp:\nvideo/x-nvcomp-ans:\n", + "direction": "sink", + "presence": "always" + }, + "src": { + "caps": "video/x-raw(memory:CUDAMemory):\n format: { A444_16LE, A444_16BE, Y416_LE, AYUV64, RGBA64_LE, ARGB64, ARGB64_LE, BGRA64_LE, ABGR64_LE, Y416_BE, RGBA64_BE, ARGB64_BE, BGRA64_BE, ABGR64_BE, A422_16LE, A422_16BE, A420_16LE, A420_16BE, A444_12LE, GBRA_12LE, A444_12BE, GBRA_12BE, Y412_LE, Y412_BE, A422_12LE, A422_12BE, A420_12LE, A420_12BE, A444_10LE, GBRA_10LE, A444_10BE, GBRA_10BE, A422_10LE, A422_10BE, A420_10LE, A420_10BE, BGR10A2_LE, RGB10A2_LE, Y410, A444, GBRA, AYUV, VUYA, RGBA, RBGA, ARGB, BGRA, ABGR, A422, A420, AV12, Y444_16LE, GBR_16LE, Y444_16BE, GBR_16BE, Y216_LE, Y216_BE, v216, P016_LE, P016_BE, Y444_12LE, GBR_12LE, Y444_12BE, GBR_12BE, I422_12LE, I422_12BE, Y212_LE, Y212_BE, I420_12LE, I420_12BE, P012_LE, P012_BE, Y444_10LE, GBR_10LE, Y444_10BE, GBR_10BE, r210, I422_10LE, I422_10BE, NV16_10LE32, Y210, UYVP, v210, I420_10LE, I420_10BE, P010_10LE, NV12_10LE40, NV12_10LE32, P010_10BE, MT2110R, MT2110T, NV12_10BE_8L128, NV12_10LE40_4L4, Y444, BGRP, GBR, RGBP, NV24, v308, IYU2, RGBx, xRGB, BGRx, xBGR, RGB, BGR, Y42B, NV16, NV61, YUY2, YVYU, UYVY, VYUY, I420, YV12, NV12, NV21, NV12_16L32S, NV12_32L32, NV12_4L4, NV12_64Z32, NV12_8L128, Y41B, IYU1, YUV9, YVU9, BGR16, RGB16, BGR15, RGB15, RGB8P, GRAY16_LE, GRAY16_BE, GRAY10_LE16, GRAY10_LE32, GRAY8 }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:GLMemory):\n format: { A444_16LE, A444_16BE, Y416_LE, AYUV64, RGBA64_LE, ARGB64, ARGB64_LE, BGRA64_LE, ABGR64_LE, Y416_BE, RGBA64_BE, ARGB64_BE, BGRA64_BE, ABGR64_BE, A422_16LE, A422_16BE, A420_16LE, A420_16BE, A444_12LE, GBRA_12LE, A444_12BE, GBRA_12BE, Y412_LE, Y412_BE, A422_12LE, A422_12BE, A420_12LE, A420_12BE, A444_10LE, GBRA_10LE, A444_10BE, GBRA_10BE, A422_10LE, A422_10BE, A420_10LE, A420_10BE, BGR10A2_LE, RGB10A2_LE, Y410, A444, GBRA, AYUV, VUYA, RGBA, RBGA, ARGB, BGRA, ABGR, A422, A420, AV12, Y444_16LE, GBR_16LE, Y444_16BE, GBR_16BE, Y216_LE, Y216_BE, v216, P016_LE, P016_BE, Y444_12LE, GBR_12LE, Y444_12BE, GBR_12BE, I422_12LE, I422_12BE, Y212_LE, Y212_BE, I420_12LE, I420_12BE, P012_LE, P012_BE, Y444_10LE, GBR_10LE, Y444_10BE, GBR_10BE, r210, I422_10LE, I422_10BE, NV16_10LE32, Y210, UYVP, v210, I420_10LE, I420_10BE, P010_10LE, NV12_10LE40, NV12_10LE32, P010_10BE, MT2110R, MT2110T, NV12_10BE_8L128, NV12_10LE40_4L4, Y444, BGRP, GBR, RGBP, NV24, v308, IYU2, RGBx, xRGB, BGRx, xBGR, RGB, BGR, Y42B, NV16, NV61, YUY2, YVYU, UYVY, VYUY, I420, YV12, NV12, NV21, NV12_16L32S, NV12_32L32, NV12_4L4, NV12_64Z32, NV12_8L128, Y41B, IYU1, YUV9, YVU9, BGR16, RGB16, BGR15, RGB15, RGB8P, GRAY16_LE, GRAY16_BE, GRAY10_LE16, GRAY10_LE32, GRAY8 }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { A444_16LE, A444_16BE, Y416_LE, AYUV64, RGBA64_LE, ARGB64, ARGB64_LE, BGRA64_LE, ABGR64_LE, Y416_BE, RGBA64_BE, ARGB64_BE, BGRA64_BE, ABGR64_BE, A422_16LE, A422_16BE, A420_16LE, A420_16BE, A444_12LE, GBRA_12LE, A444_12BE, GBRA_12BE, Y412_LE, Y412_BE, A422_12LE, A422_12BE, A420_12LE, A420_12BE, A444_10LE, GBRA_10LE, A444_10BE, GBRA_10BE, A422_10LE, A422_10BE, A420_10LE, A420_10BE, BGR10A2_LE, RGB10A2_LE, Y410, A444, GBRA, AYUV, VUYA, RGBA, RBGA, ARGB, BGRA, ABGR, A422, A420, AV12, Y444_16LE, GBR_16LE, Y444_16BE, GBR_16BE, Y216_LE, Y216_BE, v216, P016_LE, P016_BE, Y444_12LE, GBR_12LE, Y444_12BE, GBR_12BE, I422_12LE, I422_12BE, Y212_LE, Y212_BE, I420_12LE, I420_12BE, P012_LE, P012_BE, Y444_10LE, GBR_10LE, Y444_10BE, GBR_10BE, r210, I422_10LE, I422_10BE, NV16_10LE32, Y210, UYVP, v210, I420_10LE, I420_10BE, P010_10LE, NV12_10LE40, NV12_10LE32, P010_10BE, MT2110R, MT2110T, NV12_10BE_8L128, NV12_10LE40_4L4, Y444, BGRP, GBR, RGBP, NV24, v308, IYU2, RGBx, xRGB, BGRx, xBGR, RGB, BGR, Y42B, NV16, NV61, YUY2, YVYU, UYVY, VYUY, I420, YV12, NV12, NV21, NV12_16L32S, NV12_32L32, NV12_4L4, NV12_64Z32, NV12_8L128, Y41B, IYU1, YUV9, YVU9, BGR16, RGB16, BGR15, RGB15, RGB8P, GRAY16_LE, GRAY16_BE, GRAY10_LE16, GRAY10_LE32, GRAY8 }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "direction": "src", + "presence": "always" + } + }, + "rank": "none" + }, + "nvcompvideoenc": { + "author": "Seungha Yang ", + "description": "Lossless video compression element based on nvCOMP library", + "hierarchy": [ + "GstNvCompVideoEnc", + "GstVideoEncoder", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "interfaces": [ + "GstPreset" + ], + "klass": "Encoder/Video/Hardware", + "pad-templates": { + "sink": { + "caps": "video/x-raw(memory:CUDAMemory):\n format: { A444_16LE, A444_16BE, Y416_LE, AYUV64, RGBA64_LE, ARGB64, ARGB64_LE, BGRA64_LE, ABGR64_LE, Y416_BE, RGBA64_BE, ARGB64_BE, BGRA64_BE, ABGR64_BE, A422_16LE, A422_16BE, A420_16LE, A420_16BE, A444_12LE, GBRA_12LE, A444_12BE, GBRA_12BE, Y412_LE, Y412_BE, A422_12LE, A422_12BE, A420_12LE, A420_12BE, A444_10LE, GBRA_10LE, A444_10BE, GBRA_10BE, A422_10LE, A422_10BE, A420_10LE, A420_10BE, BGR10A2_LE, RGB10A2_LE, Y410, A444, GBRA, AYUV, VUYA, RGBA, RBGA, ARGB, BGRA, ABGR, A422, A420, AV12, Y444_16LE, GBR_16LE, Y444_16BE, GBR_16BE, Y216_LE, Y216_BE, v216, P016_LE, P016_BE, Y444_12LE, GBR_12LE, Y444_12BE, GBR_12BE, I422_12LE, I422_12BE, Y212_LE, Y212_BE, I420_12LE, I420_12BE, P012_LE, P012_BE, Y444_10LE, GBR_10LE, Y444_10BE, GBR_10BE, r210, I422_10LE, I422_10BE, NV16_10LE32, Y210, UYVP, v210, I420_10LE, I420_10BE, P010_10LE, NV12_10LE40, NV12_10LE32, P010_10BE, MT2110R, MT2110T, NV12_10BE_8L128, NV12_10LE40_4L4, Y444, BGRP, GBR, RGBP, NV24, v308, IYU2, RGBx, xRGB, BGRx, xBGR, RGB, BGR, Y42B, NV16, NV61, YUY2, YVYU, UYVY, VYUY, I420, YV12, NV12, NV21, NV12_16L32S, NV12_32L32, NV12_4L4, NV12_64Z32, NV12_8L128, Y41B, IYU1, YUV9, YVU9, BGR16, RGB16, BGR15, RGB15, RGB8P, GRAY16_LE, GRAY16_BE, GRAY10_LE16, GRAY10_LE32, GRAY8 }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:GLMemory):\n format: { A444_16LE, A444_16BE, Y416_LE, AYUV64, RGBA64_LE, ARGB64, ARGB64_LE, BGRA64_LE, ABGR64_LE, Y416_BE, RGBA64_BE, ARGB64_BE, BGRA64_BE, ABGR64_BE, A422_16LE, A422_16BE, A420_16LE, A420_16BE, A444_12LE, GBRA_12LE, A444_12BE, GBRA_12BE, Y412_LE, Y412_BE, A422_12LE, A422_12BE, A420_12LE, A420_12BE, A444_10LE, GBRA_10LE, A444_10BE, GBRA_10BE, A422_10LE, A422_10BE, A420_10LE, A420_10BE, BGR10A2_LE, RGB10A2_LE, Y410, A444, GBRA, AYUV, VUYA, RGBA, RBGA, ARGB, BGRA, ABGR, A422, A420, AV12, Y444_16LE, GBR_16LE, Y444_16BE, GBR_16BE, Y216_LE, Y216_BE, v216, P016_LE, P016_BE, Y444_12LE, GBR_12LE, Y444_12BE, GBR_12BE, I422_12LE, I422_12BE, Y212_LE, Y212_BE, I420_12LE, I420_12BE, P012_LE, P012_BE, Y444_10LE, GBR_10LE, Y444_10BE, GBR_10BE, r210, I422_10LE, I422_10BE, NV16_10LE32, Y210, UYVP, v210, I420_10LE, I420_10BE, P010_10LE, NV12_10LE40, NV12_10LE32, P010_10BE, MT2110R, MT2110T, NV12_10BE_8L128, NV12_10LE40_4L4, Y444, BGRP, GBR, RGBP, NV24, v308, IYU2, RGBx, xRGB, BGRx, xBGR, RGB, BGR, Y42B, NV16, NV61, YUY2, YVYU, UYVY, VYUY, I420, YV12, NV12, NV21, NV12_16L32S, NV12_32L32, NV12_4L4, NV12_64Z32, NV12_8L128, Y41B, IYU1, YUV9, YVU9, BGR16, RGB16, BGR15, RGB15, RGB8P, GRAY16_LE, GRAY16_BE, GRAY10_LE16, GRAY10_LE32, GRAY8 }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { A444_16LE, A444_16BE, Y416_LE, AYUV64, RGBA64_LE, ARGB64, ARGB64_LE, BGRA64_LE, ABGR64_LE, Y416_BE, RGBA64_BE, ARGB64_BE, BGRA64_BE, ABGR64_BE, A422_16LE, A422_16BE, A420_16LE, A420_16BE, A444_12LE, GBRA_12LE, A444_12BE, GBRA_12BE, Y412_LE, Y412_BE, A422_12LE, A422_12BE, A420_12LE, A420_12BE, A444_10LE, GBRA_10LE, A444_10BE, GBRA_10BE, A422_10LE, A422_10BE, A420_10LE, A420_10BE, BGR10A2_LE, RGB10A2_LE, Y410, A444, GBRA, AYUV, VUYA, RGBA, RBGA, ARGB, BGRA, ABGR, A422, A420, AV12, Y444_16LE, GBR_16LE, Y444_16BE, GBR_16BE, Y216_LE, Y216_BE, v216, P016_LE, P016_BE, Y444_12LE, GBR_12LE, Y444_12BE, GBR_12BE, I422_12LE, I422_12BE, Y212_LE, Y212_BE, I420_12LE, I420_12BE, P012_LE, P012_BE, Y444_10LE, GBR_10LE, Y444_10BE, GBR_10BE, r210, I422_10LE, I422_10BE, NV16_10LE32, Y210, UYVP, v210, I420_10LE, I420_10BE, P010_10LE, NV12_10LE40, NV12_10LE32, P010_10BE, MT2110R, MT2110T, NV12_10BE_8L128, NV12_10LE40_4L4, Y444, BGRP, GBR, RGBP, NV24, v308, IYU2, RGBx, xRGB, BGRx, xBGR, RGB, BGR, Y42B, NV16, NV61, YUY2, YVYU, UYVY, VYUY, I420, YV12, NV12, NV21, NV12_16L32S, NV12_32L32, NV12_4L4, NV12_64Z32, NV12_8L128, Y41B, IYU1, YUV9, YVU9, BGR16, RGB16, BGR15, RGB15, RGB8P, GRAY16_LE, GRAY16_BE, GRAY10_LE16, GRAY10_LE32, GRAY8 }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n", + "direction": "sink", + "presence": "always" + }, + "src": { + "caps": "video/x-nvcomp:\nvideo/x-nvcomp-lz4:\nvideo/x-nvcomp-snappy:\nvideo/x-nvcomp-gdeflate:\nvideo/x-nvcomp-deflate:\nvideo/x-nvcomp-zstd:\nvideo/x-nvcomp-cascaded:\nvideo/x-nvcomp-bitcomp:\nvideo/x-nvcomp-ans:\n", + "direction": "src", + "presence": "always" + } + }, + "properties": { + "async-depth": { + "blurb": "Internal resource pool size for threaded encoding", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "2", + "max": "4", + "min": "1", + "mutable": "ready", + "readable": true, + "type": "guint", + "writable": true + }, + "batched": { + "blurb": "Use low-level C API for batched operation", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "true", + "mutable": "ready", + "readable": true, + "type": "gboolean", + "writable": true + }, + "bitcomp-algo": { + "blurb": "Algorithm to use for bitcomp method", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "sparse (1)", + "mutable": "null", + "readable": true, + "type": "GstNvCompBitcompAlgo", + "writable": true + }, + "chunk-size": { + "blurb": "Uncompressed chunk size for batched compression (0 = default)", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "0", + "max": "2147483647", + "min": "0", + "mutable": "ready", + "readable": true, + "type": "guint", + "writable": true + }, + "data-type": { + "blurb": "Compression data type", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "default (-1)", + "mutable": "null", + "readable": true, + "type": "GstNvCompDataType", + "writable": true + }, + "deflate-algo": { + "blurb": "Algorithm to use for deflate and gdeflate methods", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "high-throughput (0)", + "mutable": "null", + "readable": true, + "type": "GstNvCompDeflateAlgo", + "writable": true + }, + "method": { + "blurb": "Compression method", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "bitcomp (6)", + "mutable": "null", + "readable": true, + "type": "GstNvCompMethod", + "writable": true + } + }, + "rank": "none" + } + }, + "filename": "gstnvcomp", + "license": "LGPL", + "other-types": { + "GstNvCompBitcompAlgo": { + "kind": "enum", + "values": [ + { + "desc": "Default", + "name": "default", + "value": "0" + }, + { + "desc": "Sparse", + "name": "sparse", + "value": "1" + } + ] + }, + "GstNvCompDataType": { + "kind": "enum", + "values": [ + { + "desc": "Default", + "name": "default", + "value": "-1" + }, + { + "desc": "CHAR", + "name": "char", + "value": "0" + }, + { + "desc": "UCHAR", + "name": "uchar", + "value": "1" + }, + { + "desc": "SHORT", + "name": "short", + "value": "2" + }, + { + "desc": "USHORT", + "name": "ushort", + "value": "3" + }, + { + "desc": "INT", + "name": "int", + "value": "4" + }, + { + "desc": "UINT", + "name": "uint", + "value": "5" + }, + { + "desc": "LONGLONG", + "name": "longlong", + "value": "6" + }, + { + "desc": "ULONGLONG", + "name": "ulonglong", + "value": "7" + }, + { + "desc": "BITS", + "name": "bits", + "value": "255" + } + ] + }, + "GstNvCompDeflateAlgo": { + "kind": "enum", + "values": [ + { + "desc": "High throughput, low compression ratio", + "name": "high-throughput", + "value": "0" + }, + { + "desc": "Low throughput, high compression ratio", + "name": "low-throughput", + "value": "1" + }, + { + "desc": "Highest throughput, entropy-only compression", + "name": "highest-throughput", + "value": "2" + } + ] + }, + "GstNvCompMethod": { + "kind": "enum", + "values": [ + { + "desc": "LZ4", + "name": "lz4", + "value": "0" + }, + { + "desc": "SNAPPY", + "name": "snappy", + "value": "1" + }, + { + "desc": "GDEFLATE", + "name": "gdeflate", + "value": "2" + }, + { + "desc": "DEFLATE", + "name": "deflate", + "value": "3" + }, + { + "desc": "ZSTD", + "name": "zstd", + "value": "4" + }, + { + "desc": "CASCADED", + "name": "cascaded", + "value": "5" + }, + { + "desc": "BITCOMP", + "name": "bitcomp", + "value": "6" + }, + { + "desc": "ANS", + "name": "ans", + "value": "7" + } + ] + } + }, + "package": "GStreamer Bad Plug-ins", + "source": "gst-plugins-bad", + "tracers": {}, + "url": "Unknown package origin" + }, "openal": { "description": "OpenAL plugin library", "elements": { diff --git a/subprojects/gst-plugins-bad/ext/nvcomp/gstnvcompvideoenc.cpp b/subprojects/gst-plugins-bad/ext/nvcomp/gstnvcompvideoenc.cpp index 4aa6af905c..f718fc8cb5 100644 --- a/subprojects/gst-plugins-bad/ext/nvcomp/gstnvcompvideoenc.cpp +++ b/subprojects/gst-plugins-bad/ext/nvcomp/gstnvcompvideoenc.cpp @@ -481,6 +481,14 @@ gst_nv_comp_video_enc_class_init (GstNvCompVideoEncClass * klass) encoder_class->handle_frame = GST_DEBUG_FUNCPTR (gst_nv_comp_video_enc_handle_frame); + gst_type_mark_as_plugin_api (GST_TYPE_NV_COMP_METHOD, (GstPluginAPIFlags) 0); + gst_type_mark_as_plugin_api (GST_TYPE_NV_COMP_DEFLATE_ALGO, + (GstPluginAPIFlags) 0); + gst_type_mark_as_plugin_api (GST_TYPE_NV_COMP_BITCOMP_ALGO, + (GstPluginAPIFlags) 0); + gst_type_mark_as_plugin_api (GST_TYPE_NV_COMP_DATA_TYPE, + (GstPluginAPIFlags) 0); + GST_DEBUG_CATEGORY_INIT (gst_nv_comp_video_enc_debug, "nvcompvideoenc", 0, "nvcompvideoenc"); } diff --git a/subprojects/gst-plugins-bad/ext/nvcomp/plugin.cpp b/subprojects/gst-plugins-bad/ext/nvcomp/plugin.cpp index 375a587fa3..c9111c8a51 100644 --- a/subprojects/gst-plugins-bad/ext/nvcomp/plugin.cpp +++ b/subprojects/gst-plugins-bad/ext/nvcomp/plugin.cpp @@ -17,6 +17,12 @@ * Boston, MA 02110-1301, USA. */ +/** + * plugin-nvcomp: + * + * Since: 1.26 + */ + #ifdef HAVE_CONFIG_H #include "config.h" #endif