Domanda

Attualmente SDL_Mixer ha due tipi di risorse audio: blocchi e musica.

Oltre alle limitazioni dell'API e dei formati supportati, ci sono ragioni per non caricare e riprodurre musica come un SDL_Chunk e un canale ? (memoria, velocità, ecc.)

È stato utile?

Soluzione

L'API è il vero problema. La "musica" Le API sono progettate per gestire lo streaming di musica compressa, mentre il "suono" Le API non lo sono. Poi di nuovo, se riesci a farlo funzionare nella tua app, allora funziona.

Altri suggerimenti

Non ho guardato il codice SDL, ma la mia ipotesi sarebbe il "pezzi" " sono destinati a campioni sonori più piccoli e sono memorizzati nella cache, decodificati, nella loro interezza mentre la "musica" viene trasmesso in streaming (non memorizzato nella memoria nella sua interezza, ma decodificato e bufferizzato in base alle esigenze, con il presupposto che, per la maggior parte, verrà riprodotto dall'inizio e continuamente da quel punto, con forse un po 'ripristinato all'inizio di tanto in tanto)

Quindi il motivo è la memoria. Non vuoi decodificare, diciamo, 4 minuti di un brano stereo a 16 bit in memoria, poiché consumerà 44100Hz * 2bytes * 2channels * 4minutes * 60sec / min == 42336000 byte se lo provi, quando puoi decodificare e buffer di pezzi più piccoli.

OTOH, se hai ~ 10 Mb di RAM al minuto di musica da sprecare e hai bisogno della CPU che verrebbe consumata dalla decodifica al volo ... probabilmente potresti usare blocchi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top