[vlc-commits] audiounit_ios: query channel layout before au creation
Thomas Guillem
git at videolan.org
Fri Mar 3 15:44:47 CET 2017
vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Fri Mar 3 10:30:03 2017 +0100| [13ccb1f385945138837b5458a03cabdfea7738a6] | committer: Thomas Guillem
audiounit_ios: query channel layout before au creation
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=13ccb1f385945138837b5458a03cabdfea7738a6
---
modules/audio_output/audiounit_ios.m | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/modules/audio_output/audiounit_ios.m b/modules/audio_output/audiounit_ios.m
index b7cd469..7ee81b2 100644
--- a/modules/audio_output/audiounit_ios.m
+++ b/modules/audio_output/audiounit_ios.m
@@ -338,12 +338,19 @@ Start(audio_output_t *p_aout, audio_sample_format_t *restrict fmt)
p_sys->au_unit = NULL;
- fmt->i_format = VLC_CODEC_FL32;
-
/* Activate the AVAudioSession */
if (avas_SetActive(p_aout, true, 0) != VLC_SUCCESS)
return VLC_EGENERIC;
+ enum dev_type dev_type;
+ int ret = avas_GetOptimalChannelLayout(p_aout, aout_FormatNbChannels(fmt),
+ &dev_type, &layout);
+ if (ret != VLC_SUCCESS)
+ goto error;
+
+ /* TODO: Do passthrough if dev_type allows it */
+ fmt->i_format = VLC_CODEC_FL32;
+
p_sys->au_unit = au_NewOutputInstance(p_aout, kAudioUnitSubType_RemoteIO);
if (p_sys->au_unit == NULL)
goto error;
@@ -355,14 +362,6 @@ Start(audio_output_t *p_aout, audio_sample_format_t *restrict fmt)
if (err != noErr)
ca_LogWarn("failed to set IO mode");
- enum dev_type dev_type;
- int ret = avas_GetOptimalChannelLayout(p_aout, aout_FormatNbChannels(fmt),
- &dev_type, &layout);
- if (ret != VLC_SUCCESS)
- goto error;
-
- /* TODO: Do passthrough if dev_type allows it */
-
ret = au_Initialize(p_aout, p_sys->au_unit, fmt, layout,
[p_sys->avInstance outputLatency] * CLOCK_FREQ);
if (ret != VLC_SUCCESS)
@@ -395,7 +394,8 @@ error:
free(layout);
avas_SetActive(p_aout, false,
AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation);
- AudioComponentInstanceDispose(p_sys->au_unit);
+ if (p_sys->au_unit != NULL)
+ AudioComponentInstanceDispose(p_sys->au_unit);
msg_Err(p_aout, "opening AudioUnit output failed");
return VLC_EGENERIC;
}
More information about the vlc-commits
mailing list