[vlc-commits] MMDevice: split OpenDevice, CloseDevice and ActivateDevice for WinRT
Jean-Baptiste Kempf
git at videolan.org
Sun Nov 17 15:06:42 CET 2013
vlc | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Sun Nov 17 15:02:03 2013 +0100| [fdd456ea6ef1984eedd1912ba2eb37a43e1ae08b] | committer: Jean-Baptiste Kempf
MMDevice: split OpenDevice, CloseDevice and ActivateDevice for WinRT
The code wasn't common anymore :)
This reduces the number of #if VLC_WINSTORE_APP and should help
readability
Maybe Open() and Close() should be splitted in a similar way...
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fdd456ea6ef1984eedd1912ba2eb37a43e1ae08b
---
modules/audio_output/mmdevice.c | 71 ++++++++++++++++++++++++---------------
1 file changed, 43 insertions(+), 28 deletions(-)
diff --git a/modules/audio_output/mmdevice.c b/modules/audio_output/mmdevice.c
index ad025e4..aee2615 100644
--- a/modules/audio_output/mmdevice.c
+++ b/modules/audio_output/mmdevice.c
@@ -546,7 +546,6 @@ static int DevicesEnum(audio_output_t *aout)
IMMDeviceCollection_Release(devs);
return n;
}
-#endif /* !VLC_WINSTORE_APP */
/**
* Opens the selected audio output device.
@@ -556,12 +555,6 @@ static HRESULT OpenDevice(audio_output_t *aout, const char *devid)
aout_sys_t *sys = aout->sys;
assert(sys->dev == NULL);
-#if VLC_WINSTORE_APP
- (void)devid;
- assert(!devid);
- sys->dev = var_InheritAddress(aout, "mmdevice-audioclient");
- return S_OK;
-#else
HRESULT hr;
if (devid != NULL) /* Device selected explicitly */
{
@@ -615,7 +608,6 @@ out:
SetEvent(sys->device_changed);
WaitForSingleObject(sys->device_ready, INFINITE);
return hr;
-#endif /* ! VLC_WINSTORE_APP */
}
/**
@@ -626,7 +618,6 @@ static void CloseDevice(audio_output_t *aout)
aout_sys_t *sys = aout->sys;
assert(sys->dev != NULL);
-#if !VLC_WINSTORE_APP
if (sys->manager != NULL)
{
IAudioSessionManager_Release(sys->manager);
@@ -634,12 +625,53 @@ static void CloseDevice(audio_output_t *aout)
}
IMMDevice_Release(sys->dev);
-#else
+ sys->dev = NULL;
+}
+
+/**
+ * Callback for aout_stream_t to create a stream on the device.
+ * This can instantiate an IAudioClient or IDirectSound(8) object.
+ */
+static HRESULT ActivateDevice(void *opaque, REFIID iid, PROPVARIANT *actparms,
+ void **restrict pv)
+{
+ IMMDevice *dev = opaque;
+ return IMMDevice_Activate(dev, iid, CLSCTX_ALL, actparms, pv);
+}
+
+#else /* VLC_WINSTORE_APP */
+
+static HRESULT OpenDevice(audio_output_t *aout, const char *devid)
+{
+ aout_sys_t *sys = aout->sys;
+ assert(sys->dev == NULL);
+
+ (void)devid;
+ assert(!devid);
+ sys->dev = var_InheritAddress(aout, "mmdevice-audioclient");
+ return S_OK;
+}
+
+static void CloseDevice(audio_output_t *aout)
+{
+ aout_sys_t *sys = aout->sys;
+
+ assert(sys->dev != NULL);
free(sys->dev);
-#endif
sys->dev = NULL;
}
+static HRESULT ActivateDevice(void *opaque, REFIID iid, PROPVARIANT *actparms,
+ void **restrict pv)
+{
+ IMMDevice *dev = opaque;
+ (void)iid; (void)actparms;
+ *pv = dev;
+ return S_OK;
+}
+#endif /* !VLC_WINSTORE_APP */
+
+
static int DeviceSelect(audio_output_t *aout, const char *id)
{
aout_sys_t *sys = aout->sys;
@@ -662,23 +694,6 @@ static int DeviceSelect(audio_output_t *aout, const char *id)
return FAILED(hr) ? -1 : 0;
}
-/**
- * Callback for aout_stream_t to create a stream on the device.
- * This can instantiate an IAudioClient or IDirectSound(8) object.
- */
-static HRESULT ActivateDevice(void *opaque, REFIID iid, PROPVARIANT *actparms,
- void **restrict pv)
-{
- IMMDevice *dev = opaque;
-#if VLC_WINSTORE_APP
- (void)iid; (void)actparms;
- *pv = dev;
- return S_OK;
-#else
- return IMMDevice_Activate(dev, iid, CLSCTX_ALL, actparms, pv);
-#endif
-}
-
static int Start(audio_output_t *aout, audio_sample_format_t *restrict fmt)
{
aout_sys_t *sys = aout->sys;
More information about the vlc-commits
mailing list