mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-02-09 14:14:39 +02:00
avcodec/libdcadec: export matrix encoding side data
Reviewed-by: Michael Niedermayer <michaelni@gmx.at> Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
55e29ceec8
commit
7d5ab16506
4
configure
vendored
4
configure
vendored
@ -1829,6 +1829,7 @@ TYPES_LIST="
|
|||||||
CONDITION_VARIABLE_Ptr
|
CONDITION_VARIABLE_Ptr
|
||||||
socklen_t
|
socklen_t
|
||||||
struct_addrinfo
|
struct_addrinfo
|
||||||
|
struct_dcadec_exss_info_matrix_encoding
|
||||||
struct_group_source_req
|
struct_group_source_req
|
||||||
struct_ip_mreq_source
|
struct_ip_mreq_source
|
||||||
struct_ipv6_mreq
|
struct_ipv6_mreq
|
||||||
@ -5121,7 +5122,8 @@ enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
|
|||||||
{ check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
|
{ check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
|
||||||
die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
|
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 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 libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
|
||||||
enabled libfdk_aac && { use_pkg_config fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen ||
|
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 &&
|
{ require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac &&
|
||||||
|
@ -41,6 +41,7 @@ static int dcadec_decode_frame(AVCodecContext *avctx, void *data,
|
|||||||
{
|
{
|
||||||
DCADecContext *s = avctx->priv_data;
|
DCADecContext *s = avctx->priv_data;
|
||||||
AVFrame *frame = data;
|
AVFrame *frame = data;
|
||||||
|
struct dcadec_exss_info *exss;
|
||||||
int ret, i, k;
|
int ret, i, k;
|
||||||
int **samples, nsamples, channel_mask, sample_rate, bits_per_sample, profile;
|
int **samples, nsamples, channel_mask, sample_rate, bits_per_sample, profile;
|
||||||
uint32_t mrk;
|
uint32_t mrk;
|
||||||
@ -127,6 +128,26 @@ static int dcadec_decode_frame(AVCodecContext *avctx, void *data,
|
|||||||
} else
|
} else
|
||||||
avctx->bit_rate = 0;
|
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;
|
frame->nb_samples = nsamples;
|
||||||
if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
|
if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user