summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2016-12-23 18:12:29 +0100
committerwm4 <wm4@nowhere>2016-12-23 18:12:29 +0100
commit9d21f2503f28a7be0e493ab18a4acbaae02c3d0a (patch)
tree8a636fae2155338bf4ee2534a846ce92dd1808ef /common
parentc560f6ff0ab9aec70e53a268e2ff388a85ec3ca0 (diff)
downloadmpv-9d21f2503f28a7be0e493ab18a4acbaae02c3d0a.tar.bz2
mpv-9d21f2503f28a7be0e493ab18a4acbaae02c3d0a.tar.xz
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).
Diffstat (limited to 'common')
-rw-r--r--common/codecs.c27
-rw-r--r--common/codecs.h5
2 files changed, 20 insertions, 12 deletions
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> ("," <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)
{
@@ -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);