GNOME Bugzilla – Bug 732682
gst-libav not declaring support for mpc sv8
Last modified: 2015-08-16 13:40:10 UTC
Gstreamer-1.2.4 using gst-libav-1.2.4 is not capable of playing Musepack - SV8 MPC audio files. Steps to Reproduce: - Install libav version 9.13. - Check that it is capable of playing an mpc-sv8 audio file on itself. - Install gstreamer-1.2.4 and gst-libav-1.2.4 - Try to play an mpc-sv8 file using a gstreamer pipe with playbin - Try to play an mpc-sv8 file using a gstreamer pipe with avdemux_mpc and avdec_mpc8 Actual Results: - libav is capable of playing the mpc-sv8 files $ avplay test.mpc avplay version 9.13, Copyright (c) 2003-2014 the Libav developers built on Jun 23 2014 15:59:54 with gcc 4.7.3 (Gentoo 4.7.3-r1 p1.4, pie-0.5.5) [mpc8 @ 0x7fc66c005d00] max_analyze_duration reached Input #0, mpc8, from 'test.mpc': Metadata: Track : 1/6 Year : Some year Artist : Some artist Album : Some album Title : Some title Replaygain_Album_Gain: -9.13 dB Replaygain_Track_Gain: -9.13 dB Replaygain_Track_Peak: 1.17095732284 Replaygain_Album_Peak: 1.17095732284 Duration: 00:03:24.28, start: 0.000000, bitrate: 209 kb/s Stream #0.0: Audio: mpc8, 48000 Hz, stereo, s16p 1.93 A-V: 0.000 s:0.0 aq= 326KB vq= 0KB sq= 0B f=0/0 - However, a gstreamer pipe with playbin fails with that same file. It complains about "missing components", which is not the case as gst-inspect reports avdemux_mpc, avdec_mpc7 and avdec_mpc8 from gst-libav being available: $ GST_DEBUG=3 gst-launch-1.0 playbin uri=file:///home/user/test.mpc Setting pipeline to PAUSED ... Pipeline is PREROLLING ... 0:00:00.026272692 20864 0x7fa1740c28a0 WARN uridecodebin /var/tmp/portage/media-libs/gst-plugins-base-1.2.4-r1/work/gst-plugins-base-1.2.4/gst/playback/gsturidecodebin.c:930:unknown_type_cb:<uridecodebin0> warning: No decoder available for type 'audio/x-musepack, streamversion=(int)8'. Missing element: Musepack (MPC) decoder [...] ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... 0:00:00.026548190 20864 0x7fa1740c28a0 WARN tagdemux /var/tmp/portage/media-libs/gst-plugins-base-1.2.4-r1/work/gst-plugins-base-1.2.4/gst-libs/gst/tag/gsttagdemux.c:1469:gst_tag_demux_element_loop:<apedemux0> error: Stream stopped, reason not-linked Freeing pipeline ... - Moreover, specifying the components of the gstreamer pipe does not help either. But in this case the error message says that the file is not a musepack file, which is not correct as libav can play that file without problems: $ GST_DEBUG=3 gst-launch-1.0 filesrc location=test.mpc ! avdemux_mpc ! avdec_mpc8 ! pulsesink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... 0:00:00.021242177 21036 0x242d540 ERROR libav :0:: Not a Musepack file 0:00:00.021272825 21036 0x242d540 WARN libav /var/tmp/portage/media-plugins/gst-plugins-libav-1.2.4/work/gst-libav-1.2.4/ext/libav/gstavdemux.c:1284:gst_ffmpegdemux_open:<avdemux_mpc0> error: Unhandled error code received 0:00:00.021306520 21036 0x242d540 WARN libav /var/tmp/portage/media-plugins/gst-plugins-libav-1.2.4/work/gst-libav-1.2.4/ext/libav/gstavdemux.c:1546:gst_ffmpegdemux_loop:<avdemux_mpc0> error: Internal data stream error. 0:00:00.021313429 21036 0x242d540 WARN libav /var/tmp/portage/media-plugins/gst-plugins-libav-1.2.4/work/gst-libav-1.2.4/ext/libav/gstavdemux.c:1546:gst_ffmpegdemux_loop:<avdemux_mpc0> error: streaming stopped, reason error ERROR: from element /GstPipeline:pipeline0/avdemux_mpc:avdemux_mpc0: GStreamer encountered a general supporting library error. Additional debug info: /var/tmp/portage/media-plugins/gst-plugins-libav-1.2.4/work/gst-libav-1.2.4/ext/libav/gstavdemux.c(1284): gst_ffmpegdemux_open (): /GstPipeline:pipeline0/avdemux_mpc:avdemux_mpc0: Unhandled error code received ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ... Expected Results: - gstreamer should be capable of using the capabilities of libav to demux and decode mpc-sv8 files. Additional Information: - A Gentoo dev said that the bug seems to be placed in avdemux_mpc, which does not declare any support for mpc sv8.
I can confirm that with the sample files here: http://samples.mplayerhq.hu/A-codecs/musepack/sv8/ Just adding streamversion=8 to avdemux_mpc does not make it work. avdemux_mpc can't read the file, claims it's not a musepack file at all. So not sure how this is supposed to work with libav. Needs some investigation
Created attachment 300785 [details] [review] Enable Musepack SV8 for gstreamer-libav This patch adds sv8 playback. sv7 playback remains unaffected.
I can confirm that this makes sv8 work on current master. Can this be pushed?
Sure, thanks for the patch: commit f92bf2618c84eed35204ee0a59bb3c5b6aa05f18 Author: James Smith <smithjd15@gmail.com> Date: Wed Jul 22 09:44:27 2015 +0100 Add support for musepack (mpc) sv8 audio https://bugzilla.gnome.org/show_bug.cgi?id=732682 Please provide patches in 'git format-patch' format next time, that makes things easier for us, thanks!