From 24e2bb34385b645415721e04371c45d8cb541d25 Mon Sep 17 00:00:00 2001 From: Jörg Hohensohn Date: Mon, 8 Mar 2004 20:14:04 +0000 Subject: loops have not been OK, were showing one frame more than available git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4351 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/video.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'apps/plugins/video.c') diff --git a/apps/plugins/video.c b/apps/plugins/video.c index fa1e453744..c2117adab3 100644 --- a/apps/plugins/video.c +++ b/apps/plugins/video.c @@ -374,6 +374,7 @@ void timer4_isr(void) // IMIA4 if (gBuf.bEOF && (gFileHdr.flags & FLAG_LOOP)) { // loop now, assuming the looped clip fits in memory gBuf.pReadVideo = gBuf.pBufStart + gFileHdr.video_1st_frame; + // FixMe: pReadVideo is incremented below } else { @@ -382,11 +383,13 @@ void timer4_isr(void) // IMIA4 return; // no data available } } - - gBuf.pReadVideo += gFileHdr.blocksize; - if (gBuf.pReadVideo >= gBuf.pBufEnd) - gBuf.pReadVideo -= gBuf.bufsize; // wraparound - available -= gFileHdr.blocksize; + else // normal advance for next time + { + gBuf.pReadVideo += gFileHdr.blocksize; + if (gBuf.pReadVideo >= gBuf.pBufEnd) + gBuf.pReadVideo -= gBuf.bufsize; // wraparound + available -= gFileHdr.blocksize; + } if (!gPlay.bHasAudio) break; // no need to skip any audio @@ -425,7 +428,7 @@ void GetMoreMp3(unsigned char** start, int* size) if (!gBuf.bEOF && available < gStats.minAudioAvail) gStats.minAudioAvail = available; - if (available < advance + gFileHdr.blocksize || advance == 0) + if (available < advance + (int)gFileHdr.blocksize || advance == 0) { gPlay.bAudioUnderrun = true; return; // no data available -- cgit