2009-08-08 49 views
1

這爲什麼有效?任何人都知道爲什麼我不能使用kAudioFormatFlagIsFloat而不是kAudioFormatFlagIsSignedInteger來獲取AudioStreamBasicDescription?

- (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; 

我打電話時recieving錯誤...

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

我相信問題出在格式標記,當我嘗試使用浮動標誌,任何想法的錯誤僅發生如何解決它?

非常感謝。

+0

您陳述了導致錯誤的變化常量,但由於您沒有真正指定您正在做什麼,因此幾乎不可能給您的答案超過猜測。你打電話給哪個功能實際上會導致你的錯誤。 – 2009-08-08 17:27:19

+0

謝謝,我已更新該帖子 – Chris 2009-08-08 19:46:33

回答

1

很簡單,但很難回答,並花了很多時間,但它看起來像浮動不支持。謝謝。

相關問題