diff --git a/libavcodec/mlpenc.c b/libavcodec/mlpenc.c index 9cd30d4c3d..2df695efe7 100644 --- a/libavcodec/mlpenc.c +++ b/libavcodec/mlpenc.c @@ -178,7 +178,7 @@ typedef struct MLPEncodeContext { uint8_t noise_type; uint8_t channel_arrangement; ///< channel arrangement for MLP streams - uint8_t channel_arrangement8; ///< 8 channel arrangement for THD streams + uint16_t channel_arrangement8; ///< 8 channel arrangement for THD streams uint8_t multichannel_type6ch; ///< channel modifier for TrueHD stream 0 uint8_t multichannel_type8ch; ///< channel modifier for TrueHD stream 0 @@ -600,6 +600,8 @@ static av_cold int mlp_encode_init(AVCodecContext *avctx) case AV_CH_LAYOUT_2POINT1: case AV_CH_LAYOUT_SURROUND: case AV_CH_LAYOUT_3POINT1: + case AV_CH_LAYOUT_4POINT0: + case AV_CH_LAYOUT_4POINT1: case AV_CH_LAYOUT_5POINT0: case AV_CH_LAYOUT_5POINT1: ctx->ch2_presentation_mod= 0; @@ -2325,13 +2327,15 @@ const FFCodec ff_truehd_encoder = { .p.priv_class = &mlp_class, .p.sample_fmts = (const enum AVSampleFormat[]) {AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_S32P, AV_SAMPLE_FMT_NONE}, .p.supported_samplerates = (const int[]) {44100, 48000, 88200, 96000, 176400, 192000, 0}, - CODEC_OLD_CHANNEL_LAYOUTS(AV_CH_LAYOUT_MONO, AV_CH_LAYOUT_STEREO, AV_CH_LAYOUT_2POINT1, AV_CH_LAYOUT_SURROUND, AV_CH_LAYOUT_3POINT1, AV_CH_LAYOUT_5POINT0, AV_CH_LAYOUT_5POINT1) + CODEC_OLD_CHANNEL_LAYOUTS(AV_CH_LAYOUT_MONO, AV_CH_LAYOUT_STEREO, AV_CH_LAYOUT_2POINT1, AV_CH_LAYOUT_SURROUND, AV_CH_LAYOUT_3POINT1, AV_CH_LAYOUT_4POINT0, AV_CH_LAYOUT_4POINT1, AV_CH_LAYOUT_5POINT0, AV_CH_LAYOUT_5POINT1) .p.ch_layouts = (const AVChannelLayout[]) { AV_CHANNEL_LAYOUT_MONO, AV_CHANNEL_LAYOUT_STEREO, AV_CHANNEL_LAYOUT_2POINT1, AV_CHANNEL_LAYOUT_SURROUND, AV_CHANNEL_LAYOUT_3POINT1, + AV_CHANNEL_LAYOUT_4POINT0, + AV_CHANNEL_LAYOUT_4POINT1, AV_CHANNEL_LAYOUT_5POINT0, AV_CHANNEL_LAYOUT_5POINT1, { 0 }