現在、SDL_Mixer には、チャンクと音楽の 2 種類のサウンド リソースがあります。
API とサポートされているフォーマットの制限以外に、音楽を SDL_Chunk と channel として読み込んで再生しない理由はありますか? (メモリ、速度など)
APIが本当の問題です。「音楽」APIは、圧縮された音楽のストリーミングを処理するように設計されていますが、「サウンド」APIはそうではありません。繰り返しになりますが、アプリで機能させることができれば、機能します。
私は SDL コードを見ていませんが、私の推測では、「チャンク」は小さなサウンド サンプルを対象としており、「音楽」がストリーミングされている間に全体がメモリにキャッシュされ、デコードされます (メモリにキャッシュされません)。その全体ですが、必要に応じてデコードおよびバッファリングされます。ほとんどの場合、最初から再生され、その時点から継続的に再生され、場合によっては最初にリセットされることもあります)
その理由はメモリです。たとえば、16 ビット ステレオ ソングの 4 分間をメモリにデコードしたくない場合、44100Hz * 2bytes * 2channels *4minutes *60sec/min == 42336000 バイトを消費します。それの小さな断片をバッファリングします。
OTOH、音楽の 1 分間あたり最大 10Mb の RAM を無駄にする必要があり、オンザフライのデコードによって消費される CPU が必要な場合は、おそらくチャンクを使用できます。