Front/Back camera semantic support added to Android VideoCapture back-end.

pull/800/head
Alexander Smorkalov 12 years ago
parent 6e8f5ae574
commit 8606ee4beb
  1. BIN
      3rdparty/lib/armeabi-v7a/libnative_camera_r2.2.0.so
  2. BIN
      3rdparty/lib/armeabi-v7a/libnative_camera_r2.3.3.so
  3. BIN
      3rdparty/lib/armeabi-v7a/libnative_camera_r3.0.1.so
  4. BIN
      3rdparty/lib/armeabi-v7a/libnative_camera_r4.0.0.so
  5. BIN
      3rdparty/lib/armeabi-v7a/libnative_camera_r4.0.3.so
  6. BIN
      3rdparty/lib/armeabi-v7a/libnative_camera_r4.1.1.so
  7. BIN
      3rdparty/lib/armeabi-v7a/libnative_camera_r4.2.0.so
  8. BIN
      3rdparty/lib/armeabi/libnative_camera_r2.2.0.so
  9. BIN
      3rdparty/lib/armeabi/libnative_camera_r2.3.3.so
  10. BIN
      3rdparty/lib/armeabi/libnative_camera_r3.0.1.so
  11. BIN
      3rdparty/lib/armeabi/libnative_camera_r4.0.0.so
  12. BIN
      3rdparty/lib/armeabi/libnative_camera_r4.0.3.so
  13. BIN
      3rdparty/lib/armeabi/libnative_camera_r4.1.1.so
  14. BIN
      3rdparty/lib/armeabi/libnative_camera_r4.2.0.so
  15. BIN
      3rdparty/lib/mips/libnative_camera_r4.0.3.so
  16. BIN
      3rdparty/lib/mips/libnative_camera_r4.1.1.so
  17. BIN
      3rdparty/lib/mips/libnative_camera_r4.2.0.so
  18. BIN
      3rdparty/lib/x86/libnative_camera_r2.3.3.so
  19. BIN
      3rdparty/lib/x86/libnative_camera_r3.0.1.so
  20. BIN
      3rdparty/lib/x86/libnative_camera_r4.0.3.so
  21. BIN
      3rdparty/lib/x86/libnative_camera_r4.1.1.so
  22. BIN
      3rdparty/lib/x86/libnative_camera_r4.2.0.so
  23. 55
      modules/androidcamera/camera_wrapper/camera_wrapper.cpp
  24. 2
      modules/highgui/include/opencv2/highgui/highgui_c.h

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -362,6 +362,9 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
typedef sp<Camera> (*Android23ConnectFuncType)(int); typedef sp<Camera> (*Android23ConnectFuncType)(int);
typedef sp<Camera> (*Android3DConnectFuncType)(int, int); typedef sp<Camera> (*Android3DConnectFuncType)(int, int);
const int BACK_CAMERA_INDEX = 99;
const int FRONT_CAMERA_INDEX = 98;
enum { enum {
CAMERA_SUPPORT_MODE_2D = 0x01, /* Camera Sensor supports 2D mode. */ CAMERA_SUPPORT_MODE_2D = 0x01, /* Camera Sensor supports 2D mode. */
CAMERA_SUPPORT_MODE_3D = 0x02, /* Camera Sensor supports 3D mode. */ CAMERA_SUPPORT_MODE_3D = 0x02, /* Camera Sensor supports 3D mode. */
@ -373,7 +376,51 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
const char Android23ConnectName[] = "_ZN7android6Camera7connectEi"; const char Android23ConnectName[] = "_ZN7android6Camera7connectEi";
const char Android3DConnectName[] = "_ZN7android6Camera7connectEii"; const char Android3DConnectName[] = "_ZN7android6Camera7connectEii";
LOGD("CameraHandler::initCameraConnect(%p, %d, %p, %p)", callback, cameraId, userData, prevCameraParameters); int localCameraIndex = cameraId;
#if !defined(ANDROID_r2_2_0)
if (cameraId == BACK_CAMERA_INDEX)
{
LOGD("Back camera selected");
for (int i = 0; i < Camera::getNumberOfCameras(); i++)
{
CameraInfo info;
Camera::getCameraInfo(i, &info);
if (info.facing == CAMERA_FACING_BACK)
{
localCameraIndex = i;
break;
}
}
}
else if (cameraId == FRONT_CAMERA_INDEX)
{
LOGD("Front camera selected");
for (int i = 0; i < Camera::getNumberOfCameras(); i++)
{
CameraInfo info;
Camera::getCameraInfo(i, &info);
if (info.facing == CAMERA_FACING_FRONT)
{
localCameraIndex = i;
break;
}
}
}
if (localCameraIndex == BACK_CAMERA_INDEX)
{
LOGE("Back camera not found!");
return NULL;
}
else if (localCameraIndex == FRONT_CAMERA_INDEX)
{
LOGE("Front camera not found!");
return NULL;
}
#endif
LOGD("CameraHandler::initCameraConnect(%p, %d, %p, %p)", callback, localCameraIndex, userData, prevCameraParameters);
sp<Camera> camera = 0; sp<Camera> camera = 0;
@ -396,12 +443,12 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
else if (Android23ConnectFuncType Android23Connect = (Android23ConnectFuncType)dlsym(CameraHALHandle, Android23ConnectName)) else if (Android23ConnectFuncType Android23Connect = (Android23ConnectFuncType)dlsym(CameraHALHandle, Android23ConnectName))
{ {
LOGD("Connecting to CameraService v 2.3"); LOGD("Connecting to CameraService v 2.3");
camera = Android23Connect(cameraId); camera = Android23Connect(localCameraIndex);
} }
else if (Android3DConnectFuncType Android3DConnect = (Android3DConnectFuncType)dlsym(CameraHALHandle, Android3DConnectName)) else if (Android3DConnectFuncType Android3DConnect = (Android3DConnectFuncType)dlsym(CameraHALHandle, Android3DConnectName))
{ {
LOGD("Connecting to CameraService v 3D"); LOGD("Connecting to CameraService v 3D");
camera = Android3DConnect(cameraId, CAMERA_SUPPORT_MODE_2D); camera = Android3DConnect(localCameraIndex, CAMERA_SUPPORT_MODE_2D);
} }
else else
{ {
@ -422,7 +469,7 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
camera->setListener(handler); camera->setListener(handler);
handler->camera = camera; handler->camera = camera;
handler->cameraId = cameraId; handler->cameraId = localCameraIndex;
if (prevCameraParameters != 0) if (prevCameraParameters != 0)
{ {

@ -305,6 +305,8 @@ enum
CV_CAP_OPENNI_ASUS =910, // OpenNI (for Asus Xtion) CV_CAP_OPENNI_ASUS =910, // OpenNI (for Asus Xtion)
CV_CAP_ANDROID =1000, // Android CV_CAP_ANDROID =1000, // Android
CV_CAP_ANDROID_BACK =CV_CAP_ANDROID+99, // Android back camera
CV_CAP_ANDROID_FRONT =CV_CAP_ANDROID+98, // Android front camera
CV_CAP_XIAPI =1100, // XIMEA Camera API CV_CAP_XIAPI =1100, // XIMEA Camera API

Loading…
Cancel
Save