📄 dc1394_control.h
字号:
/* * 1394-Based Digital Camera Control Library * Copyright (C) 2000 SMART Technologies Inc. * * Written by Gord Peters <GordPeters@smarttech.com> * Additions by Chris Urmson <curmson@ri.cmu.edu> * Additions by Damien Douxchamps <douxchamps@ieee.org> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#ifndef _DC1394_CAMERA_CONTROL_H#define _DC1394_CAMERA_CONTROL_H#include <stddef.h>#include <sys/types.h>#include <libraw1394/raw1394.h>#include <stdio.h>#include <sys/time.h>#include <stdlib.h> /* Enumeration of data speeds */enum{ SPEED_100= 0, SPEED_200, SPEED_400, SPEED_800, SPEED_1600, SPEED_3200};#define SPEED_MIN SPEED_100#define SPEED_MAX SPEED_3200#define NUM_SPEEDS (SPEED_MAX - SPEED_MIN + 1)/* Enumeration of camera framerates */enum { FRAMERATE_1_875= 32, FRAMERATE_3_75, FRAMERATE_7_5, FRAMERATE_15, FRAMERATE_30, FRAMERATE_60, FRAMERATE_120, FRAMERATE_240};#define FRAMERATE_MIN FRAMERATE_1_875#define FRAMERATE_MAX FRAMERATE_240#define NUM_FRAMERATES (FRAMERATE_MAX - FRAMERATE_MIN + 1)/* Enumeration of camera modes for Format_0 */enum { MODE_160x120_YUV444= 64, MODE_320x240_YUV422, MODE_640x480_YUV411, MODE_640x480_YUV422, MODE_640x480_RGB, MODE_640x480_MONO, MODE_640x480_MONO16};#define MODE_FORMAT0_MIN MODE_160x120_YUV444#define MODE_FORMAT0_MAX MODE_640x480_MONO16#define NUM_FORMAT0_MODES (MODE_FORMAT0_MAX - MODE_FORMAT0_MIN + 1)/* Enumeration of camera modes for Format_1 */enum { MODE_800x600_YUV422= 96, MODE_800x600_RGB, MODE_800x600_MONO, MODE_1024x768_YUV422, MODE_1024x768_RGB, MODE_1024x768_MONO, MODE_800x600_MONO16, MODE_1024x768_MONO16};#define MODE_FORMAT1_MIN MODE_800x600_YUV422#define MODE_FORMAT1_MAX MODE_1024x768_MONO16#define NUM_FORMAT1_MODES (MODE_FORMAT1_MAX - MODE_FORMAT1_MIN + 1)/* Enumeration of camera modes for Format_2 */enum { MODE_1280x960_YUV422= 128, MODE_1280x960_RGB, MODE_1280x960_MONO, MODE_1600x1200_YUV422, MODE_1600x1200_RGB, MODE_1600x1200_MONO, MODE_1280x960_MONO16, MODE_1600x1200_MONO16};#define MODE_FORMAT2_MIN MODE_1280x960_YUV422#define MODE_FORMAT2_MAX MODE_1600x1200_MONO16#define NUM_FORMAT2_MODES (MODE_FORMAT2_MAX - MODE_FORMAT2_MIN + 1)/* Enumeration of camera modes for Format_6 */enum { MODE_EXIF= 256};#define MODE_FORMAT6_MIN MODE_EXIF#define MODE_FORMAT6_MAX MODE_EXIF#define NUM_FORMAT6_MODES (MODE_FORMAT6_MAX - MODE_FORMAT6_MIN + 1)/* Enumeration of camera modes for Format_7 */enum { MODE_FORMAT7_0= 288, MODE_FORMAT7_1, MODE_FORMAT7_2, MODE_FORMAT7_3, MODE_FORMAT7_4, MODE_FORMAT7_5, MODE_FORMAT7_6, MODE_FORMAT7_7};#define MODE_FORMAT7_MIN MODE_FORMAT7_0#define MODE_FORMAT7_MAX MODE_FORMAT7_7#define NUM_MODE_FORMAT7 (MODE_FORMAT7_MAX - MODE_FORMAT7_MIN + 1)/* Enumeration of Format_7 color modes */enum { COLOR_FORMAT7_MONO8= 320, COLOR_FORMAT7_YUV411, COLOR_FORMAT7_YUV422, COLOR_FORMAT7_YUV444, COLOR_FORMAT7_RGB8, COLOR_FORMAT7_MONO16, COLOR_FORMAT7_RGB16, COLOR_FORMAT7_MONO16S, COLOR_FORMAT7_RGB16S, COLOR_FORMAT7_RAW8, COLOR_FORMAT7_RAW16};#define COLOR_FORMAT7_MIN COLOR_FORMAT7_MONO8#define COLOR_FORMAT7_MAX COLOR_FORMAT7_RAW16#define NUM_COLOR_FORMAT7 (COLOR_FORMAT7_MAX - COLOR_FORMAT7_MIN + 1)/* Enumeration of trigger modes */enum { TRIGGER_MODE_0= 352, TRIGGER_MODE_1, TRIGGER_MODE_2, TRIGGER_MODE_3};#define TRIGGER_MODE_MIN TRIGGER_MODE_0#define TRIGGER_MODE_MAX TRIGGER_MODE_3#define NUM_TRIGGER_MODE (TRIGGER_MODE_3 - TRIGGER_MODE_0 + 1)/* Enumeration of camera image formats */enum { FORMAT_VGA_NONCOMPRESSED= 384, FORMAT_SVGA_NONCOMPRESSED_1, FORMAT_SVGA_NONCOMPRESSED_2, /* 3 reserved formats */ FORMAT_STILL_IMAGE= 390, FORMAT_SCALABLE_IMAGE_SIZE};#define FORMAT_MIN FORMAT_VGA_NONCOMPRESSED#define FORMAT_MAX FORMAT_SCALABLE_IMAGE_SIZE#define NUM_FORMATS (FORMAT_MAX - FORMAT_MIN + 1)/* Enumeration of camera features */enum { FEATURE_BRIGHTNESS= 416, FEATURE_EXPOSURE, FEATURE_SHARPNESS, FEATURE_WHITE_BALANCE, FEATURE_HUE, FEATURE_SATURATION, FEATURE_GAMMA, FEATURE_SHUTTER, FEATURE_GAIN, FEATURE_IRIS, FEATURE_FOCUS, FEATURE_TEMPERATURE, FEATURE_TRIGGER, FEATURE_TRIGGER_DELAY, FEATURE_WHITE_SHADING, FEATURE_FRAME_RATE, /* 16 reserved features */ FEATURE_ZOOM, FEATURE_PAN, FEATURE_TILT, FEATURE_OPTICAL_FILTER, /* 12 reserved features */ FEATURE_CAPTURE_SIZE, FEATURE_CAPTURE_QUALITY /* 14 reserved features */};#define FEATURE_MIN FEATURE_BRIGHTNESS#define FEATURE_MAX FEATURE_CAPTURE_QUALITY#define NUM_FEATURES (FEATURE_MAX - FEATURE_MIN + 1)/* Operation modes */enum { OPERATION_MODE_LEGACY = 480, OPERATION_MODE_1394B};/* Format 7 sensor layouts*/enum{ COLOR_FILTER_FORMAT7_RGGB = 512, COLOR_FILTER_FORMAT7_GBRG, COLOR_FILTER_FORMAT7_GRBG, COLOR_FILTER_FORMAT7_BGGR};#define COLOR_FILTER_FORMAT7_MIN COLOR_FILTER_FORMAT7_RGGB#define COLOR_FILTER_FORMAT7_MAX COLOR_FILTER_FORMAT7_BGGR#define NUM_COLOR_FILTER_FORMAT7 (COLOR_FILTER_FORMAT7_MAX - COLOR_FILTER_FORMAT7_MIN + 1)/* IIDC versions*/enum{ IIDC_VERSION_1_04 = 544, IIDC_VERSION_1_20, IIDC_VERSION_PTGREY, IIDC_VERSION_1_30, IIDC_VERSION_1_31, IIDC_VERSION_1_32, IIDC_VERSION_1_33, IIDC_VERSION_1_34, IIDC_VERSION_1_35, IIDC_VERSION_1_36, IIDC_VERSION_1_37, IIDC_VERSION_1_38, IIDC_VERSION_1_39};#define IIDC_VERSION_MIN IIDC_VERSION_1_02#define IIDC_VERSION_MAX IIDC_VERSION_1_39#define NUM_IIDC_VERSION (IIDC_VERSION_MAX - IIDC_VERSION_MIN + 1)/* Maximum number of characters in vendor and model strings */#define MAX_CHARS 32/* Return values for visible functions*/#define DC1394_SUCCESS 1#define DC1394_FAILURE -1#define DC1394_NO_FRAME -2#define DC1394_NO_CAMERA 0xffff/* Parameter flags for dc1394_setup_format7_capture() */#define QUERY_FROM_CAMERA -1#define USE_MAX_AVAIL -2#define USE_RECOMMENDED -3/* The video1394 policy: blocking (wait for a frame forever) or polling (returns if no frames in buffer */typedef enum{ VIDEO1394_WAIT=0, VIDEO1394_POLL} dc1394videopolicy_t;/* Yet another boolean data type */typedef enum{ DC1394_FALSE= 0, DC1394_TRUE} dc1394bool_t;/* Camera structure */typedef struct __dc1394_camerainfo{ raw1394handle_t handle; nodeid_t id; octlet_t ccr_offset; u_int64_t euid_64; char vendor[MAX_CHARS + 1]; char model[MAX_CHARS + 1];} dc1394_camerainfo;typedef struct __dc1394_cam_cap_struct { nodeid_t node; int channel; int frame_rate; int frame_width, frame_height; int * capture_buffer; int quadlets_per_frame; int quadlets_per_packet; /* components needed for the DMA based video capture */ const unsigned char * dma_ring_buffer; int dma_buffer_size; int dma_frame_size; int num_dma_buffers; int dma_last_buffer; int num_dma_buffers_behind; const char * dma_device_file; int dma_fd; int port; struct timeval filltime; int drop_frames;} dc1394_cameracapture ;typedef struct __dc1394_misc_info{ int format; int mode; int framerate; dc1394bool_t is_iso_on; int iso_channel; int iso_speed; int mem_channel_number; int save_channel; int load_channel; dc1394bool_t bmode_capable; dc1394bool_t one_shot_capable; dc1394bool_t multi_shot_capable;} dc1394_miscinfo;typedef struct __dc1394_feature_info_struct { unsigned int feature_id; dc1394bool_t available; dc1394bool_t one_push; dc1394bool_t absolute_capable; dc1394bool_t readout_capable; dc1394bool_t on_off_capable; dc1394bool_t auto_capable; dc1394bool_t manual_capable; dc1394bool_t polarity_capable; dc1394bool_t one_push_active; dc1394bool_t is_on; dc1394bool_t auto_active; char trigger_mode_capable_mask; int trigger_mode; dc1394bool_t trigger_polarity; int min; int max; int value; int BU_value; int RV_value; int B_value; int R_value; int G_value; int target_value; dc1394bool_t abs_control; float abs_value; float abs_max; float abs_min;} dc1394_feature_info;typedef struct __dc1394_feature_set_struct { dc1394_feature_info feature[NUM_FEATURES];} dc1394_feature_set;/* Feature descriptions */extern const char *dc1394_feature_desc[NUM_FEATURES];#ifdef __cplusplusextern "C" {#endif/***************************************************** Direct register manipulation functions. Use with caution, this might wreak your camera. *****************************************************/intSetCameraControlRegister(raw1394handle_t handle, nodeid_t node, octlet_t offset, quadlet_t value);intGetCameraControlRegister(raw1394handle_t handle, nodeid_t node, octlet_t offset, quadlet_t *value);/***************************************************** dc1394_get_camera_feature_set Collects the available features for the camera described by node and stores them in features.*****************************************************/ int dc1394_get_camera_feature_set(raw1394handle_t handle, nodeid_t node, dc1394_feature_set *features);/***************************************************** dc1394_get_camera_feature Stores the bounds and options associated with the feature described by feature->feature_id*****************************************************/int dc1394_get_camera_feature(raw1394handle_t handle, nodeid_t node, dc1394_feature_info *feature);/***************************************************** dc1394_get_camera_misc_info Collects other camera info registers*****************************************************/int dc1394_get_camera_misc_info(raw1394handle_t handle, nodeid_t node, dc1394_miscinfo *info);/***************************************************** dc1394_print_feature Displays the bounds and options of the given feature
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -