开发者

Manipulating data in AudioBuffer's mData

开发者 https://www.devze.com 2023-03-10 06:31 出处:网络
I’m new to iOS programming and I’m playing around with some code found here: http://code.google.com/p/ios-coreaudio-example/

I’m new to iOS programming and I’m playing around with some code found here: http://code.google.com/p/ios-coreaudio-example/

Basically I’m getting input from the mic and routing it straight to the speakers/headphones. However I want to manipulate the audio before 开发者_Python百科it’s played in the speakers.

I want to access and manipulate mData which is of type void * and I guess I have to cast it to something else.

Now here's my code:

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

for ( int i = 0; i < tempBuffer.mDataByteSize; i++ )
{
    NSLog(@"%@", *(samples+i));
}

I’m not even sure what is the best way to access data through the pointer. I have some experience with C++ pointers from school but I’m not sure if it’s any different in Objective-C (I just get EXC_BAD_ACCESS with this code).

Thanks.


When using the RemoteIO Audio Unit, you can use AudioUnitSetProperty with kAudioUnitProperty_StreamFormat to set the desired data type and format for the audio sample frames. Then, since you set the data type, you will know what type to use (cast) when reading samples from the callback buffer.

Also note that the number of short ints or short floats in a buffer is less than the number of bytes (using Apple's C data types).

0

精彩评论

暂无评论...
验证码 换一张
取 消