GNOME Bugzilla – Bug 569916
DTS does not get downmixed to stereo correctly
Last modified: 2009-03-20 10:23:28 UTC
The attached audio snipplet below contains an very small audio extract of a movie, where you can hear a voice. The voice should be equally distributed on both stereo channels. However, played on gstreamer the voice is louder on the left channel than the right. Mplayer instead playes the snipplet (also using libdca) perfectly well. I pasted the console output of gst-launch and mplayer below. As you may see the ffdec_dca gstreamer plugin is used. gst-launch output: $ gst-launch -v filesrc location=dts-audio-snipplet.mkv ! decodebin ! audioconvert ! audioresample ! pulsesink Setting pipeline to PAUSED ... /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/x-matroska Pipeline is PREROLLING ... /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:sink: caps = audio/x-dts, channels=(int)6, rate=(int)48000 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:src: caps = audio/x-dts, channels=(int)6, rate=(int)48000 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_dca:ffdec_dca0.GstPad:sink: caps = audio/x-dts, channels=(int)6, rate=(int)48000 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_dca:ffdec_dca0.GstPad:src: caps = audio/x-raw-int, rate=(int)48000, channels=(int)6, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16 ** (gst-launch-0.10:5630): WARNING **: Failed to retrieve channel layout from caps. This usually means there is a GStreamer element that does not implement multichannel audio correctly. Please file a bug. ** (gst-launch-0.10:5630): WARNING **: Failed to retrieve channel layout from caps. This usually means there is a GStreamer element that does not implement multichannel audio correctly. Please file a bug. /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw-int, rate=(int)48000, channels=(int)6, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16 /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = audio/x-raw-int, rate=(int)48000, channels=(int)6, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16 /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = audio/x-raw-int, rate=(int)48000, channels=(int)6, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16 /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0.GstProxyPad:proxypad1: caps = audio/x-raw-int, rate=(int)48000, channels=(int)6, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16 /GstPipeline:pipeline0/GstAudioresample:audioresample0.GstPad:src: caps = audio/x-raw-int, rate=(int)48000, channels=(int)6, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16 /GstPipeline:pipeline0/GstAudioresample:audioresample0.GstPad:sink: caps = audio/x-raw-int, rate=(int)48000, channels=(int)6, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16 ** (gst-launch-0.10:5630): WARNING **: Failed to retrieve channel layout from caps. This usually means there is a GStreamer element that does not implement multichannel audio correctly. Please file a bug. /GstPipeline:pipeline0/GstPulseSink:pulsesink0.GstPad:sink: caps = audio/x-raw-int, rate=(int)48000, channels=(int)6, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16 Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstAudioSinkClock Got EOS from element "pipeline0". Execution ended after 6748637222 ns. Setting pipeline to PAUSED ... Setting pipeline to READY ... /GstPipeline:pipeline0/GstPulseSink:pulsesink0.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstAudioresample:audioresample0.GstPad:src: caps = NULL /GstPipeline:pipeline0/GstAudioresample:audioresample0.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = NULL /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = NULL /GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_dca:ffdec_dca0.GstPad:src: caps = NULL /GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_dca:ffdec_dca0.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:src: caps = NULL /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMatroskaDemux:matroskademux0.GstPad:audio_00: caps = NULL /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL Setting pipeline to NULL ... FREEING pipeline ... Mplayer output: $ mplayer dts-audio-snipplet.mkv MPlayer SVN-r28238 (C) 2000-2007 MPlayer Team CPU: Intel(R) Pentium(R) M processor 1.86GHz (Family: 6, Model: 13, Stepping: 8) CPUflags: MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1 Compiled for x86 CPU with extensions: MMX MMX2 3DNow 3DNowEx SSE SSE2 mplayer: could not connect to socket mplayer: No such file or directory Failed to open LIRC support. You will not be able to use your remote control. Playing dts-audio-snipplet.mkv. [mkv] Track ID 1: audio (A_DTS), -aid 0, -alang und [mkv] No video track found/wanted. Matroska file format detected. ========================================================================== Opening audio decoder: [libdca] DTS decoding with libdca Stream with high frequencies VQ coding AUDIO: 48000 Hz, 2 ch, s16le, 1536.0 kbit/100.00% (ratio: 192000->192000) Selected audio codec: [dts] afm: libdca (DTS-libdca) ========================================================================== AO: [pulse] 44100Hz 2ch s16le (2 bytes per sample) Video: no video Starting playback... A: 5.7 (05.7) of 6.1 (06.1) 18.5% 0% Exiting... (End of file)
Bugzilla does not let me attach the file directly to the bug. You may find it here: http://up.jimi.li/data/dts-audio-snipplet.mkv (1.1 MB)
Ok this problem led to a distribution problem. Consider it not a problem for gstreamer.