mirror of https://github.com/mpv-player/mpv
various: remove av channel layout check
This commit is contained in:
parent
b64521ae10
commit
3c5a79300c
|
@ -123,7 +123,6 @@ struct mp_aframe *mp_aframe_from_avframe(struct AVFrame *av_frame)
|
||||||
if (!av_frame || av_frame->width > 0 || av_frame->height > 0)
|
if (!av_frame || av_frame->width > 0 || av_frame->height > 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
#if HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
if (!av_channel_layout_check(&av_frame->ch_layout))
|
if (!av_channel_layout_check(&av_frame->ch_layout))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
@ -131,7 +130,6 @@ struct mp_aframe *mp_aframe_from_avframe(struct AVFrame *av_frame)
|
||||||
if (!mp_chmap_from_av_layout(&converted_map, &av_frame->ch_layout)) {
|
if (!mp_chmap_from_av_layout(&converted_map, &av_frame->ch_layout)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
int format = af_from_avformat(av_frame->format);
|
int format = af_from_avformat(av_frame->format);
|
||||||
if (!format && av_frame->format != AV_SAMPLE_FMT_NONE)
|
if (!format && av_frame->format != AV_SAMPLE_FMT_NONE)
|
||||||
|
@ -144,15 +142,7 @@ struct mp_aframe *mp_aframe_from_avframe(struct AVFrame *av_frame)
|
||||||
abort();
|
abort();
|
||||||
|
|
||||||
frame->format = format;
|
frame->format = format;
|
||||||
#if !HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
mp_chmap_from_lavc(&frame->chmap, frame->av_frame->channel_layout);
|
|
||||||
|
|
||||||
// FFmpeg being a stupid POS again
|
|
||||||
if (frame->chmap.num != frame->av_frame->channels)
|
|
||||||
mp_chmap_from_channels(&frame->chmap, av_frame->channels);
|
|
||||||
#else
|
|
||||||
frame->chmap = converted_map;
|
frame->chmap = converted_map;
|
||||||
#endif
|
|
||||||
|
|
||||||
if (av_frame->opaque_ref) {
|
if (av_frame->opaque_ref) {
|
||||||
struct avframe_opaque *op = (void *)av_frame->opaque_ref->data;
|
struct avframe_opaque *op = (void *)av_frame->opaque_ref->data;
|
||||||
|
@ -221,15 +211,8 @@ void mp_aframe_config_copy(struct mp_aframe *dst, struct mp_aframe *src)
|
||||||
dst->av_frame->sample_rate = src->av_frame->sample_rate;
|
dst->av_frame->sample_rate = src->av_frame->sample_rate;
|
||||||
dst->av_frame->format = src->av_frame->format;
|
dst->av_frame->format = src->av_frame->format;
|
||||||
|
|
||||||
#if !HAVE_AV_CHANNEL_LAYOUT
|
if (av_channel_layout_copy(&dst->av_frame->ch_layout, &src->av_frame->ch_layout) < 0)
|
||||||
dst->av_frame->channel_layout = src->av_frame->channel_layout;
|
|
||||||
// FFmpeg being a stupid POS again
|
|
||||||
dst->av_frame->channels = src->av_frame->channels;
|
|
||||||
#else
|
|
||||||
if (av_channel_layout_copy(&dst->av_frame->ch_layout,
|
|
||||||
&src->av_frame->ch_layout) < 0)
|
|
||||||
abort();
|
abort();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy "soft" attributes from src to dst, excluding things which affect
|
// Copy "soft" attributes from src to dst, excluding things which affect
|
||||||
|
@ -339,20 +322,9 @@ bool mp_aframe_set_chmap(struct mp_aframe *frame, struct mp_chmap *in)
|
||||||
if (mp_aframe_is_allocated(frame) && in->num != frame->chmap.num)
|
if (mp_aframe_is_allocated(frame) && in->num != frame->chmap.num)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#if !HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
uint64_t lavc_layout = mp_chmap_to_lavc_unchecked(in);
|
|
||||||
if (!lavc_layout && in->num)
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
frame->chmap = *in;
|
frame->chmap = *in;
|
||||||
|
|
||||||
#if !HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
frame->av_frame->channel_layout = lavc_layout;
|
|
||||||
// FFmpeg being a stupid POS again
|
|
||||||
frame->av_frame->channels = frame->chmap.num;
|
|
||||||
#else
|
|
||||||
mp_chmap_to_av_layout(&frame->av_frame->ch_layout, in);
|
mp_chmap_to_av_layout(&frame->av_frame->ch_layout, in);
|
||||||
#endif
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,10 +23,6 @@
|
||||||
|
|
||||||
#include "chmap.h"
|
#include "chmap.h"
|
||||||
|
|
||||||
#if HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
|
|
||||||
bool mp_chmap_from_av_layout(struct mp_chmap *dst, const AVChannelLayout *src);
|
bool mp_chmap_from_av_layout(struct mp_chmap *dst, const AVChannelLayout *src);
|
||||||
|
|
||||||
void mp_chmap_to_av_layout(AVChannelLayout *dst, const struct mp_chmap *src);
|
void mp_chmap_to_av_layout(AVChannelLayout *dst, const struct mp_chmap *src);
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -113,10 +113,6 @@ static bool init(struct mp_filter *da, struct mp_codec_params *codec,
|
||||||
if (opts->downmix && mpopts->audio_output_channels.num_chmaps == 1) {
|
if (opts->downmix && mpopts->audio_output_channels.num_chmaps == 1) {
|
||||||
const struct mp_chmap *requested_layout =
|
const struct mp_chmap *requested_layout =
|
||||||
&mpopts->audio_output_channels.chmaps[0];
|
&mpopts->audio_output_channels.chmaps[0];
|
||||||
#if !HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
lavc_context->request_channel_layout =
|
|
||||||
mp_chmap_to_lavc(requested_layout);
|
|
||||||
#else
|
|
||||||
AVChannelLayout av_layout = { 0 };
|
AVChannelLayout av_layout = { 0 };
|
||||||
mp_chmap_to_av_layout(&av_layout, requested_layout);
|
mp_chmap_to_av_layout(&av_layout, requested_layout);
|
||||||
|
|
||||||
|
@ -126,7 +122,6 @@ static bool init(struct mp_filter *da, struct mp_codec_params *codec,
|
||||||
AV_OPT_SEARCH_CHILDREN);
|
AV_OPT_SEARCH_CHILDREN);
|
||||||
|
|
||||||
av_channel_layout_uninit(&av_layout);
|
av_channel_layout_uninit(&av_layout);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Always try to set - option only exists for AC3 at the moment
|
// Always try to set - option only exists for AC3 at the moment
|
||||||
|
|
|
@ -116,12 +116,7 @@ static bool reinit(struct mp_filter *f)
|
||||||
// Put sample parameters
|
// Put sample parameters
|
||||||
s->lavc_actx->sample_fmt = af_to_avformat(format);
|
s->lavc_actx->sample_fmt = af_to_avformat(format);
|
||||||
|
|
||||||
#if !HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
s->lavc_actx->channels = chmap.num;
|
|
||||||
s->lavc_actx->channel_layout = mp_chmap_to_lavc(&chmap);
|
|
||||||
#else
|
|
||||||
mp_chmap_to_av_layout(&s->lavc_actx->ch_layout, &chmap);
|
mp_chmap_to_av_layout(&s->lavc_actx->ch_layout, &chmap);
|
||||||
#endif
|
|
||||||
s->lavc_actx->sample_rate = rate;
|
s->lavc_actx->sample_rate = rate;
|
||||||
s->lavc_actx->bit_rate = bit_rate;
|
s->lavc_actx->bit_rate = bit_rate;
|
||||||
|
|
||||||
|
@ -290,15 +285,6 @@ static void add_chmaps_to_autoconv(struct mp_filter *f,
|
||||||
struct mp_autoconvert *conv,
|
struct mp_autoconvert *conv,
|
||||||
const struct AVCodec *codec)
|
const struct AVCodec *codec)
|
||||||
{
|
{
|
||||||
#if !HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
const uint64_t *lch = codec->channel_layouts;
|
|
||||||
for (int n = 0; lch && lch[n]; n++) {
|
|
||||||
struct mp_chmap chmap = {0};
|
|
||||||
mp_chmap_from_lavc(&chmap, lch[n]);
|
|
||||||
if (mp_chmap_is_valid(&chmap))
|
|
||||||
mp_autoconvert_add_chmap(conv, &chmap);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
const AVChannelLayout *lch = codec->ch_layouts;
|
const AVChannelLayout *lch = codec->ch_layouts;
|
||||||
for (int n = 0; lch && lch[n].nb_channels; n++) {
|
for (int n = 0; lch && lch[n].nb_channels; n++) {
|
||||||
struct mp_chmap chmap = {0};
|
struct mp_chmap chmap = {0};
|
||||||
|
@ -315,7 +301,6 @@ static void add_chmaps_to_autoconv(struct mp_filter *f,
|
||||||
if (mp_chmap_is_valid(&chmap))
|
if (mp_chmap_is_valid(&chmap))
|
||||||
mp_autoconvert_add_chmap(conv, &chmap);
|
mp_autoconvert_add_chmap(conv, &chmap);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct mp_filter *af_lavcac3enc_create(struct mp_filter *parent,
|
static struct mp_filter *af_lavcac3enc_create(struct mp_filter *parent,
|
||||||
|
@ -357,14 +342,7 @@ static struct mp_filter *af_lavcac3enc_create(struct mp_filter *parent,
|
||||||
// For this one, we require the decoder to export lists of all supported
|
// For this one, we require the decoder to export lists of all supported
|
||||||
// parameters. (Not all decoders do that, but the ones we're interested
|
// parameters. (Not all decoders do that, but the ones we're interested
|
||||||
// in do.)
|
// in do.)
|
||||||
if (!s->lavc_acodec->sample_fmts ||
|
if (!s->lavc_acodec->sample_fmts || !s->lavc_acodec->ch_layouts) {
|
||||||
#if !HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
!s->lavc_acodec->channel_layouts
|
|
||||||
#else
|
|
||||||
!s->lavc_acodec->ch_layouts
|
|
||||||
#endif
|
|
||||||
)
|
|
||||||
{
|
|
||||||
MP_ERR(f, "Audio encoder doesn't list supported parameters.\n");
|
MP_ERR(f, "Audio encoder doesn't list supported parameters.\n");
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
|
@ -126,13 +126,7 @@ static int init(struct ao *ao)
|
||||||
if (!ao_chmap_sel_adjust2(ao, &sel, &ao->channels, false))
|
if (!ao_chmap_sel_adjust2(ao, &sel, &ao->channels, false))
|
||||||
goto fail;
|
goto fail;
|
||||||
mp_chmap_reorder_to_lavc(&ao->channels);
|
mp_chmap_reorder_to_lavc(&ao->channels);
|
||||||
|
|
||||||
#if !HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
encoder->channels = ao->channels.num;
|
|
||||||
encoder->channel_layout = mp_chmap_to_lavc(&ao->channels);
|
|
||||||
#else
|
|
||||||
mp_chmap_to_av_layout(&encoder->ch_layout, &ao->channels);
|
mp_chmap_to_av_layout(&encoder->ch_layout, &ao->channels);
|
||||||
#endif
|
|
||||||
|
|
||||||
encoder->sample_fmt = AV_SAMPLE_FMT_NONE;
|
encoder->sample_fmt = AV_SAMPLE_FMT_NONE;
|
||||||
|
|
||||||
|
|
|
@ -96,13 +96,7 @@ AVCodecParameters *mp_codec_params_to_av(const struct mp_codec_params *c)
|
||||||
avp->bit_rate = c->bitrate;
|
avp->bit_rate = c->bitrate;
|
||||||
avp->block_align = c->block_align;
|
avp->block_align = c->block_align;
|
||||||
|
|
||||||
#if !HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
avp->channels = c->channels.num;
|
|
||||||
if (!mp_chmap_is_unknown(&c->channels))
|
|
||||||
avp->channel_layout = mp_chmap_to_lavc(&c->channels);
|
|
||||||
#else
|
|
||||||
mp_chmap_to_av_layout(&avp->ch_layout, &c->channels);
|
mp_chmap_to_av_layout(&avp->ch_layout, &c->channels);
|
||||||
#endif
|
|
||||||
|
|
||||||
return avp;
|
return avp;
|
||||||
error:
|
error:
|
||||||
|
|
|
@ -714,13 +714,6 @@ static void handle_new_stream(demuxer_t *demuxer, int i)
|
||||||
switch (codec->codec_type) {
|
switch (codec->codec_type) {
|
||||||
case AVMEDIA_TYPE_AUDIO: {
|
case AVMEDIA_TYPE_AUDIO: {
|
||||||
sh = demux_alloc_sh_stream(STREAM_AUDIO);
|
sh = demux_alloc_sh_stream(STREAM_AUDIO);
|
||||||
|
|
||||||
#if !HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
// probably unneeded
|
|
||||||
mp_chmap_set_unknown(&sh->codec->channels, codec->channels);
|
|
||||||
if (codec->channel_layout)
|
|
||||||
mp_chmap_from_lavc(&sh->codec->channels, codec->channel_layout);
|
|
||||||
#else
|
|
||||||
if (!mp_chmap_from_av_layout(&sh->codec->channels, &codec->ch_layout)) {
|
if (!mp_chmap_from_av_layout(&sh->codec->channels, &codec->ch_layout)) {
|
||||||
char layout[128] = {0};
|
char layout[128] = {0};
|
||||||
MP_WARN(demuxer,
|
MP_WARN(demuxer,
|
||||||
|
@ -729,7 +722,6 @@ static void handle_new_stream(demuxer_t *demuxer, int i)
|
||||||
layout, 128) < 0 ?
|
layout, 128) < 0 ?
|
||||||
"undefined" : layout);
|
"undefined" : layout);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
sh->codec->samplerate = codec->sample_rate;
|
sh->codec->samplerate = codec->sample_rate;
|
||||||
sh->codec->bitrate = codec->bit_rate;
|
sh->codec->bitrate = codec->bit_rate;
|
||||||
|
|
|
@ -477,11 +477,7 @@ static bool init_pads(struct lavfi *c)
|
||||||
params->sample_rate = mp_aframe_get_rate(fmt);
|
params->sample_rate = mp_aframe_get_rate(fmt);
|
||||||
struct mp_chmap chmap = {0};
|
struct mp_chmap chmap = {0};
|
||||||
mp_aframe_get_chmap(fmt, &chmap);
|
mp_aframe_get_chmap(fmt, &chmap);
|
||||||
#if !HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
params->channel_layout = mp_chmap_to_lavc(&chmap);
|
|
||||||
#else
|
|
||||||
mp_chmap_to_av_layout(¶ms->ch_layout, &chmap);
|
mp_chmap_to_av_layout(¶ms->ch_layout, &chmap);
|
||||||
#endif
|
|
||||||
pad->timebase = (AVRational){1, mp_aframe_get_rate(fmt)};
|
pad->timebase = (AVRational){1, mp_aframe_get_rate(fmt)};
|
||||||
filter_name = "abuffer";
|
filter_name = "abuffer";
|
||||||
} else if (pad->type == MP_FRAME_VIDEO) {
|
} else if (pad->type == MP_FRAME_VIDEO) {
|
||||||
|
@ -1036,11 +1032,7 @@ static const char *get_avopt_type_name(enum AVOptionType type)
|
||||||
case AV_OPT_TYPE_VIDEO_RATE: return "fps";
|
case AV_OPT_TYPE_VIDEO_RATE: return "fps";
|
||||||
case AV_OPT_TYPE_DURATION: return "duration";
|
case AV_OPT_TYPE_DURATION: return "duration";
|
||||||
case AV_OPT_TYPE_COLOR: return "color";
|
case AV_OPT_TYPE_COLOR: return "color";
|
||||||
#if LIBAVUTIL_VERSION_MAJOR < 59
|
|
||||||
case AV_OPT_TYPE_CHANNEL_LAYOUT: return "ch_layout";
|
|
||||||
#else
|
|
||||||
case AV_OPT_TYPE_CHLAYOUT: return "ch_layout";
|
case AV_OPT_TYPE_CHLAYOUT: return "ch_layout";
|
||||||
#endif
|
|
||||||
case AV_OPT_TYPE_BOOL: return "bool";
|
case AV_OPT_TYPE_BOOL: return "bool";
|
||||||
case AV_OPT_TYPE_CONST: // fallthrough
|
case AV_OPT_TYPE_CONST: // fallthrough
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -270,38 +270,21 @@ static bool configure_lavrr(struct priv *p, bool verbose)
|
||||||
|
|
||||||
out_ch_layout = fudge_layout_conversion(p, in_ch_layout, out_ch_layout);
|
out_ch_layout = fudge_layout_conversion(p, in_ch_layout, out_ch_layout);
|
||||||
|
|
||||||
#if HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
// Real conversion; output is input to avrctx_out.
|
// Real conversion; output is input to avrctx_out.
|
||||||
AVChannelLayout in_layout, out_layout;
|
AVChannelLayout in_layout, out_layout;
|
||||||
mp_chmap_to_av_layout(&in_layout, &in_lavc);
|
mp_chmap_to_av_layout(&in_layout, &in_lavc);
|
||||||
mp_chmap_to_av_layout(&out_layout, &out_lavc);
|
mp_chmap_to_av_layout(&out_layout, &out_lavc);
|
||||||
av_opt_set_chlayout(p->avrctx, "in_chlayout", &in_layout, 0);
|
av_opt_set_chlayout(p->avrctx, "in_chlayout", &in_layout, 0);
|
||||||
av_opt_set_chlayout(p->avrctx, "out_chlayout", &out_layout, 0);
|
av_opt_set_chlayout(p->avrctx, "out_chlayout", &out_layout, 0);
|
||||||
#else
|
|
||||||
av_opt_set_int(p->avrctx, "in_channel_layout", in_ch_layout, 0);
|
|
||||||
av_opt_set_int(p->avrctx, "out_channel_layout", out_ch_layout, 0);
|
|
||||||
#endif
|
|
||||||
av_opt_set_int(p->avrctx, "in_sample_rate", p->in_rate, 0);
|
av_opt_set_int(p->avrctx, "in_sample_rate", p->in_rate, 0);
|
||||||
av_opt_set_int(p->avrctx, "out_sample_rate", p->out_rate, 0);
|
av_opt_set_int(p->avrctx, "out_sample_rate", p->out_rate, 0);
|
||||||
av_opt_set_int(p->avrctx, "in_sample_fmt", in_samplefmt, 0);
|
av_opt_set_int(p->avrctx, "in_sample_fmt", in_samplefmt, 0);
|
||||||
av_opt_set_int(p->avrctx, "out_sample_fmt", out_samplefmtp, 0);
|
av_opt_set_int(p->avrctx, "out_sample_fmt", out_samplefmtp, 0);
|
||||||
|
|
||||||
#if HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
AVChannelLayout fake_layout;
|
AVChannelLayout fake_layout;
|
||||||
av_channel_layout_default(&fake_layout, map_out.num);
|
av_channel_layout_default(&fake_layout, map_out.num);
|
||||||
av_opt_set_chlayout(p->avrctx_out, "in_chlayout", &fake_layout, 0);
|
av_opt_set_chlayout(p->avrctx_out, "in_chlayout", &fake_layout, 0);
|
||||||
av_opt_set_chlayout(p->avrctx_out, "out_chlayout", &fake_layout, 0);
|
av_opt_set_chlayout(p->avrctx_out, "out_chlayout", &fake_layout, 0);
|
||||||
#else
|
|
||||||
// Just needs the correct number of channels for deplanarization.
|
|
||||||
struct mp_chmap fake_chmap;
|
|
||||||
mp_chmap_set_unknown(&fake_chmap, map_out.num);
|
|
||||||
uint64_t fake_out_ch_layout = mp_chmap_to_lavc_unchecked(&fake_chmap);
|
|
||||||
if (!fake_out_ch_layout)
|
|
||||||
goto error;
|
|
||||||
av_opt_set_int(p->avrctx_out, "in_channel_layout", fake_out_ch_layout, 0);
|
|
||||||
av_opt_set_int(p->avrctx_out, "out_channel_layout", fake_out_ch_layout, 0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
av_opt_set_int(p->avrctx_out, "in_sample_fmt", out_samplefmtp, 0);
|
av_opt_set_int(p->avrctx_out, "in_sample_fmt", out_samplefmtp, 0);
|
||||||
av_opt_set_int(p->avrctx_out, "out_sample_fmt", out_samplefmt, 0);
|
av_opt_set_int(p->avrctx_out, "out_sample_fmt", out_samplefmt, 0);
|
||||||
av_opt_set_int(p->avrctx_out, "in_sample_rate", p->out_rate, 0);
|
av_opt_set_int(p->avrctx_out, "in_sample_rate", p->out_rate, 0);
|
||||||
|
|
|
@ -59,6 +59,7 @@ sources = files(
|
||||||
## Audio
|
## Audio
|
||||||
'audio/aframe.c',
|
'audio/aframe.c',
|
||||||
'audio/chmap.c',
|
'audio/chmap.c',
|
||||||
|
'audio/chmap_avchannel.c',
|
||||||
'audio/chmap_sel.c',
|
'audio/chmap_sel.c',
|
||||||
'audio/decode/ad_lavc.c',
|
'audio/decode/ad_lavc.c',
|
||||||
'audio/decode/ad_spdif.c',
|
'audio/decode/ad_spdif.c',
|
||||||
|
@ -599,13 +600,6 @@ if darwin
|
||||||
subdir(join_paths('TOOLS', 'osxbundle'))
|
subdir(join_paths('TOOLS', 'osxbundle'))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
# misc dependencies
|
|
||||||
features += {'av-channel-layout': libavutil.version().version_compare('>= 57.24.100')}
|
|
||||||
if features['av-channel-layout']
|
|
||||||
sources += files('audio/chmap_avchannel.c')
|
|
||||||
endif
|
|
||||||
|
|
||||||
cdda_opt = get_option('cdda').require(
|
cdda_opt = get_option('cdda').require(
|
||||||
get_option('gpl'),
|
get_option('gpl'),
|
||||||
error_message: 'the build is not GPL!',
|
error_message: 'the build is not GPL!',
|
||||||
|
|
14
test/chmap.c
14
test/chmap.c
|
@ -1,11 +1,9 @@
|
||||||
#include "audio/chmap.h"
|
|
||||||
#include "audio/chmap_sel.h"
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "test_utils.h"
|
|
||||||
|
|
||||||
#if HAVE_AV_CHANNEL_LAYOUT
|
#include "audio/chmap.h"
|
||||||
#include "audio/chmap_avchannel.h"
|
#include "audio/chmap_avchannel.h"
|
||||||
#endif
|
#include "audio/chmap_sel.h"
|
||||||
|
#include "test_utils.h"
|
||||||
|
|
||||||
#define LAYOUTS(...) (char*[]){__VA_ARGS__, NULL}
|
#define LAYOUTS(...) (char*[]){__VA_ARGS__, NULL}
|
||||||
|
|
||||||
|
@ -34,7 +32,6 @@ static void test_sel(const char *input, const char *expected_selection,
|
||||||
mp_chmap_to_str(&expected_map));
|
mp_chmap_to_str(&expected_map));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
static bool layout_matches(const AVChannelLayout *av_layout,
|
static bool layout_matches(const AVChannelLayout *av_layout,
|
||||||
const struct mp_chmap *mp_layout,
|
const struct mp_chmap *mp_layout,
|
||||||
bool require_default_unspec)
|
bool require_default_unspec)
|
||||||
|
@ -151,8 +148,6 @@ static void test_av_channel_layout_to_mp_chmap(void)
|
||||||
|
|
||||||
assert_false(anything_failed);
|
assert_false(anything_failed);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
@ -210,9 +205,8 @@ int main(void)
|
||||||
assert_int_equal(mp_chmap_diffn(&a, &b), 0);
|
assert_int_equal(mp_chmap_diffn(&a, &b), 0);
|
||||||
assert_int_equal(mp_chmap_diffn(&b, &a), 3);
|
assert_int_equal(mp_chmap_diffn(&b, &a), 3);
|
||||||
|
|
||||||
#if HAVE_AV_CHANNEL_LAYOUT
|
|
||||||
test_av_channel_layout_to_mp_chmap();
|
test_av_channel_layout_to_mp_chmap();
|
||||||
test_mp_chmap_to_av_channel_layout();
|
test_mp_chmap_to_av_channel_layout();
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,11 +76,9 @@ img_utils = static_library('img-utils', 'img_utils.c', include_directories: incd
|
||||||
|
|
||||||
# The actual tests.
|
# The actual tests.
|
||||||
chmap_files = [
|
chmap_files = [
|
||||||
'audio/chmap_sel.c'
|
'audio/chmap_avchannel.c',
|
||||||
|
'audio/chmap_sel.c',
|
||||||
]
|
]
|
||||||
if features['av-channel-layout']
|
|
||||||
chmap_files += 'audio/chmap_avchannel.c'
|
|
||||||
endif
|
|
||||||
chmap_objects = libmpv.extract_objects(chmap_files)
|
chmap_objects = libmpv.extract_objects(chmap_files)
|
||||||
chmap = executable('chmap', 'chmap.c', include_directories: incdir,
|
chmap = executable('chmap', 'chmap.c', include_directories: incdir,
|
||||||
dependencies: [libavutil], objects: chmap_objects,
|
dependencies: [libavutil], objects: chmap_objects,
|
||||||
|
|
Loading…
Reference in New Issue