IMediaSource: fix local MediaBufferGroup refcount

Bug: 31526329
Change-Id: Ib596454e1c224e135dd51f95b0182f86d9e76f55
(cherry picked from commit 9996d9d39618b89d0f85c98b8036f003290f0d7e)
diff --git a/media/libmedia/IMediaSource.cpp b/media/libmedia/IMediaSource.cpp
index 5289c5f..595bad9 100644
--- a/media/libmedia/IMediaSource.cpp
+++ b/media/libmedia/IMediaSource.cpp
@@ -412,11 +412,11 @@
                     reply->writeInt32(offset);
                     reply->writeInt32(length);
                     buf->meta_data()->writeToParcel(*reply);
-                    if (transferBuf == buf) {
-                        buf->addRemoteRefcount(1);
-                        if (!supportNonblockingRead()) {
-                            maxNumBuffers = 0; // stop readMultiple with one shared buffer.
-                        }
+                    transferBuf->addRemoteRefcount(1);
+                    if (transferBuf != buf) {
+                        transferBuf->release(); // release local ref
+                    } else if (!supportNonblockingRead()) {
+                        maxNumBuffers = 0; // stop readMultiple with one shared buffer.
                     }
                 } else {
                     ALOGV_IF(buf->mMemory != nullptr,