forked from len0rd/rockbox
Fix iPod Classic playback slowness
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28989 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
03da54bde2
commit
c7b8d07181
1 changed files with 4 additions and 3 deletions
|
@ -41,6 +41,7 @@ static const int zerosample = 0;
|
||||||
static unsigned char dblbuf[WATERMARK * 4] IBSS_ATTR;
|
static unsigned char dblbuf[WATERMARK * 4] IBSS_ATTR;
|
||||||
struct dma_lli lli[(CHUNKSIZE - WATERMARK + LLIMAX - 1) / LLIMAX + 1]
|
struct dma_lli lli[(CHUNKSIZE - WATERMARK + LLIMAX - 1) / LLIMAX + 1]
|
||||||
__attribute__((aligned(16)));
|
__attribute__((aligned(16)));
|
||||||
|
struct dma_lli* lastlli;
|
||||||
static const unsigned char* dataptr;
|
static const unsigned char* dataptr;
|
||||||
static size_t remaining;
|
static size_t remaining;
|
||||||
|
|
||||||
|
@ -75,7 +76,6 @@ void INT_DMAC0C0(void)
|
||||||
}
|
}
|
||||||
uint32_t lastsize = MIN(WATERMARK * 4, remaining);
|
uint32_t lastsize = MIN(WATERMARK * 4, remaining);
|
||||||
remaining -= lastsize;
|
remaining -= lastsize;
|
||||||
struct dma_lli* lastlli;
|
|
||||||
if (remaining) lastlli = &lli[ARRAYLEN(lli) - 1];
|
if (remaining) lastlli = &lli[ARRAYLEN(lli) - 1];
|
||||||
else lastlli = lli;
|
else lastlli = lli;
|
||||||
uint32_t chunksize = MIN(CHUNKSIZE * 4 - lastsize, remaining);
|
uint32_t chunksize = MIN(CHUNKSIZE * 4 - lastsize, remaining);
|
||||||
|
@ -155,11 +155,12 @@ void pcm_dma_apply_settings(void)
|
||||||
|
|
||||||
size_t pcm_get_bytes_waiting(void)
|
size_t pcm_get_bytes_waiting(void)
|
||||||
{
|
{
|
||||||
int bytes = remaining + (DMAC0C0LLI.control & 0xfff) * 2;
|
int bytes = remaining;
|
||||||
const struct dma_lli* lli = DMAC0C0LLI.nextlli;
|
const struct dma_lli* lli = &DMAC0C0LLI;
|
||||||
while (lli)
|
while (lli)
|
||||||
{
|
{
|
||||||
bytes += (lli->control & 0xfff) * 2;
|
bytes += (lli->control & 0xfff) * 2;
|
||||||
|
if (lli == lastlli) break;
|
||||||
lli = lli->nextlli;
|
lli = lli->nextlli;
|
||||||
}
|
}
|
||||||
return bytes;
|
return bytes;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue