2012-01-04 16 views
0

を与えている、私はこれを行うときNSLog(@"%ld",inNumberFrames);は私に常に512機能は、オーディオユニットのたびにコールバック関数が呼び出されている不安定なバッファリストに

を与えるので、奇妙であるサンプルの別の番号を取得コールバックremoteIO:

NSLog(@"%li",strlen((const char *)(&bufferList)->mBuffers[0].mData)); 

私は、次のような数字を取得:奇妙である50 20 19 160 200 1 ...

を。 各コールバック、私は512サンプルのフルバッファを取得する必要がありますか?

私はsin 2khzを入力すると約600のゼロクロスを得て、何も置かなければi g etは同じなので、必要なサンプルをすべて得ることはできません。これで任意のヘルプは日私を保存します

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); 

    // Put buffer in a AudioBufferList 
    AudioBufferList bufferList; 
    bufferList.mNumberBuffers = 1; 
    bufferList.mBuffers[0] = buffer; 



    OSStatus status; 
    status = AudioUnitRender(audioUnit, 
          ioActionFlags, 
          inTimeStamp, 
          inBusNumber, 
          inNumberFrames, 
          &bufferList); 
    //checkStatus(status); 
    NSLog(@"%li",strlen((const char *)(&bufferList)->mBuffers[0].mData)); 
    int16_t *q = (int16_t *)(&bufferList)->mBuffers[0].mData; 
    for(int i=0; i < strlen((const char *)(&bufferList)->mBuffers[0].mData); i++) 
    { 
     .... 

:私は、データを取得するための

!ありがとう。

+0

バッファで 'strlen'を使用しているのはなぜですか? –

+0

どうすればよいですか?この行のデータを取得する手助けはできますか? – Curnelious

+1

バッファは固定サイズ(inNumberFrames)なので、それに応じて反復処理します。 –

答えて

0

オーディオサンプルバッファのstrlen()は、サンプル数に関連してではないです。代わりに、コールバック関数のパラメータとして与えられたフレームの数を見てください。

関連する問題