каждый раз, когда вызывается функция обратного вызова аудиоустройства, я получаю другое количество выборок, что странно, потому что NSLog(@"%ld",inNumberFrames);
дает мне всегда 512.
, когда я делаю это:
NSLog(@"%li",strlen((const char *)(&bufferList)->mBuffers[0].mData));
я получаю такие числа, как: 50 20 19 160 200 1 ...
, что странно.при каждом обратном вызове я должен получить полный буфер 512 сэмплов, нет?
я знаю, что не получаю все необходимые сэмплы, потому что, если я введу sin 2 кГц, я получу пересечение нуля около 600, и если я ничего не положу, ig и тому же.
для извлечения данных, которые я делаю:
static OSStatus recordingCallback(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
{
AudioBuffer buffer;
buffer.mNumberChannels = 1;
buffer.mDataByteSize = inNumberFrames * 2;
//NSLog(@"%ld",inNumberFrames);
buffer.mData = malloc( inNumberFrames * 2 );
// Put buffer in a AudioBufferList
AudioBufferList bufferList;
bufferList.mNumberBuffers = 1;
bufferList.mBuffers[0] = buffer;
OSStatus status;
status = AudioUnitRender(audioUnit,
ioActionFlags,
inTimeStamp,
inBusNumber,
inNumberFrames,
&bufferList);
//checkStatus(status);
NSLog(@"%li",strlen((const char *)(&bufferList)->mBuffers[0].mData));
int16_t *q = (int16_t *)(&bufferList)->mBuffers[0].mData;
for(int i=0; i < strlen((const char *)(&bufferList)->mBuffers[0].mData); i++)
{
....
любая помощь с этим сэкономит мне дни!спасибо.