- Millors missatges de error en jaudio
- audio::fadeoutmusic() ara dura 500ms - Trampa per a reproduir OGG quan demanen MP3. Llevar quan les sequencies estiguen arreglades. - Iniciem amb soport per a OGG. - [ATENCIÓ] Hi ha un leak cada vegada que se carrega una musica. Arreglar.
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
#include "jaudio.h"
|
#include "jaudio.h"
|
||||||
|
#include "jfile.h"
|
||||||
#include <SDL2/SDL.h>
|
#include <SDL2/SDL.h>
|
||||||
#include <SDL2/SDL_mixer.h>
|
#include <SDL2/SDL_mixer.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -19,7 +20,12 @@ namespace audio
|
|||||||
void init()
|
void init()
|
||||||
{
|
{
|
||||||
// Al final he ficat la configuració automàtica i au. Si en el futur necesitem canviar-ho pos se canvia
|
// Al final he ficat la configuració automàtica i au. Si en el futur necesitem canviar-ho pos se canvia
|
||||||
Mix_OpenAudio(48000, AUDIO_S16, 2, 1024);
|
if (Mix_Init(MIX_INIT_OGG)==0) {
|
||||||
|
printf("Failed Mix_Init()\n");
|
||||||
|
}
|
||||||
|
if (Mix_OpenAudio(48000, AUDIO_S16, 2, 1024)!=0) {
|
||||||
|
printf("Failed Mix_OpenAudio()\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tanca el sistema de só (no shit, sherlock)
|
// Tanca el sistema de só (no shit, sherlock)
|
||||||
@@ -31,13 +37,34 @@ namespace audio
|
|||||||
// Carrega un arxiu de música en format OGG
|
// Carrega un arxiu de música en format OGG
|
||||||
const music *loadMusic(const std::string filename)
|
const music *loadMusic(const std::string filename)
|
||||||
{
|
{
|
||||||
return (music *)Mix_LoadMUS(filename.c_str());
|
size_t index = 0;
|
||||||
|
index = filename.find("mp3", index);
|
||||||
|
std::string peiv(filename);
|
||||||
|
peiv.replace(index, 3, "ogg");
|
||||||
|
|
||||||
|
printf("Loading '%s'...", peiv.c_str());
|
||||||
|
|
||||||
|
int filesize=0;
|
||||||
|
char *buffer = file::getFileBuffer(peiv, filesize);
|
||||||
|
const music* m = (music *)Mix_LoadMUS_RW(SDL_RWFromMem(buffer, filesize), 1);
|
||||||
|
|
||||||
|
// [TODO] ATENCIÓ. Ací leakeja com un burro, algo hi ha que inventar, pero el buffer ha de sobreviure tot el temps que dure la musica viva
|
||||||
|
//free(buffer);
|
||||||
|
|
||||||
|
if (m==nullptr) {
|
||||||
|
printf("FAILED!\n");
|
||||||
|
} else {
|
||||||
|
printf("OK!\n");
|
||||||
|
}
|
||||||
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comença a reproduïr la música en questió
|
// Comença a reproduïr la música en questió
|
||||||
void playMusic(const music *mus, const int loop)
|
void playMusic(const music *mus, const int loop)
|
||||||
{
|
{
|
||||||
Mix_PlayMusic((Mix_Music *)mus, loop);
|
if (Mix_PlayMusic((Mix_Music *)mus, loop) == -1) {
|
||||||
|
printf("Failed Mix_PlayMusic()\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pausa la música que està sonant ara
|
// Pausa la música que està sonant ara
|
||||||
@@ -61,7 +88,7 @@ namespace audio
|
|||||||
// Para la música que estava sonant fent un fade
|
// Para la música que estava sonant fent un fade
|
||||||
void fadeoutMusic()
|
void fadeoutMusic()
|
||||||
{
|
{
|
||||||
Mix_FadeOutMusic(250);
|
Mix_FadeOutMusic(500);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Obté el estat actual de la música
|
// Obté el estat actual de la música
|
||||||
|
|||||||
Reference in New Issue
Block a user