• Anssi Hannula's avatar
    avcodec/aacdec: default to non-wide 7.1 in non-strict mode · e10fccf6
    Anssi Hannula authored
    AAC specification has 7.1(wide) as a default layout for 8-channel
    streams (channel config 7). However, at least Nero AAC encoder encodes
    non-wide 7.1 streams using the default channel config 7, mapping the
    side channels of the original audio stream to the second
    AAC_CHANNEL_FRONT pair in the AAC stream. Similarly, e.g. FAAD decodes
    the second AAC_CHANNEL_FRONT pair as side channels, therefore decoding
    the incorrect streams as if they were correct (and as the encoder
    intended).
    
    FFmpeg currently decodes such files by-the-spec, i.e. after decoding the
    original front pair will be in AV_CH_FRONT_x_OF_CENTER and the original
    side pair will be in AV_CH_FRONT_x.
    
    As actual intended 7.1(wide) streams are very rare while misencoded 7.1
    files actually exist in the wild, default to assuming a 7.1 layout was
    intended unless in strict mode.
    
    Fixes playback of e.g. 8_Channel_ID.m4a in samples.
    Signed-off-by: 's avatarAnssi Hannula <anssi.hannula@iki.fi>
    Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
    e10fccf6
aacdec.c 120 KB