Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8952c68e authored by Ronghua Wu's avatar Ronghua Wu Committed by Android (Google) Code Review
Browse files

Merge "libstagefright: add ProcessInfo to get process priority."

parents b89b86d4 14bcacae
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
/*
 * 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_H_

#define PROCESS_INFO_H_

#include <media/stagefright/foundation/ABase.h>
#include <media/stagefright/ProcessInfoInterface.h>

namespace android {

struct ProcessInfo : public ProcessInfoInterface {
    ProcessInfo();

    virtual bool getPriority(int pid, int* priority);

protected:
    virtual ~ProcessInfo();

private:
    DISALLOW_EVIL_CONSTRUCTORS(ProcessInfo);
};

}  // namespace android

#endif  // PROCESS_INFO_H_
+1 −32
Original line number Diff line number Diff line
@@ -21,10 +21,10 @@
#include "DrmSessionManager.h"

#include "DrmSessionClientInterface.h"
#include "ProcessInfoInterface.h"
#include <binder/IPCThreadState.h>
#include <binder/IProcessInfoService.h>
#include <binder/IServiceManager.h>
#include <media/stagefright/ProcessInfo.h>
#include <unistd.h>
#include <utils/String8.h>

@@ -38,37 +38,6 @@ static String8 GetSessionIdString(const Vector<uint8_t> &sessionId) {
    return sessionIdStr;
}

struct ProcessInfo : public ProcessInfoInterface {
    ProcessInfo() {}

    virtual bool getPriority(int pid, int* priority) {
        sp<IBinder> binder = defaultServiceManager()->getService(String16("processinfo"));
        sp<IProcessInfoService> service = interface_cast<IProcessInfoService>(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<uint8_t> &sessionId1, const Vector<uint8_t> &sessionId2) {
    if (sessionId1.size() != sessionId2.size()) {
        return false;
+1 −1
Original line number Diff line number Diff line
@@ -23,8 +23,8 @@
#include "Drm.h"
#include "DrmSessionClientInterface.h"
#include "DrmSessionManager.h"
#include "ProcessInfoInterface.h"
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/ProcessInfoInterface.h>

namespace android {

+1 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ LOCAL_SRC_FILES:= \
        OMXClient.cpp                     \
        OMXCodec.cpp                      \
        OggExtractor.cpp                  \
        ProcessInfo.cpp                   \
        SampleIterator.cpp                \
        SampleTable.cpp                   \
        SkipCutBuffer.cpp                 \
Loading