Avoid unnecessary buffer copying if at all possible, detect if running in the mediaserver process.
diff --git a/include/media/IOMX.h b/include/media/IOMX.h
index 39bd5b1..d38c177 100644
--- a/include/media/IOMX.h
+++ b/include/media/IOMX.h
@@ -42,6 +42,11 @@
     typedef void *buffer_id;
     typedef void *node_id;
 
+    // Given 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;
+
     struct ComponentInfo {
         String8 mName;
         List<String8> mRoles;
diff --git a/include/media/stagefright/OMXCodec.h b/include/media/stagefright/OMXCodec.h
index 351763c..2c32386 100644
--- a/include/media/stagefright/OMXCodec.h
+++ b/include/media/stagefright/OMXCodec.h
@@ -109,6 +109,7 @@
     };
 
     sp<IOMX> mOMX;
+    bool mOMXLivesLocally;
     IOMX::node_id mNode;
     uint32_t mQuirks;
     bool mIsEncoder;