• 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
To find the state of this project's repository at the time of any of these versions, check out the tags.
NEWS 68.7 KB