GNOME Bugzilla – Bug 794257
audiomixer: Negotiation failure when input has several channels (> 2)
Last modified: 2018-03-12 16:37:45 UTC
Basically for some reason the channel-mask seems to be ignmore and then gst_audio_info_set_format fails. Very simple reproduction steps: ``` $ GST_DEBUG=2 gst-launch-1.0 audiotestsrc ! audio/x-raw,channels=6,channel-mask="(bitmask)0x0000000000000c0f",format=F32LE,rate=48000,layout=interleaved ! audiomixer ! fakesink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... 0:00:00.026757068 23500 0x55dd57827ca0 WARN aggregator gstaggregator.c:1715:gst_aggregator_query_latency_unlocked:<audiomixer0> Latency query failed 0:00:00.026856769 23500 0x55dd57827ca0 WARN aggregator gstaggregator.c:1715:gst_aggregator_query_latency_unlocked:<audiomixer0> Latency query failed 0:00:00.027209799 23500 0x55dd57827ca0 ERROR audio-info audio-info.c:304:gst_audio_info_from_caps: no channel-mask property given 0:00:00.027219079 23500 0x55dd57827ca0 WARN audioaggregator gstaudioaggregator.c:841:gst_audio_aggregator_negotiated_src_caps:<audiomixer0> Rejecting invalid caps: audio/x-raw, format=(string)F32LE, rate=(int)48000, channels=(int)6, layout=(string)interleaved 0:00:00.027236206 23500 0x55dd57827ca0 WARN aggregator gstaggregator.c:1061:gst_aggregator_update_src_caps:<audiomixer0> Subclass failed to accept negotiated caps 0:00:00.027381273 23500 0x55dd57827c50 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop:<audiotestsrc0> error: Internal data stream error. 0:00:00.027392720 23500 0x55dd57827c50 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop:<audiotestsrc0> error: streaming stopped, reason not-negotiated (-4) ERROR: from element /GstPipeline:pipeline0/GstAudioTestSrc:audiotestsrc0: Internal data stream error. Additional debug info: ../subprojects/gstreamer/libs/gst/base/gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstAudioTestSrc:audiotestsrc0: streaming stopped, reason not-negotiated (-4) ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ... ``` Marking as blocker as it works on 1.12.
Created attachment 369579 [details] [review] audioaggregator: fix channel-mask negotiation When outputting more than two channels, a channel-mask has to be specified in the output caps. We follow the same heuristic as other cases, when downstream does not specify a channel-mask, we use that of the first configured pad, and if there was none we generate a fallback mask.
Thanks for catching that!
Review of attachment 369579 [details] [review]: Sounds good, thanks for fixing :-)
Attachment 369579 [details] pushed as e9be107 - audioaggregator: fix channel-mask negotiation