2013-10-01 41 views
0

我在編輯多通道Apple Lossless文件的某些配置時遇到了一些麻煩。我沒有2,4,6通道配置的問題,但是我在生成12通道文件時遇到了麻煩。設置ClientDataFormat時出錯

使用ExtAudioFile API,我可以使用12通道AudioStreamBasicDescription和12通道FileChannelLayout創建音頻文件。當設置12通道ClientDataFormat(在設置客戶端佈局之前完成,顯然也失敗)時,我得到「fmt?」錯誤代碼。

我的ClientDataFormat的AudioStreamBasicDescription生成如下:

AudioStreamBasicDescription asbd; 

asbd.mSampleRate = m_sampleRate; 
asbd.mFormatID = kAudioFormatLinearPCM; 
asbd.mFormatFlags = kAudioFormatFlagIsFloat; 
asbd.mBytesPerPacket = m_channels * 64/8; 
asbd.mBytesPerFrame = asbd.mBytesPerPacket; 
asbd.mFramesPerPacket = 1; 
asbd.mBitsPerChannel = 64; 
asbd.mChannelsPerFrame = m_channels; 
asbd.mReserved = 0; 

採樣速率爲176.4 kHz和m_channels設置是否正確。這正常工作了2,第4和6聲道設置,所以我不認爲這是錯誤的。我一直在使用32位也試着bit有符號整數而不是64位浮點數,但結果是一樣的。

我不知道我錯過了什麼。它是possi ble Apple Lossless編解碼器不支持12通道編碼?

回答

1

我不知道某些如果在MacOSForge規範是明確的,但根據http://alac.macosforge.org/trac/browser/trunk/ReadMe.txt

3. From one to eight channels are supported. Channel orders for the supported formats are described as: 
      Num Chan  Order 
      1    mono 
      2    stereo (Left, Right) 
      3    MPEG 3.0 B (Center, Left, Right) 
      4    MPEG 4.0 B (Center, Left, Right, Center Surround) 
      5    MPEG 5.0 D (Center, Left, Right, Left Surround, Right Surround) 
      6    MPEG 5.1 D (Center, Left, Right, Left Surround, Right Surround, Low Frequency Effects) 
      7    Apple AAC 6.1 (Center, Left, Right, Left Surround, Right Surround, Center Surround, Low Frequency Effects) 
      8    MPEG 7.1 B (Center, Left Center, Right Center, Left, Right, Left Surround, Right Surround, Low Frequency Effects) 
+0

這是一個有趣的可能性,但我本來以爲在ExtAudioFileCreateWithURL會發生的錯誤,當我通過在一個12通道ASBD,或者使用12通道佈局設置kExtAudioFileProperty_FileChannelLayout屬性。 – Tim

+0

看起來像編碼功能檢查kALACMaxChannels的確是8. – Tim

+0

對於'ExtAudioFileCreateWithURL'來驗證它的參數是有意義的。我會提交一個錯誤。 – sbooth