vlc/vlc-3.0 | branch: master | Thomas Guillem <[email protected]> | Mon Mar 12 13:58:28 2018 +0100| [a50e1a3238bbb5f1db8fdec5834974b62bee9cdb] | committer: Thomas Guillem
coreaudio: replace TPCircularBuffer by os_unfair_lock and a block chain Remove the usage of TPCircularBuffer and multiple atomic variables that start to make this code way too complicated. Replace it by os_unfair_lock and a block chain. os_unfair_lock is a safe spinlock that waits in the kernel in case of thread contention. Fallback to pthread_mutex_t if os_unfair_lock is not availaible (before macOS 10.12 / iOS 10.0). The unfairness of this new lock is not an issue here since both locking threads (the render callback and the VLC DecoderThread calling aout_DecPlay) will be automatically paced (and will let the other thread take the lock). Indeed, the render thread need a sample every 22 or 88ms, and the DecoderThread will wait for the decoder, wait in the decoder lock, or wait from the aout if the FIFO is full. (cherry picked from commit 9bb14edac43e3bf7c4a96b02e3f920f7f7efeb6c) Signed-off-by: Thomas Guillem <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=a50e1a3238bbb5f1db8fdec5834974b62bee9cdb --- modules/audio_output/Makefile.am | 6 +- modules/audio_output/TPCircularBuffer.c | 115 ----------- modules/audio_output/TPCircularBuffer.h | 175 ----------------- modules/audio_output/coreaudio_common.c | 335 ++++++++++++++++++++------------ modules/audio_output/coreaudio_common.h | 30 ++- 5 files changed, 238 insertions(+), 423 deletions(-) Diff: http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commitdiff;h=a50e1a3238bbb5f1db8fdec5834974b62bee9cdb _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
