Кто-нибудь знает, почему я не могу использовать kAudioFormatFlagIsFloat вместо kAudioFormatFlagIsSignedInteger для AudioStreamBasicDescription? - PullRequest
1 голос
/ 08 августа 2009

Почему это работает?

- (void)setupAudioFormat:(AudioStreamBasicDescription*)format 
{
    format->mSampleRate = 44100;
    format->mFormatID = kAudioFormatLinearPCM;
    format->mFramesPerPacket = 1;
    format->mChannelsPerFrame = 1;
    format->mBytesPerFrame = 2;
    format->mBytesPerPacket = 2;
    format->mBitsPerChannel = 32;
    format->mReserved = 0;

    format->mFormatFlags = kLinearPCMFormatFlagIsBigEndian |
    kLinearPCMFormatFlagIsSignedInteger |
    kLinearPCMFormatFlagIsPacked;
}

но когда я изменяю mFormatFlag, это не так, и я получаю kAudioFileUnsupportedDataFormatError.

format->mFormatFlags = kAudioFormatFlagIsFloat |
    kLinearPCMFormatFlagIsBigEndian |
    kAudioFormatFlagIsPacked;

Я получаю сообщение об ошибке при вызове ...

OSStatus    status = AudioQueueNewInput(&recordState.dataFormat,
                        AudioInputCallback,
                        self,
                        CFRunLoopGetCurrent(),
                            kCFRunLoopCommonModes,
                        0,
                        &recordState.queue);

Я уверен, что проблема заключается в флагах формата, поскольку ошибка возникает, только когда я пытаюсь использовать флаг с плавающей запятой, какие-либо идеи, как его обойти?

Большое спасибо.

Ответы [ 2 ]

1 голос
/ 09 августа 2009

Простой, но трудный для ответа и занял много часов, но, похоже, не поддерживается поплавки. Спасибо.

0 голосов
/ 21 апреля 2019

Принятый ответ может быть верным для iOS 2.x, но для любого недавнего (64-разрядного) устройства iOS 32-разрядные числа с плавающей запятой фактически являются собственным форматом для образцов Audio Unit.

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