Bug 13031 - Please support MPC SV8
: Please support MPC SV8
Status: NEW
Product: Logitech Media Server
Classification: Unclassified
Component: Formats
: unspecified
: PC Debian Linux
: P5 enhancement with 1 vote (vote)
: Future
Assigned To: Andy Grundman
: Audio::Scan
Depends on: 10855
Blocks:
  Show dependency treegraph
 
Reported: 2009-07-24 10:08 UTC by goweropolis
Modified: 2011-10-18 05:49 UTC (History)
4 users (show)

See Also:
Category: Feature


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description goweropolis 2009-07-24 10:08:49 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
Comment 1 Andy Grundman 2009-07-25 14:39:44 UTC
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)
Comment 2 goweropolis 2009-07-30 10:36:34 UTC
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>)
Comment 3 Andy Grundman 2009-07-30 10:50:01 UTC
I read the thread, if this is really their attitude I am inclined to completely remove MPC support from SC.
Comment 4 Andy Grundman 2009-07-30 10:53:19 UTC
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.
Comment 5 Andy Grundman 2009-07-30 11:45:57 UTC
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.