summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Mitchell <kevmitch@gmail.com>2014-11-28 09:53:38 -0800
committerKevin Mitchell <kevmitch@gmail.com>2014-11-28 10:48:07 -0800
commitd0c37f07313db96e06926f275b23717fe31cc4db (patch)
tree56f8f22fe75d581815b9a0b1eb3efc86fe510683
parentecb491fd958689632191d57acf3f9cfba9014cc7 (diff)
downloadmpv-d0c37f07313db96e06926f275b23717fe31cc4db.tar.bz2
mpv-d0c37f07313db96e06926f275b23717fe31cc4db.tar.xz
ao/wasapi: more debugging messages
-rw-r--r--audio/out/ao_wasapi.c9
-rwxr-xr-xaudio/out/ao_wasapi_utils.c32
2 files changed, 27 insertions, 14 deletions
diff --git a/audio/out/ao_wasapi.c b/audio/out/ao_wasapi.c
index dd862d27b7..8477a9cb51 100644
--- a/audio/out/ao_wasapi.c
+++ b/audio/out/ao_wasapi.c
@@ -142,6 +142,7 @@ static DWORD __stdcall ThreadLoop(void *lpParameter)
QS_POSTMESSAGE | QS_SENDMESSAGE);
switch (waitstatus) {
case WAIT_OBJECT_0: /*shutdown*/
+ MP_DBG(ao, "Thread shutdown\n");
thread_ret = 0;
goto exit_label;
case (WAIT_OBJECT_0 + 1): /* feed */
@@ -152,6 +153,7 @@ static DWORD __stdcall ThreadLoop(void *lpParameter)
SetEvent(state->hFeedDone);
break;
case (WAIT_OBJECT_0 + 3): /* messages to dispatch (COM marshalling) */
+ MP_DBG(ao, "Dispatch\n");
wasapi_dispatch();
break;
default:
@@ -164,6 +166,7 @@ exit_label:
wasapi_thread_uninit(ao);
CoUninitialize();
+ MP_DBG(ao, "Thread return %u\n", (unsigned)thread_ret);
return thread_ret;
}
@@ -186,7 +189,7 @@ static void uninit(struct ao *ao)
SetEvent(state->hUninit);
/* wait up to 10 seconds */
if (WaitForSingleObject(state->threadLoop, 10000) == WAIT_TIMEOUT){
- MP_ERR(ao, "Audio loop thread refuses to abort");
+ MP_ERR(ao, "Audio loop thread refuses to abort\n");
return;
}
if (state->VistaBlob.hAvrt)
@@ -201,8 +204,10 @@ static int init(struct ao *ao)
ao->format = af_fmt_from_planar(ao->format);
struct mp_chmap_sel sel = {0};
mp_chmap_sel_add_waveext(&sel);
- if (!ao_chmap_sel_adjust(ao, &sel, &ao->channels))
+ if (!ao_chmap_sel_adjust(ao, &sel, &ao->channels)) {
+ MP_ERR(ao, "Error adjusting channel map to waveext channel order\n");
return -1;
+ }
struct wasapi_state *state = (struct wasapi_state *)ao->priv;
state->log = ao->log;
wasapi_fill_VistaBlob(state);
diff --git a/audio/out/ao_wasapi_utils.c b/audio/out/ao_wasapi_utils.c
index 93866b067a..71b8b20e1f 100755
--- a/audio/out/ao_wasapi_utils.c
+++ b/audio/out/ao_wasapi_utils.c
@@ -85,7 +85,10 @@ const char *wasapi_explain_err(const HRESULT hr)
E(E_FAIL)
E(E_OUTOFMEMORY)
E(E_POINTER)
+ E(E_HANDLE)
+ E(E_NOTIMPL)
E(E_INVALIDARG)
+ E(REGDB_E_IIDNOTREG)
E(AUDCLNT_E_NOT_INITIALIZED)
E(AUDCLNT_E_ALREADY_INITIALIZED)
E(AUDCLNT_E_WRONG_ENDPOINT_TYPE)
@@ -242,7 +245,6 @@ static int try_mix_format(struct wasapi_state *state,
{
WAVEFORMATEX *deviceFormat = NULL;
WAVEFORMATEX *closestMatch = NULL;
- int ret = 0;
HRESULT hr = IAudioClient_GetMixFormat(state->pAudioClient, &deviceFormat);
EXIT_ON_ERROR(hr);
@@ -251,15 +253,20 @@ static int try_mix_format(struct wasapi_state *state,
u.ex = deviceFormat;
WAVEFORMATEXTENSIBLE wformat = *u.extensible;
- ret = try_format(state, ao, wformat.Format.wBitsPerSample,
+ int ret = try_format(ao, wformat.Format.wBitsPerSample,
wformat.Format.nSamplesPerSec, ao->channels);
if (ret)
state->format = wformat;
-exit_label:
SAFE_RELEASE(deviceFormat, CoTaskMemFree(deviceFormat));
SAFE_RELEASE(closestMatch, CoTaskMemFree(closestMatch));
return ret;
+exit_label:
+ MP_ERR(state, "Error getting mix format: %s (0x%"PRIx32")\n",
+ wasapi_explain_err(hr), (uint32_t)hr);
+ SAFE_RELEASE(deviceFormat, CoTaskMemFree(deviceFormat));
+ SAFE_RELEASE(closestMatch, CoTaskMemFree(closestMatch));
+ return 0;
}
static int try_passthrough(struct wasapi_state *state,
@@ -447,10 +454,9 @@ static HRESULT init_session_display(struct wasapi_state *state) {
return S_OK;
exit_label:
- MP_ERR(state, "Error setting audio session display name: %s (0x%"PRIx32")\n",
- wasapi_explain_err(hr), (uint32_t)hr);
- // No reason to abort initialization.
- return S_OK;
+ MP_WARN(state, "Error setting audio session display name: %s (0x%"PRIx32")\n",
+ wasapi_explain_err(hr), (uint32_t)hr);
+ return S_OK; // No reason to abort initialization.
}
static HRESULT fix_format(struct ao *ao)
@@ -913,11 +919,10 @@ HRESULT wasapi_setup_proxies(struct wasapi_state *state) {
#undef UNMARSHAL
+ return S_OK;
exit_label:
- if (hr != S_OK) {
- MP_ERR(state, "Error reading COM proxy: %s (0x%"PRIx32")\n",
- wasapi_explain_err(hr), (uint32_t)hr);
- }
+ MP_ERR(state, "Error reading COM proxy: %s (0x%"PRIx32")\n",
+ wasapi_explain_err(hr), (uint32_t)hr);
return hr;
}
@@ -947,7 +952,10 @@ static HRESULT create_proxies(struct wasapi_state *state) {
MARSHAL(IID_IAudioEndpointVolume, state->sEndpointVolume, state->pEndpointVolume);
MARSHAL(IID_IAudioSessionControl, state->sSessionControl, state->pSessionControl);
+ return S_OK;
exit_label:
+ MP_ERR(state, "Error creating COM proxy: %s (0x%"PRIx32")\n",
+ wasapi_explain_err(hr), (uint32_t)hr);
return hr;
}
@@ -1009,7 +1017,7 @@ retry:
hr = IAudioEndpointVolume_QueryHardwareSupport(state->pEndpointVolume,
&state->vol_hw_support);
if ( hr != S_OK )
- MP_WARN(ao, "Query hardware volume control: %s (0x%"PRIx32")\n",
+ MP_WARN(ao, "Error querying hardware volume control: %s (0x%"PRIx32")\n",
wasapi_explain_err(hr), (uint32_t)hr);
MP_DBG(ao, "Probing formats\n");