mirror of
https://github.com/opencv/opencv.git
synced 2024-12-03 08:19:52 +08:00
Bug #1822 Native camera does not work on Samsung Galaxy SII with Android ICS 4.0.3 was fixed. All binary libs were rebuilt.
This commit is contained in:
parent
3d0f4fe167
commit
5c6de77fc8
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r2.2.0.so
vendored
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r2.2.0.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r2.3.3.so
vendored
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r2.3.3.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r3.0.1.so
vendored
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r3.0.1.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r4.0.0.so
vendored
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r4.0.0.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r4.0.3.so
vendored
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r4.0.3.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi/libnative_camera_r2.2.0.so
vendored
BIN
3rdparty/lib/armeabi/libnative_camera_r2.2.0.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi/libnative_camera_r2.3.3.so
vendored
BIN
3rdparty/lib/armeabi/libnative_camera_r2.3.3.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi/libnative_camera_r3.0.1.so
vendored
BIN
3rdparty/lib/armeabi/libnative_camera_r3.0.1.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi/libnative_camera_r4.0.0.so
vendored
BIN
3rdparty/lib/armeabi/libnative_camera_r4.0.0.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi/libnative_camera_r4.0.3.so
vendored
BIN
3rdparty/lib/armeabi/libnative_camera_r4.0.3.so
vendored
Binary file not shown.
BIN
3rdparty/lib/x86/libnative_camera_r2.3.3.so
vendored
BIN
3rdparty/lib/x86/libnative_camera_r2.3.3.so
vendored
Binary file not shown.
BIN
3rdparty/lib/x86/libnative_camera_r3.0.1.so
vendored
BIN
3rdparty/lib/x86/libnative_camera_r3.0.1.so
vendored
Binary file not shown.
BIN
3rdparty/lib/x86/libnative_camera_r4.0.3.so
vendored
BIN
3rdparty/lib/x86/libnative_camera_r4.0.3.so
vendored
Binary file not shown.
@ -49,6 +49,8 @@
|
|||||||
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, CAMERA_LOG_TAG, __VA_ARGS__))
|
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, CAMERA_LOG_TAG, __VA_ARGS__))
|
||||||
#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, CAMERA_LOG_TAG, __VA_ARGS__))
|
#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, CAMERA_LOG_TAG, __VA_ARGS__))
|
||||||
|
|
||||||
|
#include <dlfcn.h>
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
|
|
||||||
void debugShowFPS()
|
void debugShowFPS()
|
||||||
@ -200,17 +202,24 @@ protected:
|
|||||||
return strstr(supported_modes, mode) > 0;
|
return strstr(supported_modes, mode) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
float getFocusDistance(int focus_distance_type){
|
float getFocusDistance(int focus_distance_type)
|
||||||
if (focus_distance_type >= 0 && focus_distance_type < 3) {
|
{
|
||||||
|
#if !defined(ANDROID_r2_2_0)
|
||||||
|
if (focus_distance_type >= 0 && focus_distance_type < 3)
|
||||||
|
{
|
||||||
float focus_distances[3];
|
float focus_distances[3];
|
||||||
const char* output = params.get(CameraParameters::KEY_FOCUS_DISTANCES);
|
const char* output = params.get(CameraParameters::KEY_FOCUS_DISTANCES);
|
||||||
int val_num = CameraHandler::split_float(output, focus_distances, ',', 3);
|
int val_num = CameraHandler::split_float(output, focus_distances, ',', 3);
|
||||||
if(val_num == 3){
|
if(val_num == 3)
|
||||||
|
{
|
||||||
return focus_distances[focus_distance_type];
|
return focus_distances[focus_distance_type];
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
LOGE("Invalid focus distances.");
|
LOGE("Invalid focus distances.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -299,7 +308,9 @@ const char* CameraHandler::flashModesNames[ANDROID_CAMERA_FLASH_MODES_NUM] =
|
|||||||
const char* CameraHandler::focusModesNames[ANDROID_CAMERA_FOCUS_MODES_NUM] =
|
const char* CameraHandler::focusModesNames[ANDROID_CAMERA_FOCUS_MODES_NUM] =
|
||||||
{
|
{
|
||||||
CameraParameters::FOCUS_MODE_AUTO,
|
CameraParameters::FOCUS_MODE_AUTO,
|
||||||
|
#if !defined(ANDROID_r2_2_0)
|
||||||
CameraParameters::FOCUS_MODE_CONTINUOUS_VIDEO,
|
CameraParameters::FOCUS_MODE_CONTINUOUS_VIDEO,
|
||||||
|
#endif
|
||||||
CameraParameters::FOCUS_MODE_EDOF,
|
CameraParameters::FOCUS_MODE_EDOF,
|
||||||
CameraParameters::FOCUS_MODE_FIXED,
|
CameraParameters::FOCUS_MODE_FIXED,
|
||||||
CameraParameters::FOCUS_MODE_INFINITY
|
CameraParameters::FOCUS_MODE_INFINITY
|
||||||
@ -326,16 +337,60 @@ const char* CameraHandler::antibandingModesNames[ANDROID_CAMERA_ANTIBANDING_MODE
|
|||||||
|
|
||||||
CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback, int cameraId, void* userData, CameraParameters* prevCameraParameters)
|
CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback, int cameraId, void* userData, CameraParameters* prevCameraParameters)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
typedef sp<Camera> (*Android22ConnectFuncType)();
|
||||||
|
typedef sp<Camera> (*Android23ConnectFuncType)(int);
|
||||||
|
typedef sp<Camera> (*Android3DConnectFuncType)(int, int);
|
||||||
|
|
||||||
|
enum {
|
||||||
|
CAMERA_SUPPORT_MODE_2D = 0x01, /* Camera Sensor supports 2D mode. */
|
||||||
|
CAMERA_SUPPORT_MODE_3D = 0x02, /* Camera Sensor supports 3D mode. */
|
||||||
|
CAMERA_SUPPORT_MODE_NONZSL = 0x04, /* Camera Sensor in NON-ZSL mode. */
|
||||||
|
CAMERA_SUPPORT_MODE_ZSL = 0x08 /* Camera Sensor supports ZSL mode. */
|
||||||
|
};
|
||||||
|
|
||||||
|
const char Android22ConnectName[] = "_ZN7android6Camera7connectEv";
|
||||||
|
const char Android23ConnectName[] = "_ZN7android6Camera7connectEi";
|
||||||
|
const char Android3DConnectName[] = "_ZN7android6Camera7connectEii";
|
||||||
|
|
||||||
LOGD("CameraHandler::initCameraConnect(%p, %d, %p, %p)", callback, cameraId, userData, prevCameraParameters);
|
LOGD("CameraHandler::initCameraConnect(%p, %d, %p, %p)", callback, cameraId, userData, prevCameraParameters);
|
||||||
|
|
||||||
sp<Camera> camera = 0;
|
sp<Camera> camera = 0;
|
||||||
|
|
||||||
#ifdef ANDROID_r2_2_0
|
void* CameraHALHandle = dlopen("libcamera_client.so", RTLD_LAZY);
|
||||||
camera = Camera::connect();
|
|
||||||
#else
|
if (!CameraHALHandle)
|
||||||
/* This is 2.3 or higher. The connect method has cameraID parameter */
|
{
|
||||||
camera = Camera::connect(cameraId);
|
LOGE("Cannot link to \"libcamera_client.so\"");
|
||||||
#endif
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// reset errors
|
||||||
|
dlerror();
|
||||||
|
|
||||||
|
if (Android22ConnectFuncType Android22Connect = (Android22ConnectFuncType)dlsym(CameraHALHandle, Android22ConnectName))
|
||||||
|
{
|
||||||
|
LOGD("Connecting to CameraService v 2.2");
|
||||||
|
camera = Android22Connect();
|
||||||
|
}
|
||||||
|
else if (Android23ConnectFuncType Android23Connect = (Android23ConnectFuncType)dlsym(CameraHALHandle, Android23ConnectName))
|
||||||
|
{
|
||||||
|
LOGD("Connecting to CameraService v 2.3");
|
||||||
|
camera = Android23Connect(cameraId);
|
||||||
|
}
|
||||||
|
else if (Android3DConnectFuncType Android3DConnect = (Android3DConnectFuncType)dlsym(CameraHALHandle, Android3DConnectName))
|
||||||
|
{
|
||||||
|
LOGD("Connecting to CameraService v 3D");
|
||||||
|
camera = Android3DConnect(cameraId, CAMERA_SUPPORT_MODE_2D);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dlclose(CameraHALHandle);
|
||||||
|
LOGE("Cannot connect to CameraService. Connect method was not found!");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
dlclose(CameraHALHandle);
|
||||||
|
|
||||||
if ( 0 == camera.get() )
|
if ( 0 == camera.get() )
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user