Merge "don't skip omx video codecs for ATV S and below" into tm-dev am: ad44d1358e am: 9b676b392e
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/18720544
Change-Id: Ie6ed7631cfc47515d707709093a06400d60765e0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/media/libstagefright/omx/OMXStore.cpp b/media/libstagefright/omx/OMXStore.cpp
index 7e33f09..4827d9e 100644
--- a/media/libstagefright/omx/OMXStore.cpp
+++ b/media/libstagefright/omx/OMXStore.cpp
@@ -28,6 +28,8 @@
#include <dlfcn.h>
#include <fcntl.h>
+#include <sstream>
+
namespace android {
OMXStore::OMXStore() {
@@ -108,9 +110,26 @@
return android::base::GetIntProperty("ro.product.first_api_level", __ANDROID_API_T__);
}
+static bool isTV() {
+ static const bool kIsTv = []() {
+ std::string characteristics = android::base::GetProperty("ro.build.characteristics", "");
+ std::stringstream ss(characteristics);
+ for (std::string item; std::getline(ss, item, ','); ) {
+ if (item == "tv") {
+ return true;
+ }
+ }
+ return false;
+ }();
+ return kIsTv;
+}
+
void OMXStore::addPlugin(OMXPluginBase *plugin) {
Mutex::Autolock autoLock(mLock);
+ bool typeTV = isTV();
+ int firstApiLevel = getFirstApiLevel();
+
OMX_U32 index = 0;
char name[128];
@@ -125,13 +144,16 @@
bool skip = false;
for (String8 role : roles) {
if (role.find("video_decoder") != -1 || role.find("video_encoder") != -1) {
- if (getFirstApiLevel() >= __ANDROID_API_S__) {
+ if (firstApiLevel >= __ANDROID_API_T__) {
+ skip = true;
+ break;
+ } else if (!typeTV && firstApiLevel >= __ANDROID_API_S__) {
skip = true;
break;
}
}
if (role.find("audio_decoder") != -1 || role.find("audio_encoder") != -1) {
- if (getFirstApiLevel() >= __ANDROID_API_T__) {
+ if (firstApiLevel >= __ANDROID_API_T__) {
skip = true;
break;
}