gstreamer/sys
Seungha Yang a8ec40c850 wasapi2: Rewrite plugin and implement audioringbuffer subclass
... based on MediaFoundation work queue API.

By this commit, wasapi2 plugin will make use of pull mode scheduling
with audioringbuffer subclass.
There are several drawbacks of audiosrc/audiosink subclassing
(not audiobasesrc/audiobasesink) for WASAPI API, which are:
* audiosrc/audiosink classes try to set high priority to
  read/write thread via MMCSS (Multimedia Class Scheduler Service)
  but it's not allowed in case of UWP application.
  In order to use MMCSS in UWP, application should use MediaFoundation
  work queue indirectly.
  Since audiosrc/audiosink scheduling model is not compatible with
  MediaFoundation's work queue model, audioringbuffer subclassing
  is required.
* WASAPI capture device might report larger packet size than expected
  (i.e., larger frames we can read than expected frame size per period).
  Meanwhile, in any case, application should drain all packets at that moment.
  In order to handle the case, wasapi/wasapi2 plugins were making use of
  GstAdapter which is obviously sub-optimal because it requires additional
  memory allocation and copy.
  By implementing audioringbuffer subclassing, we can avoid such inefficiency.

In this commit, all the device read/write operations will be moved
to newly implemented wasapi2ringbuffer class and
existing wasapi2client class will take care of device enumeration
and activation parts only.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2306>
2021-06-08 19:39:27 +09:00
..
androidmedia gst: don't use volatile to mean atomic 2021-03-22 14:34:36 +11:00
applemedia vulkan: provide a custom VK_DEFINE_NON_DISPATCHABLE_HANDLE 2021-04-06 12:32:57 +02:00
bluez plugins-sys: allow per feature registration 2021-04-09 19:23:40 +00:00
d3d11 d3d11: Add support for YV12 and NV21 formats 2021-06-03 17:00:49 +00:00
d3dvideosink d3dvideosink: Use secondary rank 2020-06-03 17:57:40 +09:00
decklink decklinkvideosrc: Fix crash when mode is not specified 2021-05-06 01:37:33 +09:00
directsound bad: use of g_value_dup_string 2019-12-30 14:13:03 +00:00
dshowdecwrapper documentation: fixed a heap o' typos 2019-11-05 09:11:25 -05:00
dshowsrcwrapper dshowsrcwrapper: Update build instructions. Add _builddir to include search path. 2020-08-28 23:00:53 +00:00
dshowvideosink documentation: fixed a heap o' typos 2019-11-05 09:11:25 -05:00
dvb Use gst_element_request_pad_simple... 2021-05-05 06:17:14 +00:00
fbdev plugins-sys: allow per feature registration 2021-04-09 19:23:40 +00:00
ipcpipeline plugins-sys: allow per feature registration 2021-04-09 19:23:40 +00:00
kms plugins-sys: allow per feature registration 2021-04-09 19:23:40 +00:00
magicleap plugins-sys: allow per feature registration 2021-04-09 19:23:40 +00:00
mediafoundation mfvideoenc: Fix UWP build 2021-04-22 15:50:15 +09:00
msdk doc: add the msdk elements 2021-06-03 10:30:18 +08:00
nvcodec codecs: vp9decoder: Pass GstVideoCodecFrame to duplicate_picture() 2021-04-07 19:32:29 +00:00
opensles plugins-sys: allow per feature registration 2021-04-09 19:23:40 +00:00
shm plugins-sys: allow per feature registration 2021-04-09 19:23:40 +00:00
tinyalsa Remove autotools build system 2019-10-14 13:54:27 +01:00
uvch264 Use gst_element_request_pad_simple... 2021-05-05 06:17:14 +00:00
v4l2codecs v4l2codecs: gstv4l2codecsvp8dec: implement a render delay 2021-05-31 15:48:24 -04:00
va va: h265dec: Add current picture into reference list for SCC. 2021-05-25 12:11:05 +02:00
wasapi gst: don't use volatile to mean atomic 2021-03-22 14:34:36 +11:00
wasapi2 wasapi2: Rewrite plugin and implement audioringbuffer subclass 2021-06-08 19:39:27 +09:00
winks documentation: fixed a heap o' typos 2019-11-05 09:11:25 -05:00
winscreencap dxgiscreencapsrc: renegotiate caps on resolution change 2021-05-21 17:03:20 +02:00
meson.build va: VA-API H.264 decoder and infrastructure 2020-06-28 11:47:35 +02:00