DSD support?


Hi there,

Are there any plans for supporting dsd files?

-- Jürgen

There wasn't, but there is now!

DSD has been supported in FFmpeg since version 2.3 but is not yet supported in LibAV. Assuming it actually works, then adding DSD support in MOC for FFmpeg users is straight-forward.

Well, that sounds promising! However, after compiling the latest ffmpeg and then mocp, I still do not see any files with the extensions .dsf or .dff under mocp. How do I make mocp aware of those? -- Jürgen

You were asking about a plan to support DSD. There is now a plan (but not yet an implementation).

Sorry for the confusion.

No problem! But it would be nice to have this added capability.

All the best for 2016, and keep up the good work!

If you're comfortable compiling MOC from source, you might try to hand-edit ffmpeg.c file: find "audio_extns" constant holding list of recognized extensions, add .dsf and .dff there, and see if it works. I don't have any DSD files around to try it, but ffmpeg decoder should pick them up.

Thanks for the suggestion, but after running "make clean", "./configure" still only reports

MOC will be compiled with:
Decoder plugins: flac mp3 sndfile vorbis wavpack

And sure enough, the newly compiled mocp still does not see the dff and dsf files.
You can find sample dsf files here: http://www.2l.no/hires/

Anyway, all the best for 2016!

I'll check out the files, at the moment webpage seems to be down.

In your case, configure script is not detecting ffmpeg libraries (maybe some -devel version is missing?). Output of configure or config.log might contain some hints as to why it fails.

It seems my ISP is blocking access to that site for some reason, had to tunnel around it... Got the files to play with.

Addition of extension was not trivial, as the format name differs from extension. I got it to work for .dff files with:
{"dff", "dsf"}

Unless you have a very powerful soundcard, MOC will fail to play the file as most soundcards won't work with such high samplerates. I had to enable forced resampling in .moc/config.

Bottom line is there is little sense in using those formats for playback - in the end it all ends in PCM and none can't hear beyond 48/16.

Note to JCF: both seeking and timing seem to work ok.

Thanks for your efforts. You only made this change to ffmpeg.c, and nothing else? I cannot reproduce this, but my experience with compiling is rather limited (./configure -- make -- make install).

I'm steaming to an external DAC via USB, and I wanted to find out if it can deal natively with dsd files, or uses the DoP (DSD over PCM) protocol. The technical data don't quite make this clear. I've written to the company and expect to hear from them shortly.

Yes, I only added that line. If you need different extensions than .dff, you would have to add more similar lines. First string is an extension, the other internal FFmpeg designation of format.

Even if your DAC could deal with DSD files natively or in any other way, MOC won't support it in this way. Files get decoded to PCM. I don't know how to do it correctly with a DAC does support it. Apparetnly MPD does it, so you could check it: http://www.musicpd.org/doc/user/dsd.html You can also try to see what FFmpeg build-in player "ffplay" does with it.

DSD support has now been commit to SVN as r2876.