Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
352485fc
Commit
352485fc
authored
Feb 17, 2015
by
Alexander Smorkalov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Android 5 support and aarch64-related fixes for Android Manager.
parent
6a3a6416
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
62 additions
and
23 deletions
+62
-23
CMakeLists.txt
platforms/android/libinfo/CMakeLists.txt
+2
-0
CMakeLists.txt
platforms/android/service/engine/CMakeLists.txt
+4
-2
HardwareDetector.cpp
...d/service/engine/jni/BinderComponent/HardwareDetector.cpp
+6
-0
HardwareDetector.h
...oid/service/engine/jni/BinderComponent/HardwareDetector.h
+1
-1
CommonPackageManager.cpp
...service/engine/jni/NativeService/CommonPackageManager.cpp
+5
-0
PackageInfo.cpp
.../android/service/engine/jni/NativeService/PackageInfo.cpp
+13
-12
PackageInfo.h
...ms/android/service/engine/jni/NativeService/PackageInfo.h
+1
-1
HardwareDetectionTest.cpp
...ndroid/service/engine/jni/Tests/HardwareDetectionTest.cpp
+6
-0
PackageInfoTest.cpp
...orms/android/service/engine/jni/Tests/PackageInfoTest.cpp
+7
-0
PackageManagmentTest.cpp
...android/service/engine/jni/Tests/PackageManagmentTest.cpp
+8
-0
HardwareDetector.java
...ervice/engine/src/org/opencv/engine/HardwareDetector.java
+1
-1
ManagerActivity.java
...engine/src/org/opencv/engine/manager/ManagerActivity.java
+7
-5
cmake_android_service.sh
platforms/scripts/cmake_android_service.sh
+1
-1
No files found.
platforms/android/libinfo/CMakeLists.txt
View file @
352485fc
...
...
@@ -10,6 +10,8 @@ if(NOT ANDROID_PACKAGE_PLATFORM)
else
()
set
(
ANDROID_PACKAGE_PLATFORM armv7a
)
endif
()
elseif
(
ARM64_V8A
)
set
(
ANDROID_PACKAGE_PLATFORM aarch64
)
elseif
(
ARMEABI_V6
)
set
(
ANDROID_PACKAGE_PLATFORM armv6
)
elseif
(
ARMEABI
)
...
...
platforms/android/service/engine/CMakeLists.txt
View file @
352485fc
...
...
@@ -12,14 +12,16 @@ if(ARMEABI_V7A)
else
()
set
(
ANDROID_PLATFORM_VERSION_CODE
"3"
)
endif
()
elseif
(
ARM64_V8A
)
set
(
ANDROID_PLATFORM_VERSION_CODE
"4"
)
elseif
(
ARMEABI_V6
)
set
(
ANDROID_PLATFORM_VERSION_CODE
"1"
)
elseif
(
ARMEABI
)
set
(
ANDROID_PLATFORM_VERSION_CODE
"1"
)
elseif
(
X86
)
set
(
ANDROID_PLATFORM_VERSION_CODE
"4"
)
elseif
(
MIPS
)
set
(
ANDROID_PLATFORM_VERSION_CODE
"5"
)
elseif
(
MIPS
)
set
(
ANDROID_PLATFORM_VERSION_CODE
"6"
)
else
()
message
(
WARNING
"Can not automatically determine the value for ANDROID_PLATFORM_VERSION_CODE"
)
endif
()
...
...
platforms/android/service/engine/jni/BinderComponent/HardwareDetector.cpp
View file @
352485fc
...
...
@@ -39,6 +39,12 @@ int GetCpuID()
#else
result
=
ARCH_UNKNOWN
;
#endif
#elif defined(__aarch64__)
#ifdef __SUPPORT_AARCH64
result
|=
ARCH_AARCH64
;
#else
result
=
ARCH_UNKNOWN
;
#endif
#elif defined(__arm__)
LOGD
(
"Using ARM HW detector"
);
it
=
cpu_info
.
find
(
"Processor"
);
...
...
platforms/android/service/engine/jni/BinderComponent/HardwareDetector.h
View file @
352485fc
...
...
@@ -9,7 +9,7 @@
#define ARCH_ARMv5 67108864L
#define ARCH_ARMv6 134217728L
#define ARCH_ARMv7 268435456L
#define ARCH_A
RMv8
536870912L
#define ARCH_A
ARCH64
536870912L
#define ARCH_MIPS 1073741824L
#define FEATURES_HAS_VFPv3d16 1L
...
...
platforms/android/service/engine/jni/NativeService/CommonPackageManager.cpp
View file @
352485fc
...
...
@@ -208,6 +208,11 @@ std::vector<std::pair<int, int> > CommonPackageManager::InitArmRating()
result
.
push_back
(
std
::
pair
<
int
,
int
>
(
PLATFORM_TEGRA4
,
ARCH_ARMv7
|
FEATURES_HAS_VFPv3
|
FEATURES_HAS_VFPv4
|
FEATURES_HAS_NEON
));
result
.
push_back
(
std
::
pair
<
int
,
int
>
(
PLATFORM_TEGRA5
,
ARCH_ARMv7
|
FEATURES_HAS_VFPv3
|
FEATURES_HAS_VFPv4
|
FEATURES_HAS_NEON
));
result
.
push_back
(
std
::
pair
<
int
,
int
>
(
PLATFORM_UNKNOWN
,
ARCH_AARCH64
));
result
.
push_back
(
std
::
pair
<
int
,
int
>
(
PLATFORM_UNKNOWN
,
ARCH_AARCH64
|
FEATURES_HAS_VFPv3
));
result
.
push_back
(
std
::
pair
<
int
,
int
>
(
PLATFORM_UNKNOWN
,
ARCH_AARCH64
|
FEATURES_HAS_VFPv3
|
FEATURES_HAS_VFPv4
));
result
.
push_back
(
std
::
pair
<
int
,
int
>
(
PLATFORM_UNKNOWN
,
ARCH_AARCH64
|
FEATURES_HAS_VFPv3
|
FEATURES_HAS_VFPv3
|
FEATURES_HAS_NEON
));
return
result
;
}
...
...
platforms/android/service/engine/jni/NativeService/PackageInfo.cpp
View file @
352485fc
...
...
@@ -302,20 +302,13 @@ PackageInfo::PackageInfo(int version, int platform, int cpu_id, std::string inst
}
#endif
}
else
if
(
ARCH_ARMv8
&
CpuID
)
#ifdef __SUPPORT_AARCH64
else
if
(
ARCH_AARCH64
&
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;
//}
LOGD
(
"PackageInfo::PackageInfo: package arch AARCH64"
);
FullName
+=
string
(
"_"
)
+
ARCH_AARCH64_NAME
;
}
#endif
#ifdef __SUPPORT_MIPS
else
if
(
ARCH_MIPS
&
CpuID
)
{
...
...
@@ -460,14 +453,22 @@ InstallPath(install_path)
{
CpuID
=
ARCH_ARMv7
|
SplitARMFeatures
(
features
);
}
#ifdef __SUPPORT_AARCH64
else
if
(
ARCH_AARCH64_NAME
==
features
[
2
])
{
CpuID
=
ARCH_AARCH64
|
SplitARMFeatures
(
features
);
}
#endif
else
if
(
ARCH_X86_NAME
==
features
[
2
])
{
CpuID
=
ARCH_X86
|
SplitIntelFeatures
(
features
);
}
#ifdef __SUPPORT_INTEL_x64
else
if
(
ARCH_X64_NAME
==
features
[
2
])
{
CpuID
=
ARCH_X64
|
SplitIntelFeatures
(
features
);
}
#endif
#ifdef __SUPPORT_MIPS
else
if
(
ARCH_MIPS_NAME
==
features
[
2
])
{
...
...
platforms/android/service/engine/jni/NativeService/PackageInfo.h
View file @
352485fc
...
...
@@ -10,7 +10,7 @@
#define ARCH_ARMv5_NAME "armv5"
#define ARCH_ARMv6_NAME "armv6"
#define ARCH_ARMv7_NAME "armv7a"
#define ARCH_A
RMv8_NAME "armv8
"
#define ARCH_A
ARCH64_NAME "aarch64
"
#define FEATURES_HAS_VFPv3d16_NAME "vfpv3d16"
#define FEATURES_HAS_VFPv3_NAME "vfpv3"
...
...
platforms/android/service/engine/jni/Tests/HardwareDetectionTest.cpp
View file @
352485fc
...
...
@@ -146,6 +146,12 @@ TEST(CpuID, CheckMips)
EXPECT_TRUE
(
cpu_id
&
ARCH_MIPS
);
}
#endif
#elif defined(__aarch64__)
TEST
(
CpuID
,
CheckAarch64
)
{
int
cpu_id
=
GetCpuID
();
EXPECT_TRUE
(
cpu_id
&
ARCH_AARCH64
);
}
#else
TEST
(
TegraDetector
,
Detect
)
{
...
...
platforms/android/service/engine/jni/Tests/PackageInfoTest.cpp
View file @
352485fc
...
...
@@ -52,6 +52,13 @@ TEST(PackageInfo, FullNameArmv7VFPv3Neon)
#endif
}
TEST
(
PackageInfo
,
FullNameAarch64
)
{
PackageInfo
info
(
2041000
,
PLATFORM_UNKNOWN
,
ARCH_AARCH64
);
string
name
=
info
.
GetFullName
();
EXPECT_STREQ
(
"org.opencv.lib_v24_aarch64"
,
name
.
c_str
());
}
TEST
(
PackageInfo
,
FullNameArmv5
)
{
PackageInfo
info
(
2030000
,
PLATFORM_UNKNOWN
,
ARCH_ARMv5
);
...
...
platforms/android/service/engine/jni/Tests/PackageManagmentTest.cpp
View file @
352485fc
...
...
@@ -54,6 +54,14 @@ TEST(PackageManager, GetPackagePathForArmv7)
EXPECT_STREQ
(
"/data/data/org.opencv.lib_v23_armv7a/lib"
,
path
.
c_str
());
}
TEST
(
PackageManager
,
GetPackagePathForAarch64
)
{
PackageManagerStub
pm
;
EXPECT_TRUE
(
pm
.
InstallVersion
(
2041100
,
PLATFORM_UNKNOWN
,
ARCH_AARCH64
));
string
path
=
pm
.
GetPackagePathByVersion
(
2041100
,
PLATFORM_UNKNOWN
,
ARCH_AARCH64
);
EXPECT_STREQ
(
"/data/data/org.opencv.lib_v24_aarch64/lib"
,
path
.
c_str
());
}
TEST
(
PackageManager
,
GetPackagePathForArmv7Neon
)
{
PackageManagerStub
pm
;
...
...
platforms/android/service/engine/src/org/opencv/engine/HardwareDetector.java
View file @
352485fc
...
...
@@ -10,7 +10,7 @@ public class HardwareDetector
public
static
final
int
ARCH_ARMv5
=
0x04000000
;
public
static
final
int
ARCH_ARMv6
=
0x08000000
;
public
static
final
int
ARCH_ARMv7
=
0x10000000
;
public
static
final
int
ARCH_A
RMv8
=
0x20000000
;
public
static
final
int
ARCH_A
ARCH64
=
0x20000000
;
public
static
final
int
ARCH_MIPS
=
0x40000000
;
// Platform specific features
...
...
platforms/android/service/engine/src/org/opencv/engine/manager/ManagerActivity.java
View file @
352485fc
...
...
@@ -7,6 +7,7 @@ import java.util.StringTokenizer;
import
org.opencv.engine.HardwareDetector
;
import
org.opencv.engine.MarketConnector
;
import
org.opencv.engine.OpenCVEngineInterface
;
import
org.opencv.engine.OpenCVEngineService
;
import
org.opencv.engine.OpenCVLibraryInfo
;
import
org.opencv.engine.R
;
import
android.annotation.TargetApi
;
...
...
@@ -140,11 +141,11 @@ public class ManagerActivity extends Activity
}
else
if
((
CpuId
&
HardwareDetector
.
ARCH_ARMv7
)
==
HardwareDetector
.
ARCH_ARMv7
)
{
HardwarePlatformView
.
setText
(
"ARM v7 "
+
JoinArmFeatures
(
CpuId
));
HardwarePlatformView
.
setText
(
"ARM v7
a
"
+
JoinArmFeatures
(
CpuId
));
}
else
if
((
CpuId
&
HardwareDetector
.
ARCH_A
RMv8
)
==
HardwareDetector
.
ARCH_ARMv8
)
else
if
((
CpuId
&
HardwareDetector
.
ARCH_A
ARCH64
)
==
HardwareDetector
.
ARCH_AARCH64
)
{
HardwarePlatformView
.
setText
(
"A
RM v8
"
+
JoinArmFeatures
(
CpuId
));
HardwarePlatformView
.
setText
(
"A
ARCH64 (ARM64 v8a)
"
+
JoinArmFeatures
(
CpuId
));
}
else
if
((
CpuId
&
HardwareDetector
.
ARCH_MIPS
)
==
HardwareDetector
.
ARCH_MIPS
)
{
...
...
@@ -220,7 +221,8 @@ public class ManagerActivity extends Activity
public
void
onReceive
(
Context
context
,
Intent
intent
)
{
Log
.
d
(
"OpenCVManager/Receiver"
,
"Broadcast message "
+
intent
.
getAction
()
+
" receiver"
);
Log
.
d
(
"OpenCVManager/Receiver"
,
"Filling package list on broadcast message"
);
if
(!
bindService
(
new
Intent
(
"org.opencv.engine.BIND"
),
new
OpenCVEngineServiceConnection
(),
Context
.
BIND_AUTO_CREATE
))
if
(!
bindService
(
new
Intent
(
"org.opencv.engine.BIND"
),
new
OpenCVEngineServiceConnection
(),
Context
.
BIND_AUTO_CREATE
))
{
TextView
EngineVersionView
=
(
TextView
)
findViewById
(
R
.
id
.
EngineVersionValue
);
EngineVersionView
.
setText
(
"not avaliable"
);
...
...
@@ -251,7 +253,7 @@ public class ManagerActivity extends Activity
if
(
HardwareDetector
.
mIsReady
)
{
Log
.
d
(
TAG
,
"Filling package list on resume"
);
OpenCVEngineServiceConnection
connection
=
new
OpenCVEngineServiceConnection
();
if
(!
bindService
(
new
Intent
(
"org.opencv.engine.BIND"
),
connection
,
Context
.
BIND_AUTO_CREATE
))
{
if
(!
bindService
(
new
Intent
(
this
,
OpenCVEngineService
.
class
),
connection
,
Context
.
BIND_AUTO_CREATE
))
{
Log
.
e
(
TAG
,
"Cannot bind to OpenCV Manager service!"
);
TextView
EngineVersionView
=
(
TextView
)
findViewById
(
R
.
id
.
EngineVersionValue
);
if
(
EngineVersionView
!=
null
)
...
...
platforms/scripts/cmake_android_service.sh
View file @
352485fc
...
...
@@ -4,4 +4,4 @@ cd `dirname $0`/..
mkdir
-p
build_android_service
cd
build_android_service
cmake
-DCMAKE_TOOLCHAIN_FILE
=
../android/android.toolchain.cmake
-DANDROID_TOOLCHAIN_NAME
=
"arm-linux-androideabi-4.
4.3
"
-DANDROID_STL
=
stlport_static
-DANDROID_STL_FORCE_FEATURES
=
OFF
-DBUILD_ANDROID_SERVICE
=
ON
-DANDROID_SOURCE_TREE
=
~/Projects/AndroidSource/ServiceStub/
$@
../..
cmake
-DCMAKE_TOOLCHAIN_FILE
=
../android/android.toolchain.cmake
-DANDROID_TOOLCHAIN_NAME
=
"arm-linux-androideabi-4.
6
"
-DANDROID_STL
=
stlport_static
-DANDROID_STL_FORCE_FEATURES
=
OFF
-DBUILD_ANDROID_SERVICE
=
ON
-DANDROID_SOURCE_TREE
=
~/Projects/AndroidSource/ServiceStub/
$@
../..
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment