/////////////////////////////////////////////////////////////////////////////
// Name: crvcamera_enum.cpp
// Purpose: Detect, enumerate and create camera object
// Author: Cesar Mauri Loba (cesar at crea-si dot com)
// Modified by:
// Created: 1/10/2010
// Copyright: (C) 2008-15 Cesar Mauri Loba - CREA Software Systems
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
/////////////////////////////////////////////////////////////////////////////
#ifdef WIN32
#include "crvcamera_cv.h"
#include "crvcamera_wdm.h"
#define NATIVE_CAM_CLASS CCameraWDM
#else // linux
#include
#include "webcam.h"
#include "crvcamera_cv.h"
#include "crvcamera_v4l2.h"
#define NATIVE_CAM_CLASS CCameraV4L2
#endif
#include "crvcamera_enum.h"
#include "simplelog.h"
#define CAMERA_CV_ID 1
int CCameraEnum::getNumDevices(int driverId)
{
if (driverId == CAMERA_CV_ID) {
return CCameraCV::GetNumDevices();
}
else {
return NATIVE_CAM_CLASS::GetNumDevices();
}
}
const char* CCameraEnum::getDeviceName(int driverId, int camId)
{
if (driverId == CAMERA_CV_ID) {
return CCameraCV::GetDeviceName(camId);
}
else {
return NATIVE_CAM_CLASS::GetDeviceName(camId);
}
}
CCamera* CCameraEnum::getCamera(int driverId, int camId, unsigned int width, unsigned int height, float frameRate)
{
if (camId>= getNumDevices(driverId)) return NULL;
try{
if (driverId == CAMERA_CV_ID) {
return new CCameraCV(camId, width, height, frameRate);
}
else {
return new NATIVE_CAM_CLASS(camId, width, height, frameRate);
}
}
catch (camera_exception &e) {
slog_write (SLOG_PRIO_ERR, "error initializing camera: %s\n", e.what());
}
return NULL;
}