2012-01-02 7 views
0

バッファサンプルを読み込むためにこのコードがありますが、私は奇妙なmach-oリンカエラー のフレームワークを読み込めませんでしたので、audioTollBoxとcoreAudioを私は読む。 私のコードは次のとおりです。オーディオでエラーが発生しましたユニットコード-remoteIO for iphone

#define kOutputBus 0 
#define kInputBus 1 
AudioComponentInstance audioUnit; 



@implementation remoteIO 


//callback function : 

    static OSStatus recordingCallback(void *inRefCon, 
             AudioUnitRenderActionFlags *ioActionFlags, 
             const AudioTimeStamp *inTimeStamp, 
             UInt32 inBusNumber, 
             UInt32 inNumberFrames, 
             AudioBufferList *ioData) 
    { 
     AudioBuffer buffer; 

     buffer.mNumberChannels = 1; 
     buffer.mDataByteSize = inNumberFrames * 2; 
     NSLog(@"%ld",inNumberFrames); 
     buffer.mData = malloc(inNumberFrames * 2); 


     AudioBufferList bufferList; 
     bufferList.mNumberBuffers = 1; 
     bufferList.mBuffers[0] = buffer; 



     OSStatus status; 
     status = AudioUnitRender(audioUnit, 
           ioActionFlags, 
           inTimeStamp, 
           inBusNumber, 
           inNumberFrames, 
           &bufferList); 
     checkStatus(status);      //here is the warnning+error 
     double *q = (double *)(&bufferList)->mBuffers[0].mData; 
     for(int i=0; i < strlen((const char *)(&bufferList)->mBuffers[0].mData); i++) 
     { 

      NSLog(@"%f",q[i]); 
     } 
    } 

と読み取り方法:

-(void)startListeningWithFrequency:(float)freq; 
{ 
    OSStatus status; 

    AudioComponentDescription desc; 
    desc.componentType = kAudioUnitType_Output; 
    desc.componentSubType = kAudioUnitSubType_RemoteIO; 
    desc.componentFlags = 0; 
    desc.componentFlagsMask = 0; 
    desc.componentManufacturer = kAudioUnitManufacturer_Apple; 

    AudioComponent inputComponent = AudioComponentFindNext(NULL, &desc); 
    status = AudioComponentInstanceNew(inputComponent, &audioUnit); 
    checkStatus(status); 

    UInt32 flag = 1; 
    status = AudioUnitSetProperty(audioUnit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input,kInputBus, &flag, sizeof(flag)); 
    checkStatus(status); 

    AudioStreamBasicDescription audioFormat; 
    audioFormat.mSampleRate   = 44100.00;//44100.00; 
    audioFormat.mFormatID   = kAudioFormatLinearPCM; 
    audioFormat.mFormatFlags  = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked; 
    audioFormat.mFramesPerPacket = 1; 
    audioFormat.mChannelsPerFrame = 1; 
    audioFormat.mBitsPerChannel  = 16; 
    audioFormat.mBytesPerPacket  = 2; 
    audioFormat.mBytesPerFrame  = 2; 

    status = AudioUnitSetProperty(audioUnit, 
            kAudioUnitProperty_StreamFormat, 
            kAudioUnitScope_Output, 
            kInputBus, 
            &audioFormat, 
            sizeof(audioFormat)); 
    checkStatus(status); 

    checkStatus(status); 
    AURenderCallbackStruct callbackStruct; 
    callbackStruct.inputProc = recordingCallback; 
    callbackStruct.inputProcRefCon = self; 
    status = AudioUnitSetProperty(audioUnit, 
            kAudioOutputUnitProperty_SetInputCallback, 
            kAudioUnitScope_Global, 
            kInputBus, &callbackStruct, sizeof(callbackStruct)); 
    checkStatus(status); 

    status = AudioOutputUnitStart(audioUnit); 

} 

と私は何を取得するには、このエラーとwarnningです:

Undefined symbols for architecture i386: 
    "_checkStatus", referenced from: 
     _recordingCallback in remoteIO.o 
     -[remoteIO startListeningWithFrequency:] in remoteIO.o 
ld: symbol(s) not found for architecture i386 
collect2: ld returned 1 exit status 

いただきました!ここで間違って、?ありがとう。

+0

お願い誰でも ?私はこのオーディオの事から私の心を失っている!私はすべてのCheckStatus(ステータス)行を取り出すと、コンパイルできることがわかりました。私は何が欠けているのですか?私はすべてのフレームワークを置いた、なぜ彼はこのcheckStatusの事を認識できない? – Curnelious

+0

私は今、checkStatusという言葉がリンゴの文書全体に言及されていないことを知ることができます。一度ではありません。どのようなオーディオドキュメントでも、そのような機能はありません。そしてすべてのオーディオガイドでは、ここにあるすべてのポスト、どこでも、それらはすべて、このcheckStatus(ステータス)関数を使用していました。 – Curnelious

答えて

0

あなた自身のcheckStatus()関数は何をしているのか(例えば、ダイアログボックス、コンソール出力、分析ログ、クラッシュダンプなどのエラーを報告する方法)オーディオコードからの戻り値を除いて、各アプリケーションに固有です。

+0

私は自分のコードから取り出しました - checkStatusはありませんでした。私の質問は、私はサンプルから取得する必要がある番号は何ですか?私は-32700〜+32700の間になります。それは大丈夫ですか? – Curnelious

関連する問題