@@ -102,21 +102,23 @@ - (AVAudioFormat *)processingFormatForSourceFormat:(AVAudioFormat *)sourceFormat
102
102
// Use WAVFORMATEX channel order
103
103
AVAudioChannelLayout *channelLayout = nil ;
104
104
105
- AudioChannelBitmap channelBitmap = 0 ;
106
- UInt32 propertySize = sizeof (channelBitmap);
107
- AudioChannelLayoutTag layoutTag = sourceFormat.channelLayout .layoutTag ;
108
- OSStatus result = AudioFormatGetProperty (kAudioFormatProperty_BitmapForLayoutTag , sizeof (layoutTag), &layoutTag, &propertySize, &channelBitmap);
109
- if (result == noErr ) {
110
- AudioChannelLayout acl = {
111
- .mChannelLayoutTag = kAudioChannelLayoutTag_UseChannelBitmap ,
112
- .mChannelBitmap = channelBitmap,
113
- .mNumberChannelDescriptions = 0
114
- };
115
- channelLayout = [[AVAudioChannelLayout alloc ] initWithLayout: &acl];
105
+ if (sourceFormat.channelLayout != nil ) {
106
+ AudioChannelBitmap channelBitmap = 0 ;
107
+ UInt32 propertySize = sizeof (channelBitmap);
108
+ AudioChannelLayoutTag layoutTag = sourceFormat.channelLayout .layoutTag ;
109
+ OSStatus result = AudioFormatGetProperty (kAudioFormatProperty_BitmapForLayoutTag , sizeof (layoutTag), &layoutTag, &propertySize, &channelBitmap);
110
+ if (result == noErr ) {
111
+ AudioChannelLayout acl = {
112
+ .mChannelLayoutTag = kAudioChannelLayoutTag_UseChannelBitmap ,
113
+ .mChannelBitmap = channelBitmap,
114
+ .mNumberChannelDescriptions = 0
115
+ };
116
+ channelLayout = [[AVAudioChannelLayout alloc ] initWithLayout: &acl];
117
+ }
118
+ // TODO: Use WavPack channel identities as a fallback?
119
+ else
120
+ os_log_info (gSFBAudioEncoderLog , " AudioFormatGetProperty(kAudioFormatProperty_BitmapForLayoutTag), layoutTag = %d failed: %d '%{public}.4s'" , layoutTag, result, SFBCStringForOSType (result));
116
121
}
117
- // TODO: Use WavPack channel identities as a fallback?
118
- else
119
- os_log_info (gSFBAudioEncoderLog , " AudioFormatGetProperty(kAudioFormatProperty_BitmapForLayoutTag), layoutTag = %d failed: %d '%{public}.4s'" , layoutTag, result, SFBCStringForOSType (result));
120
122
121
123
return [[AVAudioFormat alloc ] initWithStreamDescription: &streamDescription channelLayout: channelLayout];
122
124
}
0 commit comments