avcodec/wavpack: add support for DSD files
authorDavid Bryant <david@wavpack.com>
Mon, 9 Mar 2020 22:23:53 +0000 (15:23 -0700)
committerPaul B Mahol <onemda@gmail.com>
Wed, 11 Mar 2020 20:11:36 +0000 (21:11 +0100)
commit9a13ed522f361cdc3fa424922d59aca214d55a15
treef5927db329e22a880cdb05575ebf3d1f8793e367
parent34d7c8d942c370965d3823e017c79b58f18285ca
avcodec/wavpack: add support for DSD files

Add support for WavPack DSD files to the existing WavPack decoder using
avcodec/dsd to perform the 8:1 decimation to 32-bit float samples. We must
serialize the dsd2pcm operation (cross-boundary filtering) but would like
to use frame-level multithreading for the CPU-intensive DSD decompression,
and this is accomplished with ff_thread_report/await_progress(). Because
the dsd2pcm operation is independent across channels we use slice-based
multithreading for that part.

Also a few things were removed from the existing WavPack decoder that
weren't being used (primarily the SavedContext stuff) and the WavPack
demuxer was enhanced to correctly determine the sampling rate of DSD
files (and of course to no longer reject them).

Signed-off-by: David Bryant <david@wavpack.com>
libavcodec/Makefile
libavcodec/wavpack.c
libavcodec/wavpack.h
libavformat/wvdec.c