Change #280901
| Category | ffmpeg |
| Changed by | Kacper Michajłow <kasper93@gmail.com> |
| Changed at | Sun 06 Sep 2026 00:48:24 |
| Repository | https://git.ffmpeg.org/ffmpeg.git |
| Project | ffmpeg |
| Branch | master |
| Revision | 72b81d5b64c13e36ea9a87f8e096616a20944098 |
Comments
swresample: support AV_SAMPLE_FMT_DSD input 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>
Changed files
- libswresample/Makefile
- libswresample/audioconvert.c
- libswresample/audioconvert.h
- libswresample/dsd2pcm.c
- libswresample/dsd2pcm.h
- libswresample/reverse.c
- libswresample/swresample.c
- libswresample/version.h
- tests/ref/fate/source