开发者社区> 问答> 正文

AudioUnit请教?报错

@xikan 你好,想跟你请教个问题:

typedef struct MyAUGraphStruct{

<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    AUGraph graph;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    AudioUnit remoteIOUnit;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	} MyAUGraphStruct;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	<br>
</p>
<p style="font-size:18px;font-family:Menlo;color:#D28F5A;">
	#define BUFFER_COUNT 15
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	<br>
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	MyAUGraphStruct myStruct;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	<br>
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	AudioBuffer recordedBuffers[BUFFER_COUNT];//Used to save audio data
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	int         currentBufferPointer;//Pointer to the current buffer
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	int         callbackCount;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	<br>
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	static void CheckError(OSStatus error, const char *operation)
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	{
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    if (error == noErr) return;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    char errorString[20];
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	    // See if it appears to be a 4-char-code
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    *(UInt32 *)(errorString + 1) = CFSwapInt32HostToBig(error);
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    if (isprint(errorString[1]) && isprint(errorString[2]) &&
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	        isprint(errorString[3]) && isprint(errorString[4])) {
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	        errorString[0] = errorString[5] = '\'';
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	        errorString[6] = '\0';
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    } else
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	        // No, format it as an integer
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	        sprintf(errorString, "%d", (int)error);
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    fprintf(stderr, "Error: %s (%s)\n", operation, errorString);
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    exit(1);
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	}
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	<br>
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	OSStatus InputCallback(void *inRefCon,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                       AudioUnitRenderActionFlags *ioActionFlags,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                       const AudioTimeStamp *inTimeStamp,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                       UInt32 inBusNumber,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                       UInt32 inNumberFrames,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                       AudioBufferList *ioData){
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	    //TODO: implement this function
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    MyAUGraphStruct* myStruct = (MyAUGraphStruct*)inRefCon;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	//    Get samples from input bus(bus 1)
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    CheckError(AudioUnitRender(myStruct->remoteIOUnit,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                               ioActionFlags,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                               inTimeStamp,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                               1,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                               inNumberFrames,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                               ioData),
</p>
<p style="font-size:18px;font-family:Menlo;color:#E44448;">
	               "AudioUnitRender failed");
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	    //save audio to ring buffer and load from ring buffer
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    AudioBuffer buffer = ioData->mBuffers[0];
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    recordedBuffers[currentBufferPointer].mNumberChannels = buffer.mNumberChannels;
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    recordedBuffers[currentBufferPointer].mDataByteSize = buffer.mDataByteSize;
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    free(recordedBuffers[currentBufferPointer].mData);
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    recordedBuffers[currentBufferPointer].mData = malloc(sizeof(SInt16)*buffer.mDataByteSize);
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    memcpy(recordedBuffers[currentBufferPointer].mData,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	           buffer.mData,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	           buffer.mDataByteSize);
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    currentBufferPointer = (currentBufferPointer+1)%BUFFER_COUNT;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    if (callbackCount>=BUFFER_COUNT) {
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	        memcpy(buffer.mData,
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	               recordedBuffers[currentBufferPointer].mData,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	               buffer.mDataByteSize);
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    }
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    NSLog(@"%d",buffer.mDataByteSize);
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	<br>
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    NSLog(@"%d",buffer.mData);
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    callbackCount++;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    return noErr;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	}
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	<br>
</p>
<p style="font-size:18px;font-family:Menlo;color:#C2349B;">
	@implementation HZAuidoUnit
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	<a class="referer" target="_blank">@synthesize</a>  streamFormat;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	- (void)initUnit{
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    currentBufferPointer = 0;
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    callbackCount = 0;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    [self setupSession];
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    [self createAUGraph:&myStruct];
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    [self setupRemoteIOUnit:&myStruct];
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    [self startGraph:myStruct.graph];
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	}
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	<br>
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	-(void)openOrCloseEchoCancellation{
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    UInt32 echoCancellation = 1;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    UInt32 size = sizeof(echoCancellation);
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    CheckError(AudioUnitGetProperty(myStruct.remoteIOUnit,
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	                                    kAUVoiceIOProperty_BypassVoiceProcessing,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    kAudioUnitScope_Global,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    0,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    &echoCancellation,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    &size),
</p>
<p style="font-size:18px;font-family:Menlo;color:#E44448;">
	               "kAUVoiceIOProperty_BypassVoiceProcessing failed");
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	}
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	<br>
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	-(void)startGraph:(AUGraph)graph{
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    CheckError(AUGraphInitialize(graph),
</p>
<p style="font-size:18px;font-family:Menlo;color:#E44448;">
	               "AUGraphInitialize failed");
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    CheckError(AUGraphStart(graph),
</p>
<p style="font-size:18px;font-family:Menlo;color:#E44448;">
	               "AUGraphStart failed");
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	}
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	<br>
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	-(void)setupRemoteIOUnit:(MyAUGraphStruct*)myStruct{
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	    //Open input of the bus 1(input mic)
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    UInt32 enableFlag = 1;
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    CheckError(AudioUnitSetProperty(myStruct->remoteIOUnit,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    kAudioOutputUnitProperty_EnableIO,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    kAudioUnitScope_Input,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    1,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    &enableFlag,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    sizeof(enableFlag)),
</p>
<p style="font-size:18px;font-family:Menlo;color:#E44448;">
	               "Open input of bus 1 failed");
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	//    Open output of bus 0(output speaker)
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    CheckError(AudioUnitSetProperty(myStruct->remoteIOUnit,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    kAudioOutputUnitProperty_EnableIO,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    kAudioUnitScope_Output,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    0,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    &enableFlag,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    sizeof(enableFlag)),
</p>
<p style="font-size:18px;font-family:Menlo;color:#E44448;">
	               "Open output of bus 0 failed");
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	    //Set up stream format for input and output
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    streamFormat.mFormatID = kAudioFormatLinearPCM;
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    streamFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    streamFormat.mSampleRate = 8000.00;
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    streamFormat.mFramesPerPacket = 1;
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    streamFormat.mBytesPerFrame = 2 ;
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    streamFormat.mBytesPerPacket = 2;
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    streamFormat.mBitsPerChannel = 16;
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    streamFormat.mChannelsPerFrame = 1;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    CheckError(AudioUnitSetProperty(myStruct->remoteIOUnit,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    kAudioUnitProperty_StreamFormat,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    kAudioUnitScope_Input,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    0,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    &streamFormat,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    sizeof(streamFormat)),
</p>
<p style="font-size:18px;font-family:Menlo;color:#E44448;">
	               "kAudioUnitProperty_StreamFormat of bus 0 failed");
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    CheckError(AudioUnitSetProperty(myStruct->remoteIOUnit,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    kAudioUnitProperty_StreamFormat,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    kAudioUnitScope_Output,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    1,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    &streamFormat,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    sizeof(streamFormat)),
</p>
<p style="font-size:18px;font-family:Menlo;color:#E44448;">
	               "kAudioUnitProperty_StreamFormat of bus 1 failed");
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	    //Set up input callback
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    AURenderCallbackStruct input;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    input.inputProc = InputCallback;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    input.inputProcRefCon = myStruct;
</p>
<p style="font-size:18px;font-family:Menlo;color:#93C86A;">
	    CheckError(AudioUnitSetProperty(myStruct->remoteIOUnit,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    kAudioUnitProperty_SetRenderCallback,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    kAudioUnitScope_Global,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    0,//input mic
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    &input,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                                    sizeof(input)),
</p>
<p style="font-size:18px;font-family:Menlo;color:#E44448;">
	               "kAudioUnitProperty_SetRenderCallback failed");
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	}
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	<br>
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	-(void)createAUGraph:(MyAUGraphStruct*)myStruct{
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	    //Create graph
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    CheckError(NewAUGraph(&myStruct->graph),
</p>
<p style="font-size:18px;font-family:Menlo;color:#E44448;">
	               "NewAUGraph failed");
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	    //Create nodes and add to the graph
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	    //Set up a RemoteIO for synchronously playback
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    AudioComponentDescription inputcd = {0};
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    inputcd.componentType = kAudioUnitType_Output;
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	    //inputcd.componentSubType = kAudioUnitSubType_RemoteIO;
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	    //we can access the system's echo cancellation by using kAudioUnitSubType_VoiceProcessingIO subtype
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    inputcd.componentSubType = kAudioUnitSubType_VoiceProcessingIO;
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    inputcd.componentManufacturer = kAudioUnitManufacturer_Apple;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    inputcd.componentFlags = 0;
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    inputcd.componentFlagsMask = 0;
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    AUNode remoteIONode;
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	    //Add node to the graph
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    CheckError(AUGraphAddNode(myStruct->graph,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                              &inputcd,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                              &remoteIONode),
</p>
<p style="font-size:18px;font-family:Menlo;color:#E44448;">
	               "AUGraphAddNode failed");
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	    //Open the graph
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    CheckError(AUGraphOpen(myStruct->graph),
</p>
<p style="font-size:18px;font-family:Menlo;color:#E44448;">
	               "AUGraphOpen failed");
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#4CBF57;">
	    //Get reference to the node
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    CheckError(AUGraphNodeInfo(myStruct->graph,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                               remoteIONode,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                               &inputcd,
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	                               &myStruct->remoteIOUnit),
</p>
<p style="font-size:18px;font-family:Menlo;color:#E44448;">
	               "AUGraphNodeInfo failed");
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	}
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	<br>
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	-(void)createRemoteIONodeToGraph:(AUGraph*)graph{
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	}
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	<br>
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	-(void)setupSession{
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    AVAudioSession* session = [AVAudioSession sharedInstance];
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    [session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
</p>
<p style="font-size:18px;font-family:Menlo;color:#00AFCA;">
	    [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	    [session setActive:YES error:nil];
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	}
</p>
<p style="font-size:18px;font-family:Menlo;color:#FFFFFF;">
	<br>
</p>

本来是44100的采样率 改为8000 报错,请教

展开
收起
爱吃鱼的程序员 2020-06-09 14:16:03 582 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    感激不尽

    2020-06-09 14:16:21
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载