add multi-channel audio support
This commit is contained in:
1 parent
28e2f13e87
commit
cd9ef74f3f
1 file changed
+31
-4
@@ -334,15 +334,41 @@ void ArCleanup(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AudioEngineInit(int sampleRate, int channelCount) {
|
void AudioEngineInit(int sampleRate, int channelCount) {
|
||||||
|
|
||||||
audioEngine = [[AVAudioEngine alloc] init];
|
audioEngine = [[AVAudioEngine alloc] init];
|
||||||
audioPlayerNode = [[AVAudioPlayerNode alloc] init];
|
audioPlayerNode = [[AVAudioPlayerNode alloc] init];
|
||||||
|
|
||||||
[audioEngine attachNode:audioPlayerNode];
|
[audioEngine attachNode:audioPlayerNode];
|
||||||
|
|
||||||
audioFormat = [[AVAudioFormat alloc] initWithCommonFormat:AVAudioPCMFormatFloat32
|
AVAudioChannelLayout *layout;
|
||||||
sampleRate:sampleRate
|
|
||||||
channels:channelCount
|
switch (channelCount) {
|
||||||
interleaved:NO];
|
case 2:
|
||||||
|
default:
|
||||||
|
audioFormat = [[AVAudioFormat alloc] initWithCommonFormat:AVAudioPCMFormatFloat32
|
||||||
|
sampleRate:sampleRate
|
||||||
|
channels:channelCount
|
||||||
|
interleaved:NO];
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
layout =
|
||||||
|
[[AVAudioChannelLayout alloc] initWithLayoutTag:kAudioChannelLayoutTag_MPEG_5_1_A];
|
||||||
|
audioFormat = [[AVAudioFormat alloc] initWithCommonFormat:AVAudioPCMFormatFloat32
|
||||||
|
sampleRate:sampleRate
|
||||||
|
interleaved:NO
|
||||||
|
channelLayout:layout];
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
layout =
|
||||||
|
[[AVAudioChannelLayout alloc] initWithLayoutTag:kAudioChannelLayoutTag_MPEG_7_1_A];
|
||||||
|
audioFormat = [[AVAudioFormat alloc] initWithCommonFormat:AVAudioPCMFormatFloat32
|
||||||
|
sampleRate:sampleRate
|
||||||
|
interleaved:NO
|
||||||
|
channelLayout:layout];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!audioFormat) return;
|
||||||
|
|
||||||
[audioEngine connect:audioPlayerNode to:audioEngine.mainMixerNode format:audioFormat];
|
[audioEngine connect:audioPlayerNode to:audioEngine.mainMixerNode format:audioFormat];
|
||||||
|
|
||||||
@@ -350,6 +376,7 @@ void AudioEngineInit(int sampleRate, int channelCount) {
|
|||||||
if (![audioEngine startAndReturnError:&err]) {
|
if (![audioEngine startAndReturnError:&err]) {
|
||||||
NSLog(@"AudioEngine start error: %@", err);
|
NSLog(@"AudioEngine start error: %@", err);
|
||||||
}
|
}
|
||||||
|
|
||||||
[audioPlayerNode play];
|
[audioPlayerNode play];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user