summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2016-11-14 13:33:53 +0100
committerwm4 <wm4@nowhere>2016-11-14 13:33:53 +0100
commit84513ba58bcbcf6dfb17eb1ae6b7d2e6a1d7bb4b (patch)
treefaa67f3cf138bda596b4af35634227e7edb816ea
parentcf85191cb7322b9cfeda3a872ef22e6df4f97860 (diff)
downloadmpv-84513ba58bcbcf6dfb17eb1ae6b7d2e6a1d7bb4b.tar.bz2
mpv-84513ba58bcbcf6dfb17eb1ae6b7d2e6a1d7bb4b.tar.xz
audio: avoid returning audio-device-list entries without description
Use the device name as fallback. This is ugly, but still better than skipping the description entirely. This can be an issue on ALSA, where the API can return entries without proper description.
-rw-r--r--DOCS/interface-changes.rst2
-rw-r--r--DOCS/man/input.rst5
-rw-r--r--audio/out/ao.c2
3 files changed, 7 insertions, 2 deletions
diff --git a/DOCS/interface-changes.rst b/DOCS/interface-changes.rst
index 1e27edfe03..726668cced 100644
--- a/DOCS/interface-changes.rst
+++ b/DOCS/interface-changes.rst
@@ -95,6 +95,8 @@ Interface changes
--terminal, --osc, --ytdl, can all be enable/disabled after
mpv_initialize() - this can be extended to other still fixed options
on user requests)
+ - the "audio-device-list" property now sets empty device description to the
+ device name as a fallback
--- mpv 0.20.0 ---
- add --image-display-duration option - this also means that image duration
is not influenced by --mf-fps anymore in the general case (this is an
diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst
index d15aa41903..508e7dd252 100644
--- a/DOCS/man/input.rst
+++ b/DOCS/man/input.rst
@@ -1912,8 +1912,9 @@ Property list
The ``name`` is what is to be passed to the ``--audio-device`` option (and
often a rather cryptic audio API-specific ID), while ``description`` is
- human readable free form text. The description is an empty string if none
- was received.
+ human readable free form text. The description is set to the device name
+ (minus mpv-specific ``<driver>/`` prefix) if no description is available
+ or the description would have been an empty string.
The special entry with the name set to ``auto`` selects the default audio
output driver and the default device.
diff --git a/audio/out/ao.c b/audio/out/ao.c
index e1a3eda9dd..9846869f2c 100644
--- a/audio/out/ao.c
+++ b/audio/out/ao.c
@@ -599,6 +599,8 @@ void ao_device_list_add(struct ao_device_list *list, struct ao *ao,
{
struct ao_device_desc c = *e;
const char *dname = ao->driver->name;
+ if ((!c.desc || !c.desc[0]) && c.name)
+ c.desc = c.name;
c.name = c.name[0] ? talloc_asprintf(list, "%s/%s", dname, c.name)
: talloc_strdup(list, dname);
c.desc = talloc_strdup(list, c.desc);