mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Warn if Vorbis does not support the provided channel layout.
The warning is printed with loglevel error because the output stream is known to be broken. Also warn if no channel layout was provided for multichannel input.
This commit is contained in:
parent
85b2114759
commit
7c8c55ff03
@ -96,6 +96,35 @@ static av_cold int oggvorbis_init_encoder(vorbis_info *vi, AVCodecContext *avcco
|
||||
vorbis_encode_ctl(vi, OV_ECTL_IBLOCK_SET, &context->iblock);
|
||||
}
|
||||
|
||||
if (avccontext->channels == 3 &&
|
||||
avccontext->channel_layout != (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER) ||
|
||||
avccontext->channels == 4 &&
|
||||
avccontext->channel_layout != AV_CH_LAYOUT_2_2 &&
|
||||
avccontext->channel_layout != AV_CH_LAYOUT_QUAD ||
|
||||
avccontext->channels == 5 &&
|
||||
avccontext->channel_layout != AV_CH_LAYOUT_5POINT0 &&
|
||||
avccontext->channel_layout != AV_CH_LAYOUT_5POINT0_BACK ||
|
||||
avccontext->channels == 6 &&
|
||||
avccontext->channel_layout != AV_CH_LAYOUT_5POINT1 &&
|
||||
avccontext->channel_layout != AV_CH_LAYOUT_5POINT1_BACK ||
|
||||
avccontext->channels == 7 &&
|
||||
avccontext->channel_layout != (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_CENTER) ||
|
||||
avccontext->channels == 8 &&
|
||||
avccontext->channel_layout != AV_CH_LAYOUT_7POINT1) {
|
||||
if (avccontext->channel_layout) {
|
||||
char name[32];
|
||||
av_get_channel_layout_string(name, sizeof(name), avccontext->channels,
|
||||
avccontext->channel_layout);
|
||||
av_log(avccontext, AV_LOG_ERROR, "%s not supported by Vorbis: "
|
||||
"output stream will have incorrect "
|
||||
"channel layout.\n", name);
|
||||
} else {
|
||||
av_log(avccontext, AV_LOG_WARNING, "No channel layout specified. The encoder "
|
||||
"will use Vorbis channel layout for "
|
||||
"%d channels.\n", avccontext->channels);
|
||||
}
|
||||
}
|
||||
|
||||
return vorbis_encode_setup_init(vi);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user