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 667543 - [0.11] [pulsesink] Fails in query_acceptcaps() if no channel-mask is provided
[0.11] [pulsesink] Fails in query_acceptcaps() if no channel-mask is provided
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
0.11.x
Other Linux
: Normal blocker
: NONE
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-01-09 12:58 UTC by Sebastian Dröge (slomo)
Modified: 2012-10-03 11:22 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Sebastian Dröge (slomo) 2012-01-09 12:58:05 UTC
gst_audio_ring_buffer_parse_caps() requires valid, fixed caps and also requires that a channel-mask is present in the caps for >1 channels. Currently this isn't the case most of the time and something should be done about it ;) For example when playing something with playbin2.
Comment 1 Wim Taymans 2012-09-04 09:50:49 UTC
When is the channel-mask  not set? I can't seem to find a case where it fails. I also think the proper fix is to make all elements set the channel-mask properly.
Comment 2 Tim-Philipp Müller 2012-10-02 21:44:49 UTC
Perhaps we should make it mandatory for 1+2 channels as well then?
Comment 3 Tim-Philipp Müller 2012-10-02 22:09:27 UTC
Is this outdated?

I'm not sure I understand what the issue is here. gst_audio_ring_buffer_parse_caps() does this:

  if (g_str_equal (mimetype, "audio/x-raw")) {
    if (!gst_audio_info_from_caps (&info, caps))
      goto parse_error;
    ...
  }

and gst_audio_info_from_caps() does this:


  if (!gst_structure_get (str, "channel-mask", GST_TYPE_BITMASK, &channel_mask,
          NULL)) {
    if (channels == 1) {
      position[0] = GST_AUDIO_CHANNEL_POSITION_MONO;
    } else if (channels == 2) {
      position[0] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
      position[1] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
    } else {
      goto no_channel_mask;
    }
  }

So what's going wrong where?
Comment 4 Tim-Philipp Müller 2012-10-03 11:22:21 UTC
Appears to be obsolete. If not, I'm sure someone will file a new bug.