Convert DSD to PCM with the same 96-tap symmetric lowpass filter the
libavcodec DSD decoders use. The implementation is copied from
libavcodec/dsd.c, minus the LSBF table variants, since AV_SAMPLE_FMT_DSD
is defined as MSBF.
The libavcodec copy will be removed in future commits as decoders are
transitioned to SWR.
The conversion is stateful (per-channel filter history), so the audio
conversion functions gain a per-channel state argument.
DSD silence is the 0x69 bit pattern instead of the 0x80 used for PCM.
Only a direct DSD to float conversion function is provided. For format
pairs without a direct conversion function (e.g. DSD to s16 with equal
rates), swr_init() now falls back from the full_convert shortcut to
the generic two-stage path instead of failing, and reports unsupported
conversions with a proper error message instead of ENOMEM.
Signed-off-by: Kacper Michajłow <kasper93@gmail.com>