From 4d15f1bb60083d53a67f1e718ce6643631e3a8ce Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Wed, 3 Jul 2013 18:49:02 +0200 Subject: ao_coreaudio: set channel layout bitmap --- audio/out/ao_coreaudio.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'audio') diff --git a/audio/out/ao_coreaudio.c b/audio/out/ao_coreaudio.c index c64261d64a..7f8949d7d9 100644 --- a/audio/out/ao_coreaudio.c +++ b/audio/out/ao_coreaudio.c @@ -395,7 +395,23 @@ static int init_lpcm(struct ao *ao, AudioStreamBasicDescription asbd) kAudioOutputUnitProperty_CurrentDevice, kAudioUnitScope_Global, 0, &p->device, sizeof(p->device)); - + CHECK_CA_ERROR_L(coreaudio_error_audiounit, + "can't link audio unit to selected device"); + + if (ao->channels.num > 2) { + // No need to set a channel layout for mono and stereo inputs + AudioChannelLayout acl = (AudioChannelLayout) { + .mChannelLayoutTag = kAudioChannelLayoutTag_UseChannelBitmap, + .mChannelBitmap = mp_chmap_to_waveext(&ao->channels) + }; + + err = AudioUnitSetProperty(p->audio_unit, + kAudioUnitProperty_AudioChannelLayout, + kAudioUnitScope_Input, 0, &acl, + sizeof(AudioChannelLayout)); + CHECK_CA_ERROR_L(coreaudio_error_audiounit, + "can't set channel layout bitmap into audio unit"); + } p->buffer = mp_ring_new(p, get_ring_size(ao)); print_buffer(p->buffer); -- cgit v1.2.3