• Max Kellermann's avatar
    decoder/ffmepg: fill AudioFormat from AVCodecContext, not AVCodecParameters · 6c602811
    Max Kellermann authored
    `AVCodecParameters` contains values from the codec detected by
    avformat_find_stream_info(), but after avcodec_open2(), a different
    codec might be selected with a different `AVSampleFormat`.  This leads
    to misinterpretation of data returned from FFmpeg, leading to random
    noise or silence.
    
    This was observed with FFmpeg 4.0.2 and a TS container file containing
    MP2.  A mp3-float codec was detected returning `AV_SAMPLE_FMT_FLTP`,
    but finally the `mpegaudiodec_fixed.c` was used, returning
    `AV_SAMPLE_FMT_S16`.
    
    By using the audio format from `AVCodecContext`, we ensure that MPD
    and FFmpeg always agree on the actual audio format in the buffer.
    
    This removes the FFmpeg bug workaround from commit e1b032cb which I
    assume is obsolete after 7 years.
    
    Fixes #380
    6c602811
Name
Last commit
Last update
android Loading commit data...
build Loading commit data...
doc Loading commit data...
python/build Loading commit data...
scripts Loading commit data...
src Loading commit data...
systemd Loading commit data...
test Loading commit data...
win32 Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
AUTHORS Loading commit data...
COPYING Loading commit data...
NEWS Loading commit data...
README.md Loading commit data...
meson.build Loading commit data...
meson_options.txt Loading commit data...
mpd.svg Loading commit data...
valgrind.suppressions Loading commit data...