Fix MP3Extractor

When the temp buffer wraps around, the next read position should start
from what have been read to avoid reading the same remaining bytes in
the buffer again.

o also fix some of the formatting string for logging

bug - 3482444

Change-Id: Ie0b56f4691ff9e80a48a57f1b7d0d28c78cfb313
This commit is contained in:
James Dong
2011-02-24 09:16:43 -08:00
parent 7b76c8d3fc
commit 563ab6ec5e

View File

@@ -217,7 +217,7 @@ static bool Resync(
*inout_pos += len;
LOGV("skipped ID3 tag, new starting offset is %ld (0x%08lx)",
LOGV("skipped ID3 tag, new starting offset is %lld (0x%016llx)",
*inout_pos, *inout_pos);
}
@@ -241,7 +241,7 @@ static bool Resync(
do {
if (pos >= *inout_pos + kMaxBytesChecked) {
// Don't scan forever.
LOGV("giving up at offset %ld", pos);
LOGV("giving up at offset %lld", pos);
break;
}
@@ -251,7 +251,15 @@ static bool Resync(
} else {
memcpy(buf, tmp, remainingBytes);
bytesToRead = kMaxReadBytes - remainingBytes;
totalBytesRead = source->readAt(pos, buf + remainingBytes, bytesToRead);
/*
* The next read position should start from the end of
* the last buffer, and thus should include the remaining
* bytes in the buffer.
*/
totalBytesRead = source->readAt(pos + remainingBytes,
buf + remainingBytes,
bytesToRead);
if (totalBytesRead <= 0) {
break;
}
@@ -283,7 +291,7 @@ static bool Resync(
continue;
}
LOGV("found possible 1st frame at %ld (header = 0x%08x)", pos, header);
LOGV("found possible 1st frame at %lld (header = 0x%08x)", pos, header);
// We found what looks like a valid frame,
// now find its successors.
@@ -314,7 +322,7 @@ static bool Resync(
break;
}
LOGV("found subsequent frame #%d at %ld", j + 2, test_pos);
LOGV("found subsequent frame #%d at %lld", j + 2, test_pos);
test_pos += test_frame_size;
}