On 06/07/15 7:02 PM, Hendrik Leppkes wrote: > On Mon, Jul 6, 2015 at 10:25 PM, James Almer <jamr...@gmail.com> wrote: >> 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; >> + } > > I think Dolby would disagree. ;)
The native dca decoder sets AV_MATRIX_ENCODING_DOLBY for the same type of frames this would, stating they are the equivalent. So does mlpdec. > > Maybe we should just not set anything when the expected value is NONE? > Not that it really matters. but sending an "empty" value all the time > may not be required? I'm replicating the native dca decoder behavior with this. If you for example use the ashowinfo filter, it will output "side data - matrix encoding: none". Not setting anything in that case would save us a ff_side_data_update_matrix_encoding call per frame, though, so i guess I'll do just that. Both encodings are apparently guaranteed to be set only with stereo streams, so maybe i should also check for channel amount and skip the entire branch? 99% of streams out there are multichannel after all. > > - Hendrik > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel