Fix for b/4173948 - video & audio hang after multiple seeks

Resolves the problem of the file offset being set to a large
value if readAt returns an error instead of number of bytes
read.  I haven't been able to repro the failure yet since
putting in this fix, so we still need to confirm that the player
recovers correctly when the server error occurs.

Change-Id: I963191144835a89310ad1b0ea0863dd536dff564
This commit is contained in:
Jeffrey Tinker
2011-03-29 07:44:43 -07:00
parent 18617b93c6
commit 93d87df37a

View File

@@ -50,24 +50,15 @@ void WVMFileSource::Seek(unsigned long long offset)
size_t WVMFileSource::Read(size_t amount, unsigned char *buffer) size_t WVMFileSource::Read(size_t amount, unsigned char *buffer)
{ {
size_t result = mDataSource->readAt(mOffset, buffer, amount); ssize_t result = mDataSource->readAt(mOffset, buffer, amount);
#if 0 if (result < 0) {
// debug code - log packets to files LOGE("mDataSource-readAt returned error %d\n", (int)result );
char filename[32]; result = 0;
static int counter = 0; } else {
sprintf(filename, "/data/wv/buf%d", counter++); mOffset += result;
FILE *f = fopen(filename, "w");
if (!f)
LOGE("WVMFileSource: can't open %s", filename);
else {
fwrite(buffer, amount, 1, f);
fclose(f);
} }
LOGD("WVMFileSource::Read(%d bytes to buf=%p)", amount, buffer);
#endif
mOffset += result;
return result; return result;
} }