[vlc-commits] wasapi: fixes and simplifications
Rémi Denis-Courmont
git at videolan.org
Tue Dec 4 21:06:33 CET 2012
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Tue Dec 4 22:04:22 2012 +0200| [6c8ed4207d16cd71fd3fc4a51c04294d74162c66] | committer: Rémi Denis-Courmont
wasapi: fixes and simplifications
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6c8ed4207d16cd71fd3fc4a51c04294d74162c66
---
modules/audio_output/wasapi.c | 23 ++++++-----------------
1 file changed, 6 insertions(+), 17 deletions(-)
diff --git a/modules/audio_output/wasapi.c b/modules/audio_output/wasapi.c
index d8e9f26..dc60970 100644
--- a/modules/audio_output/wasapi.c
+++ b/modules/audio_output/wasapi.c
@@ -100,7 +100,6 @@ static HRESULT TimeGet(aout_api_t *api, mtime_t *restrict delay)
UINT64 pos, qpcpos;
HRESULT hr;
- Enter();
hr = IAudioClient_GetService(sys->client, &IID_IAudioClock, &pv);
if (SUCCEEDED(hr))
{
@@ -113,7 +112,6 @@ static HRESULT TimeGet(aout_api_t *api, mtime_t *restrict delay)
}
else
msg_Err(api, "cannot get clock (error 0x%lx)", hr);
- Leave();
if (SUCCEEDED(hr))
{
@@ -142,7 +140,6 @@ static HRESULT Play(aout_api_t *api, block_t *block)
aout_ChannelReorder(block->p_buffer, block->i_buffer,
sys->chans_to_reorder, sys->chans_table, sys->bits);
- Enter();
hr = IAudioClient_GetService(sys->client, &IID_IAudioRenderClient, &pv);
if (FAILED(hr))
{
@@ -198,7 +195,6 @@ static HRESULT Play(aout_api_t *api, block_t *block)
}
IAudioRenderClient_Release(render);
out:
- Leave();
block_Release(block);
return hr;
@@ -209,7 +205,6 @@ static HRESULT Pause(aout_api_t *api, bool paused)
aout_api_sys_t *sys = api->sys;
HRESULT hr;
- Enter();
if (paused)
hr = IAudioClient_Stop(sys->client);
else
@@ -217,7 +212,6 @@ static HRESULT Pause(aout_api_t *api, bool paused)
if (FAILED(hr))
msg_Warn(api, "cannot %s stream (error 0x%lx)",
paused ? "stop" : "start", hr);
- Leave();
return hr;
}
@@ -226,11 +220,9 @@ static HRESULT Flush(aout_api_t *api)
aout_api_sys_t *sys = api->sys;
HRESULT hr;
- Enter();
IAudioClient_Stop(sys->client);
- hr = IAudioClient_Reset(sys->client);
- Leave();
+ hr = IAudioClient_Reset(sys->client);
if (FAILED(hr))
msg_Warn(api, "cannot reset stream (error 0x%lx)", hr);
else
@@ -339,11 +331,12 @@ static HRESULT Start(aout_api_t *api, audio_sample_format_t *restrict fmt,
return E_OUTOFMEMORY;
sys->client = NULL;
+ void *pv;
HRESULT hr;
Enter();
- void *pv;
hr = IMMDevice_Activate(dev, &IID_IAudioClient, CLSCTX_ALL, NULL, &pv);
+ Leave();
if (FAILED(hr))
{
msg_Err(api, "cannot activate client (error 0x%lx)", hr);
@@ -400,8 +393,6 @@ static HRESULT Start(aout_api_t *api, audio_sample_format_t *restrict fmt,
goto error;
}
- Leave();
-
sys->rate = fmt->i_rate;
sys->bytes_per_frame = fmt->i_bytes_per_frame;
sys->written = 0;
@@ -410,11 +401,11 @@ static HRESULT Start(aout_api_t *api, audio_sample_format_t *restrict fmt,
api->play = Play;
api->pause = Pause;
api->flush = Flush;
- return VLC_SUCCESS;
+ return S_OK;
error:
if (sys->client != NULL)
IAudioClient_Release(sys->client);
- Leave();
+ free(sys);
return hr;
}
@@ -422,10 +413,8 @@ static void Stop(aout_api_t *api)
{
aout_api_sys_t *sys = api->sys;
- Enter();
IAudioClient_Stop(sys->client); /* should not be needed */
IAudioClient_Release(sys->client);
- Leave();
}
#undef aout_api_Start
@@ -442,7 +431,7 @@ aout_api_t *aout_api_Start(vlc_object_t *parent, audio_sample_format_t *fmt,
vlc_object_release(api);
api = NULL;
}
- return NULL;
+ return api;
}
void aout_api_Stop(aout_api_t *api)
More information about the vlc-commits
mailing list