Iphone 操作音频缓冲区中的数据';s mData

Iphone 操作音频缓冲区中的数据';s mData,iphone,objective-c,ios,audio,Iphone,Objective C,Ios,Audio,我是iOS编程新手,我正在使用以下代码: 基本上,我从麦克风获取输入,并将其直接发送到扬声器/耳机。但是,我想在扬声器中播放音频之前对其进行处理 我想访问和操作类型为void*的mData,我想我必须将它转换为其他类型 下面是我的代码: SInt16* samples = (SInt16*)(tempBuffer.mData); //cast to something usable for ( int i = 0; i < tempBuffer.mDataByteSize; i++ )

我是iOS编程新手,我正在使用以下代码:

基本上,我从麦克风获取输入,并将其直接发送到扬声器/耳机。但是,我想在扬声器中播放音频之前对其进行处理

我想访问和操作类型为
void*
的mData,我想我必须将它转换为其他类型

下面是我的代码:

SInt16* samples = (SInt16*)(tempBuffer.mData); //cast to something usable

for ( int i = 0; i < tempBuffer.mDataByteSize; i++ )
{
    NSLog(@"%@", *(samples+i));
}
SInt16*样本=(SInt16*)(tempBuffer.mData)//投下有用的东西
对于(int i=0;i
我甚至不确定通过指针访问数据的最佳方式是什么。我有一些来自学校的C++指针的经验,但是我不确定ObjuleC中是否有任何不同(我只是用这个代码得到了<强> ExbBADIAccess )。
谢谢。

使用RemoteIO音频单元时,您可以将AudioUnitSetProperty与kAudioUnitProperty\u StreamFormat一起使用,以设置音频采样帧所需的数据类型和格式。然后,由于您设置了数据类型,因此在从回调缓冲区读取样本时,您将知道要使用的类型(强制转换)


还要注意,缓冲区中的短整数或短浮点数小于字节数(使用Apple的C数据类型)。

好的,我想我现在有了<代码>mFormatFlags=kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked
因此我使用
int32\t
作为数据。谢谢:)我刚刚为我的项目发布了另一个问题。也许你也有答案?:)