diff options
| author | 2010-01-15 15:28:19 -0800 | |
|---|---|---|
| committer | 2010-01-19 10:57:57 -0800 | |
| commit | f1fe064d735698b09e4bc7b3a10e4dc3dba9a1d9 (patch) | |
| tree | 1d8e2e0a407c8a11184c8a8e7a9f05847c03b00c /media/libmedia/IOMX.cpp | |
| parent | 0a2d8709e4badeeb892b325c1b6fd52ad16f9c7d (diff) | |
Avoid unnecessary buffer copying if at all possible, detect if running in the mediaserver process.
Diffstat (limited to 'media/libmedia/IOMX.cpp')
| -rw-r--r-- | media/libmedia/IOMX.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/media/libmedia/IOMX.cpp b/media/libmedia/IOMX.cpp index b43e48fe8591..277bce167d99 100644 --- a/media/libmedia/IOMX.cpp +++ b/media/libmedia/IOMX.cpp @@ -12,6 +12,7 @@ namespace android { enum { CONNECT = IBinder::FIRST_CALL_TRANSACTION, + LIVES_LOCALLY, LIST_NODES, ALLOCATE_NODE, FREE_NODE, @@ -75,6 +76,15 @@ public: : BpInterface<IOMX>(impl) { } + virtual bool livesLocally(pid_t pid) { + Parcel data, reply; + data.writeInterfaceToken(IOMX::getInterfaceDescriptor()); + data.writeInt32(pid); + remote()->transact(LIVES_LOCALLY, data, &reply); + + return reply.readInt32() != 0; + } + virtual status_t listNodes(List<ComponentInfo> *list) { list->clear(); @@ -369,6 +379,14 @@ IMPLEMENT_META_INTERFACE(OMX, "android.hardware.IOMX"); status_t BnOMX::onTransact( uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags) { switch (code) { + case LIVES_LOCALLY: + { + CHECK_INTERFACE(IOMX, data, reply); + reply->writeInt32(livesLocally((pid_t)data.readInt32())); + + return OK; + } + case LIST_NODES: { CHECK_INTERFACE(IOMX, data, reply); @@ -408,7 +426,7 @@ status_t BnOMX::onTransact( if (err == OK) { reply->writeIntPtr((intptr_t)node); } - + return NO_ERROR; } @@ -419,7 +437,7 @@ status_t BnOMX::onTransact( node_id node = (void*)data.readIntPtr(); reply->writeInt32(freeNode(node)); - + return NO_ERROR; } @@ -631,7 +649,7 @@ status_t BnOMX::onTransact( node_id node = (void*)data.readIntPtr(); const char *parameter_name = data.readCString(); - + OMX_INDEXTYPE index; status_t err = getExtensionIndex(node, parameter_name, &index); |