Bugzilla – Bug 13031
Please support MPC SV8
Last modified: 2011-10-18 05:49:54 UTC
New version of Musepack is SV8. It was released on March 1st 2009. Decoder is now "mpcdec", not "mppdec". (The new decoder is backward compatible with older MPC files, but the old decoder is not forward compatible.) Please add support for this version of Musepack. Changes: - Container-independent format. An SV8 MPC is a container file for a Musepack stream. Raw stream encoding is possible. - Packetized stream allows muxing into audio and video containers (e.g. MKA, MKV, NUT) - Sample-accurate, fast seeking independent of file length - Sample-accurate cutting - Chapters - No internal clipping. --noxlevel flag removed, not needed anymore - Bitstream compressed by highly optimized canonical huffman tables - 2% smaller files and faster decoding - Streamable - Cleaned up and rearranged code - libmpcdec, libmpcenc, libmpcpsy
mpcdec does not appear to support the same command-line options as mppdec. SC is configured to use some of these missing options: mpc mp3 * * # IRB:{BITRATE=-B %B}D:{RESAMPLE=--resample %D} [mppdec] --silent --prev --gain 3 - - | [lame] --silent -q $QUALITY$ $RESAMPLE$ -v $BITRATE$ - - mpc pcm * * # IR [mppdec] --raw-le --silent --prev --gain 2 - - mpc aif * * # IR [mppdec] --raw-be --silent --prev --gain 2 - - mpc flc * * # IR [mppdec] --silent --prev --gain 2 - - | [flac] -cs --totally-silent --compression-level-0 - So unfortunately this makes supporting mpcdec a lot more than a simple drop-in replacement. Do you have any suggestions? ./mpcdec -h mpcdec - Musepack (MPC) decoder v1.0.0 (C) 2006-2009 MDT Built Jul 25 2009 17:35:01 Usage: ./mpcdec [-i] [-h] <infile.mpc> [<outfile.wav>] -i : print file information on stdout -c : check the file for stream errors (doesn't fully decode, outfile will be ignored) -h : print this help you can use stdin and stdout as resp. <infile.mpc> and <outfile.wav> replacing the file name by "-" -- MPC Decoder SV7 1.95e 3DNow/SSE (C) 1999-2003 Buschmann/Klemm/Piecha/Wolf usage: mppdec [--options] <Input_File> <Output_File> mppdec [--options] <List_of_Input_Files> <Output_File> mppdec [--options] <List_of_Input_Files> <Output_Directory> options: --start x start decoding at x sec (x>0) or at |x|% of the file (x<0) --dur x decode a sequence of x sec duration (dflt: 100%) --prev activate clipping prevention (gain=0,2:title based; 1,3:album based) --noprev deactivate clipping prevention (dflt) --scale x additional scale signal by x (dflt: 1) --gain x replay gain control (0,1:off (dflt), 2:title, 3:album) --silent no messages to the terminal --priority x set priority to x (0: idle, 100: realtime) --wav write Microsoft's WAVE file (dflt) --aiff write Apple's AIFF file --raw write RAW file in native byte order --raw-le write RAW file in little endian byte order --raw-be write RAW file in big endian byte order --random random play order (don't use options after this one)
It appears that the MPC developers feel that a better option to using the standard command line decoder is to either: a. create your own decoder based on the available Musepack decoder library (or "source code") b. use a third-party decoder library (such as GStreamer or ffmpeg) Do either of these options make sense for you? (You can see my discussions with the Musepack developer here: <http://forum.musepack.net/showthread.php?t=599>)
I read the thread, if this is really their attitude I am inclined to completely remove MPC support from SC.
OK that's a bit harsh, but I still don't understand why they would just throw away the old decoder they had. I guess SV8 required a total rewrite? Anyway, you can help by porting our current mppdec transcoding options to mpcdec. I just don't have the motivation to spend much time on MPC, it is a pretty useless format IMHO, Vorbis is just as good and our support for it is native.
I responded on the MPC forum, we should continue the discussion there I think. Don't lose hope. :) BTW I have added SV8 header reading and RG header reading support to Audio::Scan, which will be part of 7.4.