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