From 14bcacaed718a506f59e8f3af66e9e0137789da6 Mon Sep 17 00:00:00 2001 From: Ronghua Wu Date: Mon, 16 Mar 2015 11:24:30 -0700 Subject: libstagefright: add ProcessInfo to get process priority. Bug: 19620911 Change-Id: I240b814b8925b1d6266e6f998a7debd654a2145a --- media/libmediaplayerservice/DrmSessionManager.cpp | 33 +------------- media/libmediaplayerservice/ProcessInfoInterface.h | 33 -------------- .../tests/DrmSessionManager_test.cpp | 2 +- media/libstagefright/Android.mk | 1 + media/libstagefright/ProcessInfo.cpp | 53 ++++++++++++++++++++++ 5 files changed, 56 insertions(+), 66 deletions(-) delete mode 100644 media/libmediaplayerservice/ProcessInfoInterface.h create mode 100644 media/libstagefright/ProcessInfo.cpp (limited to 'media') diff --git a/media/libmediaplayerservice/DrmSessionManager.cpp b/media/libmediaplayerservice/DrmSessionManager.cpp index 6e17eb1..641f881 100644 --- a/media/libmediaplayerservice/DrmSessionManager.cpp +++ b/media/libmediaplayerservice/DrmSessionManager.cpp @@ -21,10 +21,10 @@ #include "DrmSessionManager.h" #include "DrmSessionClientInterface.h" -#include "ProcessInfoInterface.h" #include #include #include +#include #include #include @@ -38,37 +38,6 @@ static String8 GetSessionIdString(const Vector &sessionId) { return sessionIdStr; } -struct ProcessInfo : public ProcessInfoInterface { - ProcessInfo() {} - - virtual bool getPriority(int pid, int* priority) { - sp binder = defaultServiceManager()->getService(String16("processinfo")); - sp service = interface_cast(binder); - - size_t length = 1; - int32_t states; - status_t err = service->getProcessStatesFromPids(length, &pid, &states); - if (err != OK) { - ALOGE("getProcessStatesFromPids failed"); - return false; - } - ALOGV("pid %d states %d", pid, states); - if (states < 0) { - return false; - } - - // Use process state as the priority. Lower the value, higher the priority. - *priority = states; - return true; - } - -protected: - virtual ~ProcessInfo() {} - -private: - DISALLOW_EVIL_CONSTRUCTORS(ProcessInfo); -}; - bool isEqualSessionId(const Vector &sessionId1, const Vector &sessionId2) { if (sessionId1.size() != sessionId2.size()) { return false; diff --git a/media/libmediaplayerservice/ProcessInfoInterface.h b/media/libmediaplayerservice/ProcessInfoInterface.h deleted file mode 100644 index 222f92d..0000000 --- a/media/libmediaplayerservice/ProcessInfoInterface.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef PROCESS_INFO_INTERFACE_H_ -#define PROCESS_INFO_INTERFACE_H_ - -#include - -namespace android { - -struct ProcessInfoInterface : public RefBase { - virtual bool getPriority(int pid, int* priority) = 0; - -protected: - virtual ~ProcessInfoInterface() {} -}; - -} // namespace android - -#endif // PROCESS_INFO_INTERFACE_H_ diff --git a/media/libmediaplayerservice/tests/DrmSessionManager_test.cpp b/media/libmediaplayerservice/tests/DrmSessionManager_test.cpp index 27b482b..d3e760b 100644 --- a/media/libmediaplayerservice/tests/DrmSessionManager_test.cpp +++ b/media/libmediaplayerservice/tests/DrmSessionManager_test.cpp @@ -23,8 +23,8 @@ #include "Drm.h" #include "DrmSessionClientInterface.h" #include "DrmSessionManager.h" -#include "ProcessInfoInterface.h" #include +#include namespace android { diff --git a/media/libstagefright/Android.mk b/media/libstagefright/Android.mk index 38f2e34..177293d 100644 --- a/media/libstagefright/Android.mk +++ b/media/libstagefright/Android.mk @@ -47,6 +47,7 @@ LOCAL_SRC_FILES:= \ OMXClient.cpp \ OMXCodec.cpp \ OggExtractor.cpp \ + ProcessInfo.cpp \ SampleIterator.cpp \ SampleTable.cpp \ SkipCutBuffer.cpp \ diff --git a/media/libstagefright/ProcessInfo.cpp b/media/libstagefright/ProcessInfo.cpp new file mode 100644 index 0000000..b4172b3 --- /dev/null +++ b/media/libstagefright/ProcessInfo.cpp @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +//#define LOG_NDEBUG 0 +#define LOG_TAG "ProcessInfo" +#include + +#include + +#include +#include + +namespace android { + +ProcessInfo::ProcessInfo() {} + +bool ProcessInfo::getPriority(int pid, int* priority) { + sp binder = defaultServiceManager()->getService(String16("processinfo")); + sp service = interface_cast(binder); + + size_t length = 1; + int32_t states; + status_t err = service->getProcessStatesFromPids(length, &pid, &states); + if (err != OK) { + ALOGE("getProcessStatesFromPids failed"); + return false; + } + ALOGV("pid %d states %d", pid, states); + if (states < 0) { + return false; + } + + // Use process state as the priority. Lower the value, higher the priority. + *priority = states; + return true; +} + +ProcessInfo::~ProcessInfo() {} + +} // namespace android -- cgit v1.1