0013-audiounit-run-an-AudioSession-when-outputting-media-.patch 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. From 4d1ad6b0b0c5d3511ee5b2e7a7e1986cfc1e4a6d Mon Sep 17 00:00:00 2001
  2. From: =?UTF-8?q?Felix=20Paul=20Ku=CC=88hne?= <fkuehne@videolan.org>
  3. Date: Sat, 9 Mar 2013 18:48:05 +0100
  4. Subject: [PATCH] audiounit: run an AudioSession when outputting media
  5. content, so the user is able to listen to the audio when
  6. the silent switch is on
  7. ---
  8. modules/audio_output/audiounit_ios.c | 20 ++++++++++++++++++--
  9. 1 file changed, 18 insertions(+), 2 deletions(-)
  10. diff --git a/modules/audio_output/audiounit_ios.c b/modules/audio_output/audiounit_ios.c
  11. index e0f9693..4763cb7 100644
  12. --- a/modules/audio_output/audiounit_ios.c
  13. +++ b/modules/audio_output/audiounit_ios.c
  14. @@ -258,6 +258,17 @@ static int StartAnalog(audio_output_t *p_aout, audio_sample_format_t *fmt)
  15. return false;
  16. }
  17. + /* start audio session so playback continues if mute switch is on */
  18. + AudioSessionInitialize (NULL,
  19. + kCFRunLoopCommonModes,
  20. + NULL,
  21. + NULL);
  22. +
  23. + /* Set audio session to mediaplayback */
  24. + UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
  25. + AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory),&sessionCategory);
  26. + AudioSessionSetActive(true);
  27. +
  28. /* setup circular buffer */
  29. TPCircularBufferInit(&p_sys->circular_buffer, kBufferLength);
  30. @@ -274,6 +285,8 @@ static void Stop(audio_output_t *p_aout)
  31. struct aout_sys_t *p_sys = p_aout->sys;
  32. OSStatus status;
  33. + AudioSessionSetActive(false);
  34. +
  35. if (p_sys->au_unit) {
  36. status = AudioOutputUnitStop(p_sys->au_unit);
  37. if (status != noErr)
  38. @@ -331,10 +344,13 @@ static void Pause (audio_output_t *p_aout, bool pause, mtime_t date)
  39. struct aout_sys_t * p_sys = p_aout->sys;
  40. VLC_UNUSED(date);
  41. - if (pause)
  42. + if (pause) {
  43. AudioOutputUnitStop(p_sys->au_unit);
  44. - else
  45. + AudioSessionSetActive(false);
  46. + } else {
  47. AudioOutputUnitStart(p_sys->au_unit);
  48. + AudioSessionSetActive(true);
  49. + }
  50. }
  51. static void Flush(audio_output_t *p_aout, bool wait)
  52. --
  53. 1.7.12.4 (Apple Git-37)