wasapi2: Introduce new WASAPI plugin
authorSeungha Yang <seungha@centricular.com>
Mon, 25 May 2020 20:17:41 +0000 (05:17 +0900)
committerNirbheek Chauhan <nirbheek@centricular.com>
Mon, 8 Jun 2020 03:10:05 +0000 (03:10 +0000)
commit27784576781a89752010c32ad6df51b38cd2339c
treee8daa901c588e24a8341e59592e390be679e788b
parent0f74785b8ebc3a042f1e8593e516c793897623f1
wasapi2: Introduce new WASAPI plugin

Add a new wasapi implementation mainly to support UWP application.
Basically the core logic of this plugin is almost identical to
existing wasapi plugin, but main target is Windows 10 (+ UWP).
Since this plugin uses WinRT APIs, this plugin most likely might not
work Windows 8 or lower.

Compared with existing wasapi plugin, additional features of this plugin are
* Fully compatible with both Windows 10 desktop and UWP application
* Supports automatic stream routing (auto fallback when device was removed)
* Support device level mute/volume control

But some features of existing wasapi plugin are not implemented
in this plugin yet
* Exclusive streaming mode is not supported
* Loopback feature is not implemented
* Cross-compile is not possible with current mingw toolchain
  (meaning that MSVC and Windows 10 SDK are required to build this plugin)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1264>
13 files changed:
meson_options.txt
sys/meson.build
sys/wasapi2/AsyncOperations.h [new file with mode: 0644]
sys/wasapi2/gstwasapi2client.cpp [new file with mode: 0644]
sys/wasapi2/gstwasapi2client.h [new file with mode: 0644]
sys/wasapi2/gstwasapi2sink.c [new file with mode: 0644]
sys/wasapi2/gstwasapi2sink.h [new file with mode: 0644]
sys/wasapi2/gstwasapi2src.c [new file with mode: 0644]
sys/wasapi2/gstwasapi2src.h [new file with mode: 0644]
sys/wasapi2/gstwasapi2util.c [new file with mode: 0644]
sys/wasapi2/gstwasapi2util.h [new file with mode: 0644]
sys/wasapi2/meson.build [new file with mode: 0644]
sys/wasapi2/plugin.c [new file with mode: 0644]