4

現在、SDL_Mixer には、チャンクと音楽の 2 種類のサウンド リソースがあります。

API とサポートされているフォーマットの制限以外に、音楽を SDL_Chunk と channel として読み込んで再生しない理由はありますか? (メモリ、速度など)

4

2 に答える 2

1

APIが本当の問題です。「音楽」APIは、圧縮された音楽のストリーミングを処理するように設計されていますが、「サウンド」APIはそうではありません。繰り返しになりますが、アプリで機能させることができれば、機能します。

于 2009-03-09T18:09:42.230 に答える
1

私は SDL コードを見ていませんが、私の推測では、「チャンク」は小さなサウンド サンプルを対象としており、「音楽」がストリーミングされている間に全体がメモリにキャッシュされ、デコードされます (メモリにキャッシュされません)。その全体ですが、必要に応じてデコードおよびバッファリングされます。ほとんどの場合、最初から再生され、その時点から継続的に再生され、場合によっては最初にリセットされることもあります)

その理由はメモリです。たとえば、16 ビット ステレオ ソングの 4 分間をメモリにデコードしたくない場合、44100Hz * 2bytes * 2channels *4minutes *60sec/min == 42336000 バイトを消費します。それの小さな断片をバッファリングします。

OTOH、音楽の 1 分間あたり最大 10Mb の RAM を無駄にする必要があり、オンザフライのデコードによって消費される CPU が必要な場合は、おそらくチャンクを使用できます。

于 2009-03-13T05:12:12.583 に答える