1

2 つのオーディオ ファイルをミキシングすると、このコードでは一方のサウンドがステレオ サウンドとして扱われ、もう一方のサウンドがモノラルとして扱われます。なぜですか? 両方ともステレオとして扱われないのはなぜですか?

 @property (readwrite)           AudioStreamBasicDescription stereoStreamFormat;
 @property (readwrite)           AudioStreamBasicDescription monoStreamFormat;

オーディオファイルのチェックはこんな感じ。

 if ((inputDataFormat.mFormatID == kAudioFormatLinearPCM) &&
    (inputDataFormat.mSampleRate == 44100.0) &&
    (inputDataFormat.mChannelsPerFrame == 2) &&
    (inputDataFormat.mChannelsPerFrame == 2) &&
    (inputDataFormat.mBitsPerChannel == 16) &&
    (inputDataFormat.mFormatFlags == (kAudioFormatFlagsNativeEndian |
                                      kAudioFormatFlagIsPacked | kAudioFormatFlagIsSignedInteger))
    ) {
    // no-op when the expected data format is found
} else {
    status = kAudioFileUnsupportedFileTypeError;
    goto reterr;
}

そのデータ形式が検出されたときに、no-op 条件がトリガーされるのはなぜですか?

4

1 に答える 1

0

2つのオーディオをミックスすると、このコードは、一方のサウンドがステレオサウンドとして扱われ、もう一方のサウンドがモノラルとして扱われることを示しています。それはなぜですか。

これは、使用しているライブラリの実装の詳細です。

なぜ両方をステレオとして扱うことができないのですか?

信号の「/ストリーム」データを複製するためのサポートコードを記述した場合、それらは確かに可能です。通常、これを行わ、代わりに(元の作成者が行ったように)区別を保持するため、レンダリングチェーンがレンダリングまたはファイルサイズを2倍にすることはありません。

そのデータ形式が検出されたときに、何も動作しない状態が存在するのはなぜですか?

それはまさに作家の書き方です。その式はいくつかの方法で書くことができます。

于 2012-09-27T00:26:04.670 に答える