diff options
author | Thibault Saunier <tsaunier@igalia.com> | 2021-12-11 11:33:39 -0300 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2022-01-17 19:41:35 +0000 |
commit | b877c72ab3beedbf2af0f4535d4d9652b398d377 (patch) | |
tree | f2ee67d6fee381a554768f0e13f330ec18b9eec1 | |
parent | 8a4ad0342a913fdddcc7a3e84335d4752dd6a1e0 (diff) | |
download | gstreamer-plugins-bad-b877c72ab3beedbf2af0f4535d4d9652b398d377.tar.gz |
pitch: Specify layout as required for negotiation
There are cases where it might negotiate 'non-interleaved' while it
is wrong.
```
gst-launch-1.0 audiotestsrc ! "audio/x-raw, format=(string)F32LE, layout=(string)non-interleaved" ! audioconvert ! audioresample ! pitch tempo=1.2 ! audioconvert ! "audio/x-raw,format=S16LE" ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
(gst-launch-1.0:3029628): GStreamer-Audio-CRITICAL **: 11:42:22.477: gst_audio_buffer_map: assertion '(!meta && info->layout == GST_AUDIO_LAYOUT_INTERLEAVED) || (meta && info->layout == meta->info.layout)' failed
ERROR: from element /GstPipeline:pipeline0/GstAudioConvert:audioconvert1: The stream is in the wrong format.
Additional debug info:
../subprojects/gst-plugins-base/gst/audioconvert/gstaudioconvert.c(876): gst_audio_convert_transform (): /GstPipeline:pipeline0/GstAudioConvert:audioconvert1:
failed to map input buffer
ERROR: pipeline doesn't want to preroll.
ERROR: from element /GstPipeline:pipeline0/GstAudioTestSrc:audiotestsrc0: Internal data stream error.
Setting pipeline to NULL ...
Additional debug info:
../subprojects/gstreamer/libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstAudioTestSrc:audiotestsrc0:
streaming stopped, reason error (-5)
ERROR: pipeline doesn't want to preroll.
Freeing pipeline ...
```
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2565>
-rw-r--r-- | docs/plugins/gst_plugins_cache.json | 4 | ||||
-rw-r--r-- | ext/soundtouch/gstpitch.cc | 10 |
2 files changed, 8 insertions, 6 deletions
diff --git a/docs/plugins/gst_plugins_cache.json b/docs/plugins/gst_plugins_cache.json index 78d899437..46f747c82 100644 --- a/docs/plugins/gst_plugins_cache.json +++ b/docs/plugins/gst_plugins_cache.json @@ -217938,12 +217938,12 @@ "long-name": "Pitch controller", "pad-templates": { "sink": { - "caps": "audio/x-raw:\n format: F32LE\n rate: [ 8000, 2147483647 ]\n channels: [ 1, 2147483647 ]\n", + "caps": "audio/x-raw:\n format: F32LE\n rate: [ 8000, 2147483647 ]\n channels: [ 1, 2147483647 ]\n layout: interleaved\n", "direction": "sink", "presence": "always" }, "src": { - "caps": "audio/x-raw:\n format: F32LE\n rate: [ 8000, 2147483647 ]\n channels: [ 1, 2147483647 ]\n", + "caps": "audio/x-raw:\n format: F32LE\n rate: [ 8000, 2147483647 ]\n channels: [ 1, 2147483647 ]\n layout: interleaved\n", "direction": "src", "presence": "always" } diff --git a/ext/soundtouch/gstpitch.cc b/ext/soundtouch/gstpitch.cc index 3853802a0..c345286bb 100644 --- a/ext/soundtouch/gstpitch.cc +++ b/ext/soundtouch/gstpitch.cc @@ -73,13 +73,15 @@ enum "audio/x-raw, " \ "format = (string) " GST_AUDIO_NE (F32) ", " \ "rate = (int) [ 8000, MAX ], " \ - "channels = (int) [ 1, MAX ]" + "channels = (int) [ 1, MAX ], " \ + "layout = (string) interleaved" #elif defined(SOUNDTOUCH_INTEGER_SAMPLES) #define SUPPORTED_CAPS \ "audio/x-raw, " \ "format = (string) " GST_AUDIO_NE (S16) ", " \ "rate = (int) [ 8000, MAX ], " \ - "channels = (int) [ 1, MAX ]" + "channels = (int) [ 1, MAX ]", \ + "layout = (string) interleaved" #else #error "Only integer or float samples are supported" #endif @@ -459,8 +461,8 @@ gst_pitch_src_event (GstPad * pad, GstObject * parent, GstEvent * event) return res; } -/* generic convert function based on caps, no rate - * used here +/* generic convert function based on caps, no rate + * used here */ static gboolean gst_pitch_convert (GstPitch * pitch, |