+++ /dev/null
-/*********************************************************************
-* Software License Agreement (BSD License)
-*
-* Copyright (C) 2010-2012 Ken Tossell
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions
-* are met:
-*
-* * Redistributions of source code must retain the above copyright
-* notice, this list of conditions and the following disclaimer.
-* * Redistributions in binary form must reproduce the above
-* copyright notice, this list of conditions and the following
-* disclaimer in the documentation and/or other materials provided
-* with the distribution.
-* * Neither the name of the author nor other contributors may be
-* used to endorse or promote products derived from this software
-* without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-* POSSIBILITY OF SUCH DAMAGE.
-*********************************************************************/
-#include <stdio.h>
-#include <opencv/highgui.h>
-
-#include "libuvc/libuvc.h"
-
-void cb(uvc_frame_t *frame, void *ptr) {
- uvc_frame_t *bgr;
- uvc_error_t ret;
- IplImage* cvImg;
-
- printf("callback! length = %u, ptr = %d\n", frame->data_bytes, (int) ptr);
-
- bgr = uvc_allocate_frame(frame->width * frame->height * 3);
- if (!bgr) {
- printf("unable to allocate bgr frame!");
- return;
- }
-
- ret = uvc_any2bgr(frame, bgr);
- if (ret) {
- uvc_perror(ret, "uvc_any2bgr");
- uvc_free_frame(bgr);
- return;
- }
-
- cvImg = cvCreateImageHeader(
- cvSize(bgr->width, bgr->height),
- IPL_DEPTH_8U,
- 3);
-
- cvSetData(cvImg, bgr->data, bgr->width * 3);
-
- cvNamedWindow("Test", CV_WINDOW_AUTOSIZE);
- cvShowImage("Test", cvImg);
- cvWaitKey(10);
-
- cvReleaseImageHeader(&cvImg);
-
- uvc_free_frame(bgr);
-}
-
-int main(int argc, char **argv) {
- uvc_context_t *ctx;
- uvc_error_t res;
- uvc_device_t *dev;
- uvc_device_handle_t *devh;
- uvc_stream_ctrl_t ctrl;
-
- res = uvc_init(&ctx, NULL);
-
- if (res < 0) {
- uvc_perror(res, "uvc_init");
- return res;
- }
-
- puts("UVC initialized");
-
- res = uvc_find_device(
- ctx, &dev,
- 0, 0, NULL);
-
- if (res < 0) {
- uvc_perror(res, "uvc_find_device");
- } else {
- puts("Device found");
-
- res = uvc_open(dev, &devh);
-
- if (res < 0) {
- uvc_perror(res, "uvc_open");
- } else {
- puts("Device opened");
-
- uvc_print_diag(devh, stderr);
-
- res = uvc_get_stream_ctrl_format_size(
- devh, &ctrl, UVC_FRAME_FORMAT_YUYV, 640, 480, 30
- );
-
- uvc_print_stream_ctrl(&ctrl, stderr);
-
- if (res < 0) {
- uvc_perror(res, "get_mode");
- } else {
- res = uvc_start_iso_streaming(devh, &ctrl, cb, 12345);
-
- if (res < 0) {
- uvc_perror(res, "start_streaming");
- } else {
- puts("Streaming for 10 seconds...");
- uvc_error_t resAEMODE = uvc_set_ae_mode(devh, 1);
- uvc_perror(resAEMODE, "set_ae_mode");
- int i;
- for (i = 1; i <= 10; i++) {
- /* uvc_error_t resPT = uvc_set_pantilt_abs(devh, i * 20 * 3600, 0); */
- /* uvc_perror(resPT, "set_pt_abs"); */
- uvc_error_t resEXP = uvc_set_exposure_abs(devh, 20 + i * 5);
- uvc_perror(resEXP, "set_exp_abs");
-
- sleep(1);
- }
- sleep(10);
- uvc_stop_streaming(devh);
- puts("Done streaming.");
- }
- }
-
- uvc_close(devh);
- puts("Device closed");
- }
-
- uvc_unref_device(dev);
- }
-
- uvc_exit(ctx);
- puts("UVC exited");
-
- return 0;
-}
-