diff --git a/Makefile.am b/Makefile.am index 112b143ca..3ba6613f8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -81,6 +81,7 @@ mpd_headers = \ src/dirvec.h \ src/gcc.h \ src/decoder_list.h \ + src/decoder_print.h \ src/decoder/_flac_common.h \ src/decoder/_ogg_common.h \ src/input_plugin.h \ @@ -212,6 +213,7 @@ src_mpd_SOURCES = \ src/decoder_control.c \ src/decoder_api.c \ src/decoder_internal.c \ + src/decoder_print.c \ src/directory.c \ src/directory_save.c \ src/directory_print.c \ diff --git a/doc/protocol.xml b/doc/protocol.xml index b6271403a..1f053acaa 100644 --- a/doc/protocol.xml +++ b/doc/protocol.xml @@ -1589,6 +1589,25 @@ OK + + + + decoders + + + + + Print a list of decoder plugins, followed by their + supported suffixes and MIME types. Example response: + + plugin: mad +suffix: mp3 +suffix: mp2 +mime_type: audio/mpeg +plugin: mpcdec +suffix: mpc + + diff --git a/src/command.c b/src/command.c index ba087dc45..2bd84d3a3 100644 --- a/src/command.c +++ b/src/command.c @@ -26,6 +26,7 @@ #include "queue_print.h" #include "ls.h" #include "uri.h" +#include "decoder_print.h" #include "directory.h" #include "directory_print.h" #include "database.h" @@ -388,6 +389,14 @@ handle_urlhandlers(struct client *client, return COMMAND_RETURN_OK; } +static enum command_return +handle_decoders(struct client *client, + G_GNUC_UNUSED int argc, G_GNUC_UNUSED char *argv[]) +{ + decoder_list_print(client); + return COMMAND_RETURN_OK; +} + static enum command_return handle_tagtypes(struct client *client, G_GNUC_UNUSED int argc, G_GNUC_UNUSED char *argv[]) @@ -1755,6 +1764,7 @@ static const struct command commands[] = { { "count", PERMISSION_READ, 2, -1, handle_count }, { "crossfade", PERMISSION_CONTROL, 1, 1, handle_crossfade }, { "currentsong", PERMISSION_READ, 0, 0, handle_currentsong }, + { "decoders", PERMISSION_READ, 0, 0, handle_decoders }, { "delete", PERMISSION_CONTROL, 1, 1, handle_delete }, { "deleteid", PERMISSION_CONTROL, 1, 1, handle_deleteid }, { "disableoutput", PERMISSION_ADMIN, 1, 1, handle_disableoutput },