wasapi2ringbuffer: Fix for desynced buffer-size and segsize
authorSeungha Yang <seungha@centricular.com>
Mon, 17 Jan 2022 18:03:30 +0000 (03:03 +0900)
committerSeungha Yang <seungha@centricular.com>
Mon, 17 Jan 2022 18:23:17 +0000 (03:23 +0900)
GstAudioRingBufferSpec::segsize has been configured by using
device period but GstWasapi2RingBuffer was referencing the
buffer size returned by IAudioClient::GetBufferSize()
which is most likely larger than device period.
Fixing to sync them.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1533>

subprojects/gst-plugins-bad/sys/wasapi2/gstwasapi2ringbuffer.cpp

index 08ce65a..3b04e6c 100644 (file)
@@ -1053,6 +1053,12 @@ gst_wasapi2_ring_buffer_acquire (GstAudioRingBuffer * buf,
 
   g_assert (period > 0);
 
+  if (self->buffer_size > period) {
+    GST_INFO_OBJECT (self, "Updating buffer size %d -> %d", self->buffer_size,
+        period);
+    self->buffer_size = period;
+  }
+
   spec->segsize = period * GST_AUDIO_INFO_BPF (&buf->spec.info);
   spec->segtotal = 2;