Loading drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -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 Loading drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp +21 −38 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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; } Loading Loading @@ -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(); } Loading drm/mediadrm/plugins/clearkey/hidl/include/CryptoPlugin.h +4 −2 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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); } Loading Loading @@ -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); Loading media/codec2/sfplugin/CCodec.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -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; Loading services/audiopolicy/managerdefault/AudioPolicyManager.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp +21 −38 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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; } Loading Loading @@ -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(); } Loading
drm/mediadrm/plugins/clearkey/hidl/include/CryptoPlugin.h +4 −2 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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); } Loading Loading @@ -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); Loading
media/codec2/sfplugin/CCodec.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -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; Loading
services/audiopolicy/managerdefault/AudioPolicyManager.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -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 Loading