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 69b7e7d05b..38f43bd9a7 100644 --- a/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json +++ b/subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json @@ -456,6 +456,525 @@ "tracers": {}, "url": "Unknown package origin" }, + "aja": { + "description": "GStreamer AJA plugin", + "elements": { + "ajasink": { + "author": "Sebastian Dröge ", + "description": "Outputs audio/video frames with AJA devices", + "hierarchy": [ + "GstAjaSink", + "GstBaseSink", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "klass": "Audio/Video/Sink", + "pad-templates": { + "sink": { + "caps": "video/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: interleaved\n field-order: top-field-first\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: interleaved\n field-order: top-field-first\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: interleaved\n field-order: top-field-first\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 1280\n height: 720\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60000/1001\nvideo/x-raw:\n format: v210\n width: 1280\n height: 720\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 1280\n height: 720\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60000/1001\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60/1\nvideo/x-raw:\n format: v210\n width: 1280\n height: 720\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 1280\n height: 720\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 720\n height: 576\n interlace-mode: interleaved\n field-order: top-field-first\npixel-aspect-ratio: 12/11\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 720\n height: 576\n interlace-mode: interleaved\n field-order: top-field-first\npixel-aspect-ratio: 16/11\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 720\n height: 486\n interlace-mode: interleaved\n field-order: bottom-field-first\npixel-aspect-ratio: 10/11\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 720\n height: 486\n interlace-mode: interleaved\n field-order: bottom-field-first\npixel-aspect-ratio: 40/33\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 720\n height: 486\n interlace-mode: progressive\npixel-aspect-ratio: 10/11\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 720\n height: 486\n interlace-mode: progressive\npixel-aspect-ratio: 40/33\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 720\n height: 486\n interlace-mode: progressive\npixel-aspect-ratio: 10/11\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 720\n height: 486\n interlace-mode: progressive\npixel-aspect-ratio: 40/33\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60000/1001\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60/1\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60000/1001\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60/1\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60000/1001\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60/1\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60000/1001\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60/1\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60000/1001\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60/1\n", + "direction": "sink", + "presence": "always" + } + }, + "properties": { + "audio-system": { + "blurb": "Audio system to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "Auto (based on selected channel) (0)", + "mutable": "null", + "readable": true, + "type": "GstAjaAudioSystem", + "writable": true + }, + "cea608-line-number": { + "blurb": "Sets the line number to use for CEA608 S334-1 Annex A Closed Captions (-1=disabled)", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "12", + "max": "-1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": true + }, + "cea708-line-number": { + "blurb": "Sets the line number to use for CEA708 S334-2 Closed Captions (-1=disabled)", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "12", + "max": "-1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": true + }, + "channel": { + "blurb": "Channel to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "0", + "max": "7", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": true + }, + "device-identifier": { + "blurb": "Input device instance to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "0", + "mutable": "null", + "readable": true, + "type": "gchararray", + "writable": true + }, + "end-frame": { + "blurb": "End frame buffer to be used for output (auto if same number as start-frame).", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "0", + "max": "2147483647", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": true + }, + "output-cpu-core": { + "blurb": "Sets the affinity of the output thread to this CPU core (-1=disabled)", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "-1", + "max": "-1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": true + }, + "output-destination": { + "blurb": "Output destination to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "Auto (based on selected channel) (0)", + "mutable": "null", + "readable": true, + "type": "GstAjaOutputDestination", + "writable": true + }, + "queue-size": { + "blurb": "Size of internal queue in number of video frames. Half of this is allocated as device buffers and equal to the latency.", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "16", + "max": "2147483647", + "min": "1", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": true + }, + "reference-source": { + "blurb": "Reference source to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "Auto (0)", + "mutable": "null", + "readable": true, + "type": "GstAjaReferenceSource", + "writable": true + }, + "rp188": { + "blurb": "Enable RP188 timecode transmission", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "true", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, + "sdi-mode": { + "blurb": "SDI mode to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "Single Link (0)", + "mutable": "null", + "readable": true, + "type": "GstAjaSdiMode", + "writable": true + }, + "start-frame": { + "blurb": "Start frame buffer to be used for output (auto if same number as end-frame).", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "0", + "max": "2147483647", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": true + }, + "timecode-index": { + "blurb": "Timecode index to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "Embedded SDI VITC (0)", + "mutable": "null", + "readable": true, + "type": "GstAjaTimecodeIndex", + "writable": true + } + }, + "rank": "none" + }, + "ajasinkcombiner": { + "author": "Sebastian Dröge ", + "description": "Combines corresponding audio/video frames", + "hierarchy": [ + "GstAjaSinkCombiner", + "GstAggregator", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "klass": "Audio/Video/Combiner", + "pad-templates": { + "audio": { + "caps": "audio/x-raw:\n format: S32LE\n rate: 48000\n channels: [ 1, 16 ]\n layout: interleaved\n", + "direction": "sink", + "presence": "request", + "type": "GstAggregatorPad" + }, + "src": { + "caps": "video/x-raw:\n", + "direction": "src", + "presence": "always", + "type": "GstAggregatorPad" + }, + "video": { + "caps": "video/x-raw:\n", + "direction": "sink", + "presence": "always", + "type": "GstAggregatorPad" + } + }, + "rank": "none" + }, + "ajasrc": { + "author": "Sebastian Dröge ", + "description": "Captures audio/video frames with AJA devices", + "hierarchy": [ + "GstAjaSrc", + "GstPushSrc", + "GstBaseSrc", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "klass": "Audio/Video/Source", + "pad-templates": { + "src": { + "caps": "video/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: interleaved\n field-order: top-field-first\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: interleaved\n field-order: top-field-first\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: interleaved\n field-order: top-field-first\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 1280\n height: 720\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60000/1001\nvideo/x-raw:\n format: v210\n width: 1280\n height: 720\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 1280\n height: 720\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60000/1001\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60/1\nvideo/x-raw:\n format: v210\n width: 1280\n height: 720\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 1280\n height: 720\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 1920\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 720\n height: 576\n interlace-mode: interleaved\n field-order: top-field-first\npixel-aspect-ratio: 12/11\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 720\n height: 576\n interlace-mode: interleaved\n field-order: top-field-first\npixel-aspect-ratio: 16/11\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 720\n height: 486\n interlace-mode: interleaved\n field-order: bottom-field-first\npixel-aspect-ratio: 10/11\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 720\n height: 486\n interlace-mode: interleaved\n field-order: bottom-field-first\npixel-aspect-ratio: 40/33\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 720\n height: 486\n interlace-mode: progressive\npixel-aspect-ratio: 10/11\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 720\n height: 486\n interlace-mode: progressive\npixel-aspect-ratio: 40/33\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 720\n height: 486\n interlace-mode: progressive\npixel-aspect-ratio: 10/11\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 720\n height: 486\n interlace-mode: progressive\npixel-aspect-ratio: 40/33\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60000/1001\nvideo/x-raw:\n format: v210\n width: 2048\n height: 1080\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60/1\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60000/1001\nvideo/x-raw:\n format: v210\n width: 3840\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60/1\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60000/1001\nvideo/x-raw:\n format: v210\n width: 4096\n height: 2160\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60/1\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60000/1001\nvideo/x-raw:\n format: v210\n width: 7680\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60/1\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24000/1001\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 24/1\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 25/1\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30000/1001\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 30/1\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 50/1\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60000/1001\nvideo/x-raw:\n format: v210\n width: 8192\n height: 4320\n interlace-mode: progressive\npixel-aspect-ratio: 1/1\n framerate: 60/1\n", + "direction": "src", + "presence": "always" + } + }, + "properties": { + "audio-source": { + "blurb": "Audio source to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "Embedded (0)", + "mutable": "null", + "readable": true, + "type": "GstAjaAudioSource", + "writable": true + }, + "audio-system": { + "blurb": "Audio system to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "Auto (based on selected channel) (0)", + "mutable": "null", + "readable": true, + "type": "GstAjaAudioSystem", + "writable": true + }, + "capture-cpu-core": { + "blurb": "Sets the affinity of the capture thread to this CPU core (-1=disabled)", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "-1", + "max": "-1", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": true + }, + "channel": { + "blurb": "Channel to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "0", + "max": "7", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": true + }, + "closed-caption-capture-mode": { + "blurb": "Closed Caption Capture Mode", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "CEA708 S334-2 and CEA608 S334-1 Annex A Closed Captions (0)", + "mutable": "null", + "readable": true, + "type": "GstAjaClosedCaptionCaptureMode", + "writable": true + }, + "device-identifier": { + "blurb": "Input device instance to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "0", + "mutable": "null", + "readable": true, + "type": "gchararray", + "writable": true + }, + "embedded-audio-input": { + "blurb": "Embedded Audio Input to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "auto (0)", + "mutable": "null", + "readable": true, + "type": "GstAjaEmbeddedAudioInput", + "writable": true + }, + "end-frame": { + "blurb": "End frame buffer to be used for capturing (automatically assign that many frames if same number as start-frame).", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "8", + "max": "2147483647", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": true + }, + "input-source": { + "blurb": "Input source to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "Auto (based on selected channel) (0)", + "mutable": "null", + "readable": true, + "type": "GstAjaInputSource", + "writable": true + }, + "queue-size": { + "blurb": "Size of internal queue in number of video frames. Half of this is allocated as device buffers and equal to the latency.", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "16", + "max": "2147483647", + "min": "1", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": true + }, + "reference-source": { + "blurb": "Reference source to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "Freerun (1)", + "mutable": "null", + "readable": true, + "type": "GstAjaReferenceSource", + "writable": true + }, + "rp188": { + "blurb": "Enable RP188 timecode retrieval", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "true", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": true + }, + "sdi-input-mode": { + "blurb": "SDI input mode to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "Single Link (0)", + "mutable": "null", + "readable": true, + "type": "GstAjaSdiMode", + "writable": true + }, + "signal": { + "blurb": "True if there is a valid input signal available", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "false", + "mutable": "null", + "readable": true, + "type": "gboolean", + "writable": false + }, + "start-frame": { + "blurb": "Start frame buffer to be used for capturing (automatically assign that many frames if same number as end-frame).", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "8", + "max": "2147483647", + "min": "0", + "mutable": "null", + "readable": true, + "type": "guint", + "writable": true + }, + "timecode-index": { + "blurb": "Timecode index to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "Embedded SDI VITC (0)", + "mutable": "null", + "readable": true, + "type": "GstAjaTimecodeIndex", + "writable": true + }, + "video-format": { + "blurb": "Video format to use", + "conditionally-available": false, + "construct": true, + "construct-only": false, + "controllable": false, + "default": "Auto detect format (0)", + "mutable": "null", + "readable": true, + "type": "GstAjaVideoFormat", + "writable": true + } + }, + "rank": "none" + }, + "ajasrcdemux": { + "author": "Sebastian Dröge ", + "description": "Demuxes audio/video from video buffers", + "hierarchy": [ + "GstAjaSrcDemux", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "klass": "Audio/Video/Demux", + "pad-templates": { + "audio": { + "caps": "audio/x-raw:\n", + "direction": "src", + "presence": "always" + }, + "sink": { + "caps": "video/x-raw:\n", + "direction": "sink", + "presence": "always" + }, + "video": { + "caps": "video/x-raw:\n", + "direction": "src", + "presence": "always" + } + }, + "rank": "none" + } + }, + "filename": "gstaja", + "license": "LGPL", + "other-types": {}, + "package": "GStreamer", + "source": "gstreamer", + "tracers": {}, + "url": "Unknown package origin" + }, "amfcodec": { "description": "AMD AMF Codec plugin", "elements": { diff --git a/subprojects/gst-plugins-bad/meson_options.txt b/subprojects/gst-plugins-bad/meson_options.txt index a799b6b388..3ac02da33a 100644 --- a/subprojects/gst-plugins-bad/meson_options.txt +++ b/subprojects/gst-plugins-bad/meson_options.txt @@ -81,6 +81,7 @@ option('x11', type : 'feature', value : 'auto', description : 'X11 support in Vu # Feature options for plugins that need external deps option('aes', type : 'feature', value : 'auto', description : 'AES encryption/decryption plugin') +option('aja', type : 'feature', value : 'auto', description : 'AJA audio/video source/sink plugin') option('aom', type : 'feature', value : 'auto', description : 'AOM AV1 video codec plugin') option('avtp', type : 'feature', value : 'auto', description : 'Audio/Video Transport Protocol (AVTP) plugin') option('amfcodec', type : 'feature', value : 'auto', description : 'AMD AMF codec plugin') @@ -204,6 +205,10 @@ option('v4l2codecs', type : 'feature', value : 'auto', description : 'Video4Linu option('uvcgadget', type : 'feature', value : 'auto', description : 'uvc video gadget plugin') option('isac', type : 'feature', value : 'auto', description : 'iSAC plugin') +# AJA plugin options +option('aja-sdk-dir', type : 'string', value : '', + description : 'Directory with AJA SDK, e.g. ntv2sdklinux_16.0.0.4') + # HLS plugin options option('hls', type : 'feature', value : 'auto', description : 'HTTP Live Streaming plugin') option('hls-crypto', type : 'combo', value : 'auto', choices : ['auto', 'nettle', 'libgcrypt', 'openssl'], diff --git a/subprojects/gst-plugins-bad/sys/aja/meson.build b/subprojects/gst-plugins-bad/sys/aja/meson.build index 7ae140dbd9..0f79a7cca3 100644 --- a/subprojects/gst-plugins-bad/sys/aja/meson.build +++ b/subprojects/gst-plugins-bad/sys/aja/meson.build @@ -1,84 +1,41 @@ -project('gst-aja', 'cpp', - version : '0.1.0', - meson_version : '>= 0.63.0', - default_options : [ 'warning_level=1', - 'buildtype=debugoptimized', - 'cpp_std=c++11', - 'cpp_eh=none', - 'cpp_rtti=false', - ] -) - -plugins_install_dir = '@0@/gstreamer-1.0'.format(get_option('libdir')) - -cxx = meson.get_compiler('cpp') - -if cxx.has_argument('-fvisibility=hidden') - add_project_arguments('-fvisibility=hidden', language: 'cpp') -endif - -if cxx.get_id() == 'msvc' - # Ignore several spurious warnings for things gstreamer does very commonly - # If a warning is completely useless and spammy, use '/wdXXXX' to suppress it - # If a warning is harmless but hard to fix, use '/woXXXX' so it's shown once - # NOTE: Only add warnings here if you are sure they're spurious - test_cppflags = [] - msvc_args = [ - '/wd4018', # implicit signed/unsigned conversion - '/wd4146', # unary minus on unsigned (beware INT_MIN) - '/wd4244', # lossy type conversion (e.g. double -> int) - '/wd4305', # truncating type conversion (e.g. double -> float) - ] - add_project_arguments(msvc_args, language : 'cpp') - # Disable SAFESEH with MSVC for plugins and libs that use external deps that - # are built with MinGW - noseh_link_args = ['/SAFESEH:NO'] -else - test_cppflags = ['-Wno-non-virtual-dtor'] - noseh_link_args = [] +aja_option = get_option('aja') \ + .require(host_system == 'linux', + error_message: 'AJA plugin is currently only available on Linux') +if aja_option.disabled() + subdir_done() endif common_flags = [ '-DAJALinux=1', '-DAJA_LINUX=1', ] -foreach cxxflag: test_cppflags - if cxx.has_argument(cxxflag) - common_flags += [ cxxflag ] - endif -endforeach - -gst_dep = dependency('gstreamer-1.0', version : '>= 1.18', required : true) -gstbase_dep = dependency('gstreamer-base-1.0', version : '>= 1.18', required : true) -gstaudio_dep = dependency('gstreamer-audio-1.0', version : '>= 1.18', required : true) -gstvideo_dep = dependency('gstreamer-video-1.0', version : '>= 1.18', required : true) thread_dep = dependency('threads') rt_dep = cxx.find_library('rt', required : false) aja_sdk_dir = get_option('aja-sdk-dir') if aja_sdk_dir == '' - ajantv2_dep = dependency('libajantv2') - aja_includedirs = [] - + ajantv2_dep = dependency('libajantv2', include_type: 'system', + required: aja_option, allow_fallback: true) if not ajantv2_dep.found() subdir_done() endif + aja_includedirs = [] else aja_includedirs = include_directories( f'@aja_sdk_dir@/ajalibraries', f'@aja_sdk_dir@/ajalibraries/ajantv2/includes', f'@aja_sdk_dir@/ajalibraries/ajantv2/src/lin', + is_system: true, ) - message('Looking for AJA SDK in directory ' + aja_sdk_dir) + message(f'Looking for AJA SDK in @aja_sdk_dir@') if not cxx.has_header('ajabase/common/videotypes.h', - include_directories : aja_includedirs, - ) - error('Cannot find AJA SDK') + include_directories: aja_includedirs, + required: aja_option) + subdir_done() endif - ajantv2_lib = cxx.find_library('ajantv2', # If the header is found, this should also be required : true, @@ -86,8 +43,7 @@ else ) ajantv2_dep = declare_dependency( dependencies: ajantv2_lib, - include_directories: aja_includedirs, - ) + include_directories: aja_includedirs) endif gstaja = library('gstaja', @@ -99,14 +55,13 @@ gstaja = library('gstaja', 'gstajasrcdemux.cpp', 'gstajadeviceprovider.cpp', ], - cpp_args : [ - '-DPACKAGE="gst-aja"', - '-DGST_PACKAGE_NAME="gstreamer-aja"', - '-DGST_PACKAGE_ORIGIN="https://github.com/centricular/gstreamer-aja"', - '-DVERSION="@0@"'.format(meson.project_version())] + common_flags, + override_options : ['cpp_std=c++11'], + cpp_args : gst_plugins_bad_args + common_flags, + include_directories : [configinc], link_args : noseh_link_args, dependencies : [gstvideo_dep, gstaudio_dep, gstbase_dep, gst_dep, ajantv2_dep, thread_dep, rt_dep], install : true, install_dir : plugins_install_dir, ) +plugins += [gstaja] diff --git a/subprojects/gst-plugins-bad/sys/aja/meson_options.txt b/subprojects/gst-plugins-bad/sys/aja/meson_options.txt deleted file mode 100644 index d03c4d5426..0000000000 --- a/subprojects/gst-plugins-bad/sys/aja/meson_options.txt +++ /dev/null @@ -1,2 +0,0 @@ -option('aja-sdk-dir', type : 'string', value : '', - description : 'Directory with AJA SDK, e.g. ntv2sdklinux_16.0.0.4') diff --git a/subprojects/gst-plugins-bad/sys/meson.build b/subprojects/gst-plugins-bad/sys/meson.build index 8285f07fa5..64c5eccf68 100644 --- a/subprojects/gst-plugins-bad/sys/meson.build +++ b/subprojects/gst-plugins-bad/sys/meson.build @@ -1,3 +1,4 @@ +subdir('aja') subdir('amfcodec') subdir('androidmedia') subdir('applemedia')