IDataSource: add getFlags() to expose DataSource::flags().
This will let MPEG4Extractor cache stbl data. Therefore it can avoid data
flushing in data source (NuCachedSource2) due to reading stbl and access
unit data alternatively when the stream is larger than max cache size.
Bug: 26533748
Change-Id: Ia534755ab9130e4dcee94d53ca3c933d1b9eb566
diff --git a/media/libmedia/IDataSource.cpp b/media/libmedia/IDataSource.cpp
index 76d1d68..ac864a4 100644
--- a/media/libmedia/IDataSource.cpp
+++ b/media/libmedia/IDataSource.cpp
@@ -32,6 +32,7 @@
READ_AT,
GET_SIZE,
CLOSE,
+ GET_FLAGS,
};
struct BpDataSource : public BpInterface<IDataSource> {
@@ -68,6 +69,13 @@
data.writeInterfaceToken(IDataSource::getInterfaceDescriptor());
remote()->transact(CLOSE, data, &reply);
}
+
+ virtual uint32_t getFlags() {
+ Parcel data, reply;
+ data.writeInterfaceToken(IDataSource::getInterfaceDescriptor());
+ remote()->transact(GET_FLAGS, data, &reply);
+ return reply.readUint32();
+ }
};
IMPLEMENT_META_INTERFACE(DataSource, "android.media.IDataSource");
@@ -100,6 +108,11 @@
close();
return NO_ERROR;
} break;
+ case GET_FLAGS: {
+ CHECK_INTERFACE(IDataSource, data, reply);
+ reply->writeUint32(getFlags());
+ return NO_ERROR;
+ } break;
default:
return BBinder::onTransact(code, data, reply, flags);
}