mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 03:35:21 +00:00
wasapisink: fix regression in shared mode segment size
In commit fd806628a8 (839cc3926
in the stable branch) I changed the
segment size to match exactly the buffer size. I missed that this is
only valid in exclusive mode and in shared mode the buffer size is
a multiple of the device period.
Revert the logic for the shared mode.
https://bugzilla.gnome.org/show_bug.cgi?id=796354
https://bugzilla.gnome.org/show_bug.cgi?id=796858
This commit is contained in:
parent
f460448198
commit
5a1b37b1f3
1 changed files with 9 additions and 3 deletions
|
@ -899,10 +899,16 @@ gst_wasapi_util_initialize_audioclient (GstElement * self,
|
|||
}
|
||||
HR_FAILED_RET (hr, IAudioClient::Initialize, FALSE);
|
||||
|
||||
hr = IAudioClient_GetBufferSize (client, &n_frames);
|
||||
HR_FAILED_RET (hr, IAudioClient::GetBufferSize, FALSE);
|
||||
if (sharemode == AUDCLNT_SHAREMODE_EXCLUSIVE) {
|
||||
/* We use the device period for the segment size and that needs to match
|
||||
* the buffer size exactly when we write into it */
|
||||
hr = IAudioClient_GetBufferSize (client, &n_frames);
|
||||
HR_FAILED_RET (hr, IAudioClient::GetBufferSize, FALSE);
|
||||
|
||||
*ret_devicep_frames = n_frames;
|
||||
*ret_devicep_frames = n_frames;
|
||||
} else {
|
||||
*ret_devicep_frames = (rate * device_period * 100) / GST_SECOND;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue