Merge branch 'alatiera/svthevcenc-docs' into 'main'

Draft:  svthevcenc: Add missing Since marker for the element and mark enums as API

See merge request gstreamer/gstreamer!5447
This commit is contained in:
Jordan Petridіs 2024-05-04 00:44:47 +00:00
commit 7a990192cc
3 changed files with 496 additions and 0 deletions

View file

@ -240238,6 +240238,449 @@
"tracers": {},
"url": "Unknown package origin"
},
"svthevcenc": {
"description": "svt-hevc encoder based H265 plugins",
"elements": {
"svthevcenc": {
"author": "Yeongjin Jeong <yeongjin.jeong@navercorp.com>",
"description": "Scalable Video Technology for HEVC Encoder (SVT-HEVC Encoder)",
"hierarchy": [
"GstSvtHevcEnc",
"GstVideoEncoder",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"interfaces": [
"GstPreset"
],
"klass": "Codec/Encoder/Video",
"pad-templates": {
"sink": {
"caps": "video/x-raw:\n format: { I420, Y42B, Y444, I420_10LE, I422_10LE, Y444_10LE }\n framerate: [ 0/1, 2147483647/1 ]\n width: [ 64, 8192 ]\n height: [ 64, 4320 ]\n",
"direction": "sink",
"presence": "always"
},
"src": {
"caps": "video/x-h265:\n framerate: [ 0/1, 2147483647/1 ]\n width: [ 64, 8192 ]\n height: [ 64, 4320 ]\n stream-format: byte-stream\n alignment: au\n profile: { (string)main, (string)main-10, (string)main-422-10, (string)main-444, (string)main-444-10 }\n",
"direction": "src",
"presence": "always"
}
},
"properties": {
"aud": {
"blurb": "Use AU (Access Unit) delimiter",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "false",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
},
"b-pyramid": {
"blurb": "Number of hierarchical layers used to construct GOP",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "4-level-hierarchy (3)",
"mutable": "null",
"readable": true,
"type": "GstSvtHevcEncBPyramid",
"writable": true
},
"baselayer-mode": {
"blurb": "Random Access Prediction Structure type setting",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "B-frame (0)",
"mutable": "null",
"readable": true,
"type": "GstSvtHevcEncBaseLayerMode",
"writable": true
},
"bitrate": {
"blurb": "Bitrate in kbit/sec",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "7000",
"max": "2147483647",
"min": "1",
"mutable": "null",
"readable": true,
"type": "guint",
"writable": true
},
"config-interval": {
"blurb": "Send VPS, SPS and PPS Insertion Interval per every few IDR. 0: disabled",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "-1",
"min": "0",
"mutable": "null",
"readable": true,
"type": "guint",
"writable": true
},
"cores": {
"blurb": "Number of logical cores to be used. 0: auto",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "-1",
"min": "0",
"mutable": "null",
"readable": true,
"type": "guint",
"writable": true
},
"enable-open-gop": {
"blurb": "Allow intra-refresh using the CRA, not IDR",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "true",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
},
"enable-scd": {
"blurb": "Use the scene change detection algorithm",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "true",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
},
"insert-vui": {
"blurb": "Insert VUI NAL in stream",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "false",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
},
"key-int-max": {
"blurb": "Distance Between Intra Frame inserted: -1=no intra update. -2=auto",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "-2",
"max": "255",
"min": "-2",
"mutable": "null",
"readable": true,
"type": "gint",
"writable": true
},
"lookahead": {
"blurb": "Look ahead distance",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "40",
"max": "250",
"min": "0",
"mutable": "null",
"readable": true,
"type": "guint",
"writable": true
},
"pred-struct": {
"blurb": "Prediction Structure used to construct GOP",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "random-access (2)",
"mutable": "null",
"readable": true,
"type": "GstSvtHevcEncPredStruct",
"writable": true
},
"qp-i": {
"blurb": "QP value for intra frames in CQP mode",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "25",
"max": "51",
"min": "0",
"mutable": "null",
"readable": true,
"type": "guint",
"writable": true
},
"qp-max": {
"blurb": "Maximum QP value allowed for rate control use",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "48",
"max": "51",
"min": "0",
"mutable": "null",
"readable": true,
"type": "guint",
"writable": true
},
"qp-min": {
"blurb": "Minimum QP value allowed for rate control use",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "10",
"max": "50",
"min": "0",
"mutable": "null",
"readable": true,
"type": "guint",
"writable": true
},
"rc": {
"blurb": "Bitrate control mode",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "cqp (0)",
"mutable": "null",
"readable": true,
"type": "GstSvtHevcEncRC",
"writable": true
},
"socket": {
"blurb": "Target socket to run on. -1: all available",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "-1",
"max": "1",
"min": "-1",
"mutable": "null",
"readable": true,
"type": "gint",
"writable": true
},
"speed": {
"blurb": "Encoding preset [0, 11] (e.g. 0 is the highest quality mode, 11 is the highest), [0, 11] (for >= 4k resolution), [0, 10] (for >= 1080p resolution), [0, 9] (for all resolution)",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "7",
"max": "11",
"min": "0",
"mutable": "null",
"readable": true,
"type": "guint",
"writable": true
},
"tile-col": {
"blurb": "Tile count in the Column",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "1",
"max": "16",
"min": "1",
"mutable": "null",
"readable": true,
"type": "guint",
"writable": true
},
"tile-row": {
"blurb": "Tile count in the Row",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "1",
"max": "16",
"min": "1",
"mutable": "null",
"readable": true,
"type": "guint",
"writable": true
},
"tune": {
"blurb": "Quality tuning mode",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "oq (1)",
"mutable": "null",
"readable": true,
"type": "GstSvtHevcEncTune",
"writable": true
},
"vbv-buffer-size": {
"blurb": "VBV buffer size in kbits for VBR mode",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "2147483647",
"min": "0",
"mutable": "null",
"readable": true,
"type": "guint",
"writable": true
},
"vbv-max-rate": {
"blurb": "VBV maxrate in kbit/sec for VBR mode",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "2147483647",
"min": "0",
"mutable": "null",
"readable": true,
"type": "guint",
"writable": true
}
},
"rank": "primary"
}
},
"filename": "gstsvthevcenc",
"license": "GPL",
"other-types": {
"GstSvtHevcEncBPyramid": {
"kind": "enum",
"values": [
{
"desc": "Flat",
"name": "flat",
"value": "0"
},
{
"desc": "2-Level Hierarchy",
"name": "2-level-hierarchy",
"value": "1"
},
{
"desc": "3-Level Hierarchy",
"name": "3-level-hierarchy",
"value": "2"
},
{
"desc": "4-Level Hierarchy",
"name": "4-level-hierarchy",
"value": "3"
}
]
},
"GstSvtHevcEncBaseLayerMode": {
"kind": "enum",
"values": [
{
"desc": "Use B-frames in the base layer pointing to the same past picture",
"name": "B-frame",
"value": "0"
},
{
"desc": "Use P-frames in the base layer",
"name": "P-frame",
"value": "1"
}
]
},
"GstSvtHevcEncPredStruct": {
"kind": "enum",
"values": [
{
"desc": "Low Delay Prediction Structure with P/p pictures",
"name": "low-delay-P",
"value": "0"
},
{
"desc": "Low Delay Prediction Structure with B/b pictures",
"name": "low-delay-B",
"value": "1"
},
{
"desc": "Random Access Prediction Structure",
"name": "random-access",
"value": "2"
}
]
},
"GstSvtHevcEncRC": {
"kind": "enum",
"values": [
{
"desc": "Constant QP Control",
"name": "cqp",
"value": "0"
},
{
"desc": "Variable Bitrate Contorol",
"name": "vbr",
"value": "1"
}
]
},
"GstSvtHevcEncTune": {
"kind": "enum",
"values": [
{
"desc": "Visually Optimized Mode",
"name": "sq",
"value": "0"
},
{
"desc": "PSNR/SSIM Optimized Mode",
"name": "oq",
"value": "1"
},
{
"desc": "VMAF Optimized Mode",
"name": "vmaf",
"value": "2"
}
]
}
},
"package": "GStreamer Bad Plug-ins",
"source": "gst-plugins-bad",
"tracers": {},
"url": "Unknown package origin"
},
"switchbin": {
"description": "switchbin",
"elements": {

View file

@ -23,6 +23,7 @@
*
* This element encodes raw video into H265 compressed data.
*
* Since: 1.18
**/
#ifdef HAVE_CONFIG_H
@ -621,6 +622,12 @@ gst_svthevc_enc_class_init (GstSvtHevcEncClass * klass)
gst_element_class_add_static_pad_template (element_class, &sink_factory);
gst_element_class_add_static_pad_template (element_class, &src_factory);
gst_type_mark_as_plugin_api (GST_SVTHEVC_ENC_B_PYRAMID_TYPE, 0);
gst_type_mark_as_plugin_api (GST_SVTHEVC_ENC_BASE_LAYER_MODE_TYPE, 0);
gst_type_mark_as_plugin_api (GST_SVTHEVC_ENC_PRED_STRUCT_TYPE, 0);
gst_type_mark_as_plugin_api (GST_SVTHEVC_ENC_RC_TYPE, 0);
gst_type_mark_as_plugin_api (GST_SVTHEVC_ENC_TUNE_TYPE, 0);
}
static void

View file

@ -42,6 +42,18 @@ typedef enum svt_eos_status
EOS_TOTRIGGER
} SVT_EOS_STATUS;
/**
* GstSvtHevcEncBPyramid:
*
* @GST_SVTHEVC_ENC_B_PYRAMID_FLAT: foo
* @GST_SVTHEVC_ENC_B_PYRAMID_2LEVEL_HIERARCHY: foo
* @GST_SVTHEVC_ENC_B_PYRAMID_3LEVEL_HIERARCHY: foo
* @GST_SVTHEVC_ENC_B_PYRAMID_4LEVEL_HIERARCHY: foo
*
* Something Something .
*
* Since: 1.18
*/
typedef enum
{
GST_SVTHEVC_ENC_B_PYRAMID_FLAT,
@ -50,18 +62,43 @@ typedef enum
GST_SVTHEVC_ENC_B_PYRAMID_4LEVEL_HIERARCHY,
} GstSvtHevcEncBPyramid;
/**
* GstSvtHevcEncBaseLayerMode:
*
* @GST_SVTHEVC_ENC_BASE_LAYER_MODE_BFRAME: foo
* @GST_SVTHEVC_ENC_BASE_LAYER_MODE_PFRAME: foo
*
* Since: 1.18
*/
typedef enum
{
GST_SVTHEVC_ENC_BASE_LAYER_MODE_BFRAME,
GST_SVTHEVC_ENC_BASE_LAYER_MODE_PFRAME,
} GstSvtHevcEncBaseLayerMode;
/**
* GstSvtHevcEncRC:
*
* @GST_SVTHEVC_ENC_RC_CQP: foo
* @GST_SVTHEVC_ENC_RC_VBR: foo
*
* Since: 1.18
*/
typedef enum
{
GST_SVTHEVC_ENC_RC_CQP,
GST_SVTHEVC_ENC_RC_VBR,
} GstSvtHevcEncRC;
/**
* GstSvtHevcEncTune:
*
* @GST_SVTHEVC_ENC_TUNE_SQ: foo
* @GST_SVTHEVC_ENC_TUNE_OQ: foo
* @GST_SVTHEVC_ENC_TUNE_VMAF: foo
*
* Since: 1.18
*/
typedef enum
{
GST_SVTHEVC_ENC_TUNE_SQ,
@ -69,6 +106,15 @@ typedef enum
GST_SVTHEVC_ENC_TUNE_VMAF,
} GstSvtHevcEncTune;
/**
* GstSvtHevcEncPredStruct:
*
* @GST_SVTHEVC_ENC_PRED_STRUCT_LOW_DELAY_P: fooo
* @GST_SVTHEVC_ENC_PRED_STRUCT_LOW_DELAY_B: foo
* @GST_SVTHEVC_ENC_PRED_STRUCT_RANDOM_ACCESS: foo
*
* Since: 1.18
*/
typedef enum
{
GST_SVTHEVC_ENC_PRED_STRUCT_LOW_DELAY_P,