summaryrefslogtreecommitdiffstats
path: root/audio/decode/dec_audio.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/decode/dec_audio.c')
-rw-r--r--audio/decode/dec_audio.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/audio/decode/dec_audio.c b/audio/decode/dec_audio.c
index 39e867cf42..9f28302bd5 100644
--- a/audio/decode/dec_audio.c
+++ b/audio/decode/dec_audio.c
@@ -43,11 +43,12 @@
#include "audio/filter/af.h"
extern const struct ad_functions ad_lavc;
+
+// Not a real codec - specially treated.
extern const struct ad_functions ad_spdif;
static const struct ad_functions * const ad_drivers[] = {
&ad_lavc,
- &ad_spdif,
NULL
};
@@ -90,10 +91,10 @@ static struct mp_decoder_list *audio_select_decoders(struct dec_audio *d_audio)
struct mp_decoder_list *list = audio_decoder_list();
struct mp_decoder_list *new =
- mp_select_decoders(list, codec, opts->audio_decoders);
- if (d_audio->try_spdif) {
+ mp_select_decoders(d_audio->log, list, codec, opts->audio_decoders);
+ if (d_audio->try_spdif && codec) {
struct mp_decoder_list *spdif =
- mp_select_decoder_list(list, codec, "spdif", opts->audio_spdif);
+ select_spdif_codec(codec, opts->audio_spdif);
mp_append_decoders(spdif, new);
talloc_free(new);
new = spdif;
@@ -108,6 +109,8 @@ static const struct ad_functions *find_driver(const char *name)
if (strcmp(ad_drivers[i]->name, name) == 0)
return ad_drivers[i];
}
+ if (strcmp(name, "spdif") == 0)
+ return &ad_spdif;
return NULL;
}
@@ -126,21 +129,18 @@ int audio_init_best_codec(struct dec_audio *d_audio)
const struct ad_functions *driver = find_driver(sel->family);
if (!driver)
continue;
- MP_VERBOSE(d_audio, "Opening audio decoder %s:%s\n",
- sel->family, sel->decoder);
+ MP_VERBOSE(d_audio, "Opening audio decoder %s\n", sel->decoder);
d_audio->ad_driver = driver;
if (init_audio_codec(d_audio, sel->decoder)) {
decoder = sel;
break;
}
- MP_WARN(d_audio, "Audio decoder init failed for "
- "%s:%s\n", sel->family, sel->decoder);
+ MP_WARN(d_audio, "Audio decoder init failed for %s\n", sel->decoder);
}
if (d_audio->ad_driver) {
d_audio->decoder_desc =
- talloc_asprintf(d_audio, "%s [%s:%s]", decoder->desc, decoder->family,
- decoder->decoder);
+ talloc_asprintf(d_audio, "%s (%s)", decoder->decoder, decoder->desc);
MP_VERBOSE(d_audio, "Selected audio codec: %s\n", d_audio->decoder_desc);
} else {
MP_ERR(d_audio, "Failed to initialize an audio decoder for codec '%s'.\n",