summaryrefslogtreecommitdiffstats
path: root/common/codecs.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/codecs.c')
-rw-r--r--common/codecs.c46
1 files changed, 19 insertions, 27 deletions
diff --git a/common/codecs.c b/common/codecs.c
index c0d99eb959..5e744da5de 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> ("," <entry>)*]
-// entry = <family> ":" <decoder> // prefer decoder
+// entry = [<family> ":"] <decoder> // prefer decoder
// entry = <family> ":*" // prefer all decoders
-// entry = "+" <family> ":" <decoder> // force a decoder
-// entry = "-" <family> ":" <decoder> // exclude a decoder
+// entry = "+" [<family> ":"] <decoder> // force a decoder
+// entry = "-" [<family> ":"] <decoder> // 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)
{
@@ -90,16 +92,22 @@ struct mp_decoder_list *mp_select_decoders(struct mp_decoder_list *all,
bstr entry;
bstr_split_tok(sel, ",", &entry, &sel);
if (bstr_equals0(entry, "-")) {
+ mp_warn(log, "Excluding codecs is deprecated.\n");
stop = true;
break;
}
bool force = bstr_eatstart0(&entry, "+");
bool exclude = !force && bstr_eatstart0(&entry, "-");
+ if (exclude || force)
+ mp_warn(log, "Forcing or excluding codecs is deprecated.\n");
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++) {
@@ -130,22 +138,6 @@ struct mp_decoder_list *mp_select_decoders(struct mp_decoder_list *all,
return list;
}
-// selection is a ","-separated list of decoders, all in the given family.
-struct mp_decoder_list *mp_select_decoder_list(struct mp_decoder_list *all,
- const char *codec,
- const char *family,
- const char *selection)
-{
- struct mp_decoder_list *list = talloc_zero(NULL, struct mp_decoder_list);
- bstr sel = bstr0(selection);
- while (sel.len) {
- bstr decoder;
- bstr_split_tok(sel, ",", &decoder, &sel);
- add_new(list, find_decoder(all, bstr0(family), decoder), codec);
- }
- return list;
-}
-
void mp_append_decoders(struct mp_decoder_list *list, struct mp_decoder_list *a)
{
for (int n = 0; n < a->num_entries; n++)
@@ -158,7 +150,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);