• 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
..
AudioCompress Loading commit data...
android Loading commit data...
archive Loading commit data...
client Loading commit data...
command Loading commit data...
config Loading commit data...
db Loading commit data...
decoder Loading commit data...
encoder Loading commit data...
event Loading commit data...
filter Loading commit data...
fs Loading commit data...
haiku Loading commit data...
input Loading commit data...
java Loading commit data...
lib Loading commit data...
mixer Loading commit data...
neighbor Loading commit data...
net Loading commit data...
output Loading commit data...
pcm Loading commit data...
player Loading commit data...
playlist Loading commit data...
protocol Loading commit data...
queue Loading commit data...
song Loading commit data...
sticker Loading commit data...
storage Loading commit data...
system Loading commit data...
tag Loading commit data...
thread Loading commit data...
unix Loading commit data...
util Loading commit data...
win32 Loading commit data...
zeroconf Loading commit data...
AudioFormat.cxx Loading commit data...
AudioFormat.hxx Loading commit data...
AudioParser.cxx Loading commit data...
AudioParser.hxx Loading commit data...
BulkEdit.hxx Loading commit data...
CheckAudioFormat.cxx Loading commit data...
CheckAudioFormat.hxx Loading commit data...
Chrono.hxx Loading commit data...
CommandLine.cxx Loading commit data...
CommandLine.hxx Loading commit data...
GitVersion.cxx Loading commit data...
GitVersion.hxx Loading commit data...
IcyMetaDataParser.cxx Loading commit data...
IcyMetaDataParser.hxx Loading commit data...
Idle.cxx Loading commit data...
Idle.hxx Loading commit data...
IdleFlags.cxx Loading commit data...
IdleFlags.hxx Loading commit data...
Instance.cxx Loading commit data...
Instance.hxx Loading commit data...
Listen.cxx Loading commit data...
Listen.hxx Loading commit data...
LocateUri.cxx Loading commit data...
LocateUri.hxx Loading commit data...
Log.cxx Loading commit data...
Log.hxx Loading commit data...
LogBackend.cxx Loading commit data...
LogBackend.hxx Loading commit data...
LogInit.cxx Loading commit data...
LogInit.hxx Loading commit data...
LogLevel.hxx Loading commit data...
LogV.hxx Loading commit data...
Main.cxx Loading commit data...
Main.hxx Loading commit data...
Mapper.cxx Loading commit data...
Mapper.hxx Loading commit data...
MixRampInfo.hxx Loading commit data...
MusicBuffer.cxx Loading commit data...
MusicBuffer.hxx Loading commit data...
MusicChunk.cxx Loading commit data...
MusicChunk.hxx Loading commit data...
MusicChunkPtr.cxx Loading commit data...
MusicChunkPtr.hxx Loading commit data...
MusicPipe.cxx Loading commit data...
MusicPipe.hxx Loading commit data...
Partition.cxx Loading commit data...
Partition.hxx Loading commit data...
Permission.cxx Loading commit data...
Permission.hxx Loading commit data...
PlaylistDatabase.cxx Loading commit data...
PlaylistDatabase.hxx Loading commit data...
PlaylistError.cxx Loading commit data...
PlaylistError.hxx Loading commit data...
PlaylistFile.cxx Loading commit data...
PlaylistFile.hxx Loading commit data...
PlaylistPrint.cxx Loading commit data...
PlaylistPrint.hxx Loading commit data...
PlaylistSave.cxx Loading commit data...
PlaylistSave.hxx Loading commit data...
PluginUnavailable.hxx Loading commit data...
RemoteTagCache.cxx Loading commit data...
RemoteTagCache.hxx Loading commit data...
RemoteTagCacheHandler.hxx Loading commit data...
ReplayGainConfig.hxx Loading commit data...
ReplayGainGlobal.cxx Loading commit data...
ReplayGainGlobal.hxx Loading commit data...
ReplayGainInfo.cxx Loading commit data...
ReplayGainInfo.hxx Loading commit data...
ReplayGainMode.cxx Loading commit data...
ReplayGainMode.hxx Loading commit data...
SingleMode.cxx Loading commit data...
SingleMode.hxx Loading commit data...
SongLoader.cxx Loading commit data...
SongLoader.hxx Loading commit data...
SongPrint.cxx Loading commit data...
SongPrint.hxx Loading commit data...
SongSave.cxx Loading commit data...
SongSave.hxx Loading commit data...
SongUpdate.cxx Loading commit data...
StateFile.cxx Loading commit data...
StateFile.hxx Loading commit data...
StateFileConfig.cxx Loading commit data...
StateFileConfig.hxx Loading commit data...
Stats.cxx Loading commit data...
Stats.hxx Loading commit data...
TagArchive.cxx Loading commit data...
TagArchive.hxx Loading commit data...
TagFile.cxx Loading commit data...
TagFile.hxx Loading commit data...
TagPrint.cxx Loading commit data...
TagPrint.hxx Loading commit data...
TagSave.cxx Loading commit data...
TagSave.hxx Loading commit data...
TagStream.cxx Loading commit data...
TagStream.hxx Loading commit data...
TimePrint.cxx Loading commit data...
TimePrint.hxx Loading commit data...
check.h Loading commit data...
ls.cxx Loading commit data...
ls.hxx Loading commit data...
open.h Loading commit data...