applemedia: Document vtenc / vtdec elements
authorNirbheek Chauhan <nirbheek@centricular.com>
Fri, 28 Jan 2022 17:45:28 +0000 (23:15 +0530)
committerNirbheek Chauhan <nirbheek@centricular.com>
Sat, 29 Jan 2022 20:47:24 +0000 (02:17 +0530)
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>

subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json
subprojects/gst-plugins-bad/sys/applemedia/avfvideosrc.m
subprojects/gst-plugins-bad/sys/applemedia/vtdec.c
subprojects/gst-plugins-bad/sys/applemedia/vtenc.c
subprojects/gst-plugins-good/docs/gst_plugins_cache.json

index 3cac631..8843b2e 100644 (file)
         "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": {
index 081aa9a..154b5a5 100644 (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
index 76a268a..6f3453f 100644 (file)
  */
 /**
  * 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
  * |[
  *
  */
 
+/**
+ * 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
index 7d44e7f..817a936 100644 (file)
  * 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
index a9ba5d3..1afe15e 100644 (file)
         "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": {