Я работаю над передачей аудио в iPhone в форме, где я могу передать ее алгоритму анализа (C ++).Есть, конечно, много вариантов: учебник AudioQueue на trailsinthes и запускает процесс.
Аудио обратный вызов, тем не менее, дает AudioQueueRef
, и я нахожу документацию Apple тонкойна этой стороне вещей.Встроенные методы для записи в файл, но ничего, где вы на самом деле заглядываете внутрь пакетов, чтобы увидеть данные.
Мне нужны данные.Я не хочу ничего записывать в файл, к чему, похоже, стремятся все учебные пособия - и даже объекты удобства ввода-вывода Apple.AVAudioRecorder
от Apple (в бешенстве) даст вам уровни и запишет данные, но на самом деле не даст вам доступа к ним.Если я что-то упустил ...
Как это сделать?В приведенном ниже коде есть inBuffer->mAudioData
, который очень заманчиво близок, но я не могу найти информацию о том, в каком формате находятся эти «данные» или как получить к ним доступ.
Обратный вызов AudioQueue:
void AudioInputCallback(void *inUserData,
AudioQueueRef inAQ,
AudioQueueBufferRef inBuffer,
const AudioTimeStamp *inStartTime,
UInt32 inNumberPacketDescriptions,
const AudioStreamPacketDescription *inPacketDescs)
{
static int count = 0;
RecordState* recordState = (RecordState*)inUserData;
AudioQueueEnqueueBuffer(recordState->queue, inBuffer, 0, NULL);
++count;
printf("Got buffer %d\n", count);
}
И код для записи аудио в файл:
OSStatus status = AudioFileWritePackets(recordState->audioFile,
false,
inBuffer->mAudioDataByteSize,
inPacketDescs,
recordState->currentPacket,
&inNumberPacketDescriptions,
inBuffer->mAudioData); // THIS! This is what I want to look inside of.
if(status == 0)
{
recordState->currentPacket += inNumberPacketDescriptions;
}