You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-07-16 22:42:38 +02:00
avformat/mov_chan: never override number of channels based on chan atom
The channel designation metadata should not override the number of channels. Let's warn the user if it is inconsistent, and keep the channel layout unspecified. Before the conversion to the channel layout API the code only set the mask, but never overridden the channel count, so this restores the old behaviour. Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
@ -544,8 +544,13 @@ int ff_mov_read_chan(AVFormatContext *s, AVIOContext *pb, AVStream *st,
|
||||
mask = mov_get_channel_layout(layout_tag, bitmap);
|
||||
|
||||
if (mask) {
|
||||
av_channel_layout_uninit(&st->codecpar->ch_layout);
|
||||
av_channel_layout_from_mask(&st->codecpar->ch_layout, mask);
|
||||
if (!st->codecpar->ch_layout.nb_channels || av_popcount64(mask) == st->codecpar->ch_layout.nb_channels) {
|
||||
av_channel_layout_uninit(&st->codecpar->ch_layout);
|
||||
av_channel_layout_from_mask(&st->codecpar->ch_layout, mask);
|
||||
} else {
|
||||
av_log(s, AV_LOG_WARNING, "ignoring channel layout with %d channels because the real number of channels is %d\n",
|
||||
av_popcount64(mask), st->codecpar->ch_layout.nb_channels);
|
||||
}
|
||||
}
|
||||
avio_skip(pb, size - 12);
|
||||
|
||||
|
Reference in New Issue
Block a user