Merge "Update EffectUUID initialization" into udc-dev
diff --git a/drm/mediadrm/plugins/clearkey/aidl/CryptoPlugin.cpp b/drm/mediadrm/plugins/clearkey/aidl/CryptoPlugin.cpp
index afc9b6a..a63471f 100644
--- a/drm/mediadrm/plugins/clearkey/aidl/CryptoPlugin.cpp
+++ b/drm/mediadrm/plugins/clearkey/aidl/CryptoPlugin.cpp
@@ -137,6 +137,8 @@
*_aidl_return = static_cast<ssize_t>(offset);
return toNdkScopedAStatus(Status::OK);
} else if (in_args.mode == Mode::AES_CTR) {
+ if (!mSession) return toNdkScopedAStatus(Status::ERROR_DRM_CANNOT_HANDLE,
+ "session not found");
size_t bytesDecrypted{};
std::vector<int32_t> clearDataLengths;
std::vector<int32_t> encryptedDataLengths;
@@ -149,6 +151,7 @@
detailedError = "invalid decrypt parameter size";
return toNdkScopedAStatus(Status::ERROR_DRM_CANNOT_HANDLE, detailedError);
}
+
auto res =
mSession->decrypt(in_args.keyId.data(), in_args.iv.data(),
srcPtr, static_cast<uint8_t*>(destPtr),
diff --git a/media/libstagefright/MediaCodecList.cpp b/media/libstagefright/MediaCodecList.cpp
index 78b7288..485759c 100644
--- a/media/libstagefright/MediaCodecList.cpp
+++ b/media/libstagefright/MediaCodecList.cpp
@@ -31,6 +31,7 @@
#include <media/stagefright/xmlparser/MediaCodecsXmlParser.h>
#include <media/stagefright/CCodec.h>
#include <media/stagefright/Codec2InfoBuilder.h>
+#include <media/stagefright/MediaCodecConstants.h>
#include <media/stagefright/MediaCodecList.h>
#include <media/stagefright/MediaCodecListOverrides.h>
#include <media/stagefright/MediaErrors.h>
@@ -356,17 +357,6 @@
void MediaCodecList::findMatchingCodecs(
const char *mime, bool encoder, uint32_t flags, const sp<AMessage> &format,
Vector<AString> *matches) {
- findMatchingCodecs(mime, encoder, flags, format, matches, /* checkProfile= */ true);
- if (matches->empty()) {
- ALOGV("no matching codec found, retrying without profile check");
- findMatchingCodecs(mime, encoder, flags, format, matches, /* checkProfile= */ false);
- }
-}
-
-//static
-void MediaCodecList::findMatchingCodecs(
- const char *mime, bool encoder, uint32_t flags, const sp<AMessage> &format,
- Vector<AString> *matches, bool checkProfile) {
matches->clear();
const sp<IMediaCodecList> list = getInstance();
@@ -390,7 +380,7 @@
AString componentName = info->getCodecName();
- if (!codecHandlesFormat(mime, info, format, checkProfile)) {
+ if (!codecHandlesFormat(mime, info, format)) {
ALOGV("skipping codec '%s' which doesn't satisfy format %s",
componentName.c_str(), format->debugString(2).c_str());
continue;
@@ -409,12 +399,23 @@
property_get_bool("debug.stagefright.swcodec", false)) {
matches->sort(compareSoftwareCodecsFirst);
}
+
+ // if we did NOT find anything maybe it's because of a profile mismatch.
+ // let's recurse after trimming the profile from the format to see if that yields
+ // a suitable codec.
+ //
+ int profile = -1;
+ if (matches->empty() && format->findInt32(KEY_PROFILE, &profile)) {
+ ALOGV("no matching codec found, retrying without profile");
+ sp<AMessage> formatNoProfile = format->dup();
+ formatNoProfile->removeEntryByName(KEY_PROFILE);
+ findMatchingCodecs(mime, encoder, flags, formatNoProfile, matches);
+ }
}
// static
bool MediaCodecList::codecHandlesFormat(
- const char *mime, const sp<MediaCodecInfo> &info, const sp<AMessage> &format,
- bool checkProfile) {
+ const char *mime, const sp<MediaCodecInfo> &info, const sp<AMessage> &format) {
if (format == nullptr) {
ALOGD("codecHandlesFormat: no format, so no extra checks");
@@ -522,7 +523,7 @@
}
int32_t profile = -1;
- if (checkProfile && format->findInt32("profile", &profile)) {
+ if (format->findInt32(KEY_PROFILE, &profile)) {
Vector<MediaCodecInfo::ProfileLevel> profileLevels;
capabilities->getSupportedProfileLevels(&profileLevels);
auto it = profileLevels.begin();
diff --git a/media/libstagefright/include/media/stagefright/MediaCodecList.h b/media/libstagefright/include/media/stagefright/MediaCodecList.h
index 56c6a45..08a5324 100644
--- a/media/libstagefright/include/media/stagefright/MediaCodecList.h
+++ b/media/libstagefright/include/media/stagefright/MediaCodecList.h
@@ -114,19 +114,10 @@
MediaCodecList(const MediaCodecList&) = delete;
MediaCodecList& operator=(const MediaCodecList&) = delete;
- static void findMatchingCodecs(
- const char *mime,
- bool createEncoder,
- uint32_t flags,
- const sp<AMessage> &format,
- Vector<AString> *matchingCodecs,
- bool checkProfile);
-
static bool codecHandlesFormat(
const char *mime,
const sp<MediaCodecInfo> &info,
- const sp<AMessage> &format,
- bool checkProfile);
+ const sp<AMessage> &format);
};
} // namespace android