我在編輯多通道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通道編碼?
這是一個有趣的可能性,但我本來以爲在ExtAudioFileCreateWithURL會發生的錯誤,當我通過在一個12通道ASBD,或者使用12通道佈局設置kExtAudioFileProperty_FileChannelLayout屬性。 – Tim
看起來像編碼功能檢查kALACMaxChannels的確是8. – Tim
對於'ExtAudioFileCreateWithURL'來驗證它的參數是有意義的。我會提交一個錯誤。 – sbooth