Fix T56905: unsupported channel layout error writing AAC audio.
This uses same mapping as Audaspace to specify channel layout, which was missing before.
This commit is contained in:
parent
81f68bbba1
commit
45271007cf
Notes:
blender-bot
2023-02-14 07:30:31 +01:00
Referenced by issue #56905, "Unsupported channel layout" when rendering with AAC audio output
|
@ -736,6 +736,26 @@ static AVStream *alloc_audio_stream(FFMpegContext *context, RenderData *rd, int
|
|||
c->sample_fmt = AV_SAMPLE_FMT_S16;
|
||||
c->channels = rd->ffcodecdata.audio_channels;
|
||||
|
||||
#ifdef FFMPEG_HAVE_FRAME_CHANNEL_LAYOUT
|
||||
switch (rd->ffcodecdata.audio_channels) {
|
||||
case FFM_CHANNELS_MONO:
|
||||
c->channel_layout = AV_CH_LAYOUT_MONO;
|
||||
break;
|
||||
case FFM_CHANNELS_STEREO:
|
||||
c->channel_layout = AV_CH_LAYOUT_STEREO;
|
||||
break;
|
||||
case FFM_CHANNELS_SURROUND4:
|
||||
c->channel_layout = AV_CH_LAYOUT_QUAD;
|
||||
break;
|
||||
case FFM_CHANNELS_SURROUND51:
|
||||
c->channel_layout = AV_CH_LAYOUT_5POINT1_BACK;
|
||||
break;
|
||||
case FFM_CHANNELS_SURROUND71:
|
||||
c->channel_layout = AV_CH_LAYOUT_7POINT1;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (request_float_audio_buffer(codec_id)) {
|
||||
/* mainly for AAC codec which is experimental */
|
||||
c->strict_std_compliance = FF_COMPLIANCE_EXPERIMENTAL;
|
||||
|
|
|
@ -141,6 +141,14 @@ typedef enum eFFMpegCrf {
|
|||
FFM_CRF_LOWEST = 32,
|
||||
} eFFMpegCrf;
|
||||
|
||||
typedef enum eFFMpegAudioChannels {
|
||||
FFM_CHANNELS_MONO = 1,
|
||||
FFM_CHANNELS_STEREO = 2,
|
||||
FFM_CHANNELS_SURROUND4 = 4,
|
||||
FFM_CHANNELS_SURROUND51 = 6,
|
||||
FFM_CHANNELS_SURROUND71 = 8,
|
||||
} eFFMpegAudioChannels;
|
||||
|
||||
typedef struct FFMpegCodecData {
|
||||
int type;
|
||||
int codec;
|
||||
|
|
|
@ -5498,11 +5498,11 @@ static void rna_def_scene_ffmpeg_settings(BlenderRNA *brna)
|
|||
#endif
|
||||
|
||||
static const EnumPropertyItem audio_channel_items[] = {
|
||||
{1, "MONO", 0, "Mono", "Set audio channels to mono"},
|
||||
{2, "STEREO", 0, "Stereo", "Set audio channels to stereo"},
|
||||
{4, "SURROUND4", 0, "4 Channels", "Set audio channels to 4 channels"},
|
||||
{6, "SURROUND51", 0, "5.1 Surround", "Set audio channels to 5.1 surround sound"},
|
||||
{8, "SURROUND71", 0, "7.1 Surround", "Set audio channels to 7.1 surround sound"},
|
||||
{FFM_CHANNELS_MONO, "MONO", 0, "Mono", "Set audio channels to mono"},
|
||||
{FFM_CHANNELS_STEREO, "STEREO", 0, "Stereo", "Set audio channels to stereo"},
|
||||
{FFM_CHANNELS_SURROUND4, "SURROUND4", 0, "4 Channels", "Set audio channels to 4 channels"},
|
||||
{FFM_CHANNELS_SURROUND51, "SURROUND51", 0, "5.1 Surround", "Set audio channels to 5.1 surround sound"},
|
||||
{FFM_CHANNELS_SURROUND71, "SURROUND71", 0, "7.1 Surround", "Set audio channels to 7.1 surround sound"},
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue