From: Rémi Bernon rbernon@codeweavers.com
--- dlls/quartz/dsoundrender.c | 78 ++++++++++++++++++++++++-------------- 1 file changed, 49 insertions(+), 29 deletions(-)
diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c index 000d63d6a10..9da935eeb7d 100644 --- a/dlls/quartz/dsoundrender.c +++ b/dlls/quartz/dsoundrender.c @@ -125,7 +125,8 @@ static void DSoundRender_UpdatePositions(struct dsound_render *filter, DWORD *se else adv = playpos - old_playpos; filter->last_playpos = playpos; - if (adv) { + if (adv) + { TRACE("Moving from %lu to %lu: clearing %lu bytes.\n", old_playpos, playpos, adv); IDirectSoundBuffer_Lock(filter->dsbuffer, old_playpos, adv, (void **)&buf1, &size1, (void **)&buf2, &size2, 0); @@ -134,13 +135,16 @@ static void DSoundRender_UpdatePositions(struct dsound_render *filter, DWORD *se IDirectSoundBuffer_Unlock(filter->dsbuffer, buf1, size1, buf2, size2); } *minwritepos = writepos; - if (!writepos_set || old_writepos < writepos) { - if (writepos_set) { + if (!writepos_set || old_writepos < writepos) + { + if (writepos_set) + { filter->writepos = filter->buf_size; FIXME("Underrun of data occurred!\n"); } *seqwritepos = writepos; - } else + } + else *seqwritepos = filter->writepos; }
@@ -157,14 +161,16 @@ static HRESULT DSoundRender_GetWritePos(struct dsound_render *filter, { IReferenceClock_GetTime(filter->filter.clock, &cur); cur -= filter->stream_start; - } else + } + else write_at = -1;
if (writepos == min_writepos) max_lag = 0;
*skip = 0; - if (write_at < 0) { + if (write_at < 0) + { *ret_writepos = writepos; goto end; } @@ -178,10 +184,13 @@ static HRESULT DSoundRender_GetWritePos(struct dsound_render *filter, /* cur: current time of play position */ /* writepos_t: current time of our pointer play position */ delta_t = write_at - writepos_t; - if (delta_t >= -max_lag && delta_t <= max_lag) { + if (delta_t >= -max_lag && delta_t <= max_lag) + { TRACE("Continuing from old position\n"); *ret_writepos = writepos; - } else if (delta_t < 0) { + } + else if (delta_t < 0) + { REFERENCE_TIME past, min_writepos_t; WARN("Delta too big %s/%s, overwriting old data or even skipping\n", debugstr_time(delta_t), debugstr_time(max_lag)); if (min_writepos >= playpos) @@ -189,17 +198,22 @@ static HRESULT DSoundRender_GetWritePos(struct dsound_render *filter, else min_writepos_t = cur + time_from_pos(filter, filter->buf_size - playpos + min_writepos); past = min_writepos_t - write_at; - if (past >= 0) { + if (past >= 0) + { DWORD skipbytes = pos_from_time(filter, past); WARN("Skipping %lu bytes.\n", skipbytes); *skip = skipbytes; *ret_writepos = min_writepos; - } else { + } + else + { DWORD aheadbytes = pos_from_time(filter, -past); WARN("Advancing %lu bytes.\n", aheadbytes); *ret_writepos = (min_writepos + aheadbytes) % filter->buf_size; } - } else /* delta_t > 0 */ { + } + else /* delta_t > 0 */ + { DWORD aheadbytes; WARN("Delta too big %s/%s, too far ahead\n", debugstr_time(delta_t), debugstr_time(max_lag)); aheadbytes = pos_from_time(filter, delta_t); @@ -242,7 +256,8 @@ static HRESULT DSoundRender_SendSampleData(struct dsound_render *filter, { HRESULT hr;
- while (size && filter->filter.state != State_Stopped) { + while (size && filter->filter.state != State_Stopped) + { DWORD writepos, skip = 0, free, size1, size2, ret; BYTE *buf1, *buf2;
@@ -251,7 +266,8 @@ static HRESULT DSoundRender_SendSampleData(struct dsound_render *filter, else hr = S_FALSE;
- if (hr != S_OK) { + if (hr != S_OK) + { ret = WaitForSingleObject(filter->flush_event, 10); if (filter->sink.flushing || filter->filter.state == State_Stopped) return filter->filter.state == State_Paused ? S_OK : VFW_E_WRONG_STATE; @@ -270,7 +286,8 @@ static HRESULT DSoundRender_SendSampleData(struct dsound_render *filter,
hr = IDirectSoundBuffer_Lock(filter->dsbuffer, writepos, min(free, size), (void **)&buf1, &size1, (void **)&buf2, &size2, 0); - if (hr != DS_OK) { + if (hr != DS_OK) + { ERR("Failed to lock sound buffer, hr %#lx.\n", hr); break; } @@ -339,7 +356,8 @@ static HRESULT DSoundRender_DoRenderSample(struct dsound_render *filter, IMediaS }
hr = IMediaSample_GetTime(pSample, &tStart, &tStop); - if (FAILED(hr)) { + if (FAILED(hr)) + { ERR("Failed to get sample time, hr %#lx.\n", hr); tStart = tStop = -1; } @@ -669,9 +687,8 @@ static const struct strmbase_filter_ops filter_ops = };
/*** IUnknown methods ***/ -static HRESULT WINAPI Basicaudio_QueryInterface(IBasicAudio *iface, - REFIID riid, - LPVOID*ppvObj) { +static HRESULT WINAPI Basicaudio_QueryInterface(IBasicAudio *iface, REFIID riid, LPVOID*ppvObj) +{ struct dsound_render *filter = impl_from_IBasicAudio(iface);
TRACE("(%p/%p)->(%s, %p)\n", filter, iface, debugstr_guid(riid), ppvObj); @@ -679,7 +696,8 @@ static HRESULT WINAPI Basicaudio_QueryInterface(IBasicAudio *iface, return IUnknown_QueryInterface(filter->filter.outer_unk, riid, ppvObj); }
-static ULONG WINAPI Basicaudio_AddRef(IBasicAudio *iface) { +static ULONG WINAPI Basicaudio_AddRef(IBasicAudio *iface) +{ struct dsound_render *filter = impl_from_IBasicAudio(iface);
TRACE("(%p/%p)->()\n", filter, iface); @@ -687,7 +705,8 @@ static ULONG WINAPI Basicaudio_AddRef(IBasicAudio *iface) { return IUnknown_AddRef(filter->filter.outer_unk); }
-static ULONG WINAPI Basicaudio_Release(IBasicAudio *iface) { +static ULONG WINAPI Basicaudio_Release(IBasicAudio *iface) +{ struct dsound_render *filter = impl_from_IBasicAudio(iface);
TRACE("(%p/%p)->()\n", filter, iface); @@ -743,8 +762,8 @@ static HRESULT WINAPI basic_audio_Invoke(IBasicAudio *iface, DISPID id, REFIID i return hr; }
-static HRESULT WINAPI Basicaudio_put_Volume(IBasicAudio *iface, - LONG lVolume) { +static HRESULT WINAPI Basicaudio_put_Volume(IBasicAudio *iface, LONG lVolume) +{ struct dsound_render *filter = impl_from_IBasicAudio(iface);
TRACE("filter %p, volume %ld.\n", filter, lVolume); @@ -759,8 +778,8 @@ static HRESULT WINAPI Basicaudio_put_Volume(IBasicAudio *iface, return S_OK; }
-static HRESULT WINAPI Basicaudio_get_Volume(IBasicAudio *iface, - LONG *plVolume) { +static HRESULT WINAPI Basicaudio_get_Volume(IBasicAudio *iface, LONG *plVolume) +{ struct dsound_render *filter = impl_from_IBasicAudio(iface);
TRACE("(%p/%p)->(%p)\n", filter, iface, plVolume); @@ -772,8 +791,8 @@ static HRESULT WINAPI Basicaudio_get_Volume(IBasicAudio *iface, return S_OK; }
-static HRESULT WINAPI Basicaudio_put_Balance(IBasicAudio *iface, - LONG lBalance) { +static HRESULT WINAPI Basicaudio_put_Balance(IBasicAudio *iface, LONG lBalance) +{ struct dsound_render *filter = impl_from_IBasicAudio(iface);
TRACE("filter %p, balance %ld.\n", filter, lBalance); @@ -788,8 +807,8 @@ static HRESULT WINAPI Basicaudio_put_Balance(IBasicAudio *iface, return S_OK; }
-static HRESULT WINAPI Basicaudio_get_Balance(IBasicAudio *iface, - LONG *plBalance) { +static HRESULT WINAPI Basicaudio_get_Balance(IBasicAudio *iface, LONG *plBalance) +{ struct dsound_render *filter = impl_from_IBasicAudio(iface);
TRACE("(%p/%p)->(%p)\n", filter, iface, plBalance); @@ -989,7 +1008,8 @@ static const IQualityControlVtbl dsound_render_qc_vtbl =
HRESULT dsound_render_create(IUnknown *outer, IUnknown **out) { - static const DSBUFFERDESC buffer_desc = { + static const DSBUFFERDESC buffer_desc = + { .dwSize = sizeof(DSBUFFERDESC), .dwFlags = DSBCAPS_PRIMARYBUFFER, };