[vlc-devel] [PATCH] aout: wasapi: disable deferred start for Winstore builds
Steve Lhomme
robux4 at ycbcr.xyz
Wed Apr 8 16:48:51 CEST 2020
I don't know this sensitive code enough to make definitive changes, like
using vlc_timer_schedule(). I looked at what we did in 3.0 and we didn't
support this deferred start at all. I don't know if it's an optional
feature or not.
On 2020-04-08 16:36, Jean-Baptiste Kempf wrote:
> Hello,
>
> I think this is bad: we should not ifdef in WASAPI for WinRT, as much as possible.
>
> On Wed, Apr 8, 2020, at 14:54, Steve Lhomme wrote:
>> The timer API is not supported.
>>
>> Using vlc_timer_schedule() might work but is heavier/slower as it's using
>> posix/timer.c which uses a thread to run the callback.
>> ---
>> modules/audio_output/wasapi.c | 14 +++++++++++++-
>> 1 file changed, 13 insertions(+), 1 deletion(-)
>>
>> diff --git a/modules/audio_output/wasapi.c b/modules/audio_output/wasapi.c
>> index 5180e93f8e8..61b6cc13d6f 100644
>> --- a/modules/audio_output/wasapi.c
>> +++ b/modules/audio_output/wasapi.c
>> @@ -91,7 +91,9 @@ static msftime_t GetQPC(void)
>> typedef struct aout_stream_sys
>> {
>> IAudioClient *client;
>> +#if !VLC_WINSTORE_APP
>> HANDLE hTimer;
>> +#endif // !VLC_WINSTORE_APP
>>
>> #define STARTED_STATE_INIT 0
>> #define STARTED_STATE_OK 1
>> @@ -111,12 +113,16 @@ typedef struct aout_stream_sys
>>
>> static void ResetTimer(aout_stream_t *s)
>> {
>> +#if !VLC_WINSTORE_APP
>> aout_stream_sys_t *sys = s->sys;
>> if (sys->hTimer != NULL)
>> {
>> DeleteTimerQueueTimer(NULL, sys->hTimer, INVALID_HANDLE_VALUE);
>> sys->hTimer = NULL;
>> }
>> +#else // VLC_WINSTORE_APP
>> + VLC_UNUSED(s);
>> +#endif // VLC_WINSTORE_APP
>> }
>>
>> /*** VLC audio output callbacks ***/
>> @@ -160,6 +166,7 @@ static HRESULT TimeGet(aout_stream_t *s, vlc_tick_t
>> *restrict delay)
>> return hr;
>> }
>>
>> +#if !VLC_WINSTORE_APP
>> static void CALLBACK StartDeferredCallback(void *val, BOOLEAN timeout)
>> {
>> aout_stream_t *s = val;
>> @@ -170,15 +177,17 @@ static void CALLBACK StartDeferredCallback(void
>> *val, BOOLEAN timeout)
>> SUCCEEDED(hr) ? STARTED_STATE_OK :
>> STARTED_STATE_ERROR);
>> (void) timeout;
>> }
>> +#endif // !VLC_WINSTORE_APP
>>
>> static HRESULT StartDeferred(aout_stream_t *s, vlc_tick_t date)
>> {
>> aout_stream_sys_t *sys = s->sys;
>> vlc_tick_t written = vlc_tick_from_frac(sys->written, sys->rate);
>> vlc_tick_t start_delay = date - vlc_tick_now() - written;
>> - DWORD start_delay_ms = start_delay > 0 ? MS_FROM_VLC_TICK(start_delay) : 0;
>> BOOL timer_updated = false;
>>
>> +#if !VLC_WINSTORE_APP
>> + DWORD start_delay_ms = start_delay > 0 ?
>> MS_FROM_VLC_TICK(start_delay) : 0;
>> /* Create or update the current timer */
>> if (start_delay_ms > 0)
>> {
>> @@ -195,6 +204,7 @@ static HRESULT StartDeferred(aout_stream_t *s,
>> vlc_tick_t date)
>> }
>> else
>> ResetTimer(s);
>> +#endif
>>
>> if (!timer_updated)
>> {
>> @@ -747,7 +757,9 @@ static HRESULT Start(aout_stream_t *s,
>> audio_sample_format_t *restrict pfmt,
>> if (unlikely(sys == NULL))
>> return E_OUTOFMEMORY;
>> sys->client = NULL;
>> +#if !VLC_WINSTORE_APP
>> sys->hTimer = NULL;
>> +#endif // !VLC_WINSTORE_APP
>> atomic_init(&sys->started_state, STARTED_STATE_INIT);
>>
>> /* Configure audio stream */
>> --
>> 2.17.1
>>
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
>
> --
> Jean-Baptiste Kempf - President
> +33 672 704 734
>
More information about the vlc-devel
mailing list