X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=psp%2Fmp3.c;h=c1e608939e22ba7e8e1eb5817114429c693705ed;hb=93c18cb44bf9794c7c9bc93411c68880723320d1;hp=db3e39dbfc6e9033a0984b1aa1f9798137ab359b;hpb=93c0d147a19160bcf970edac8d0e27f93537ae8d;p=libpicofe.git diff --git a/psp/mp3.c b/psp/mp3.c index db3e39d..c1e6089 100644 --- a/psp/mp3.c +++ b/psp/mp3.c @@ -11,8 +11,8 @@ #include #include -#include "../../Pico/PicoInt.h" -#include "../../Pico/sound/mix.h" +#include "../../pico/pico_int.h" +#include "../../pico/sound/mix.h" #include "../common/lprintf.h" int mp3_last_error = 0; @@ -373,6 +373,9 @@ void mp3_start_play(FILE *f, int pos) mp3_fname = fname; } + // clear decoder state + sceAudiocodecInit(mp3_codec_struct, 0x1002); + // seek.. mp3_src_pos = (int) (((float)pos / 1023.0f) * (float)mp3_src_size); sceIoLseek32(mp3_handle, mp3_src_pos, PSP_SEEK_SET); @@ -460,7 +463,7 @@ int mp3_get_offset(void) // 0-1023 unsigned int offs1024 = 0; int cdda_on; - cdda_on = (PicoMCD & 1) && (PicoOpt&0x800) && !(Pico_mcd->s68k_regs[0x36] & 1) && + cdda_on = (PicoAHW & PAHW_MCD) && (PicoOpt&0x800) && !(Pico_mcd->s68k_regs[0x36] & 1) && (Pico_mcd->scd.Status_CDC & 1) && mp3_handle >= 0; if (cdda_on) { @@ -473,3 +476,17 @@ int mp3_get_offset(void) // 0-1023 } +void mp3_reopen_file(void) +{ + if (mp3_fname == NULL) return; + lprintf("mp3_reopen_file(%s)\n", mp3_fname); + + // try closing, just in case + if (mp3_handle >= 0) sceIoClose(mp3_handle); + + mp3_handle = sceIoOpen(mp3_fname, PSP_O_RDONLY, 0777); + if (mp3_handle >= 0) + sceIoLseek32(mp3_handle, mp3_src_pos, PSP_SEEK_SET); + lprintf("mp3_reopen_file %s\n", mp3_handle >= 0 ? "ok" : "failed"); +} +