osxaudio: Fix AudioOutputUnitStart() deadlock on iOS >=17
At some point in iOS 17, this call started waiting for the first render callback (io_proc) to finish. In our case, that callback also takes the ringbuf object lock by calling gst_audio_ring_buffer_set_timestamp(), which results in a deadlock. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7856>
This commit is contained in:
parent
307cfc2561
commit
49489d35ae
@ -122,7 +122,11 @@ gst_core_audio_io_proc_start (GstCoreAudio * core_audio)
|
||||
|
||||
core_audio->io_proc_needs_deactivation = FALSE;
|
||||
|
||||
// AudioOutputUnitStart on iOS can wait for the render callback to finish,
|
||||
// where in our case we set the ringbuffer timestamp, which also needs the ringbuf lock.
|
||||
GST_OBJECT_UNLOCK (core_audio->osxbuf);
|
||||
status = AudioOutputUnitStart (core_audio->audiounit);
|
||||
GST_OBJECT_LOCK (core_audio->osxbuf);
|
||||
if (status) {
|
||||
GST_ERROR_OBJECT (core_audio->osxbuf, "AudioOutputUnitStart failed: %d",
|
||||
(int) status);
|
||||
|
Loading…
x
Reference in New Issue
Block a user