我是iOS编程的新手,我正在玩这里的一些代码:http://code.google.com/p/ios-coreaudio-example/
基本上我从麦克风输入并将其直接传送到扬声器/耳机。但是我想在扬声器播放之前操纵音频。
我想访问和操作类型为void *
的mData,我想我必须将其转换为其他内容。
现在这是我的代码:
SInt16* samples = (SInt16*)(tempBuffer.mData); //cast to something usable
for ( int i = 0; i < tempBuffer.mDataByteSize; i++ )
{
NSLog(@"%@", *(samples+i));
}
我甚至不确定通过指针访问数据的最佳方法是什么。我对从学校的C ++指针有一些经验,但我不确定它在Objective-C中是否有任何不同(我只是使用此代码获得 EXC_BAD_ACCESS )。
感谢。
答案 0 :(得分:1)
使用RemoteIO音频单元时,可以将AudioUnitSetProperty与kAudioUnitProperty_StreamFormat配合使用,为音频样本帧设置所需的数据类型和格式。然后,由于您设置了数据类型,因此在从回调缓冲区中读取样本时,您将知道要使用哪种类型(强制转换)。
另请注意,缓冲区中的短整数或短浮点数小于字节数(使用Apple的C数据类型)。