summaryrefslogtreecommitdiffstats
path: root/audio/out
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-03-30 09:07:36 +0200
committerwm4 <wm4@nowhere>2014-03-30 09:13:52 +0200
commita1afc15786ba098e56b148db92b2637a30cd9122 (patch)
tree8ce47fba2341994a93a667745d6f55ea0b3a4a93 /audio/out
parent1bc17a4fb8d55d09cd5356cc85f8425d7597ed9d (diff)
downloadmpv-a1afc15786ba098e56b148db92b2637a30cd9122.tar.bz2
mpv-a1afc15786ba098e56b148db92b2637a30cd9122.tar.xz
ao_wasapi: make code shorter
Also fix a format string mistake in a log call using it. I wonder if this code shouldn't use FormatMessage, but it looks kind of involved [1], so: no, thanks. [1] http://support.microsoft.com/kb/256348/en-us
Diffstat (limited to 'audio/out')
-rwxr-xr-xaudio/out/ao_wasapi_utils.c101
1 files changed, 36 insertions, 65 deletions
diff --git a/audio/out/ao_wasapi_utils.c b/audio/out/ao_wasapi_utils.c
index 226c2cfd0b..c81562f5f3 100755
--- a/audio/out/ao_wasapi_utils.c
+++ b/audio/out/ao_wasapi_utils.c
@@ -82,74 +82,44 @@ exit_label:
const char *wasapi_explain_err(const HRESULT hr)
{
+#define E(x) case x : return # x ;
switch (hr) {
- case S_OK:
- return "S_OK";
- case AUDCLNT_E_NOT_INITIALIZED:
- return "AUDCLNT_E_NOT_INITIALIZED";
- case AUDCLNT_E_ALREADY_INITIALIZED:
- return "AUDCLNT_E_ALREADY_INITIALIZED";
- case AUDCLNT_E_WRONG_ENDPOINT_TYPE:
- return "AUDCLNT_E_WRONG_ENDPOINT_TYPE";
- case AUDCLNT_E_DEVICE_INVALIDATED:
- return "AUDCLNT_E_DEVICE_INVALIDATED";
- case AUDCLNT_E_NOT_STOPPED:
- return "AUDCLNT_E_NOT_STOPPED";
- case AUDCLNT_E_BUFFER_TOO_LARGE:
- return "AUDCLNT_E_BUFFER_TOO_LARGE";
- case AUDCLNT_E_OUT_OF_ORDER:
- return "AUDCLNT_E_OUT_OF_ORDER";
- case AUDCLNT_E_UNSUPPORTED_FORMAT:
- return "AUDCLNT_E_UNSUPPORTED_FORMAT";
- case AUDCLNT_E_INVALID_SIZE:
- return "AUDCLNT_E_INVALID_SIZE";
- case AUDCLNT_E_DEVICE_IN_USE:
- return "AUDCLNT_E_DEVICE_IN_USE";
- case AUDCLNT_E_BUFFER_OPERATION_PENDING:
- return "AUDCLNT_E_BUFFER_OPERATION_PENDING";
- case AUDCLNT_E_THREAD_NOT_REGISTERED:
- return "AUDCLNT_E_THREAD_NOT_REGISTERED";
- case AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED:
- return "AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED";
- case AUDCLNT_E_ENDPOINT_CREATE_FAILED:
- return "AUDCLNT_E_ENDPOINT_CREATE_FAILED";
- case AUDCLNT_E_SERVICE_NOT_RUNNING:
- return "AUDCLNT_E_SERVICE_NOT_RUNNING";
- case AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED:
- return "AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED";
- case AUDCLNT_E_EXCLUSIVE_MODE_ONLY:
- return "AUDCLNT_E_EXCLUSIVE_MODE_ONLY";
- case AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL:
- return "AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL";
- case AUDCLNT_E_EVENTHANDLE_NOT_SET:
- return "AUDCLNT_E_EVENTHANDLE_NOT_SET";
- case AUDCLNT_E_INCORRECT_BUFFER_SIZE:
- return "AUDCLNT_E_INCORRECT_BUFFER_SIZE";
- case AUDCLNT_E_BUFFER_SIZE_ERROR:
- return "AUDCLNT_E_BUFFER_SIZE_ERROR";
- case AUDCLNT_E_CPUUSAGE_EXCEEDED:
- return "AUDCLNT_E_CPUUSAGE_EXCEEDED";
- case AUDCLNT_E_BUFFER_ERROR:
- return "AUDCLNT_E_BUFFER_ERROR";
- case AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED:
- return "AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED";
- case AUDCLNT_E_INVALID_DEVICE_PERIOD:
- return "AUDCLNT_E_INVALID_DEVICE_PERIOD";
- case AUDCLNT_E_INVALID_STREAM_FLAG:
- return "AUDCLNT_E_INVALID_STREAM_FLAG";
- case AUDCLNT_E_ENDPOINT_OFFLOAD_NOT_CAPABLE:
- return "AUDCLNT_E_ENDPOINT_OFFLOAD_NOT_CAPABLE";
- case AUDCLNT_E_RESOURCES_INVALIDATED:
- return "AUDCLNT_E_RESOURCES_INVALIDATED";
- case AUDCLNT_S_BUFFER_EMPTY:
- return "AUDCLNT_S_BUFFER_EMPTY";
- case AUDCLNT_S_THREAD_ALREADY_REGISTERED:
- return "AUDCLNT_S_THREAD_ALREADY_REGISTERED";
- case AUDCLNT_S_POSITION_STALLED:
- return "AUDCLNT_S_POSITION_STALLED";
+ E(S_OK)
+ E(AUDCLNT_E_NOT_INITIALIZED)
+ E(AUDCLNT_E_ALREADY_INITIALIZED)
+ E(AUDCLNT_E_WRONG_ENDPOINT_TYPE)
+ E(AUDCLNT_E_DEVICE_INVALIDATED)
+ E(AUDCLNT_E_NOT_STOPPED)
+ E(AUDCLNT_E_BUFFER_TOO_LARGE)
+ E(AUDCLNT_E_OUT_OF_ORDER)
+ E(AUDCLNT_E_UNSUPPORTED_FORMAT)
+ E(AUDCLNT_E_INVALID_SIZE)
+ E(AUDCLNT_E_DEVICE_IN_USE)
+ E(AUDCLNT_E_BUFFER_OPERATION_PENDING)
+ E(AUDCLNT_E_THREAD_NOT_REGISTERED)
+ E(AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED)
+ E(AUDCLNT_E_ENDPOINT_CREATE_FAILED)
+ E(AUDCLNT_E_SERVICE_NOT_RUNNING)
+ E(AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED)
+ E(AUDCLNT_E_EXCLUSIVE_MODE_ONLY)
+ E(AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL)
+ E(AUDCLNT_E_EVENTHANDLE_NOT_SET)
+ E(AUDCLNT_E_INCORRECT_BUFFER_SIZE)
+ E(AUDCLNT_E_BUFFER_SIZE_ERROR)
+ E(AUDCLNT_E_CPUUSAGE_EXCEEDED)
+ E(AUDCLNT_E_BUFFER_ERROR)
+ E(AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED)
+ E(AUDCLNT_E_INVALID_DEVICE_PERIOD)
+ E(AUDCLNT_E_INVALID_STREAM_FLAG)
+ E(AUDCLNT_E_ENDPOINT_OFFLOAD_NOT_CAPABLE)
+ E(AUDCLNT_E_RESOURCES_INVALIDATED)
+ E(AUDCLNT_S_BUFFER_EMPTY)
+ E(AUDCLNT_S_THREAD_ALREADY_REGISTERED)
+ E(AUDCLNT_S_POSITION_STALLED)
default:
return "<Unknown>";
}
+#undef E
}
static void set_format(WAVEFORMATEXTENSIBLE *wformat, WORD bytepersample,
@@ -900,7 +870,8 @@ HRESULT wasapi_setup_proxies(struct wasapi_state *state) {
exit_label:
if (hr != S_OK) {
- MP_ERR(state, "error reading COM proxy: %08x %s\n", hr, wasapi_explain_err(hr));
+ MP_ERR(state, "error reading COM proxy: %08x %s\n", (unsigned int)hr,
+ wasapi_explain_err(hr));
}
return hr;
}