forked from len0rd/rockbox
Fixed MAC initialization problem with mpa codec and removed workaround
for that bug. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7260 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
43b9cda13c
commit
6b807b2d24
5 changed files with 10 additions and 18 deletions
|
|
@ -29,10 +29,6 @@
|
|||
|
||||
#define MB()
|
||||
|
||||
static inline void mcf5249_init_mac(void) {
|
||||
asm volatile ("move.l #0x20, %macsr;"); /* frac, truncate, no saturation */
|
||||
}
|
||||
|
||||
static inline ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) {
|
||||
|
||||
asm volatile ("mac.l %[x], %[y], %%acc0;" /* multiply & shift */
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#include "system.h"
|
||||
|
||||
#include "ivorbiscodec.h"
|
||||
#include "ivorbisfile.h"
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
#include "playback.h"
|
||||
#include "dsp.h"
|
||||
#include "lib/codeclib.h"
|
||||
#include "system.h"
|
||||
|
||||
struct mad_stream Stream IDATA_ATTR;
|
||||
struct mad_frame Frame IDATA_ATTR;
|
||||
|
|
@ -92,7 +93,10 @@ enum codec_status codec_start(struct codec_api* api)
|
|||
ci->memset(&Frame, 0, sizeof(struct mad_frame));
|
||||
ci->memset(&Synth, 0, sizeof(struct mad_synth));
|
||||
ci->memset(&Timer, 0, sizeof(mad_timer_t));
|
||||
|
||||
|
||||
#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
|
||||
mcf5249_init_mac();
|
||||
#endif
|
||||
mad_stream_init(&Stream);
|
||||
mad_frame_init(&Frame);
|
||||
mad_synth_init(&Synth);
|
||||
|
|
|
|||
|
|
@ -125,6 +125,10 @@ enum {
|
|||
: /* %0 */ "d"(mask), \
|
||||
/* %1 */ "a"(address))
|
||||
|
||||
static inline void mcf5249_init_mac(void) {
|
||||
asm volatile ("move.l #0x20, %macsr;"); /* frac, truncate, no saturation */
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef SIMULATOR
|
||||
|
|
|
|||
|
|
@ -184,19 +184,6 @@ void pcm_play_data(void (*get_more)(unsigned char** start, long* size))
|
|||
|
||||
callback_for_more = get_more;
|
||||
|
||||
/** FIXME: This is a temporary fix to prevent playback glitches when
|
||||
* playing the first file. We will just drop the first frame to prevent
|
||||
* that problem from occurring.
|
||||
* Some debug data:
|
||||
* - This problem will occur only when the first file.
|
||||
* - First frame will be totally corrupt and the song will begin
|
||||
* from the next frame. But at the next time (when the bug has
|
||||
* already happened), the song will start from first frame.
|
||||
* - Dropping some frames directly from (mpa) codec will also
|
||||
* prevent the problem from happening. So it's unlikely you can
|
||||
* find the explanation for this bug from this file.
|
||||
*/
|
||||
get_more((unsigned char **)&start, (long *)&size); // REMOVE THIS TO TEST
|
||||
get_more((unsigned char **)&start, (long *)&size);
|
||||
get_more(&next_start, &next_size);
|
||||
dma_start(start, size);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue