Ich habe nicht auf den SDL-Code geschaut, aber meine Vermutung wäre, dass die "Chunks" für kleinere Soundsamples gedacht sind und vollständig im Speicher zwischengespeichert werden, während die "Musik" gestreamt wird (nicht vollständig im Speicher zwischengespeichert, aber je nach Bedarf decodiert und gepuffert, mit der Annahme, dass es größtenteils von Anfang an und kontinuierlich von diesem Punkt an abgespielt wird, wobei einige gelegentlich wieder auf den Anfang zurückgestellt werden)
Der Grund ist Speicher. Du willst nicht sagen, 4 Minuten eines 16-Bit-Stereo-Songs in den Speicher zu entschlüsseln, da es 44100Hz * 2bytes * 2channels * 4minutes * 60sec/min = 42366000 byte beim Versuch, dekodieren und dekadieren lässt puffern kleinere Stücke davon.
OTOH, wenn Sie die ~ 10MB RAM pro Minute Musik zu verschwenden haben und Sie die CPU benötigen, die von der on-the-fly Dekodierung verbraucht würde ... könnten Sie wahrscheinlich Brocken verwenden.
Also, mit großen Sound-Musik-Dateien, die Musik-API ist schneller zu laden als die Sound-API ...? – luiscubal
Ich denke schon. Es ist eine Weile her, seit ich mit SDL_Mixer gearbeitet habe. Ich dachte nur, ich würde versuchen, etwas beizutragen, da niemand sonst irgendwas hier beantwortet ... –
Ich glaube nicht, dass es darum geht, schneller zu laden, ich denke, es geht darum, Speicher zu sparen. Roh-PCM-Daten sind sehr teuer. Einen Musikstream zu dekomprimieren und zu spielen, ist rechenintensiver als nur das Abspielen, aber er spart viel Platz. – notlesh