/* * iaxclient: a cross-platform IAX softphone library * * Copyrights: * Copyright (C) 2003 HorizonLive.com, (c) 2004, Horizon Wimba, Inc. * * Contributors: * Steve Kann * * 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; }