After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 794257 - audiomixer: Negotiation failure when input has several channels (> 2)
audiomixer: Negotiation failure when input has several channels (> 2)
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal blocker
: 1.13.91
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2018-03-12 12:12 UTC by Thibault Saunier
Modified: 2018-03-12 16:37 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
audioaggregator: fix channel-mask negotiation (1.91 KB, patch)
2018-03-12 15:25 UTC, Mathieu Duponchelle
committed Details | Review

Description Thibault Saunier 2018-03-12 12:12:55 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.
Comment 1 Mathieu Duponchelle 2018-03-12 15:25:16 UTC
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.
Comment 2 Mathieu Duponchelle 2018-03-12 15:25:55 UTC
Thanks for catching that!
Comment 3 Thibault Saunier 2018-03-12 15:50:36 UTC
Review of attachment 369579 [details] [review]:

Sounds good, thanks for fixing :-)
Comment 4 Mathieu Duponchelle 2018-03-12 16:36:29 UTC
Attachment 369579 [details] pushed as e9be107 - audioaggregator: fix channel-mask negotiation