5.1 PCMは、2チャネルに効果的にミックスダウンされるようにすでにエンコードされている場合があります。その場合は、5.1チャンネルを無視して、2チャンネルのように扱うことができるはずです。これが事実であるが、5.1 PCMのすべてのトレースを取り除く必要がある場合は、2チャンネル出力で正しく再生するのではなく、最初に5.1チャンネルデコーダーライブラリを使用する必要があります。
実際に本物の5.1チャンネルでエンコードされた出力がある場合は、次のようになります。
for(i = 0; i < buffer_end; i += 6) {
front_left = buffer[i + 0];
front_right = buffer[i + 1];
center = buffer[i + 2];
lfe = buffer[i + 3]; // (sub-woofer)
back_left = buffer[i + 4];
back_right = buffer[i + 5];
}
その場合、ミックスダウンは次のようになります。
left = (front_left + back_left)/2 + (lfe + front_center)/4;
right = (front_right + back_right)/2 + (lfe + front_center)/4;
これは同じ方法でインターリーブされます。
output_buffer[i] = left;
output_buffer[i + 1] = right;
目的の結果と制約に応じて、ミックスダウンを実行するさまざまな方法があることに注意してください。しかし、それはワームの缶全体です。
また、その仕事に本当に適切なツールを使用しているかどうかを自問する必要があります。これらすべてを行うライブラリが存在し、ALSA自体はすでにかなり洗練されたミキシングが可能です。その他の解決策については、こちらをご覧ください:http: //www.halfgaar.net/surround-sound-in-linux