summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/MediaCodec.cpp
diff options
context:
space:
mode:
authorRonghua Wu <ronghuawu@google.com>2015-07-21 09:50:48 -0700
committerRonghua Wu <ronghuawu@google.com>2015-07-21 19:04:41 -0700
commit68845c14ebf2c7282800b1abffde38d8e9a57aab (patch)
treec4e924999d0ed48ae4c1a08d44777cbc5b161906 /media/libstagefright/MediaCodec.cpp
parentf8f669d7a727e4ad5505cd85741f4d50dbaffbf9 (diff)
downloadframeworks_av-68845c14ebf2c7282800b1abffde38d8e9a57aab.zip
frameworks_av-68845c14ebf2c7282800b1abffde38d8e9a57aab.tar.gz
frameworks_av-68845c14ebf2c7282800b1abffde38d8e9a57aab.tar.bz2
libmediaplayerservice: propagate caller pid to MediaCodec.
Bug: 22630317 Change-Id: I0337d74f4ef04bf96f2de83f33d98d0d7da47c12
Diffstat (limited to 'media/libstagefright/MediaCodec.cpp')
-rw-r--r--media/libstagefright/MediaCodec.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp
index b444687..cd59709 100644
--- a/media/libstagefright/MediaCodec.cpp
+++ b/media/libstagefright/MediaCodec.cpp
@@ -104,8 +104,11 @@ private:
DISALLOW_EVIL_CONSTRUCTORS(ResourceManagerClient);
};
-MediaCodec::ResourceManagerServiceProxy::ResourceManagerServiceProxy()
- : mPid(IPCThreadState::self()->getCallingPid()) {
+MediaCodec::ResourceManagerServiceProxy::ResourceManagerServiceProxy(pid_t pid)
+ : mPid(pid) {
+ if (mPid == MediaCodec::kNoPid) {
+ mPid = IPCThreadState::self()->getCallingPid();
+ }
}
MediaCodec::ResourceManagerServiceProxy::~ResourceManagerServiceProxy() {
@@ -161,8 +164,8 @@ bool MediaCodec::ResourceManagerServiceProxy::reclaimResource(
// static
sp<MediaCodec> MediaCodec::CreateByType(
- const sp<ALooper> &looper, const char *mime, bool encoder, status_t *err) {
- sp<MediaCodec> codec = new MediaCodec(looper);
+ const sp<ALooper> &looper, const char *mime, bool encoder, status_t *err, pid_t pid) {
+ sp<MediaCodec> codec = new MediaCodec(looper, pid);
const status_t ret = codec->init(mime, true /* nameIsType */, encoder);
if (err != NULL) {
@@ -173,8 +176,8 @@ sp<MediaCodec> MediaCodec::CreateByType(
// static
sp<MediaCodec> MediaCodec::CreateByComponentName(
- const sp<ALooper> &looper, const char *name, status_t *err) {
- sp<MediaCodec> codec = new MediaCodec(looper);
+ const sp<ALooper> &looper, const char *name, status_t *err, pid_t pid) {
+ sp<MediaCodec> codec = new MediaCodec(looper, pid);
const status_t ret = codec->init(name, false /* nameIsType */, false /* encoder */);
if (err != NULL) {
@@ -232,7 +235,7 @@ sp<PersistentSurface> MediaCodec::CreatePersistentInputSurface() {
return new PersistentSurface(bufferProducer, bufferConsumer);
}
-MediaCodec::MediaCodec(const sp<ALooper> &looper)
+MediaCodec::MediaCodec(const sp<ALooper> &looper, pid_t pid)
: mState(UNINITIALIZED),
mReleasedByResourceManager(false),
mLooper(looper),
@@ -242,7 +245,7 @@ MediaCodec::MediaCodec(const sp<ALooper> &looper)
mStickyError(OK),
mSoftRenderer(NULL),
mResourceManagerClient(new ResourceManagerClient(this)),
- mResourceManagerService(new ResourceManagerServiceProxy()),
+ mResourceManagerService(new ResourceManagerServiceProxy(pid)),
mBatteryStatNotified(false),
mIsVideo(false),
mVideoWidth(0),