OSDN Git Service

CallbackDataSource: return bytes read instead of eos on short read
authorRobert Shih <robertshih@google.com>
Tue, 15 Dec 2015 23:22:04 +0000 (15:22 -0800)
committerRobert Shih <robertshih@google.com>
Tue, 15 Dec 2015 23:28:14 +0000 (15:28 -0800)
Bug: 25800374
Change-Id: I17af28f85d68dc964179dda8ddf8874c02f202a5

media/libstagefright/CallbackDataSource.cpp

index e17fdf8..4c0a578 100644 (file)
@@ -64,7 +64,7 @@ ssize_t CallbackDataSource::readAt(off64_t offset, void* data, size_t size) {
             mIDataSource->readAt(offset + totalNumRead, numToRead);
         // A negative return value represents an error. Pass it on.
         if (numRead < 0) {
-            return numRead;
+            return numRead == ERROR_END_OF_STREAM && totalNumRead > 0 ? totalNumRead : numRead;
         }
         // A zero return value signals EOS. Return the bytes read so far.
         if (numRead == 0) {