【问题标题】:remoteIO call back function is giving unstable buffer listremoteIO 回调函数给出不稳定的缓冲区列表
【发布时间】:2012-01-04 11:13:11
【问题描述】:

每次调用音频单元的回调函数时,我都会得到另一个数量的样本,这很奇怪,因为NSLog(@"%ld",inNumberFrames); 总是给我 512。

当我这样做时:

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

我得到的数字如:50 20 19 160 200 1 ...

这很奇怪。 每次回调,我必须得到完整的缓冲区 512 个样本没有?

我知道我没有得到所有需要的样本,因为如果我输入一个 sin 2khz,我会得到大约 600 的零交叉,如果我什么都不放,我会得到同样的结果。

我要检索数据:

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++)
    {
         ....

对此的任何帮助都会节省我的时间! 谢谢。

【问题讨论】:

  • 你为什么在缓冲区中使用strlen ???
  • 那我应该用什么?你能帮我检索这一行中的数据吗?
  • 您的缓冲区是固定大小(inNumberFrames),因此只需进行相应的迭代。
  • 根据苹果他们不是,因此我应该 malloc 他们..
  • 是的,你 malloc 他们,但他们的大小随后不会改变。

标签: objective-c xcode core-audio


【解决方案1】:

音频样本缓冲区的 strlen() 与样本数无关。相反,请查看作为回调函数参数给出的帧数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    相关资源
    最近更新 更多