applemedia: Document vtenc / vtdec elements

Also preserve-alpha property should only be exposed on the
vtenc_prores element since h264 does not support transparency.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-docs/-/issues/94

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1601>
This commit is contained in:
Nirbheek Chauhan 2022-01-28 23:15:28 +05:30
parent 35b27aa7cb
commit d05fcadf4e
5 changed files with 1016 additions and 7 deletions

View file

@ -913,6 +913,764 @@
"tracers": {},
"url": "Unknown package origin"
},
"applemedia": {
"description": "Elements for capture and codec access on Apple OS X and iOS",
"elements": {
"atdec": {
"author": "Alessandro Decina <alessandro.d@gmail.com>",
"description": "AudioToolbox based audio decoder",
"hierarchy": [
"GstATDec",
"GstAudioDecoder",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"klass": "Codec/Decoder/Audio",
"long-name": "AudioToolbox based audio decoder",
"pad-templates": {
"sink": {
"caps": "audio/mpeg:\n mpegversion: 4\n framed: true\n channels: [ 1, 2147483647 ]\naudio/mpeg:\n mpegversion: 1\n layer: [ 1, 3 ]\n",
"direction": "sink",
"presence": "always"
},
"src": {
"caps": "audio/x-raw:\n format: S16LE\n rate: [ 1, 2147483647 ]\n channels: [ 1, 2147483647 ]\n layout: interleaved\naudio/x-raw:\n format: F32LE\n rate: [ 1, 2147483647 ]\n channels: [ 1, 2147483647 ]\n layout: interleaved\n",
"direction": "src",
"presence": "always"
}
},
"rank": "marginal"
},
"avfassetsrc": {
"author": "Andoni Morales Alastruey amorales@fluendo.com",
"description": "Read and decode samples from AVFoundation assets using the AVFAssetReader API",
"hierarchy": [
"GstAVFAssetSrc",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"interfaces": [
"GstURIHandler"
],
"klass": "Source/Codec",
"long-name": "Source and decoder for AVFoundation assets",
"pad-templates": {
"audio": {
"caps": "audio/x-raw:\n format: F32LE\n rate: [ 1, 2147483647 ]\n channels: [ 1, 2 ]\n layout: interleaved\n",
"direction": "src",
"presence": "sometimes"
},
"video": {
"caps": "video/x-raw:\n format: NV12\n framerate: [ 0/1, 2147483647/1 ]\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n",
"direction": "src",
"presence": "sometimes"
}
},
"properties": {
"uri": {
"blurb": "URI of the asset to read",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "NULL",
"mutable": "ready",
"readable": true,
"type": "gchararray",
"writable": true
}
},
"rank": "secondary"
},
"avfvideosrc": {
"author": "Ole André Vadla Ravnås <oleavr@soundrop.com>",
"description": "Reads frames from an iOS AVFoundation device",
"hierarchy": [
"GstAVFVideoSrc",
"GstPushSrc",
"GstBaseSrc",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"klass": "Source/Video/Hardware",
"long-name": "Video Source (AVFoundation)",
"pad-templates": {
"src": {
"caps": "video/x-raw(memory:GLMemory):\n format: UYVY\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n texture-target: rectangle\nvideo/x-raw:\n format: { NV12, UYVY, YUY2 }\n framerate: [ 0/1, 2147483647/1 ]\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\nvideo/x-raw:\n format: BGRA\n framerate: [ 0/1, 2147483647/1 ]\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n",
"direction": "src",
"presence": "always"
}
},
"properties": {
"capture-screen": {
"blurb": "Enable screen capture functionality",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "false",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
},
"capture-screen-cursor": {
"blurb": "Enable cursor capture while capturing screen",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "false",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
},
"capture-screen-mouse-clicks": {
"blurb": "Enable mouse clicks capture while capturing screen",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "false",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
},
"device-index": {
"blurb": "The zero-based device index",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "-1",
"max": "2147483647",
"min": "-1",
"mutable": "null",
"readable": true,
"type": "gint",
"writable": true
},
"device-name": {
"blurb": "The name of the currently opened capture device",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "NULL",
"mutable": "null",
"readable": true,
"type": "gchararray",
"writable": false
},
"device-type": {
"blurb": "The general type of a video capture device",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "default (0)",
"mutable": "null",
"readable": true,
"type": "GstAVFVideoSourceDeviceType",
"writable": true
},
"do-stats": {
"blurb": "Enable logging of statistics",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "false",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
},
"fps": {
"blurb": "Last measured framerate, if statistics are enabled",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "2147483647",
"min": "-1",
"mutable": "null",
"readable": true,
"type": "gint",
"writable": false
},
"orientation": {
"blurb": "The orientation of the video",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "default (0)",
"mutable": "null",
"readable": true,
"type": "GstAVFVideoSourceOrientation",
"writable": true
},
"position": {
"blurb": "The position of the capture device (front or back-facing)",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "default (0)",
"mutable": "null",
"readable": true,
"type": "GstAVFVideoSourcePosition",
"writable": true
}
},
"rank": "secondary"
},
"avsamplebufferlayersink": {
"author": "Matthew Waters <matthew@centricular.com>",
"description": "A videosink based on AVSampleBuffers",
"hierarchy": [
"GstAVSampleVideoSink",
"GstVideoSink",
"GstBaseSink",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"klass": "Sink/Video",
"long-name": "AV Sample video sink",
"pad-templates": {
"sink": {
"caps": "video/x-raw:\n format: { RGB, BGR, ARGB, BGRA, ABGR, RGBA, YUY2, UYVY, NV12, I420 }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "sink",
"presence": "always"
}
},
"properties": {
"force-aspect-ratio": {
"blurb": "When enabled, scaling will respect original aspect ratio",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "true",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
},
"layer": {
"blurb": "The CoreAnimation layer that can be placed in the render tree",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"mutable": "null",
"readable": true,
"type": "gpointer",
"writable": false
}
},
"rank": "none"
},
"vtdec": {
"author": "Ole André Vadla Ravnås <oleavr@soundrop.com>; Alessandro Decina <alessandro.d@gmail.com>",
"description": "Apple VideoToolbox Decoder",
"hierarchy": [
"GstVtdec",
"GstVideoDecoder",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"klass": "Codec/Decoder/Video/Hardware",
"long-name": "Apple VideoToolbox decoder",
"pad-templates": {
"sink": {
"caps": "video/x-h264:\n stream-format: avc\n alignment: au\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\nvideo/mpeg:\n mpegversion: 2\n systemstream: false\n parsed: true\nimage/jpeg:\nvideo/x-prores:\n variant: { (string)standard, (string)hq, (string)lt, (string)proxy, (string)4444, (string)4444xq }\n",
"direction": "sink",
"presence": "always"
},
"src": {
"caps": "video/x-raw:\n format: { NV12, AYUV64, RGBA64_LE, ARGB64_BE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:GLMemory):\n format: { NV12, AYUV64, RGBA64_LE, ARGB64_BE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n texture-target: rectangle\n",
"direction": "src",
"presence": "always"
}
},
"rank": "secondary"
},
"vtdec_hw": {
"author": "Ole André Vadla Ravnås <oleavr@soundrop.com>; Alessandro Decina <alessandro.d@gmail.com>",
"description": "Apple VideoToolbox Decoder",
"hierarchy": [
"GstVtdecHw",
"GstVtdec",
"GstVideoDecoder",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"klass": "Codec/Decoder/Video/Hardware",
"long-name": "Apple VideoToolbox decoder (hardware only)",
"pad-templates": {
"sink": {
"caps": "video/x-h264:\n stream-format: avc\n alignment: au\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\nvideo/mpeg:\n mpegversion: 2\n systemstream: false\n parsed: true\nimage/jpeg:\nvideo/x-prores:\n variant: { (string)standard, (string)hq, (string)lt, (string)proxy, (string)4444, (string)4444xq }\n",
"direction": "sink",
"presence": "always"
},
"src": {
"caps": "video/x-raw:\n format: { NV12, AYUV64, RGBA64_LE, ARGB64_BE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:GLMemory):\n format: { NV12, AYUV64, RGBA64_LE, ARGB64_BE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n texture-target: rectangle\n",
"direction": "src",
"presence": "always"
}
},
"rank": "primary + 1"
},
"vtenc_h264": {
"author": "Ole André Vadla Ravnås <oleavr@soundrop.com>, Dominik Röttsches <dominik.rottsches@intel.com>",
"description": "H.264 encoder",
"hierarchy": [
"vtenc_h264",
"GstVideoEncoder",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"interfaces": [
"GstPreset"
],
"klass": "Codec/Encoder/Video/Hardware",
"long-name": "H.264 encoder",
"pad-templates": {
"sink": {
"caps": "video/x-raw:\n format: { AYUV64, UYVY, NV12, I420, RGBA64_LE, ARGB64_BE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "sink",
"presence": "always"
},
"src": {
"caps": "video/x-h264:\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n interlace-mode: { (string)progressive, (string)interleaved }\n stream-format: avc\n alignment: au\n",
"direction": "src",
"presence": "always"
}
},
"properties": {
"allow-frame-reordering": {
"blurb": "Whether to allow frame reordering or not",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "true",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
},
"bitrate": {
"blurb": "Target video bitrate in kbps (0 = auto)",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "-1",
"min": "0",
"mutable": "null",
"readable": true,
"type": "guint",
"writable": true
},
"max-keyframe-interval": {
"blurb": "Maximum number of frames between keyframes (0 = auto)",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "2147483647",
"min": "0",
"mutable": "null",
"readable": true,
"type": "gint",
"writable": true
},
"max-keyframe-interval-duration": {
"blurb": "Maximum number of nanoseconds between keyframes (0 = no limit)",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "18446744073709551615",
"min": "0",
"mutable": "null",
"readable": true,
"type": "guint64",
"writable": true
},
"quality": {
"blurb": "The desired compression quality",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "0.5",
"max": "1",
"min": "0",
"mutable": "null",
"readable": true,
"type": "gdouble",
"writable": true
},
"realtime": {
"blurb": "Configure the encoder for realtime output",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "false",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
}
},
"rank": "primary"
},
"vtenc_h264_hw": {
"author": "Ole André Vadla Ravnås <oleavr@soundrop.com>, Dominik Röttsches <dominik.rottsches@intel.com>",
"description": "H.264 (HW only) encoder",
"hierarchy": [
"vtenc_h264_hw",
"GstVideoEncoder",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"interfaces": [
"GstPreset"
],
"klass": "Codec/Encoder/Video/Hardware",
"long-name": "H.264 (HW only) encoder",
"pad-templates": {
"sink": {
"caps": "video/x-raw:\n format: { AYUV64, UYVY, NV12, I420, RGBA64_LE, ARGB64_BE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "sink",
"presence": "always"
},
"src": {
"caps": "video/x-h264:\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n interlace-mode: { (string)progressive, (string)interleaved }\n stream-format: avc\n alignment: au\n",
"direction": "src",
"presence": "always"
}
},
"properties": {
"allow-frame-reordering": {
"blurb": "Whether to allow frame reordering or not",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "true",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
},
"bitrate": {
"blurb": "Target video bitrate in kbps (0 = auto)",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "-1",
"min": "0",
"mutable": "null",
"readable": true,
"type": "guint",
"writable": true
},
"max-keyframe-interval": {
"blurb": "Maximum number of frames between keyframes (0 = auto)",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "2147483647",
"min": "0",
"mutable": "null",
"readable": true,
"type": "gint",
"writable": true
},
"max-keyframe-interval-duration": {
"blurb": "Maximum number of nanoseconds between keyframes (0 = no limit)",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "18446744073709551615",
"min": "0",
"mutable": "null",
"readable": true,
"type": "guint64",
"writable": true
},
"quality": {
"blurb": "The desired compression quality",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "0.5",
"max": "1",
"min": "0",
"mutable": "null",
"readable": true,
"type": "gdouble",
"writable": true
},
"realtime": {
"blurb": "Configure the encoder for realtime output",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "false",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
}
},
"rank": "primary"
},
"vtenc_prores": {
"author": "Ole André Vadla Ravnås <oleavr@soundrop.com>, Dominik Röttsches <dominik.rottsches@intel.com>",
"description": "Apple ProRes encoder",
"hierarchy": [
"vtenc_prores",
"GstVideoEncoder",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"interfaces": [
"GstPreset"
],
"klass": "Codec/Encoder/Video/Hardware",
"long-name": "Apple ProRes encoder",
"pad-templates": {
"sink": {
"caps": "video/x-raw:\n format: { AYUV64, UYVY, NV12, I420, RGBA64_LE, ARGB64_BE }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "sink",
"presence": "always"
},
"src": {
"caps": "video/x-prores:\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n interlace-mode: { (string)progressive, (string)interleaved }\n variant: { (string)standard, (string)4444xq, (string)4444, (string)hq, (string)lt, (string)proxy }\n",
"direction": "src",
"presence": "always"
}
},
"properties": {
"allow-frame-reordering": {
"blurb": "Whether to allow frame reordering or not",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "true",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
},
"bitrate": {
"blurb": "Target video bitrate in kbps (0 = auto)",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "-1",
"min": "0",
"mutable": "null",
"readable": true,
"type": "guint",
"writable": true
},
"max-keyframe-interval": {
"blurb": "Maximum number of frames between keyframes (0 = auto)",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "2147483647",
"min": "0",
"mutable": "null",
"readable": true,
"type": "gint",
"writable": true
},
"max-keyframe-interval-duration": {
"blurb": "Maximum number of nanoseconds between keyframes (0 = no limit)",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "18446744073709551615",
"min": "0",
"mutable": "null",
"readable": true,
"type": "guint64",
"writable": true
},
"preserve-alpha": {
"blurb": "Video alpha values (non opaque) need to be preserved",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "true",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
},
"quality": {
"blurb": "The desired compression quality",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "0.5",
"max": "1",
"min": "0",
"mutable": "null",
"readable": true,
"type": "gdouble",
"writable": true
},
"realtime": {
"blurb": "Configure the encoder for realtime output",
"conditionally-available": false,
"construct": true,
"construct-only": false,
"controllable": false,
"default": "false",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
}
},
"rank": "primary"
}
},
"filename": "gstapplemedia",
"license": "LGPL",
"other-types": {
"GstAVFVideoSourceDeviceType": {
"kind": "enum",
"values": [
{
"desc": "A built-in wide angle camera. These devices are suitable for general purpose use.",
"name": "wide-angle",
"value": "1"
},
{
"desc": "A built-in camera device with a longer focal length than a wide-angle camera.",
"name": "telephoto",
"value": "2"
},
{
"desc": "A dual camera device, combining built-in wide-angle and telephoto cameras that work together as a single capture device.",
"name": "dual",
"value": "3"
},
{
"desc": "Default",
"name": "default",
"value": "0"
}
]
},
"GstAVFVideoSourceOrientation": {
"kind": "enum",
"values": [
{
"desc": "Indicates that video should be oriented vertically, top at the top.",
"name": "portrait",
"value": "1"
},
{
"desc": "Indicates that video should be oriented vertically, top at the bottom.",
"name": "portrat-upside-down",
"value": "2"
},
{
"desc": "Indicates that video should be oriented horizontally, top on the left.",
"name": "landscape-right",
"value": "3"
},
{
"desc": "Indicates that video should be oriented horizontally, top on the right.",
"name": "landscape-left",
"value": "4"
},
{
"desc": "Default",
"name": "default",
"value": "0"
}
]
},
"GstAVFVideoSourcePosition": {
"kind": "enum",
"values": [
{
"desc": "Front-facing camera",
"name": "front",
"value": "1"
},
{
"desc": "Back-facing camera",
"name": "back",
"value": "2"
},
{
"desc": "Default",
"name": "default",
"value": "0"
}
]
}
},
"package": "GStreamer Bad Plug-ins",
"source": "gst-plugins-bad",
"tracers": {},
"url": "Unknown package origin"
},
"asfmux": {
"description": "ASF Muxer Plugin",
"elements": {

View file

@ -1353,6 +1353,10 @@ gst_avf_video_src_class_init (GstAVFVideoSrcClass * klass)
GST_DEBUG_CATEGORY_INIT (gst_avf_video_src_debug, "avfvideosrc",
0, "iOS AVFoundation video source");
gst_type_mark_as_plugin_api (GST_TYPE_AVF_VIDEO_SOURCE_POSITION, 0);
gst_type_mark_as_plugin_api (GST_TYPE_AVF_VIDEO_SOURCE_ORIENTATION, 0);
gst_type_mark_as_plugin_api (GST_TYPE_AVF_VIDEO_SOURCE_DEVICE_TYPE, 0);
}
static void

View file

@ -19,9 +19,10 @@
*/
/**
* SECTION:element-vtdec
* @title: gstvtdec
* @title: vtdec
*
* Apple VideoToolbox based decoder.
* Apple VideoToolbox based decoder which might use a HW or a SW
* implementation depending on the device.
*
* ## Example launch line
* |[
@ -31,6 +32,20 @@
*
*/
/**
* SECTION:element-vtdec_hw
* @title: vtdec_hw
*
* Apple VideoToolbox based HW-only decoder.
*
* ## Example launch line
* |[
* gst-launch-1.0 -v filesrc location=file.mov ! qtdemux ! queue ! h264parse ! vtdec_hw ! videoconvert ! autovideosink
* ]|
* Decode h264 video from a mov file.
*
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

View file

@ -17,6 +17,49 @@
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
/**
* SECTION:element-vtenc_h264
* @title: vtenc_h264
*
* Apple VideoToolbox H264 encoder, which can either use HW or a SW
* implementation depending on the device.
*
* ## Example pipeline
* |[
* gst-launch-1.0 -v videotestsrc ! vtenc_h264 ! qtmux ! filesink location=out.mov
* ]| Encode a test video pattern and save it as an MOV file
*
*/
/**
* SECTION:element-vtenc_h264_hw
* @title: vtenc_h264_hw
*
* Apple VideoToolbox H264 HW-only encoder (only available on macOS at
* present).
*
* ## Example pipeline
* |[
* gst-launch-1.0 -v videotestsrc ! vtenc_h264_hw ! qtmux ! filesink location=out.mov
* ]| Encode a test video pattern and save it as an MOV file
*
*/
/**
* SECTION:element-vtenc_prores
* @title: vtenc_prores
*
* Apple VideoToolbox ProRes encoder
*
* ## Example pipeline
* |[
* gst-launch-1.0 -v videotestsrc ! vtenc_prores ! qtmux ! filesink location=out.mov
* ]| Encode a test video pattern and save it as an MOV file
*
* Since: 1.20
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@ -315,11 +358,24 @@ gst_vtenc_class_init (GstVTEncClass * klass)
G_MAXUINT64, VTENC_DEFAULT_MAX_KEYFRAME_INTERVAL_DURATION,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_PRESERVE_ALPHA,
g_param_spec_boolean ("preserve-alpha", "Preserve Video Alpha Values",
"Video alpha values (non opaque) need to be perserved.",
VTENC_DEFAULT_PRESERVE_ALPHA,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
/*
* H264 doesn't support alpha components, so only add the property for prores
*/
if (g_strcmp0 (G_OBJECT_CLASS_NAME (klass), "vtenc_prores") == 0) {
/**
* vtenc_prores:preserve-alpha
*
* Preserve non-opaque video alpha values from the input video when
* compressing, else treat all alpha component as opaque. Default is %TRUE.
*
* Since: 1.20
*/
g_object_class_install_property (gobject_class, PROP_PRESERVE_ALPHA,
g_param_spec_boolean ("preserve-alpha", "Preserve Video Alpha Values",
"Video alpha values (non opaque) need to be preserved",
VTENC_DEFAULT_PRESERVE_ALPHA,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
}
}
static void

View file

@ -10749,6 +10749,182 @@
"tracers": {},
"url": "Unknown package origin"
},
"osxaudio": {
"description": "OSX (Mac OS X) audio support for GStreamer",
"elements": {
"osxaudiosink": {
"author": "Zaheer Abbas Merali <zaheerabbas at merali dot org>",
"description": "Output to a sound card in OS X",
"hierarchy": [
"GstOsxAudioSink",
"GstAudioBaseSink",
"GstBaseSink",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"interfaces": [
"GstOsxAudioElement"
],
"klass": "Sink/Audio",
"long-name": "Audio Sink (OSX)",
"pad-templates": {
"sink": {
"caps": "audio/x-raw:\n format: { F64LE, F64BE, F32LE, F32BE, S32LE, S32BE, U32LE, U32BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, S16LE, S16BE, U16LE, U16BE, S8, U8 }\n layout: interleaved\n rate: [ 1, 2147483647 ]\n channels: [ 1, 9 ]\naudio/x-ac3:\n framed: true\naudio/x-dts:\n framed: true\n",
"direction": "sink",
"presence": "always"
}
},
"properties": {
"device": {
"blurb": "Device ID of output device",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "2147483647",
"min": "0",
"mutable": "null",
"readable": true,
"type": "gint",
"writable": true
},
"volume": {
"blurb": "Volume of this stream",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "1",
"max": "1",
"min": "0",
"mutable": "null",
"readable": true,
"type": "gdouble",
"writable": true
}
},
"rank": "primary"
},
"osxaudiosrc": {
"author": "Zaheer Abbas Merali <zaheerabbas at merali dot org>",
"description": "Input from a sound card in OS X",
"hierarchy": [
"GstOsxAudioSrc",
"GstAudioBaseSrc",
"GstPushSrc",
"GstBaseSrc",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"interfaces": [
"GstOsxAudioElement"
],
"klass": "Source/Audio",
"long-name": "Audio Source (OSX)",
"pad-templates": {
"src": {
"caps": "audio/x-raw:\n format: { F64LE, F64BE, F32LE, F32BE, S32LE, S32BE, U32LE, U32BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, S16LE, S16BE, U16LE, U16BE, S8, U8 }\n layout: interleaved\n rate: [ 1, 2147483647 ]\n channels: [ 1, 2147483647 ]\n",
"direction": "src",
"presence": "always"
}
},
"properties": {
"device": {
"blurb": "Device ID of input device",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "0",
"max": "2147483647",
"min": "0",
"mutable": "null",
"readable": true,
"type": "gint",
"writable": true
}
},
"rank": "primary"
}
},
"filename": "gstosxaudio",
"license": "LGPL",
"other-types": {},
"package": "GStreamer Good Plug-ins",
"source": "gst-plugins-good",
"tracers": {},
"url": "Unknown package origin"
},
"osxvideo": {
"description": "OSX native video output plugin",
"elements": {
"osxvideosink": {
"author": "Zaheer Abbas Merali <zaheerabbas at merali dot org>",
"description": "OSX native videosink",
"hierarchy": [
"GstOSXVideoSink",
"GstVideoSink",
"GstBaseSink",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"interfaces": [
"GstVideoOverlay",
"GstNavigation"
],
"klass": "Sink/Video",
"long-name": "OSX Video sink",
"pad-templates": {
"sink": {
"caps": "video/x-raw:\n framerate: [ 0/1, 2147483647/1 ]\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n format: UYVY\n",
"direction": "sink",
"presence": "always"
}
},
"properties": {
"embed": {
"blurb": "For ABI compatibility only, do not use",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "false",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
},
"force-aspect-ratio": {
"blurb": "When enabled, scaling will respect original aspect ration",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"default": "false",
"mutable": "null",
"readable": true,
"type": "gboolean",
"writable": true
}
},
"rank": "marginal"
}
},
"filename": "gstosxvideo",
"license": "LGPL",
"other-types": {},
"package": "GStreamer Good Plug-ins",
"source": "gst-plugins-good",
"tracers": {},
"url": "Unknown package origin"
},
"png": {
"description": "PNG plugin library",
"elements": {