|
|
|
@@ -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); |
|
|
|
} |
|
|
|
|
|
|
|
|