diff options
author | James Almer <jamrial@gmail.com> | 2015-07-07 14:29:08 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2015-07-07 16:18:46 -0300 |
commit | 7d5ab1650644f8f9ac1b3ecd6a7b67bd720cd652 (patch) | |
tree | 68e918ef21667c06d7886b968f096c912d8be10d /libavcodec/libdcadec.c | |
parent | 55e29ceec84aa498122576c1ae8a0fa1fab0b41e (diff) | |
download | ffmpeg-7d5ab1650644f8f9ac1b3ecd6a7b67bd720cd652.tar.gz |
avcodec/libdcadec: export matrix encoding side data
Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/libdcadec.c')
-rw-r--r-- | libavcodec/libdcadec.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libavcodec/libdcadec.c b/libavcodec/libdcadec.c index 890d27091d..2d807a2bdc 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 HAVE_STRUCT_DCADEC_EXSS_INFO_MATRIX_ENCODING + if (exss = dcadec_context_get_exss_info(s->ctx)) { + enum AVMatrixEncoding matrix_encoding = AV_MATRIX_ENCODING_NONE; + + 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; + } + dcadec_context_free_exss_info(exss); + + if (matrix_encoding != AV_MATRIX_ENCODING_NONE && + (ret = ff_side_data_update_matrix_encoding(frame, matrix_encoding)) < 0) + return ret; + } +#endif + frame->nb_samples = nsamples; if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) return ret; |