CONDITION_VARIABLE_Ptr
socklen_t
struct_addrinfo
+ struct_dcadec_exss_info_matrix_encoding
struct_group_source_req
struct_ip_mreq_source
struct_ipv6_mreq
{ check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
-enabled libdcadec && require_pkg_config dcadec libdcadec/dca_context.h dcadec_context_create
+enabled libdcadec && require_pkg_config dcadec libdcadec/dca_context.h dcadec_context_create &&
+ check_struct libdcadec/dca_context.h "struct dcadec_exss_info" matrix_encoding
enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
enabled libfdk_aac && { use_pkg_config fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen ||
{ require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac &&
{
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;
} 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;