[vlc-devel] [RFI] Wasapi output restart on WinRT

Jean-Baptiste Kempf jb at videolan.org
Mon May 16 19:17:54 CEST 2016


On 16 May, Rémi Denis-Courmont wrote :
> On Monday 16 May 2016 18:43:02 Jean-Baptiste Kempf wrote:
> > Hello,
> > 
> > Attached is a (refused in the past) patch to fix an issue that happens
> > ONLY on WinRT: (win32 is totally fine)
> > 
> > - even if IAudioClient_Stop and Release are called on Stop(), on the
> > next Start(), the IAudioClient_Initialize call fails saying that
> > AUDCLNT_E_ALREADY_INITIALIZED, which is of course, wrong/weird.
> 
> Are you sure you creating a new client instance every time, and not reusing 
> the same one as before?

I am sure of nothing except that I exist. :D

>From what I see:
- Stop() calls vlc_module_unload, and then aout_stream_Stop that calls
  the wasapi.c:Stop() function. This one calls IAudioClient_Stop, and
  IAudioClient_Release.
- Start() calls ActivateDevice which calls IAudioClient_AddRef (there is
  no equivalent to MMDevice::Activate in WinRT), and
  then aout_stream_Activate and IAudioClient_Initialize()

Maybe the issue is that the only equivalent to MMDevice::Activate is
ActivateAudioInterfaceAsync and can only be called in the UI thread... 

> I rejected that patch because that error cannot safely be ignored. In 
> particular you could have mismatched audio formats.

Yep, I understood that :)

With my kindest regards,

-- 
Jean-Baptiste Kempf
http://www.jbkempf.com/ - +33 672 704 734
Sent from my Electronic Device


More information about the vlc-devel mailing list