Управление данными в mData AudioBuffer - PullRequest
0 голосов
/ 05 июня 2011

Я новичок в программировании на iOS и играю с кодом, найденным здесь: http://code.google.com/p/ios-coreaudio-example/

В основном, я получаю вход от микрофона и перенаправляю его прямо на динамики / наушники. Однако я хочу манипулировать аудио до его воспроизведения в динамиках.

Я хочу получить доступ и манипулировать mData типа void *, и, думаю, мне нужно привести его к чему-то другому.

Теперь вот мой код:

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 с этим кодом).

Спасибо.

1 Ответ

1 голос
/ 05 июня 2011

При использовании Аудиоустройства RemoteIO вы можете использовать AudioUnitSetProperty с kAudioUnitProperty_StreamFormat, чтобы установить желаемый тип данных и формат для кадров аудиосэмпла.Затем, поскольку вы устанавливаете тип данных, вы будете знать, какой тип использовать (приведение) при чтении выборок из буфера обратного вызова.

Также обратите внимание, что число коротких целых или коротких операций с плавающей точкой в ​​буфере меньшеколичество байтов (с использованием типов данных Apple C).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...