wasapi2sink: Do not push too large preroll buffer to endpoint

To avoid startup glitches, a silent buffer is pushed to
render endpoint, but pushing too large silent buffer will
introduce unnecessary latency. Limit it to a single period worth data.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9553>
This commit is contained in:
Seungha Yang 2025-08-13 03:13:47 +09:00 committed by GStreamer Marge Bot
parent 71b787a39f
commit cb7dcff69e

View File

@ -874,6 +874,9 @@ gst_wasapi2_device_manager_create_ctx (IMMDeviceEnumerator * enumerator,
auto hr = ctx->client->GetCurrentPadding (&padding);
if (SUCCEEDED (hr) && padding < ctx->client_buf_size) {
auto can_write = ctx->client_buf_size - padding;
if (can_write > ctx->period)
can_write = ctx->period;
BYTE *data;
hr = ctx->render_client->GetBuffer (can_write, &data);
if (SUCCEEDED (hr)) {