summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Saunier <tsaunier@igalia.com>2021-12-11 11:33:39 -0300
committerTim-Philipp Müller <tim@centricular.com>2022-01-17 19:41:35 +0000
commitb877c72ab3beedbf2af0f4535d4d9652b398d377 (patch)
treef2ee67d6fee381a554768f0e13f330ec18b9eec1
parent8a4ad0342a913fdddcc7a3e84335d4752dd6a1e0 (diff)
downloadgstreamer-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.json4
-rw-r--r--ext/soundtouch/gstpitch.cc10
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,