From 4d1ad6b0b0c5d3511ee5b2e7a7e1986cfc1e4a6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Paul=20Ku=CC=88hne?= Date: Sat, 9 Mar 2013 18:48:05 +0100 Subject: [PATCH] audiounit: run an AudioSession when outputting media content, so the user is able to listen to the audio when the silent switch is on --- modules/audio_output/audiounit_ios.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/modules/audio_output/audiounit_ios.c b/modules/audio_output/audiounit_ios.c index e0f9693..4763cb7 100644 --- a/modules/audio_output/audiounit_ios.c +++ b/modules/audio_output/audiounit_ios.c @@ -258,6 +258,17 @@ static int StartAnalog(audio_output_t *p_aout, audio_sample_format_t *fmt) return false; } + /* start audio session so playback continues if mute switch is on */ + AudioSessionInitialize (NULL, + kCFRunLoopCommonModes, + NULL, + NULL); + + /* Set audio session to mediaplayback */ + UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; + AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory),&sessionCategory); + AudioSessionSetActive(true); + /* setup circular buffer */ TPCircularBufferInit(&p_sys->circular_buffer, kBufferLength); @@ -274,6 +285,8 @@ static void Stop(audio_output_t *p_aout) struct aout_sys_t *p_sys = p_aout->sys; OSStatus status; + AudioSessionSetActive(false); + if (p_sys->au_unit) { status = AudioOutputUnitStop(p_sys->au_unit); if (status != noErr) @@ -331,10 +344,13 @@ static void Pause (audio_output_t *p_aout, bool pause, mtime_t date) struct aout_sys_t * p_sys = p_aout->sys; VLC_UNUSED(date); - if (pause) + if (pause) { AudioOutputUnitStop(p_sys->au_unit); - else + AudioSessionSetActive(false); + } else { AudioOutputUnitStart(p_sys->au_unit); + AudioSessionSetActive(true); + } } static void Flush(audio_output_t *p_aout, bool wait) -- 1.7.12.4 (Apple Git-37)