diff options
| author | Miika Pekkarinen <miipekk@ihme.org> | 2005-07-10 16:33:03 +0000 |
|---|---|---|
| committer | Miika Pekkarinen <miipekk@ihme.org> | 2005-07-10 16:33:03 +0000 |
| commit | 645a2e16ed645c30858e3b494ba2ff7d00b7a09b (patch) | |
| tree | be5da24477ae465c77342947de6ef73c57505e0d /apps/codecs.c | |
| parent | a9203b4d8352d9de761c5baf95314ff189242ec0 (diff) | |
| download | rockbox-645a2e16ed645c30858e3b494ba2ff7d00b7a09b.zip rockbox-645a2e16ed645c30858e3b494ba2ff7d00b7a09b.tar.gz rockbox-645a2e16ed645c30858e3b494ba2ff7d00b7a09b.tar.bz2 rockbox-645a2e16ed645c30858e3b494ba2ff7d00b7a09b.tar.xz | |
Fixed a simulator crash while trying to play a song. Fixed crossfade
when selecting a new track to play. Most likely fixed a bug which
caused playback to stop on track change.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7094 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs.c')
| -rw-r--r-- | apps/codecs.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/apps/codecs.c b/apps/codecs.c index 400e7fb..dd87ddf 100644 --- a/apps/codecs.c +++ b/apps/codecs.c @@ -56,8 +56,9 @@ #if CONFIG_HWCODEC == MASNONE static unsigned char codecbuf[CODEC_SIZE]; #endif -void *sim_codec_load(char *plugin, int *fd); -void sim_codec_close(int fd); +void *sim_codec_load_ram(char* codecptr, int size, + void* ptr2, int bufwrap, int *pd); +void sim_codec_close(int pd); #else #define sim_codec_close(x) extern unsigned char codecbuf[]; @@ -245,11 +246,12 @@ struct codec_api ci = { memchr, }; -int codec_load_ram(char* codecptr, size_t size, void* ptr2, size_t bufwrap) +int codec_load_ram(char* codecptr, int size, void* ptr2, int bufwrap) { enum codec_status (*codec_start)(const struct codec_api* api); - int copy_n; int status; +#ifndef SIMULATOR + int copy_n; if ((char *)&codecbuf[0] != codecptr) { /* zero out codec buffer to ensure a properly zeroed bss area */ @@ -265,8 +267,19 @@ int codec_load_ram(char* codecptr, size_t size, void* ptr2, size_t bufwrap) } codec_start = (void*)&codecbuf; +#else /* SIMULATOR */ + int pd; + + codec_start = sim_codec_load_ram(codecptr, size, ptr2, bufwrap, &pd); + if (pd < 0) + return CODEC_ERROR; +#endif /* SIMULATOR */ + invalidate_icache(); status = codec_start(&ci); +#ifdef SIMULATOR + sim_codec_close(pd); +#endif return status; } @@ -294,7 +307,7 @@ int codec_load_file(const char *plugin) logf("Codec read error"); return CODEC_ERROR; } - + return codec_load_ram(codecbuf, (size_t)rc, NULL, 0); } |