diff options
-rw-r--r-- | include/media/IStreamSource.h | 6 | ||||
-rw-r--r-- | media/libmedia/IStreamSource.cpp | 16 |
2 files changed, 22 insertions, 0 deletions
diff --git a/include/media/IStreamSource.h b/include/media/IStreamSource.h index 19646b0..61b9d5a 100644 --- a/include/media/IStreamSource.h +++ b/include/media/IStreamSource.h @@ -33,6 +33,12 @@ struct IStreamSource : public IInterface { virtual void setBuffers(const Vector<sp<IMemory> > &buffers) = 0; virtual void onBufferAvailable(size_t index) = 0; + + enum { + // Video PES packets contain exactly one (aligned) access unit. + kFlagAlignedVideoData = 1, + }; + virtual uint32_t flags() const { return 0; } }; struct IStreamListener : public IInterface { diff --git a/media/libmedia/IStreamSource.cpp b/media/libmedia/IStreamSource.cpp index 078be94..78d810d 100644 --- a/media/libmedia/IStreamSource.cpp +++ b/media/libmedia/IStreamSource.cpp @@ -37,6 +37,7 @@ enum { SET_LISTENER = IBinder::FIRST_CALL_TRANSACTION, SET_BUFFERS, ON_BUFFER_AVAILABLE, + FLAGS, // IStreamListener QUEUE_BUFFER, @@ -72,6 +73,14 @@ struct BpStreamSource : public BpInterface<IStreamSource> { remote()->transact( ON_BUFFER_AVAILABLE, data, &reply, IBinder::FLAG_ONEWAY); } + + virtual uint32_t flags() const { + Parcel data, reply; + data.writeInterfaceToken(IStreamSource::getInterfaceDescriptor()); + remote()->transact(FLAGS, data, &reply); + + return reply.readInt32(); + } }; IMPLEMENT_META_INTERFACE(StreamSource, "android.hardware.IStreamSource"); @@ -109,6 +118,13 @@ status_t BnStreamSource::onTransact( break; } + case FLAGS: + { + CHECK_INTERFACE(IStreamSource, data, reply); + reply->writeInt32(this->flags()); + break; + } + default: return BBinder::onTransact(code, data, reply, flags); } |