@@ -40,9 +40,15 @@ - (instancetype)initWithChannel:(int)channel isEcho:(BOOL)isEcho
4040 return nil ;
4141
4242 AudioStreamBasicDescription outStreamDes;
43- outStreamDes.mSampleRate = 48000 ;
43+ if (@available (iOS 18.0 , *)) {
44+ outStreamDes.mSampleRate = 48000 ;
45+ outStreamDes.mFormatFlags = kAudioFormatFlagIsSignedInteger |kAudioFormatFlagIsPacked ;
46+
47+ }else {
48+ outStreamDes.mSampleRate = 16000 ;
49+ outStreamDes.mFormatFlags = kAudioFormatFlagIsSignedInteger ;
50+ }
4451 outStreamDes.mFormatID = kAudioFormatLinearPCM ;
45- outStreamDes.mFormatFlags = kAudioFormatFlagIsSignedInteger |kAudioFormatFlagIsPacked ;
4652 outStreamDes.mFramesPerPacket = 1 ;
4753 outStreamDes.mChannelsPerFrame = channel;
4854 outStreamDes.mBitsPerChannel = 16 ;
@@ -126,17 +132,18 @@ static OSStatus record_callback(void *inRefCon, AudioUnitRenderActionFlags *ioAc
126132 UInt32 bufferSize = list.mBuffers [0 ].mDataByteSize ;
127133 uint8_t *bufferData = (uint8_t *)list.mBuffers [0 ].mData ;
128134// NSLog(@"record_callback__________size : %d", bufferSize);
135+ if (@available (iOS 18.0 , *)) {
136+ UInt32 bufferData16Size = 0 ;
137+ [r resample48000To16000_Linear: (int16_t *)bufferData output: (int16_t *)bufferData16 inputFrames: bufferSize outputFrames: &bufferData16Size];
138+ [r addData: &pcm_circularBuffer :bufferData16 :bufferData16Size];
139+ if (r->callback )
140+ r->callback (bufferData16, bufferData16Size, r->user );
141+ }else {
142+ [r addData: &pcm_circularBuffer :bufferData :bufferSize];
143+ if (r->callback )
144+ r->callback (bufferData, bufferSize, r->user );
145+ }
129146
130-
131- UInt32 bufferData16Size = 0 ;
132- [r resample48000To16000_Linear: (int16_t *)bufferData output: (int16_t *)bufferData16 inputFrames: bufferSize outputFrames: &bufferData16Size];
133- [r addData: &pcm_circularBuffer :bufferData16 :bufferData16Size];
134- if (r->callback )
135- r->callback (bufferData16, bufferData16Size, r->user );
136-
137- // [r addData:&pcm_circularBuffer :bufferData :bufferSize];
138- // if (r->callback)
139- // r->callback(bufferData, bufferSize, r->user);
140147 return error;
141148}
142149
0 commit comments