Commit c2c01476 authored by Martin Storsjö's avatar Martin Storsjö

Add patches fixing hangs and noise in the ios audio output module

If these seem to work well for others, they can be committed to
vlc.git soon.
parent c50f11f4
From 50d11f576c5ef6bda8cad157f737fe571da4bcb7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
Date: Tue, 23 Jul 2013 16:39:30 +0300
Subject: [PATCH 15/16] Revert "audiounit_ios: try to handle data drops more
efficiently"
This (more or less) reverts commit
2b7e016807507b632b8e0a7c874030bdffb2f604.
Stopping the aout from within the callback like this could
lead to deadlocks, where AudioOutputUnitStop in the callback thread
and AudioOutputUnitStart in the audio decoder thread blocked each
other (noticed at startup of playback on a 3GS with iOS 6.0).
---
modules/audio_output/audiounit_ios.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/modules/audio_output/audiounit_ios.c b/modules/audio_output/audiounit_ios.c
index 1faaf58..974d172 100644
--- a/modules/audio_output/audiounit_ios.c
+++ b/modules/audio_output/audiounit_ios.c
@@ -383,8 +383,8 @@ static OSStatus RenderCallback(vlc_object_t *p_obj,
/* check if we have enough data */
if (!availableBytes) {
- /* bail out and restart unit the next time we receive some data */
- Flush(p_aout, false);
+ /* return an empty buffer so silence is played until we have data */
+ memset(targetBuffer, 0, bytesToCopy);
} else {
memcpy(targetBuffer, buffer, __MIN(bytesToCopy, availableBytes));
TPCircularBufferConsume(&p_sys->circular_buffer, __MIN(bytesToCopy, availableBytes));
--
1.7.9.4
From ce1447cd2334fa3af8f770a3041c5ad1b9aeac1a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
Date: Tue, 23 Jul 2013 16:58:36 +0300
Subject: [PATCH 16/16] audiounit_ios: Fill the remainder of the buffer with
zeros
If we didn't have enough data to fill the buffer, fill the rest
of it with zeros. This is better than playing back whatever happened
to be there from before.
---
modules/audio_output/audiounit_ios.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/modules/audio_output/audiounit_ios.c b/modules/audio_output/audiounit_ios.c
index 974d172..b780fd0 100644
--- a/modules/audio_output/audiounit_ios.c
+++ b/modules/audio_output/audiounit_ios.c
@@ -389,6 +389,8 @@ static OSStatus RenderCallback(vlc_object_t *p_obj,
memcpy(targetBuffer, buffer, __MIN(bytesToCopy, availableBytes));
TPCircularBufferConsume(&p_sys->circular_buffer, __MIN(bytesToCopy, availableBytes));
VLC_UNUSED(inNumberFrames);
+ if (availableBytes < bytesToCopy)
+ memset((uint8_t*) targetBuffer + availableBytes, 0, bytesToCopy - availableBytes);
}
return noErr;
--
1.7.9.4
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment