summaryrefslogtreecommitdiffstats
path: root/libavcodec/libdcadec.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2015-07-07 14:29:08 -0300
committerJames Almer <jamrial@gmail.com>2015-07-07 16:18:46 -0300
commit7d5ab1650644f8f9ac1b3ecd6a7b67bd720cd652 (patch)
tree68e918ef21667c06d7886b968f096c912d8be10d /libavcodec/libdcadec.c
parent55e29ceec84aa498122576c1ae8a0fa1fab0b41e (diff)
downloadffmpeg-streaming-7d5ab1650644f8f9ac1b3ecd6a7b67bd720cd652.zip
ffmpeg-streaming-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.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/libavcodec/libdcadec.c b/libavcodec/libdcadec.c
index 890d270..2d807a2 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;
OpenPOWER on IntegriCloud