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

Commit cb72a17b authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 7364021 from 8462a074 to sc-release

Change-Id: I2f2a8e06152f77913c01225fc7c9609fab39efa7
parents 283e6559 8462a074
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -235,6 +235,21 @@ Return<Status> CryptoPlugin::setMediaDrmSession(
    return Status::OK;
}

Return<void> CryptoPlugin::getLogMessages(
        getLogMessages_cb _hidl_cb) {
    using std::chrono::duration_cast;
    using std::chrono::milliseconds;
    using std::chrono::system_clock;

    auto timeMillis = duration_cast<milliseconds>(
            system_clock::now().time_since_epoch()).count();

    std::vector<LogMessage> logs = {
            { timeMillis, LogPriority::ERROR, std::string("Not implemented") }};
    _hidl_cb(drm::V1_4::Status::OK, toHidlVec(logs));
    return Void();
}

} // namespace clearkey
} // namespace V1_4.
} // namespace drm
+21 −38
Original line number Diff line number Diff line
@@ -645,23 +645,18 @@ Return<void> DrmPlugin::getLogMessages(
    auto timeMillis = duration_cast<milliseconds>(
            system_clock::now().time_since_epoch()).count();

    //TODO(b/182525516) Stub out for now
    std::vector<LogMessage> logs = {
            { timeMillis, LogPriority::DEFAULT, std::string() }};
            { timeMillis, LogPriority::ERROR, std::string("Not implemented") }};
    _hidl_cb(drm::V1_4::Status::OK, toHidlVec(logs));
    return Void();
}

Return<bool> DrmPlugin::requiresSecureDecoder(
        const hidl_string& mime, SecurityLevel level) {
    if (!strncasecmp(mime.c_str(), "video/", 6)) {
        // Type is video, so check level to see if we require a secure decoder.
        return level == SecurityLevel::HW_SECURE_DECODE;
    } else {
        // Type is not video, so never require a secure decoder.
    UNUSED(mime);
    UNUSED(level);
    return false;
}
}

Return<bool> DrmPlugin::requiresSecureDecoderDefault(const hidl_string& mime) {
    UNUSED(mime);
@@ -679,22 +674,7 @@ Return<Status> DrmPlugin::setPlaybackId(
    }

    std::vector<uint8_t> sid = toVector(sessionId);
    sp<Session> session = mSessionLibrary->findSession(sid);
    if (!session.get()) {
        return Status::ERROR_DRM_SESSION_NOT_OPENED;
    }

    std::map<std::vector<uint8_t>, std::string>::iterator itr =
            mPlaybackId.find(sid);
    if (itr != mPlaybackId.end()) {
    mPlaybackId[sid] = playbackId;
    } else {
        if (!mPlaybackId.insert(
                std::pair<std::vector<uint8_t>, std::string>(sid, playbackId)).second) {
            ALOGE("Failed to set playback Id");
            return Status::ERROR_DRM_UNKNOWN;
        }
    }
    return Status::OK;
}

@@ -766,21 +746,24 @@ Return<void> DrmPlugin::getMetrics(getMetrics_cb _hidl_cb) {
    };

    // Set the setPlaybackId metric.
    DrmMetricGroup::Attribute setPlaybackIdOKAttribute = {
      "status", DrmMetricGroup::ValueType::INT64_TYPE,
      (int64_t) Status::OK, 0.0, ""
    };
    std::string playbackId = mPlaybackId.begin()->second;
    DrmMetricGroup::Value setPlaybackIdMetricValue = {
      "value", DrmMetricGroup::ValueType::STRING_TYPE, 0, 0,  playbackId.c_str()
    };
    std::vector<DrmMetricGroup::Attribute> sids;
    std::vector<DrmMetricGroup::Value> playbackIds;
    for (const auto&[key, value] : mPlaybackId) {
        std::string sid(key.begin(), key.end());
        DrmMetricGroup::Attribute sessionIdAttribute = {
            "sid", DrmMetricGroup::ValueType::STRING_TYPE, 0, 0, sid };
        sids.push_back(sessionIdAttribute);

        DrmMetricGroup::Value playbackIdMetricValue = {
            "playbackId", DrmMetricGroup::ValueType::STRING_TYPE, 0, 0, value };
        playbackIds.push_back(playbackIdMetricValue);
    }
    DrmMetricGroup::Metric setPlaybackIdMetric = {
      "set_playback_id", { setPlaybackIdOKAttribute }, { setPlaybackIdMetricValue }
    };
            "set_playback_id", { sids }, { playbackIds }};

    DrmMetricGroup metrics = {{ openSessionMetric, closeSessionMetric,
    DrmMetricGroup metrics = {
            { openSessionMetric, closeSessionMetric,
              closeSessionNotOpenedMetric, setPlaybackIdMetric }};

    _hidl_cb(Status::OK, hidl_vec<DrmMetricGroup>({metrics}));
    return Void();
}
+4 −2
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
#ifndef CLEARKEY_CRYPTO_PLUGIN_H_
#define CLEARKEY_CRYPTO_PLUGIN_H_

#include <android/hardware/drm/1.2/ICryptoPlugin.h>
#include <android/hardware/drm/1.4/ICryptoPlugin.h>
#include <android/hidl/memory/1.0/IMemory.h>

#include <mutex>
@@ -56,7 +56,7 @@ using ::android::sp;

typedef drm::V1_2::Status Status_V1_2;

struct CryptoPlugin : public drm::V1_2::ICryptoPlugin {
struct CryptoPlugin : public drm::V1_4::ICryptoPlugin {
    explicit CryptoPlugin(const hidl_vec<uint8_t>& sessionId) {
        mInitStatus = setMediaDrmSession(sessionId);
    }
@@ -104,6 +104,8 @@ struct CryptoPlugin : public drm::V1_2::ICryptoPlugin {

    Return<Status> getInitStatus() const { return mInitStatus; }

    Return<void> getLogMessages(
            getLogMessages_cb _hidl_cb);
private:
    CLEARKEY_DISALLOW_COPY_AND_ASSIGN(CryptoPlugin);

+5 −1
Original line number Diff line number Diff line
@@ -2688,7 +2688,11 @@ static status_t CalculateMinMaxUsage(
            *maxUsage = 0;
            continue;
        }
        if (supported.values.size() > 1) {
            *minUsage |= supported.values[1].u64;
        } else {
            *minUsage |= supported.values[0].u64;
        }
        int64_t currentMaxUsage = 0;
        for (const C2Value::Primitive &flags : supported.values) {
            currentMaxUsage |= flags.u64;
+3 −2
Original line number Diff line number Diff line
@@ -6439,7 +6439,8 @@ float AudioPolicyManager::computeVolume(IVolumeCurves &curves,
                volumeDb = minVolDb;
                ALOGV("computeVolume limiting volume to %f musicVol %f", minVolDb, musicVolDb);
            }
            if (!Intersection(deviceTypes, {AUDIO_DEVICE_OUT_BLUETOOTH_A2DP,
            if (Volume::getDeviceForVolume(deviceTypes) != AUDIO_DEVICE_OUT_SPEAKER
                    &&  !Intersection(deviceTypes, {AUDIO_DEVICE_OUT_BLUETOOTH_A2DP,
                        AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES}).empty()) {
                // on A2DP, also ensure notification volume is not too low compared to media when
                // intended to be played