diff options
| author | 2012-01-31 11:27:06 -0800 | |
|---|---|---|
| committer | 2012-01-31 11:27:06 -0800 | |
| commit | 3676974d48f3a4f36c9ab5e79691667f2a79ee7c (patch) | |
| tree | 6f9f133ccf0407c79928cbb84c6d857af066bc17 | |
| parent | 2bb2323d6361cb7f8cb625caa17c6b0b9e9a626f (diff) | |
| parent | f6b4ca408e6690cebfd52badd6f73c01b3c45037 (diff) | |
Merge "Slighly improve the API to discover if the OMX stack is running in the local"
| -rw-r--r-- | include/media/IOMX.h | 4 | ||||
| -rw-r--r-- | media/libmedia/IOMX.cpp | 7 | ||||
| -rw-r--r-- | media/libstagefright/OMXClient.cpp | 8 | ||||
| -rwxr-xr-x | media/libstagefright/OMXCodec.cpp | 2 | ||||
| -rw-r--r-- | media/libstagefright/include/OMX.h | 2 | ||||
| -rw-r--r-- | media/libstagefright/omx/OMX.cpp | 2 |
6 files changed, 14 insertions, 11 deletions
diff --git a/include/media/IOMX.h b/include/media/IOMX.h index c4cc947a8902..a295e9a19281 100644 --- a/include/media/IOMX.h +++ b/include/media/IOMX.h @@ -42,10 +42,10 @@ public: typedef void *buffer_id; typedef void *node_id; - // Given the calling process' pid, returns true iff + // Given a node_id and the calling process' pid, returns true iff // the implementation of the OMX interface lives in the same // process. - virtual bool livesLocally(pid_t pid) = 0; + virtual bool livesLocally(node_id node, pid_t pid) = 0; struct ComponentInfo { String8 mName; diff --git a/media/libmedia/IOMX.cpp b/media/libmedia/IOMX.cpp index d2f5f71b572d..27c7e03b0cd1 100644 --- a/media/libmedia/IOMX.cpp +++ b/media/libmedia/IOMX.cpp @@ -59,9 +59,10 @@ public: : BpInterface<IOMX>(impl) { } - virtual bool livesLocally(pid_t pid) { + virtual bool livesLocally(node_id node, pid_t pid) { Parcel data, reply; data.writeInterfaceToken(IOMX::getInterfaceDescriptor()); + data.writeIntPtr((intptr_t)node); data.writeInt32(pid); remote()->transact(LIVES_LOCALLY, data, &reply); @@ -417,7 +418,9 @@ status_t BnOMX::onTransact( case LIVES_LOCALLY: { CHECK_INTERFACE(IOMX, data, reply); - reply->writeInt32(livesLocally((pid_t)data.readInt32())); + node_id node = (void *)data.readIntPtr(); + pid_t pid = (pid_t)data.readInt32(); + reply->writeInt32(livesLocally(node, pid)); return OK; } diff --git a/media/libstagefright/OMXClient.cpp b/media/libstagefright/OMXClient.cpp index 391add5558bf..7a805aa73afc 100644 --- a/media/libstagefright/OMXClient.cpp +++ b/media/libstagefright/OMXClient.cpp @@ -34,7 +34,7 @@ struct MuxOMX : public IOMX { virtual IBinder *onAsBinder() { return NULL; } - virtual bool livesLocally(pid_t pid); + virtual bool livesLocally(node_id node, pid_t pid); virtual status_t listNodes(List<ComponentInfo> *list); @@ -155,8 +155,8 @@ const sp<IOMX> &MuxOMX::getOMX_l(node_id node) const { return isLocalNode_l(node) ? mLocalOMX : mRemoteOMX; } -bool MuxOMX::livesLocally(pid_t pid) { - return true; +bool MuxOMX::livesLocally(node_id node, pid_t pid) { + return getOMX(node)->livesLocally(node, pid); } status_t MuxOMX::listNodes(List<ComponentInfo> *list) { @@ -326,7 +326,7 @@ status_t OMXClient::connect() { mOMX = service->getOMX(); CHECK(mOMX.get() != NULL); - if (!mOMX->livesLocally(getpid())) { + if (!mOMX->livesLocally(NULL /* node */, getpid())) { ALOGI("Using client-side OMX mux."); mOMX = new MuxOMX(mOMX); } diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp index 7597f642ac50..1f26cbee44b7 100755 --- a/media/libstagefright/OMXCodec.cpp +++ b/media/libstagefright/OMXCodec.cpp @@ -1479,7 +1479,7 @@ OMXCodec::OMXCodec( const sp<MediaSource> &source, const sp<ANativeWindow> &nativeWindow) : mOMX(omx), - mOMXLivesLocally(omx->livesLocally(getpid())), + mOMXLivesLocally(omx->livesLocally(node, getpid())), mNode(node), mQuirks(quirks), mFlags(flags), diff --git a/media/libstagefright/include/OMX.h b/media/libstagefright/include/OMX.h index 53e764fd504b..2c87b34e42a8 100644 --- a/media/libstagefright/include/OMX.h +++ b/media/libstagefright/include/OMX.h @@ -31,7 +31,7 @@ class OMX : public BnOMX, public: OMX(); - virtual bool livesLocally(pid_t pid); + virtual bool livesLocally(node_id node, pid_t pid); virtual status_t listNodes(List<ComponentInfo> *list); diff --git a/media/libstagefright/omx/OMX.cpp b/media/libstagefright/omx/OMX.cpp index 694b12d8279b..ace883c7f6b5 100644 --- a/media/libstagefright/omx/OMX.cpp +++ b/media/libstagefright/omx/OMX.cpp @@ -185,7 +185,7 @@ void OMX::binderDied(const wp<IBinder> &the_late_who) { instance->onObserverDied(mMaster); } -bool OMX::livesLocally(pid_t pid) { +bool OMX::livesLocally(node_id node, pid_t pid) { return pid == getpid(); } |