[gstreamer-bugs] [Bug 590363] New: a52dec negotiates wrong channel downmix

GStreamer (bugzilla.gnome.org) bugzilla-daemon at bugzilla.gnome.org
Fri Jul 31 04:43:06 PDT 2009


If you have any questions why you received this email, please see the text at
the end of this email. Replies to this email are NOT read, please see the text
at the end of this email. You can add comments to this bug at:
  http://bugzilla.gnome.org/show_bug.cgi?id=590363

  GStreamer | gst-plugins-ugly | Ver: git
           Summary: a52dec negotiates wrong channel downmix
           Product: GStreamer
           Version: git
          Platform: Other
        OS/Version: All
            Status: UNCONFIRMED
          Severity: minor
          Priority: Normal
         Component: gst-plugins-ugly
        AssignedTo: gstreamer-bugs at lists.sourceforge.net
        ReportedBy: lrn1986 at gmail.com
         QAContact: gstreamer-bugs at lists.sourceforge.net
     GNOME version: Unspecified
   GNOME milestone: Unspecified


a52dec picks first structure in the caps allowed downstream and uses it.
Instead, a52dec should
1) Search for a structure that matches its natural channel count and channel
layout exactly and (if it is found) output audio as-is.
2) if 1) fails, search for a structure that matches its natural channel count
(but not layout) and (if it is found) output audio with this channel count,
(moving its channels to match the layout in the caps?)
3) if 2) fails, search for a structure that does have channel count less than
its natural channel count and output that channel count (with downmixing?).
4) If 3) fails, search for a structure that does have the smaller channel count
and ... upmix? Or maybe just use its layout to output native channel count?

P.S. This is really confusing, and somewhat wrong. libavcodec, for example,
defines special stereo downmix layout, which is used to tell the decoder to
downmix more-than-2-channel-audio to stereo instead of picking front-left and
front-right channels and pushing them as-is. For example, there could be a
6-channel audio (left, right, center, lfe, rear left, rear right) and a
5-channel downstream caps with channel-positions="left, right, center, rear
left, rear right". It is ambiguous. Should the decoder downmix 6->5 (in this
case - mix LFE into all other channels) or just pick 5 channels (output 5
channels as is and discard LFE)? This is not addressed by current channel
layout signaling system.

P.P.S. Situation is worsened by the fact that audioconvert (which is usually
placed after any audio decoder) does not know how to convey downstream caps
exactly and discards channel layout information (and often merges channel count
information). Because of that it is not possible to use it for channel
reordering (as in 3) and it is not possible to negotiate channel layout (as in
2) when audioconvert is placed after the decoder.


-- 
See http://bugzilla.gnome.org/page.cgi?id=email.html for more info about why you received
this email, why you can't respond via email, how to stop receiving
emails (or reduce the number you receive), and how to contact someone
if you are having problems with the system.

You can add comments to this bug at http://bugzilla.gnome.org/show_bug.cgi?id=590363.




More information about the Gstreamer-bugs mailing list