マルチチャンネルの Apple Lossless ファイルの特定の構成のエンコードに問題があります。2、4、および 6 チャネル構成では問題ありませんが、12 チャネル ファイルの生成で問題が発生しています。
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 チャンネルのセットアップで適切に機能しているので、問題はないと思います。また、64 ビット浮動小数点数の代わりに 32 ビット符号付き整数を使用してみましたが、結果は同じです。
何が欠けているのかわかりません。Apple Lossless コーデックが 12 チャンネルのエンコーディングをサポートしていない可能性はありますか?