Signed-off-by: James Almer <jamr...@gmail.com> --- libavcodec/libdcadec.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
diff --git a/libavcodec/libdcadec.c b/libavcodec/libdcadec.c index 890d270..9d4b9e8 100644 --- a/libavcodec/libdcadec.c +++ b/libavcodec/libdcadec.c @@ -41,6 +41,7 @@ static int dcadec_decode_frame(AVCodecContext *avctx, void *data, { DCADecContext *s = avctx->priv_data; AVFrame *frame = data; + struct dcadec_exss_info *exss; int ret, i, k; int **samples, nsamples, channel_mask, sample_rate, bits_per_sample, profile; uint32_t mrk; @@ -127,6 +128,26 @@ static int dcadec_decode_frame(AVCodecContext *avctx, void *data, } else avctx->bit_rate = 0; + if (exss = dcadec_context_get_exss_info(s->ctx)) { + enum AVMatrixEncoding matrix_encoding; + + switch(exss->matrix_encoding) { + case DCADEC_MATRIX_ENCODING_SURROUND: + matrix_encoding = AV_MATRIX_ENCODING_DOLBY; + break; + case DCADEC_MATRIX_ENCODING_HEADPHONE: + matrix_encoding = AV_MATRIX_ENCODING_DOLBYHEADPHONE; + break; + default: + matrix_encoding = AV_MATRIX_ENCODING_NONE; + break; + } + dcadec_context_free_exss_info(exss); + + if ((ret = ff_side_data_update_matrix_encoding(frame, matrix_encoding)) < 0) + return ret; + } + frame->nb_samples = nsamples; if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) return ret; -- 2.4.5 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel