flightgear/3rdparty/iaxclient-2/lib/video_portvideo.cpp

107 lines
2.2 KiB
C++
Raw Normal View History

2022-11-12 21:36:02 +08:00
/*
* iaxclient: a cross-platform IAX softphone library
*
* Copyrights:
* Copyright (C) 2003 HorizonLive.com, (c) 2004, Horizon Wimba, Inc.
*
* Contributors:
* Steve Kann <stevek@stevek.com>
*
* This program is free software, distributed under the terms of
* the GNU Lesser (Library) General Public License
*
* Module: video_portvideo
* Purpose: Video code to provide portvideo driver support for IAX library
* Developed by: Steve Kann
* Creation Date: April 7, 2005
*
*
*/
#include "iaxclient_lib.h"
#include "PortVideoSDL/common/cameraEngine.h"
#include "PortVideoSDL/common/cameraTool.h"
static cameraEngine *engine;
int running;
int pv_start (struct iaxc_video_driver *d ) {
if(!running) {
if(!engine->startCamera()) {
fprintf(stderr, "pv: couldn't start camera\n");
return -1;
}
running = 1;
}
return 0;
}
int pv_stop (struct iaxc_video_driver *d ) {
return 0;
}
void pv_shutdown() {
}
int pv_input(struct iaxc_video_driver *d, unsigned char **in) {
unsigned char *data = NULL;
data = engine->getFrame();
if(!data) {
if(!engine->stillRunning()) {
fprintf(stderr, "camera disconnected\n");
running = 0;
}
fprintf(stderr, "pv_input: no frame\n");
return 0;
}
*in = data;
return 0;
}
int pv_output(struct iaxc_video_driver *d, unsigned char *data) {
return 0;
}
int pv_select_devices (struct iaxc_video_driver *d, int input, int output) {
return 0;
}
int pv_selected_devices (struct iaxc_video_driver *d, int *input, int *output) {
return 0;
}
int pv_destroy (struct iaxc_video_driver *d ) {
//implementme
return 0;
}
/* initialize video driver */
int pv_initialize (struct iaxc_video_driver *d, int w, int h, int framerate) {
/* setup methods */
d->initialize = pv_initialize;
d->destroy = pv_destroy;
d->select_devices = pv_select_devices;
d->selected_devices = pv_selected_devices;
d->start = pv_start;
d->stop = pv_stop;
d->output = pv_output;
d->input = pv_input;
engine = cameraTool::findCamera();
if(!engine) {
fprintf(stderr, "video_portvideo: can't find camera\n");
return -1;
}
if(!engine->initCamera(w,h,true)) {
fprintf(stderr, "can't initialize camera");
return -1;
}
return 0;
}