From 9d21f2503f28a7be0e493ab18a4acbaae02c3d0a Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 23 Dec 2016 18:12:29 +0100 Subject: options: deprecate codec family selection in --vd/--ad Useless now, so get rid of it. Also affects some user-visible display things (like reported codec in use). --- common/codecs.c | 27 ++++++++++++++++----------- common/codecs.h | 5 ++++- 2 files changed, 20 insertions(+), 12 deletions(-) (limited to 'common') diff --git a/common/codecs.c b/common/codecs.c index 463811066c..7a0afe466e 100644 --- a/common/codecs.c +++ b/common/codecs.c @@ -45,9 +45,10 @@ static struct mp_decoder_entry *find_decoder(struct mp_decoder_list *list, { for (int n = 0; n < list->num_entries; n++) { struct mp_decoder_entry *cur = &list->entries[n]; - if (bstr_equals0(decoder, cur->decoder) && - bstr_equals0(family, cur->family)) - return cur; + if (bstr_equals0(decoder, cur->decoder)) { + if (bstr_equals0(family, "*") || bstr_equals0(family, cur->family)) + return cur; + } } return NULL; } @@ -70,13 +71,14 @@ static void add_new(struct mp_decoder_list *to, struct mp_decoder_entry *entry, // The selection string corresponds to --vd/--ad directly, and has the // following syntax: // selection = [ ("," )*] -// entry = ":" // prefer decoder +// entry = [ ":"] // prefer decoder // entry = ":*" // prefer all decoders -// entry = "+" ":" // force a decoder -// entry = "-" ":" // exclude a decoder +// entry = "+" [ ":"] // force a decoder +// entry = "-" [ ":"] // exclude a decoder // entry = "-" // don't add fallback decoders // Forcing a decoder means it's added even if the codec mismatches. -struct mp_decoder_list *mp_select_decoders(struct mp_decoder_list *all, +struct mp_decoder_list *mp_select_decoders(struct mp_log *log, + struct mp_decoder_list *all, const char *codec, const char *selection) { @@ -97,9 +99,12 @@ struct mp_decoder_list *mp_select_decoders(struct mp_decoder_list *all, bool exclude = !force && bstr_eatstart0(&entry, "-"); struct mp_decoder_list *dest = exclude ? remove : list; bstr family, decoder; - if (!bstr_split_tok(entry, ":", &family, &decoder)) { - family = entry; - decoder = bstr0("*"); + if (bstr_split_tok(entry, ":", &family, &decoder)) { + mp_warn(log, "Codec family selection is deprecated. " + "Pass the codec name directly.\n"); + } else { + family = bstr0("*"); + decoder = entry; } if (bstr_equals0(decoder, "*")) { for (int n = 0; n < all->num_entries; n++) { @@ -142,7 +147,7 @@ void mp_print_decoders(struct mp_log *log, int msgl, const char *header, mp_msg(log, msgl, "%s\n", header); for (int n = 0; n < list->num_entries; n++) { struct mp_decoder_entry *entry = &list->entries[n]; - mp_msg(log, msgl, " %s:%s", entry->family, entry->decoder); + mp_msg(log, msgl, " %s", entry->decoder); if (strcmp(entry->decoder, entry->codec) != 0) mp_msg(log, msgl, " (%s)", entry->codec); mp_msg(log, msgl, " - %s\n", entry->desc); diff --git a/common/codecs.h b/common/codecs.h index 3e9408eaad..bed5c46905 100644 --- a/common/codecs.h +++ b/common/codecs.h @@ -18,6 +18,8 @@ #ifndef MP_CODECS_H #define MP_CODECS_H +struct mp_log; + struct mp_decoder_entry { const char *family; // decoder module (e.g. ad_lavc => "lavc") const char *codec; // name of the codec (e.g. "mp3") @@ -33,7 +35,8 @@ struct mp_decoder_list { void mp_add_decoder(struct mp_decoder_list *list, const char *family, const char *codec, const char *decoder, const char *desc); -struct mp_decoder_list *mp_select_decoders(struct mp_decoder_list *all, +struct mp_decoder_list *mp_select_decoders(struct mp_log *log, + struct mp_decoder_list *all, const char *codec, const char *selection); -- cgit v1.2.3