[FFmpeg-devel] avcodec: add a WavPack DSD decoder

Paul B Mahol onemda at gmail.com
Tue Jul 23 10:47:27 EEST 2019


On 7/23/19, David Bryant <david at wavpack.com> wrote:
> On 7/21/19 11:23 PM, Paul B Mahol wrote:
>> On 7/22/19, David Bryant <david at wavpack.com> wrote:
>>> Hi,
>>>
>>> As I promised late last year, here is a patch to add a WavPack DSD
>>> decoder.
>>>
>>> Thanks!
>>>
>>> -David Bryant
>>>
>>>
>> Please correct me if I'm wrong, but why this uses new codec id?
>> Apparently is also copies some logic from other files.
>
> Yes, I created a new codec ID for WavPack DSD. It would be possible to just
> piggyback on the existing WavPack codec by silently
> decimating the DSD to PCM, but that seemed weird and wrong to me. For one
> thing, the user would have no idea that the file was
> actually DSD and not high sample-rate PCM.
>
> Also, since regular WavPack has threading enabled but WavPack DSD can't
> (because of the dsd2pcm conversion) I would have to turn
> off threading for all WavPack (unless there's some way of making that
> conditional at runtime). It would also mean that regular
> WavPack would be dependent on the dsd2pcm component even if DSD was not
> required (not everyone needs DSD). And of course I was
> looking closely at the only other DSD codec in FFmpeg (DST) which has its
> own codec ID.
>
> Because regular WavPack PCM and DSD share the same block format and metadata
> structure, there is a little code that is shared
> between the two codecs (although they are no longer identical because of the
> threading difference). Is this a problem? I could
> combine the two codecs into one file and sprinkle in a few conditionals, but
> I don't think it would be as clean or clear (but
> might save a little duplicate code).
>
> That's my thinking, but obviously I am not as familiar with the FFmpeg
> philosophy as you guys.

Looking carefully at dsd2pcm code in your patch, it appears it would
work only with 1 or 2 channels.
Is this correct?

About multi-threading, as dsd2pcm can not be made multi-threaded then
just do locking when doing dsd2pcm to make it single threaded and
update other code as necessary.

I still see no valid reason to add separate codec id. Add another
wavpack profile if you wish to help users know the difference between
the two.


More information about the ffmpeg-devel mailing list