diff --git a/android/service/engine/jni/BinderComponent/BnOpenCVEngine.cpp b/android/service/engine/jni/BinderComponent/BnOpenCVEngine.cpp index 7833fb8d33..997b8d6ce0 100644 --- a/android/service/engine/jni/BinderComponent/BnOpenCVEngine.cpp +++ b/android/service/engine/jni/BinderComponent/BnOpenCVEngine.cpp @@ -21,53 +21,51 @@ status_t BnOpenCVEngine::onTransact(uint32_t code, const Parcel& data, android:: switch(code) { - case OCVE_GET_ENGINE_VERSION: - { - LOGD("OpenCVEngine OCVE_GET_ENGINE_VERSION request"); - CHECK_INTERFACE(IOpenCVEngine, data, reply); - LOGD("OpenCVEngine::GetVersion()"); - reply->writeInt32(0); - return reply->writeInt32(GetVersion()); - } break; - case OCVE_GET_LIB_PATH_BY_VERSION: - { - LOGD("OpenCVEngine OCVE_GET_LIB_PATH_BY_VERSION request"); - CHECK_INTERFACE(IOpenCVEngine, data, reply); - const String16 version = data.readString16(); - LOGD("OpenCVEngine::GetLibPathByVersion(%s)", String8(version).string()); - String16 path = GetLibPathByVersion(version); - reply->writeInt32(0); - return reply->writeString16(path); - } break; - case OCVE_GET_LIB_LIST: - { - LOGD("OpenCVEngine OCVE_GET_LIB_LIST request"); - CHECK_INTERFACE(IOpenCVEngine, data, reply); - const String16 version = data.readString16(); - LOGD("OpenCVEngine::GetLibraryList(%s)", String8(version).string()); - String16 path = GetLibraryList(version); - reply->writeInt32(0); - return reply->writeString16(path); - } break; - case OCVE_INSTALL_VERSION: - { - LOGD("OpenCVEngine OCVE_INSTALL_VERSION request"); - CHECK_INTERFACE(IOpenCVEngine, data, reply); - const String16 version = data.readString16(); - LOGD("OpenCVEngine::InstallVersion(%s)", String8(version).string()); - bool result = InstallVersion(version); - reply->writeInt32(0); - int res = reply->writeInt32(static_cast(result)); - LOGD("InstallVersion call to Binder finished with res %d", res); - return res; - - } break; - - default: - { - LOGD("OpenCVEngine unknown request"); - return BBinder::onTransact(code, data, reply, flags); - } + case OCVE_GET_ENGINE_VERSION: + { + LOGD("OpenCVEngine OCVE_GET_ENGINE_VERSION request"); + CHECK_INTERFACE(IOpenCVEngine, data, reply); + LOGD("OpenCVEngine::GetVersion()"); + reply->writeInt32(0); + return reply->writeInt32(GetVersion()); + } break; + case OCVE_GET_LIB_PATH_BY_VERSION: + { + LOGD("OpenCVEngine OCVE_GET_LIB_PATH_BY_VERSION request"); + CHECK_INTERFACE(IOpenCVEngine, data, reply); + const String16 version = data.readString16(); + LOGD("OpenCVEngine::GetLibPathByVersion(%s)", String8(version).string()); + String16 path = GetLibPathByVersion(version); + reply->writeInt32(0); + return reply->writeString16(path); + } break; + case OCVE_GET_LIB_LIST: + { + LOGD("OpenCVEngine OCVE_GET_LIB_LIST request"); + CHECK_INTERFACE(IOpenCVEngine, data, reply); + const String16 version = data.readString16(); + LOGD("OpenCVEngine::GetLibraryList(%s)", String8(version).string()); + String16 path = GetLibraryList(version); + reply->writeInt32(0); + return reply->writeString16(path); + } break; + case OCVE_INSTALL_VERSION: + { + LOGD("OpenCVEngine OCVE_INSTALL_VERSION request"); + CHECK_INTERFACE(IOpenCVEngine, data, reply); + const String16 version = data.readString16(); + LOGD("OpenCVEngine::InstallVersion(%s)", String8(version).string()); + bool result = InstallVersion(version); + reply->writeInt32(0); + int res = reply->writeInt32(static_cast(result)); + LOGD("InstallVersion call to Binder finished with res %d", res); + return res; + } break; + default: + { + LOGD("OpenCVEngine unknown request"); + return BBinder::onTransact(code, data, reply, flags); + } } return android::NO_ERROR; diff --git a/android/service/engine/jni/BinderComponent/HardwareDetector.cpp b/android/service/engine/jni/BinderComponent/HardwareDetector.cpp index cb98a4de2c..b5e0fa6001 100644 --- a/android/service/engine/jni/BinderComponent/HardwareDetector.cpp +++ b/android/service/engine/jni/BinderComponent/HardwareDetector.cpp @@ -13,97 +13,97 @@ int GetCpuID() map cpu_info = GetCpuInfo(); map::const_iterator it; -#if defined(__i386__) + #if defined(__i386__) LOGD("Using X86 HW detector"); result |= ARCH_X86; it = cpu_info.find("flags"); if (cpu_info.end() != it) { - set features = SplitString(it->second, ' '); - if (features.end() != features.find(CPU_INFO_SSE_STR)) - { - result |= FEATURES_HAS_SSE; - } - if (features.end() != features.find(CPU_INFO_SSE2_STR)) - { - result |= FEATURES_HAS_SSE2; - } - if (features.end() != features.find(CPU_INFO_SSSE3_STR)) - { - result |= FEATURES_HAS_SSSE3; - } + set features = SplitString(it->second, ' '); + if (features.end() != features.find(CPU_INFO_SSE_STR)) + { + result |= FEATURES_HAS_SSE; + } + if (features.end() != features.find(CPU_INFO_SSE2_STR)) + { + result |= FEATURES_HAS_SSE2; + } + if (features.end() != features.find(CPU_INFO_SSSE3_STR)) + { + result |= FEATURES_HAS_SSSE3; + } } #elif defined(__mips) - #ifdef __SUPPORT_MIPS +#ifdef __SUPPORT_MIPS result |= ARCH_MIPS; - #else +#else result = ARCH_UNKNOWN; - #endif +#endif #else LOGD("Using ARM HW detector"); it = cpu_info.find("Processor"); if (cpu_info.end() != it) { - size_t proc_name_pos = it->second.find(CPU_INFO_ARCH_X86_STR); - if (string::npos != proc_name_pos) - { - } - else - { - proc_name_pos = it->second.find(CPU_INFO_ARCH_ARMV7_STR); - if (string::npos != proc_name_pos) - { - result |= ARCH_ARMv7; - } - else - { - proc_name_pos = it->second.find(CPU_INFO_ARCH_ARMV6_STR); + size_t proc_name_pos = it->second.find(CPU_INFO_ARCH_X86_STR); if (string::npos != proc_name_pos) { - result |= ARCH_ARMv6; } else { - proc_name_pos = it->second.find(CPU_INFO_ARCH_ARMV5_STR); + proc_name_pos = it->second.find(CPU_INFO_ARCH_ARMV7_STR); if (string::npos != proc_name_pos) { - result |= ARCH_ARMv5; + result |= ARCH_ARMv7; + } + else + { + proc_name_pos = it->second.find(CPU_INFO_ARCH_ARMV6_STR); + if (string::npos != proc_name_pos) + { + result |= ARCH_ARMv6; + } + else + { + proc_name_pos = it->second.find(CPU_INFO_ARCH_ARMV5_STR); + if (string::npos != proc_name_pos) + { + result |= ARCH_ARMv5; + } + } } } - } - } } else { - return ARCH_UNKNOWN; + return ARCH_UNKNOWN; } it = cpu_info.find("Features"); if (cpu_info.end() != it) { - set features = SplitString(it->second, ' '); - if (features.end() != features.find(CPU_INFO_NEON_STR)) - { - result |= FEATURES_HAS_NEON; - } - if (features.end() != features.find(CPU_INFO_NEON2_STR)) - { - result |= FEATURES_HAS_NEON2; - } - if (features.end() != features.find(CPU_INFO_VFPV3_STR)) - { - if (features.end () != features.find(CPU_INFO_VFPV3D16_STR)) + set features = SplitString(it->second, ' '); + if (features.end() != features.find(CPU_INFO_NEON_STR)) { - result |= FEATURES_HAS_VFPv3d16; + result |= FEATURES_HAS_NEON; } - else + if (features.end() != features.find(CPU_INFO_NEON2_STR)) { - result |= FEATURES_HAS_VFPv3; + result |= FEATURES_HAS_NEON2; + } + if (features.end() != features.find(CPU_INFO_VFPV3_STR)) + { + if (features.end () != features.find(CPU_INFO_VFPV3D16_STR)) + { + result |= FEATURES_HAS_VFPv3d16; + } + else + { + result |= FEATURES_HAS_VFPv3; + } } } - } -#endif + #endif return result; } @@ -116,7 +116,7 @@ string GetPlatformName() if (cpu_info.end() != hw_iterator) { - hardware_name = hw_iterator->second; + hardware_name = hw_iterator->second; } return hardware_name; @@ -126,37 +126,37 @@ int GetProcessorCount() { FILE* cpuPossible = fopen("/sys/devices/system/cpu/possible", "r"); if(!cpuPossible) - return 1; + return 1; char buf[2000]; //big enough for 1000 CPUs in worst possible configuration char* pbuf = fgets(buf, sizeof(buf), cpuPossible); fclose(cpuPossible); if(!pbuf) - return 1; + return 1; //parse string of form "0-1,3,5-7,10,13-15" - int cpusAvailable = 0; + int cpusAvailable = 0; - while(*pbuf) - { - const char* pos = pbuf; - bool range = false; - while(*pbuf && *pbuf != ',') + while(*pbuf) { - if(*pbuf == '-') range = true; - ++pbuf; - } - if(*pbuf) *pbuf++ = 0; - if(!range) - ++cpusAvailable; - else - { - int rstart = 0, rend = 0; - sscanf(pos, "%d-%d", &rstart, &rend); - cpusAvailable += rend - rstart + 1; + const char* pos = pbuf; + bool range = false; + while(*pbuf && *pbuf != ',') + { + if(*pbuf == '-') range = true; + ++pbuf; + } + if(*pbuf) *pbuf++ = 0; + if(!range) + ++cpusAvailable; + else + { + int rstart = 0, rend = 0; + sscanf(pos, "%d-%d", &rstart, &rend); + cpusAvailable += rend - rstart + 1; + } } - } - return cpusAvailable ? cpusAvailable : 1; + return cpusAvailable ? cpusAvailable : 1; } int DetectKnownPlatforms() @@ -165,20 +165,20 @@ int DetectKnownPlatforms() if (3 == tegra_status) { - return PLATFORM_TEGRA3; + return PLATFORM_TEGRA3; } else { - return PLATFORM_UNKNOWN; + return PLATFORM_UNKNOWN; } // NOTE: Uncomment when all Tegras will be supported /*if (tegra_status > 0) - { - return PLATFORM_TEGRA + tegra_status - 1; - } - else - { - return PLATFORM_UNKNOWN; - }*/ + * { + * return PLATFORM_TEGRA + tegra_status - 1; + } + else + { + return PLATFORM_UNKNOWN; + }*/ } \ No newline at end of file diff --git a/android/service/engine/jni/BinderComponent/OpenCVEngine.cpp b/android/service/engine/jni/BinderComponent/OpenCVEngine.cpp index 6988714f59..6b99799933 100644 --- a/android/service/engine/jni/BinderComponent/OpenCVEngine.cpp +++ b/android/service/engine/jni/BinderComponent/OpenCVEngine.cpp @@ -42,31 +42,31 @@ std::string OpenCVEngine::NormalizeVersionString(std::string version) if (version.empty()) { - return result; + return result; } if (('a' == version[version.size()-1]) || ('b' == version[version.size()-1])) { - suffix = version[version.size()-1]; - version.erase(version.size()-1); + suffix = version[version.size()-1]; + version.erase(version.size()-1); } std::vector parts = SplitStringVector(version, '.'); if (parts.size() >= 2) { - if (parts.size() >= 3) - { - result = parts[0] + parts[1] + parts[2] + suffix; - if (!ValidateVersionString(result)) - result = ""; - } - else - { - result = parts[0] + parts[1] + "0" + suffix; - if (!ValidateVersionString(result)) - result = ""; - } + if (parts.size() >= 3) + { + result = parts[0] + parts[1] + parts[2] + suffix; + if (!ValidateVersionString(result)) + result = ""; + } + else + { + result = parts[0] + parts[1] + "0" + suffix; + if (!ValidateVersionString(result)) + result = ""; + } } return result; @@ -95,19 +95,19 @@ String16 OpenCVEngine::GetLibPathByVersion(android::String16 version) if (!norm_version.empty()) { - path = PackageManager->GetPackagePathByVersion(norm_version, Platform, CpuID); - if (path.empty()) - { - LOGI("Package OpenCV of version %s is not installed. Try to install it :)", norm_version.c_str()); - } - else - { - FixPermissions(path); - } + path = PackageManager->GetPackagePathByVersion(norm_version, Platform, CpuID); + if (path.empty()) + { + LOGI("Package OpenCV of version %s is not installed. Try to install it :)", norm_version.c_str()); + } + else + { + FixPermissions(path); + } } else { - LOGE("OpenCV version \"%s\" (%s) is not supported", String8(version).string(), norm_version.c_str()); + LOGE("OpenCV version \"%s\" (%s) is not supported", String8(version).string(), norm_version.c_str()); } return String16(path.c_str()); @@ -122,46 +122,46 @@ android::String16 OpenCVEngine::GetLibraryList(android::String16 version) if (!norm_version.empty()) { - std::string tmp = PackageManager->GetPackagePathByVersion(norm_version, Platform, CpuID); - if (!tmp.empty()) - { - tmp += (std::string("/") + LIB_OPENCV_INFO_NAME); - - LOGD("Trying to load info library \"%s\"", tmp.c_str()); - - void* handle; - char* (*info_func)(); - - handle = dlopen(tmp.c_str(), RTLD_LAZY); - if (handle) + std::string tmp = PackageManager->GetPackagePathByVersion(norm_version, Platform, CpuID); + if (!tmp.empty()) { - const char* error; - - dlerror(); - *(void **) (&info_func) = dlsym(handle, "GetLibraryList"); - if ((error = dlerror()) == NULL) - { - result = String16((*info_func)()); - dlclose(handle); + tmp += (std::string("/") + LIB_OPENCV_INFO_NAME); + + LOGD("Trying to load info library \"%s\"", tmp.c_str()); + + void* handle; + char* (*info_func)(); + + handle = dlopen(tmp.c_str(), RTLD_LAZY); + if (handle) + { + const char* error; + + dlerror(); + *(void **) (&info_func) = dlsym(handle, "GetLibraryList"); + if ((error = dlerror()) == NULL) + { + result = String16((*info_func)()); + dlclose(handle); + } + else + { + LOGE("Library loading error: \"%s\"", error); + } + } + else + { + LOGI("Info library not found in package"); + } } else { - LOGE("Library loading error: \"%s\"", error); - } + LOGI("Package OpenCV of version %s is not installed. Try to install it :)", norm_version.c_str()); } - else - { - LOGI("Info library not found in package"); - } - } - else - { - LOGI("Package OpenCV of version %s is not installed. Try to install it :)", norm_version.c_str()); - } } else { - LOGE("OpenCV version \"%s\" is not supported", norm_version.c_str()); + LOGE("OpenCV version \"%s\" is not supported", norm_version.c_str()); } return result; @@ -173,26 +173,18 @@ bool OpenCVEngine::InstallVersion(android::String16 version) std::string norm_version; bool result = false; + LOGD("OpenCVEngine::InstallVersion() begin"); + norm_version = NormalizeVersionString(std_version); if (!norm_version.empty()) - { - LOGD("OpenCVEngine::InstallVersion() begin"); - - if (!PackageManager->CheckVersionInstalled(norm_version, Platform, CpuID)) { LOGD("PackageManager->InstallVersion call"); result = PackageManager->InstallVersion(norm_version, Platform, CpuID); } else { - LOGI("Package OpenCV of version %s is already installed. Skiped.", norm_version.c_str()); - result = true; - } - } - else - { - LOGE("OpenCV version \"%s\" is not supported", norm_version.c_str()); + LOGE("OpenCV version \"%s\" is not supported", norm_version.c_str()); } LOGD("OpenCVEngine::InstallVersion() end"); @@ -208,16 +200,16 @@ bool OpenCVEngine::FixPermissions(const std::string& path) DIR* dir = opendir(path.c_str()); if (!dir) { - LOGD("Fixing permissions error"); - return false; + LOGD("Fixing permissions error"); + return false; } dirent* files = readdir(dir); while (files) { - LOGD("Fix permissions for \"%s\"", files->d_name); - chmod((path + std::string("/") + std::string(files->d_name)).c_str(), S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); - files = readdir(dir); + LOGD("Fix permissions for \"%s\"", files->d_name); + chmod((path + std::string("/") + std::string(files->d_name)).c_str(), S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); + files = readdir(dir); } closedir(dir); diff --git a/android/service/engine/jni/BinderComponent/ProcReader.cpp b/android/service/engine/jni/BinderComponent/ProcReader.cpp index e1598fc62e..4b0a6d0b3a 100644 --- a/android/service/engine/jni/BinderComponent/ProcReader.cpp +++ b/android/service/engine/jni/BinderComponent/ProcReader.cpp @@ -12,18 +12,18 @@ map GetCpuInfo() f.open("/proc/cpuinfo"); if (f.is_open()) { - while (!f.eof()) - { - string tmp; - string key; - string value; - getline(f, tmp); - if (ParseString(tmp, key, value)) + while (!f.eof()) { - result[key] = value; + string tmp; + string key; + string value; + getline(f, tmp); + if (ParseString(tmp, key, value)) + { + result[key] = value; + } } } - } f.close(); diff --git a/android/service/engine/jni/BinderComponent/StringUtils.cpp b/android/service/engine/jni/BinderComponent/StringUtils.cpp index e73104a52f..3809f5aa65 100644 --- a/android/service/engine/jni/BinderComponent/StringUtils.cpp +++ b/android/service/engine/jni/BinderComponent/StringUtils.cpp @@ -8,7 +8,7 @@ bool StripString(string& src) if (src.empty()) { - return false; + return false; } while ((pos < src.length()) && (' ' == src[pos])) pos++; @@ -32,7 +32,7 @@ bool StripString(string& src) bool ParseString(const string& src, string& key, string& value) { if (src.empty()) - return false; + return false; // find seporator ":" size_t seporator_pos = src.find(":"); @@ -52,20 +52,19 @@ bool ParseString(const string& src, string& key, string& value) set SplitString(const string& src, const char seporator) { - set result; if (!src.empty()) { - size_t seporator_pos; - size_t prev_pos = 0; - do - { - seporator_pos = src.find(seporator, prev_pos); - result.insert(src.substr(prev_pos, seporator_pos - prev_pos)); - prev_pos = seporator_pos + 1; - } - while (string::npos != seporator_pos); + size_t seporator_pos; + size_t prev_pos = 0; + do + { + seporator_pos = src.find(seporator, prev_pos); + result.insert(src.substr(prev_pos, seporator_pos - prev_pos)); + prev_pos = seporator_pos + 1; + } + while (string::npos != seporator_pos); } return result; @@ -77,16 +76,16 @@ vector SplitStringVector(const string& src, const char seporator) if (!src.empty()) { - size_t seporator_pos; - size_t prev_pos = 0; - do - { - seporator_pos = src.find(seporator, prev_pos); - string tmp = src.substr(prev_pos, seporator_pos - prev_pos); - result.push_back(tmp); - prev_pos = seporator_pos + 1; - } - while (string::npos != seporator_pos); + size_t seporator_pos; + size_t prev_pos = 0; + do + { + seporator_pos = src.find(seporator, prev_pos); + string tmp = src.substr(prev_pos, seporator_pos - prev_pos); + result.push_back(tmp); + prev_pos = seporator_pos + 1; + } + while (string::npos != seporator_pos); } return result; diff --git a/android/service/engine/jni/BinderComponent/TegraDetector.cpp b/android/service/engine/jni/BinderComponent/TegraDetector.cpp index b5d4497257..f7db1fa85d 100644 --- a/android/service/engine/jni/BinderComponent/TegraDetector.cpp +++ b/android/service/engine/jni/BinderComponent/TegraDetector.cpp @@ -15,38 +15,38 @@ int DetectTegra() gzFile kernelConfig = gzopen(KERNEL_CONFIG, "r"); if (kernelConfig != 0) { - char tmpbuf[KERNEL_CONFIG_MAX_LINE_WIDTH]; - const char *tegra_config = KERNEL_CONFIG_TEGRA_MAGIC; - const char *tegra2_config = KERNEL_CONFIG_TEGRA2_MAGIC; - const char *tegra3_config = KERNEL_CONFIG_TEGRA3_MAGIC; - int len = strlen(tegra_config); - int len2 = strlen(tegra2_config); - int len3 = strlen(tegra3_config); - while (0 != gzgets(kernelConfig, tmpbuf, KERNEL_CONFIG_MAX_LINE_WIDTH)) - { - if (0 == strncmp(tmpbuf, tegra_config, len)) + char tmpbuf[KERNEL_CONFIG_MAX_LINE_WIDTH]; + const char *tegra_config = KERNEL_CONFIG_TEGRA_MAGIC; + const char *tegra2_config = KERNEL_CONFIG_TEGRA2_MAGIC; + const char *tegra3_config = KERNEL_CONFIG_TEGRA3_MAGIC; + int len = strlen(tegra_config); + int len2 = strlen(tegra2_config); + int len3 = strlen(tegra3_config); + while (0 != gzgets(kernelConfig, tmpbuf, KERNEL_CONFIG_MAX_LINE_WIDTH)) { - result = 1; - } + if (0 == strncmp(tmpbuf, tegra_config, len)) + { + result = 1; + } - if (0 == strncmp(tmpbuf, tegra2_config, len2)) - { - result = 2; - break; - } + if (0 == strncmp(tmpbuf, tegra2_config, len2)) + { + result = 2; + break; + } - if (0 == strncmp(tmpbuf, tegra3_config, len3)) - { - result = 3; - break; - } + if (0 == strncmp(tmpbuf, tegra3_config, len3)) + { + result = 3; + break; + } - } - gzclose(kernelConfig); + } + gzclose(kernelConfig); } else { - result = TEGRA_DETECTOR_ERROR; + result = TEGRA_DETECTOR_ERROR; } return result; diff --git a/android/service/engine/jni/JNIWrapper/JavaBasedPackageManager.cpp b/android/service/engine/jni/JNIWrapper/JavaBasedPackageManager.cpp index cc77e7784c..bfef171928 100644 --- a/android/service/engine/jni/JNIWrapper/JavaBasedPackageManager.cpp +++ b/android/service/engine/jni/JNIWrapper/JavaBasedPackageManager.cpp @@ -8,8 +8,8 @@ using namespace std; JavaBasedPackageManager::JavaBasedPackageManager(JavaVM* JavaMashine, jobject MarketConnector): - JavaContext(JavaMashine), - JavaPackageManager(MarketConnector) +JavaContext(JavaMashine), +JavaPackageManager(MarketConnector) { assert(JavaContext); assert(JavaPackageManager); @@ -24,23 +24,23 @@ bool JavaBasedPackageManager::InstallPackage(const PackageInfo& package) self_attached = (JNI_EDETACHED == JavaContext->GetEnv((void**)&jenv, JNI_VERSION_1_6)); if (self_attached) { - JavaContext->AttachCurrentThread(&jenv, NULL); + JavaContext->AttachCurrentThread(&jenv, NULL); } LOGD("GetObjectClass call\n"); jclass jclazz = jenv->GetObjectClass(JavaPackageManager); if (!jclazz) { - LOGE("MarketConnector class was not found!"); - return false; + LOGE("MarketConnector class was not found!"); + return false; } LOGD("GetMethodID call\n"); jmethodID jmethod = jenv->GetMethodID(jclazz, "InstallAppFromMarket", "(Ljava/lang/String;)Z"); if (!jmethod) { - LOGE("MarketConnector::GetAppFormMarket method was not found!"); - return false; + LOGE("MarketConnector::GetAppFormMarket method was not found!"); + return false; } LOGD("Calling java package manager with package name %s\n", package.GetFullName().c_str()); @@ -50,7 +50,7 @@ bool JavaBasedPackageManager::InstallPackage(const PackageInfo& package) if (self_attached) { - JavaContext->DetachCurrentThread(); + JavaContext->DetachCurrentThread(); } LOGD("JavaBasedPackageManager::InstallPackage() end\n"); @@ -69,23 +69,23 @@ vector JavaBasedPackageManager::GetInstalledPackages() self_attached = (JNI_EDETACHED == JavaContext->GetEnv((void**)&jenv, JNI_VERSION_1_6)); if (self_attached) { - JavaContext->AttachCurrentThread(&jenv, NULL); + JavaContext->AttachCurrentThread(&jenv, NULL); } LOGD("GetObjectClass call"); jclass jclazz = jenv->GetObjectClass(JavaPackageManager); if (!jclazz) { - LOGE("MarketConnector class was not found!"); - return result; + LOGE("MarketConnector class was not found!"); + return result; } LOGD("GetMethodID call"); jmethodID jmethod = jenv->GetMethodID(jclazz, "GetInstalledOpenCVPackages", "()[Landroid/content/pm/PackageInfo;"); if (!jmethod) { - LOGE("MarketConnector::GetInstalledOpenCVPackages method was not found!"); - return result; + LOGE("MarketConnector::GetInstalledOpenCVPackages method was not found!"); + return result; } LOGD("Java package manager call"); @@ -98,19 +98,19 @@ vector JavaBasedPackageManager::GetInstalledPackages() for (jsize i = 0; i < size; i++) { - jobject jtmp = jenv->GetObjectArrayElement(jpkgs, i); - PackageInfo tmp = ConvertPackageFromJava(jtmp, jenv); - jenv->DeleteLocalRef(jtmp); + jobject jtmp = jenv->GetObjectArrayElement(jpkgs, i); + PackageInfo tmp = ConvertPackageFromJava(jtmp, jenv); + jenv->DeleteLocalRef(jtmp); - if (tmp.IsValid()) - result.push_back(tmp); + if (tmp.IsValid()) + result.push_back(tmp); } jenv->DeleteLocalRef(jpkgs); if (self_attached) { - JavaContext->DetachCurrentThread(); + JavaContext->DetachCurrentThread(); } LOGD("JavaBasedPackageManager::GetInstalledPackages() end"); @@ -140,20 +140,20 @@ PackageInfo JavaBasedPackageManager::ConvertPackageFromJava(jobject package, JNI jint api_level = jenv->GetStaticIntField(jclazz, jfield); if (api_level > 8) { - jclazz = jenv->GetObjectClass(package); - jfield = jenv->GetFieldID(jclazz, "applicationInfo", "Landroid/content/pm/ApplicationInfo;"); - jobject japp_info = jenv->GetObjectField(package, jfield); - jclazz = jenv->GetObjectClass(japp_info); - jfield = jenv->GetFieldID(jclazz, "nativeLibraryDir", "Ljava/lang/String;"); - jstring jpathobj = static_cast(jenv->GetObjectField(japp_info, jfield)); - const char* jpathstr = jenv->GetStringUTFChars(jpathobj, NULL); - path = string(jpathstr); - jenv->ReleaseStringUTFChars(jpathobj, jpathstr); - jenv->DeleteLocalRef(jpathobj); + jclazz = jenv->GetObjectClass(package); + jfield = jenv->GetFieldID(jclazz, "applicationInfo", "Landroid/content/pm/ApplicationInfo;"); + jobject japp_info = jenv->GetObjectField(package, jfield); + jclazz = jenv->GetObjectClass(japp_info); + jfield = jenv->GetFieldID(jclazz, "nativeLibraryDir", "Ljava/lang/String;"); + jstring jpathobj = static_cast(jenv->GetObjectField(japp_info, jfield)); + const char* jpathstr = jenv->GetStringUTFChars(jpathobj, NULL); + path = string(jpathstr); + jenv->ReleaseStringUTFChars(jpathobj, jpathstr); + jenv->DeleteLocalRef(jpathobj); } else { - path = "/data/data/" + name + "/lib"; + path = "/data/data/" + name + "/lib"; } return PackageInfo(name, path, verison); @@ -170,14 +170,14 @@ JavaBasedPackageManager::~JavaBasedPackageManager() self_attached = (JNI_EDETACHED == JavaContext->GetEnv((void**)&jenv, JNI_VERSION_1_6)); if (self_attached) { - JavaContext->AttachCurrentThread(&jenv, NULL); + JavaContext->AttachCurrentThread(&jenv, NULL); } jenv->DeleteGlobalRef(JavaPackageManager); if (self_attached) { - JavaContext->DetachCurrentThread(); + JavaContext->DetachCurrentThread(); } LOGD("JavaBasedPackageManager::~JavaBasedPackageManager() end"); } diff --git a/android/service/engine/jni/JNIWrapper/OpenCVEngine_jni.cpp b/android/service/engine/jni/JNIWrapper/OpenCVEngine_jni.cpp index 90693428b7..96b5dc3115 100644 --- a/android/service/engine/jni/JNIWrapper/OpenCVEngine_jni.cpp +++ b/android/service/engine/jni/JNIWrapper/OpenCVEngine_jni.cpp @@ -20,11 +20,11 @@ JNIEXPORT jobject JNICALL Java_org_opencv_engine_BinderConnector_Connect(JNIEnv* LOGI("Creating new component"); if (NULL != OpenCVEngineBinder.get()) { - LOGI("New component created successfully"); + LOGI("New component created successfully"); } else { - LOGE("OpenCV Engine component was not created!"); + LOGE("OpenCV Engine component was not created!"); } return javaObjectForIBinder(env, OpenCVEngineBinder); @@ -36,25 +36,25 @@ JNIEXPORT jboolean JNICALL Java_org_opencv_engine_BinderConnector_Init(JNIEnv* e if (NULL == PackageManager) { - JavaVM* jvm; - env->GetJavaVM(&jvm); - PackageManager = new JavaBasedPackageManager(jvm, env->NewGlobalRef(market)); + JavaVM* jvm; + env->GetJavaVM(&jvm); + PackageManager = new JavaBasedPackageManager(jvm, env->NewGlobalRef(market)); } if (PackageManager) { - if (!OpenCVEngineBinder.get()) - { - OpenCVEngineBinder = new OpenCVEngine(PackageManager); - return (NULL != OpenCVEngineBinder.get()); - } - else - { - return true; - } + if (!OpenCVEngineBinder.get()) + { + OpenCVEngineBinder = new OpenCVEngine(PackageManager); + return (NULL != OpenCVEngineBinder.get()); + } + else + { + return true; + } } else { - return false; + return false; } } @@ -67,4 +67,3 @@ JNIEXPORT void JNICALL Java_org_opencv_engine_BinderConnector_Final(JNIEnv *, jo delete PackageManager; PackageManager = NULL; } - diff --git a/android/service/engine/jni/NativeClient/ClientMain.cpp b/android/service/engine/jni/NativeClient/ClientMain.cpp index 52ccf2c559..4e9bba2961 100644 --- a/android/service/engine/jni/NativeClient/ClientMain.cpp +++ b/android/service/engine/jni/NativeClient/ClientMain.cpp @@ -25,10 +25,10 @@ int main(int argc, char *argv[]) LOGI("Trying to contect to service"); do { - EngineService = ServiceManager->getService(IOpenCVEngine::descriptor); - if (EngineService != 0) break; - LOGW("OpenCVEngine not published, waiting..."); - usleep(500000); // 0.5 s + EngineService = ServiceManager->getService(IOpenCVEngine::descriptor); + if (EngineService != 0) break; + LOGW("OpenCVEngine not published, waiting..."); + usleep(500000); // 0.5 s } while(true); LOGI("Connection established"); diff --git a/android/service/engine/jni/NativeService/CommonPackageManager.cpp b/android/service/engine/jni/NativeService/CommonPackageManager.cpp index 304fb9a746..ecaa5d6cf2 100644 --- a/android/service/engine/jni/NativeService/CommonPackageManager.cpp +++ b/android/service/engine/jni/NativeService/CommonPackageManager.cpp @@ -18,9 +18,9 @@ set CommonPackageManager::GetInstalledVersions() for (vector::const_iterator it = installed_packages.begin(); it != installed_packages.end(); ++it) { - string version = it->GetVersion(); - assert(!version.empty()); - result.insert(version); + string version = it->GetVersion(); + assert(!version.empty()); + result.insert(version); } return result; @@ -36,12 +36,13 @@ bool CommonPackageManager::CheckVersionInstalled(const std::string& version, int for (vector::const_iterator it = packages.begin(); it != packages.end(); ++it) { - LOGD("Found package: \"%s\"", it->GetFullName().c_str()); + LOGD("Found package: \"%s\"", it->GetFullName().c_str()); } if (!packages.empty()) { - result = (packages.end() != find(packages.begin(), packages.end(), target_package)); + vector::const_iterator it = find(packages.begin(), packages.end(), target_package); + result = (it != packages.end()); } LOGD("CommonPackageManager::CheckVersionInstalled() end"); return result; @@ -63,66 +64,66 @@ string CommonPackageManager::GetPackagePathByVersion(const std::string& version, for (vector::iterator it = all_packages.begin(); it != all_packages.end(); ++it) { - LOGD("Check version \"%s\" compatibility with \"%s\"\n", version.c_str(), it->GetVersion().c_str()); - if (IsVersionCompatible(version, it->GetVersion())) - { - LOGD("Compatible"); - packages.push_back(*it); - } - else - { - LOGD("NOT Compatible"); - } - } - - if (!packages.empty()) - { - vector::iterator found = find(packages.begin(), packages.end(), target_package); - if (packages.end() != found) - { - result = found->GetInstalationPath(); - } - else - { - int OptRating = -1; - std::vector >& group = CommonPackageManager::ArmRating; - - if ((cpu_id & ARCH_X86) || (cpu_id & ARCH_X64)) - group = CommonPackageManager::IntelRating; - - int HardwareRating = GetHardwareRating(platform, cpu_id, group); - LOGD("Current hardware platform %d, %d", platform, cpu_id); - - if (-1 == HardwareRating) + LOGD("Check version \"%s\" compatibility with \"%s\"\n", version.c_str(), it->GetVersion().c_str()); + if (IsVersionCompatible(version, it->GetVersion())) { - LOGE("Cannot calculate rating for current hardware platform!"); + LOGD("Compatible"); + packages.push_back(*it); } else { - for (vector::iterator it = packages.begin(); it != packages.end(); ++it) - { - int PackageRating = GetHardwareRating(it->GetPlatform(), it->GetCpuID(), group); - if (PackageRating >= 0) - { - if ((PackageRating <= HardwareRating) && (PackageRating > OptRating)) - { - OptRating = PackageRating; - found = it; - } - } + LOGD("NOT Compatible"); } + } - if ((-1 != OptRating) && (packages.end() != found)) + if (!packages.empty()) + { + vector::iterator found = find(packages.begin(), packages.end(), target_package); + if (packages.end() != found) { result = found->GetInstalationPath(); } else { - LOGI("Found package is incompatible with current hardware platform"); - } + int OptRating = -1; + std::vector >& group = CommonPackageManager::ArmRating; + + if ((cpu_id & ARCH_X86) || (cpu_id & ARCH_X64)) + group = CommonPackageManager::IntelRating; + + int HardwareRating = GetHardwareRating(platform, cpu_id, group); + LOGD("Current hardware platform %d, %d", platform, cpu_id); + + if (-1 == HardwareRating) + { + LOGE("Cannot calculate rating for current hardware platform!"); + } + else + { + for (vector::iterator it = packages.begin(); it != packages.end(); ++it) + { + int PackageRating = GetHardwareRating(it->GetPlatform(), it->GetCpuID(), group); + if (PackageRating >= 0) + { + if ((PackageRating <= HardwareRating) && (PackageRating > OptRating)) + { + OptRating = PackageRating; + found = it; + } + } + } + + if ((-1 != OptRating) && (packages.end() != found)) + { + result = found->GetInstalationPath(); + } + else + { + LOGI("Found package is incompatible with current hardware platform"); + } + } } } - } return result; } diff --git a/android/service/engine/jni/NativeService/PackageInfo.cpp b/android/service/engine/jni/NativeService/PackageInfo.cpp index 4f226c00cc..67b608d04d 100644 --- a/android/service/engine/jni/NativeService/PackageInfo.cpp +++ b/android/service/engine/jni/NativeService/PackageInfo.cpp @@ -32,23 +32,23 @@ inline string JoinARMFeatures(int cpu_id) if (FEATURES_HAS_NEON2 & cpu_id) { - if (!((ARCH_ARMv5 & cpu_id) || (ARCH_ARMv6 & cpu_id) ||(ARCH_ARMv7 & cpu_id))) - result = string(FEATURES_HAS_NEON2_NAME); + if (!((ARCH_ARMv5 & cpu_id) || (ARCH_ARMv6 & cpu_id) ||(ARCH_ARMv7 & cpu_id))) + result = string(FEATURES_HAS_NEON2_NAME); } else if (FEATURES_HAS_NEON & cpu_id) { - if (!((ARCH_ARMv5 & cpu_id) || (ARCH_ARMv6 & cpu_id))) - result = string(FEATURES_HAS_NEON_NAME); + if (!((ARCH_ARMv5 & cpu_id) || (ARCH_ARMv6 & cpu_id))) + result = string(FEATURES_HAS_NEON_NAME); } else if (FEATURES_HAS_VFPv3 & cpu_id) { - if ((ARCH_ARMv5 & cpu_id) || (ARCH_ARMv6 & cpu_id)) - result = string(FEATURES_HAS_VFPv3_NAME); + if ((ARCH_ARMv5 & cpu_id) || (ARCH_ARMv6 & cpu_id)) + result = string(FEATURES_HAS_VFPv3_NAME); } else if (FEATURES_HAS_VFPv3d16 & cpu_id) { - if ((ARCH_ARMv5 & cpu_id) || (ARCH_ARMv6 & cpu_id)) - result = string(FEATURES_HAS_VFPv3d16_NAME); + if ((ARCH_ARMv5 & cpu_id) || (ARCH_ARMv6 & cpu_id)) + result = string(FEATURES_HAS_VFPv3d16_NAME); } return result; @@ -60,22 +60,22 @@ inline int SplitARMFeatures(const vector& features) for (size_t i = 3; i < features.size(); i++) { - if (FEATURES_HAS_VFPv3_NAME == features[i]) - { - result |= FEATURES_HAS_VFPv3; - } - else if (FEATURES_HAS_VFPv3d16_NAME == features[i]) - { - result |= FEATURES_HAS_VFPv3d16; - } - else if (FEATURES_HAS_NEON_NAME == features[i]) - { - result |= FEATURES_HAS_NEON; - } - else if (FEATURES_HAS_NEON2_NAME == features[i]) - { - result |= FEATURES_HAS_NEON2; - } + if (FEATURES_HAS_VFPv3_NAME == features[i]) + { + result |= FEATURES_HAS_VFPv3; + } + else if (FEATURES_HAS_VFPv3d16_NAME == features[i]) + { + result |= FEATURES_HAS_VFPv3d16; + } + else if (FEATURES_HAS_NEON_NAME == features[i]) + { + result |= FEATURES_HAS_NEON; + } + else if (FEATURES_HAS_NEON2_NAME == features[i]) + { + result |= FEATURES_HAS_NEON2; + } } return result; @@ -87,15 +87,15 @@ inline string JoinIntelFeatures(int cpu_id) if (FEATURES_HAS_SSSE3 & cpu_id) { - result = FEATURES_HAS_SSSE3_NAME; + result = FEATURES_HAS_SSSE3_NAME; } else if (FEATURES_HAS_SSE2 & cpu_id) { - result = FEATURES_HAS_SSE2_NAME; + result = FEATURES_HAS_SSE2_NAME; } else if (FEATURES_HAS_SSE & cpu_id) { - result = FEATURES_HAS_SSE_NAME; + result = FEATURES_HAS_SSE_NAME; } return result; @@ -107,18 +107,18 @@ inline int SplitIntelFeatures(const vector& features) for (size_t i = 3; i < features.size(); i++) { - if (FEATURES_HAS_SSSE3_NAME == features[i]) - { - result |= FEATURES_HAS_SSSE3; - } - else if (FEATURES_HAS_SSE2_NAME == features[i]) - { - result |= FEATURES_HAS_SSE2; - } - else if (FEATURES_HAS_SSE_NAME == features[i]) - { - result |= FEATURES_HAS_SSE; - } + if (FEATURES_HAS_SSSE3_NAME == features[i]) + { + result |= FEATURES_HAS_SSSE3; + } + else if (FEATURES_HAS_SSE2_NAME == features[i]) + { + result |= FEATURES_HAS_SSE2; + } + else if (FEATURES_HAS_SSE_NAME == features[i]) + { + result |= FEATURES_HAS_SSE; + } } return result; @@ -130,12 +130,12 @@ inline string SplitVersion(const vector& features, const string& package if ((features.size() > 1) && ('v' == features[1][0])) { - result = features[1].substr(1); - result += SplitStringVector(package_version, '.')[0]; + result = features[1].substr(1); + result += SplitStringVector(package_version, '.')[0]; } else { - // TODO: Report package name format error + // TODO: Report package name format error } return result; @@ -158,23 +158,23 @@ inline int SplitPlatfrom(const vector& features) if (features.size() > 2) { - string tmp = features[2]; - if (PLATFORM_TEGRA_NAME == tmp) - { - result = PLATFORM_TEGRA; - } - else if (PLATFORM_TEGRA2_NAME == tmp) - { - result = PLATFORM_TEGRA2; - } - else if (PLATFORM_TEGRA3_NAME == tmp) - { - result = PLATFORM_TEGRA3; - } + string tmp = features[2]; + if (PLATFORM_TEGRA_NAME == tmp) + { + result = PLATFORM_TEGRA; + } + else if (PLATFORM_TEGRA2_NAME == tmp) + { + result = PLATFORM_TEGRA2; + } + else if (PLATFORM_TEGRA3_NAME == tmp) + { + result = PLATFORM_TEGRA3; + } } else { - // TODO: Report package name format error + // TODO: Report package name format error } return result; @@ -189,135 +189,135 @@ inline int SplitPlatfrom(const vector& features) * Example: armv7_neon, armv5_vfpv3 */ PackageInfo::PackageInfo(const string& version, int platform, int cpu_id, std::string install_path): - Version(version), - Platform(platform), - CpuID(cpu_id), - InstallPath("") +Version(version), +Platform(platform), +CpuID(cpu_id), +InstallPath("") { -#ifndef __SUPPORT_TEGRA3 + #ifndef __SUPPORT_TEGRA3 Platform = PLATFORM_UNKNOWN; -#endif + #endif FullName = BasePackageName + "_v" + Version.substr(0, Version.size()-1); if (PLATFORM_UNKNOWN != Platform) { - FullName += string("_") + JoinPlatform(platform); + FullName += string("_") + JoinPlatform(platform); } else { - if (ARCH_UNKNOWN != CpuID) - { - if (ARCH_X86 & CpuID) - { - LOGD("PackageInfo::PackageInfo: package arch x86"); - FullName += string("_") + ARCH_X86_NAME; -#ifdef __SUPPORT_INTEL_FEATURES - string features = JoinIntelFeatures(CpuID); - if (!features.empty()) - { - FullName += string("_") + features; - } -#endif - } - else if (ARCH_X64 & CpuID) - { - LOGD("PackageInfo::PackageInfo: package arch x64"); -#ifdef __SUPPORT_INTEL_x64 - FullName += string("_") + ARCH_X64_NAME; -#else - FullName += string("_") + ARCH_X86_NAME; -#endif -#ifdef __SUPPORT_INTEL_FEATURES - string features = JoinIntelFeatures(CpuID); - if (!features.empty()) - { - FullName += string("_") + features; - } -#endif - } - else if (ARCH_ARMv5 & CpuID) + if (ARCH_UNKNOWN != CpuID) { - LOGD("PackageInfo::PackageInfo: package arch ARMv5"); - FullName += string("_") + ARCH_ARMv5_NAME; -#ifdef __SUPPORT_ARMEABI_FEATURES - string features = JoinARMFeatures(CpuID); - if (!features.empty()) - { - FullName += string("_") + features; - } -#endif - } - else if (ARCH_ARMv6 & CpuID) - { - LOGD("PackageInfo::PackageInfo: package arch ARMv6"); - // NOTE: ARM v5 used instead ARM v6 - //FullName += string("_") + ARCH_ARMv6_NAME; - FullName += string("_") + ARCH_ARMv5_NAME; -#ifdef __SUPPORT_ARMEABI_FEATURES - string features = JoinARMFeatures(CpuID); - if (!features.empty()) - { - FullName += string("_") + features; - } -#endif - } - else if (ARCH_ARMv7 & CpuID) - { - LOGD("PackageInfo::PackageInfo: package arch ARMv7"); - FullName += string("_") + ARCH_ARMv7_NAME; -#ifdef __SUPPORT_ARMEABI_V7A_FEATURES - string features = JoinARMFeatures(CpuID); - if (!features.empty()) - { - FullName += string("_") + features; - } -#endif - } - else if (ARCH_ARMv8 & CpuID) - { - LOGD("PackageInfo::PackageInfo: package arch ARMv8"); -#ifdef __SUPPORT_ARMEABI_V8 - FullName += string("_") + ARCH_ARMv8_NAME; -#else - FullName += string("_") + ARCH_ARMv7_NAME; -#endif - //string features = JoinARMFeatures(CpuID); - //if (!features.empty()) - //{ - // FullName += string("_") + features; - //} + if (ARCH_X86 & CpuID) + { + LOGD("PackageInfo::PackageInfo: package arch x86"); + FullName += string("_") + ARCH_X86_NAME; + #ifdef __SUPPORT_INTEL_FEATURES + string features = JoinIntelFeatures(CpuID); + if (!features.empty()) + { + FullName += string("_") + features; + } + #endif + } + else if (ARCH_X64 & CpuID) + { + LOGD("PackageInfo::PackageInfo: package arch x64"); + #ifdef __SUPPORT_INTEL_x64 + FullName += string("_") + ARCH_X64_NAME; + #else + FullName += string("_") + ARCH_X86_NAME; + #endif + #ifdef __SUPPORT_INTEL_FEATURES + string features = JoinIntelFeatures(CpuID); + if (!features.empty()) + { + FullName += string("_") + features; + } + #endif + } + else if (ARCH_ARMv5 & CpuID) + { + LOGD("PackageInfo::PackageInfo: package arch ARMv5"); + FullName += string("_") + ARCH_ARMv5_NAME; + #ifdef __SUPPORT_ARMEABI_FEATURES + string features = JoinARMFeatures(CpuID); + if (!features.empty()) + { + FullName += string("_") + features; + } + #endif + } + else if (ARCH_ARMv6 & CpuID) + { + LOGD("PackageInfo::PackageInfo: package arch ARMv6"); + // NOTE: ARM v5 used instead ARM v6 + //FullName += string("_") + ARCH_ARMv6_NAME; + FullName += string("_") + ARCH_ARMv5_NAME; + #ifdef __SUPPORT_ARMEABI_FEATURES + string features = JoinARMFeatures(CpuID); + if (!features.empty()) + { + FullName += string("_") + features; + } + #endif + } + else if (ARCH_ARMv7 & CpuID) + { + LOGD("PackageInfo::PackageInfo: package arch ARMv7"); + FullName += string("_") + ARCH_ARMv7_NAME; + #ifdef __SUPPORT_ARMEABI_V7A_FEATURES + string features = JoinARMFeatures(CpuID); + if (!features.empty()) + { + FullName += string("_") + features; + } + #endif + } + else if (ARCH_ARMv8 & CpuID) + { + LOGD("PackageInfo::PackageInfo: package arch ARMv8"); + #ifdef __SUPPORT_ARMEABI_V8 + FullName += string("_") + ARCH_ARMv8_NAME; + #else + FullName += string("_") + ARCH_ARMv7_NAME; + #endif + //string features = JoinARMFeatures(CpuID); + //if (!features.empty()) + //{ + // FullName += string("_") + features; + //} + } + #ifdef __SUPPORT_MIPS + else if (ARCH_MIPS & CpuID) + { + FullName += string("_") + ARCH_MIPS_NAME; + } + #endif + else + { + LOGD("PackageInfo::PackageInfo: package arch unknown"); + Version.clear(); + CpuID = ARCH_UNKNOWN; + Platform = PLATFORM_UNKNOWN; + } } -#ifdef __SUPPORT_MIPS - else if (ARCH_MIPS & CpuID) - { - FullName += string("_") + ARCH_MIPS_NAME; - } -#endif else { - LOGD("PackageInfo::PackageInfo: package arch unknown"); - Version.clear(); - CpuID = ARCH_UNKNOWN; - Platform = PLATFORM_UNKNOWN; + LOGD("PackageInfo::PackageInfo: package arch unknown"); + Version.clear(); + CpuID = ARCH_UNKNOWN; + Platform = PLATFORM_UNKNOWN; } } - else - { - LOGD("PackageInfo::PackageInfo: package arch unknown"); - Version.clear(); - CpuID = ARCH_UNKNOWN; - Platform = PLATFORM_UNKNOWN; - } - } if (!FullName.empty()) { - InstallPath = install_path + FullName + "/lib"; + InstallPath = install_path + FullName + "/lib"; } } PackageInfo::PackageInfo(const string& fullname, const string& install_path, string package_version): - FullName(fullname), - InstallPath(install_path) +FullName(fullname), +InstallPath(install_path) { LOGD("PackageInfo::PackageInfo(\"%s\", \"%s\", \"%s\")", fullname.c_str(), install_path.c_str(), package_version.c_str()); @@ -326,127 +326,127 @@ PackageInfo::PackageInfo(const string& fullname, const string& install_path, str if (OPENCV_ENGINE_PACKAGE == fullname) { - // Science version 1.7 OpenCV Manager has it's own version of OpenCV inside - // Load libopencv_info.so to understand OpenCV version, platform and other features - std::string tmp; - if (install_path.empty()) - { - tmp = std::string(DEFAULT_ENGINE_INSTALL_PATH) + "/" + LIB_OPENCV_INFO_NAME; - } - else - { - tmp = install_path + "/" + LIB_OPENCV_INFO_NAME; - } - - LOGD("Trying to load info library \"%s\"", tmp.c_str()); - - void* handle; - const char* (*name_func)(); - const char* (*revision_func)(); - - handle = dlopen(tmp.c_str(), RTLD_LAZY); - if (handle) - { - const char* error; - - dlerror(); - *(void **) (&name_func) = dlsym(handle, "GetPackageName"); - *(void **) (&revision_func) = dlsym(handle, "GetRevision"); - error = dlerror(); - - if (!error && revision_func && name_func) + // Science version 1.7 OpenCV Manager has it's own version of OpenCV inside + // Load libopencv_info.so to understand OpenCV version, platform and other features + std::string tmp; + if (install_path.empty()) { - FullName = std::string((*name_func)()); - package_version = std::string((*revision_func)()); - dlclose(handle); - LOGI("OpenCV package \"%s\" revision \"%s\" found", FullName.c_str(), package_version.c_str()); + tmp = std::string(DEFAULT_ENGINE_INSTALL_PATH) + "/" + LIB_OPENCV_INFO_NAME; } else { - LOGE("Library loading error (%x, %x): \"%s\"", name_func, revision_func, error); + tmp = install_path + "/" + LIB_OPENCV_INFO_NAME; } - } - else - { - LOGI("Info library not found in package"); - LOGI("OpenCV Manager package does not contain any verison of OpenCV library"); - Version.clear(); - CpuID = ARCH_UNKNOWN; - Platform = PLATFORM_UNKNOWN; - return; - } + + LOGD("Trying to load info library \"%s\"", tmp.c_str()); + + void* handle; + const char* (*name_func)(); + const char* (*revision_func)(); + + handle = dlopen(tmp.c_str(), RTLD_LAZY); + if (handle) + { + const char* error; + + dlerror(); + *(void **) (&name_func) = dlsym(handle, "GetPackageName"); + *(void **) (&revision_func) = dlsym(handle, "GetRevision"); + error = dlerror(); + + if (!error && revision_func && name_func) + { + FullName = std::string((*name_func)()); + package_version = std::string((*revision_func)()); + dlclose(handle); + LOGI("OpenCV package \"%s\" revision \"%s\" found", FullName.c_str(), package_version.c_str()); + } + else + { + LOGE("Library loading error (%x, %x): \"%s\"", name_func, revision_func, error); + } + } + else + { + LOGI("Info library not found in package"); + LOGI("OpenCV Manager package does not contain any verison of OpenCV library"); + Version.clear(); + CpuID = ARCH_UNKNOWN; + Platform = PLATFORM_UNKNOWN; + return; + } } vector features = SplitStringVector(FullName, '_'); if (!features.empty() && (BasePackageName == features[0])) { - Version = SplitVersion(features, package_version); - if (Version.empty()) - { - CpuID = ARCH_UNKNOWN; - Platform = PLATFORM_UNKNOWN; - return; - } - - Platform = SplitPlatfrom(features); - if (PLATFORM_UNKNOWN != Platform) - { - CpuID = 0; - } - else - { - if (features.size() < 3) - { - LOGD("It is not OpenCV library package for this platform"); - Version.clear(); - CpuID = ARCH_UNKNOWN; - Platform = PLATFORM_UNKNOWN; - return; - } - else if (ARCH_ARMv5_NAME == features[2]) - { - CpuID = ARCH_ARMv5 | SplitARMFeatures(features); - } - else if (ARCH_ARMv6_NAME == features[2]) - { - CpuID = ARCH_ARMv6 | SplitARMFeatures(features); - } - else if (ARCH_ARMv7_NAME == features[2]) - { - CpuID = ARCH_ARMv7 | SplitARMFeatures(features); - } - else if (ARCH_X86_NAME == features[2]) - { - CpuID = ARCH_X86 | SplitIntelFeatures(features); - } - else if (ARCH_X64_NAME == features[2]) + Version = SplitVersion(features, package_version); + if (Version.empty()) { - CpuID = ARCH_X64 | SplitIntelFeatures(features); + CpuID = ARCH_UNKNOWN; + Platform = PLATFORM_UNKNOWN; + return; } -#ifdef __SUPPORT_MIPS - else if (ARCH_MIPS_NAME == features[2]) + + Platform = SplitPlatfrom(features); + if (PLATFORM_UNKNOWN != Platform) { - CpuID = ARCH_MIPS; + CpuID = 0; } -#endif else { + if (features.size() < 3) + { + LOGD("It is not OpenCV library package for this platform"); + Version.clear(); + CpuID = ARCH_UNKNOWN; + Platform = PLATFORM_UNKNOWN; + return; + } + else if (ARCH_ARMv5_NAME == features[2]) + { + CpuID = ARCH_ARMv5 | SplitARMFeatures(features); + } + else if (ARCH_ARMv6_NAME == features[2]) + { + CpuID = ARCH_ARMv6 | SplitARMFeatures(features); + } + else if (ARCH_ARMv7_NAME == features[2]) + { + CpuID = ARCH_ARMv7 | SplitARMFeatures(features); + } + else if (ARCH_X86_NAME == features[2]) + { + CpuID = ARCH_X86 | SplitIntelFeatures(features); + } + else if (ARCH_X64_NAME == features[2]) + { + CpuID = ARCH_X64 | SplitIntelFeatures(features); + } + #ifdef __SUPPORT_MIPS + else if (ARCH_MIPS_NAME == features[2]) + { + CpuID = ARCH_MIPS; + } + #endif + else + { + LOGD("It is not OpenCV library package for this platform"); + Version.clear(); + CpuID = ARCH_UNKNOWN; + Platform = PLATFORM_UNKNOWN; + return; + } + } + } + else + { LOGD("It is not OpenCV library package for this platform"); Version.clear(); CpuID = ARCH_UNKNOWN; Platform = PLATFORM_UNKNOWN; return; - } - } - } - else - { - LOGD("It is not OpenCV library package for this platform"); - Version.clear(); - CpuID = ARCH_UNKNOWN; - Platform = PLATFORM_UNKNOWN; - return; } } diff --git a/android/service/engine/jni/Tests/OpenCVEngineTest.cpp b/android/service/engine/jni/Tests/OpenCVEngineTest.cpp index 6318afabc8..91302942ad 100644 --- a/android/service/engine/jni/Tests/OpenCVEngineTest.cpp +++ b/android/service/engine/jni/Tests/OpenCVEngineTest.cpp @@ -126,7 +126,7 @@ TEST(OpenCVEngineTest, GetPathForExecHWNewVersion) EXPECT_EQ(0, result.size()); } -#else +#else // armeabi TEST(OpenCVEngineTest, GetPathForExecHWExistVersion) { sp Engine = InitConnect();