libdc1394: API version 2: Types and definitions | |
Simple integer type definitionsNo comments are necessary here, I think. #define uint_t unsigned int #define uint16_t unsigned short int #define uint64_t unsigned long long int #define uchar_t unsigned char Libdc1394 revision codesA few revision codes are defined in version 2.0.0. They were not defined in earlier version. Their purpose is to let you dynamically verify which version of libdc1394 is installed. Four numbers are defined in two different classes:
#define LIBDC1394_VERSION 0200 #define LIBDC1394_VERSION_MAJOR 20 #define LIBDC1394_VERSION_REVISION 0 #define LIBDC1394_VERSION_AGE 0 ISO speed transmissionThese definitions specify the isochronous speed at which the transmission should occur. 100 stands for 100Mbps, 400 for 400Mbps,... Note that speeds of 1600 and 3200 Mbps are for future use only: they are not supported by any hardware or software at the moment. The definitions below can be used with functions like dc1394_video_get/set_iso_speed(). typedef enum { DC1394_ISO_SPEED_100= 0, DC1394_ISO_SPEED_200, DC1394_ISO_SPEED_400, DC1394_ISO_SPEED_800, DC1394_ISO_SPEED_1600, DC1394_ISO_SPEED_3200 } dc1394speed_t; #define DC1394_ISO_SPEED_MIN DC1394_ISO_SPEED_100 #define DC1394_ISO_SPEED_MAX DC1394_ISO_SPEED_3200 #define DC1394_ISO_SPEED_NUM (DC1394_ISO_SPEED_MAX - DC1394_ISO_SPEED_MIN + 1) FrameratesFramerates are used with fixed-size image formats (Format_0 to Format_2). To be used with dc1394_video_get/set_framerate(). Note that you may also be able to set the framerate with the FRAMERATE feature. If you use Format_7 you should set the framerate by adjusting the number of bytes per packet. A list of all the framerates supported by your camera for a specific video mode can be obtained with dc1394_video_get_supported_framerates(). typedef enum { DC1394_FRAMERATE_1_875= 32, DC1394_FRAMERATE_3_75, DC1394_FRAMERATE_7_5, DC1394_FRAMERATE_15, DC1394_FRAMERATE_30, DC1394_FRAMERATE_60, DC1394_FRAMERATE_120, DC1394_FRAMERATE_240 } dc1394framerate_t; #define DC1394_FRAMERATE_MIN DC1394_FRAMERATE_1_875 #define DC1394_FRAMERATE_MAX DC1394_FRAMERATE_240 #define DC1394_FRAMERATE_NUM (DC1394_FRAMERATE_MAX - DC1394_FRAMERATE_MIN + 1) Video modesThe video modes are what let you choose the image size and color format. Two special format classes exist: the EXIF mode (which is actually not supported by any known camera) and Format_7 which is the scalable image format. Format_7 allows you to change the image size, framerate, color coding and crop region. Important note: your camera will not support all the video modes below but will only supports a more or less limited subset of them. To get/set the current video mode you should use the following definitions with the functions dc1394_video_get/set_mode(). A list of all the modes supported by your camera can be obtained with dc1394_video_get_supported_modes(). typedef enum { DC1394_VIDEO_MODE_160x120_YUV444= 64, DC1394_VIDEO_MODE_320x240_YUV422, DC1394_VIDEO_MODE_640x480_YUV411, DC1394_VIDEO_MODE_640x480_YUV422, DC1394_VIDEO_MODE_640x480_RGB8, DC1394_VIDEO_MODE_640x480_MONO8, DC1394_VIDEO_MODE_640x480_MONO16, DC1394_VIDEO_MODE_800x600_YUV422, DC1394_VIDEO_MODE_800x600_RGB8, DC1394_VIDEO_MODE_800x600_MONO8, DC1394_VIDEO_MODE_1024x768_YUV422, DC1394_VIDEO_MODE_1024x768_RGB8, DC1394_VIDEO_MODE_1024x768_MONO8, DC1394_VIDEO_MODE_800x600_MONO16, DC1394_VIDEO_MODE_1024x768_MONO16, DC1394_VIDEO_MODE_1280x960_YUV422, DC1394_VIDEO_MODE_1280x960_RGB8, DC1394_VIDEO_MODE_1280x960_MONO8, DC1394_VIDEO_MODE_1600x1200_YUV422, DC1394_VIDEO_MODE_1600x1200_RGB8, DC1394_VIDEO_MODE_1600x1200_MONO8, DC1394_VIDEO_MODE_1280x960_MONO16, DC1394_VIDEO_MODE_1600x1200_MONO16, DC1394_VIDEO_MODE_EXIF, DC1394_VIDEO_MODE_FORMAT7_0, DC1394_VIDEO_MODE_FORMAT7_1, DC1394_VIDEO_MODE_FORMAT7_2, DC1394_VIDEO_MODE_FORMAT7_3, DC1394_VIDEO_MODE_FORMAT7_4, DC1394_VIDEO_MODE_FORMAT7_5, DC1394_VIDEO_MODE_FORMAT7_6, DC1394_VIDEO_MODE_FORMAT7_7 } dc1394video_mode_t; /* All formats: */ #define DC1394_VIDEO_MODE_MIN DC1394_VIDEO_MODE_160x120_YUV444 #define DC1394_VIDEO_MODE_MAX DC1394_VIDEO_MODE_FORMAT7_7 #define DC1394_VIDEO_MODE_NUM (DC1394_VIDEO_MODE_MAX - DC1394_VIDEO_MODE_MIN) /* Format_7 */ #define DC1394_VIDEO_MODE_FORMAT7_MIN DC1394_VIDEO_MODE_FORMAT7_0 #define DC1394_VIDEO_MODE_FORMAT7_MAX DC1394_VIDEO_MODE_FORMAT7_7 #define DC1394_VIDEO_MODE_FORMAT7_NUM (DC1394_VIDEO_MODE_FORMAT7_MAX - DC1394_VIDEO_MODE_FORMAT7_MIN + 1) Color codingsColor codings define the type of color space (YUV, RGB, monochrome,...) as well as the bit depth of each value (8 or 16bit). They are used only for Format_7. Used with functions dc1394_format7_get/set_color_coding(). A list of all supported color codings for a specific format can be obtained with dc1394_format7_get_color_codings(). typedef enum { DC1394_COLOR_CODING_MONO8= 320, DC1394_COLOR_CODING_YUV411, DC1394_COLOR_CODING_YUV422, DC1394_COLOR_CODING_YUV444, DC1394_COLOR_CODING_RGB8, DC1394_COLOR_CODING_MONO16, DC1394_COLOR_CODING_RGB16, DC1394_COLOR_CODING_MONO16S, DC1394_COLOR_CODING_RGB16S, DC1394_COLOR_CODING_RAW8, DC1394_COLOR_CODING_RAW16 } dc1394color_coding_t; #define DC1394_COLOR_CODING_MIN DC1394_COLOR_CODING_MONO8 #define DC1394_COLOR_CODING_MAX DC1394_COLOR_CODING_RAW16 #define DC1394_COLOR_CODING_NUM (DC1394_COLOR_CODING_MAX - DC1394_COLOR_CODING_MIN + 1) Trigger modesTrigger mode mostly refer to external trigger. Each trigger has a meaning specified in the IIDC specifications.
(Note: Your camera may support the inversion of the the polarity of the trigger signal.) typedef enum { DC1394_TRIGGER_MODE_0= 352, DC1394_TRIGGER_MODE_1, DC1394_TRIGGER_MODE_2, DC1394_TRIGGER_MODE_3, DC1394_TRIGGER_MODE_4, DC1394_TRIGGER_MODE_5, DC1394_TRIGGER_MODE_14, DC1394_TRIGGER_MODE_15 } dc1394trigger_mode_t; #define DC1394_TRIGGER_MODE_MIN DC1394_TRIGGER_MODE_0 #define DC1394_TRIGGER_MODE_MAX DC1394_TRIGGER_MODE_15 #define DC1394_TRIGGER_MODE_NUM (DC1394_TRIGGER_MODE_MAX - DC1394_TRIGGER_MODE_MIN + 1) FeaturesIn IIDC, 'features' refer to a number of image parameters that can be tuned like exposure, white balance, etc... Features are adjusted with a number of specific functions. The name of each feature is relatively easy to understand. The only trick is that the EXPOSURE feature is actually an AUTO exposure function. Its behaviour depends on the manufacturer. typedef enum { DC1394_FEATURE_BRIGHTNESS= 416, DC1394_FEATURE_EXPOSURE, DC1394_FEATURE_SHARPNESS, DC1394_FEATURE_WHITE_BALANCE, DC1394_FEATURE_HUE, DC1394_FEATURE_SATURATION, DC1394_FEATURE_GAMMA, DC1394_FEATURE_SHUTTER, DC1394_FEATURE_GAIN, DC1394_FEATURE_IRIS, DC1394_FEATURE_FOCUS, DC1394_FEATURE_TEMPERATURE, DC1394_FEATURE_TRIGGER, DC1394_FEATURE_TRIGGER_DELAY, DC1394_FEATURE_WHITE_SHADING, DC1394_FEATURE_FRAME_RATE, DC1394_FEATURE_ZOOM, DC1394_FEATURE_PAN, DC1394_FEATURE_TILT, DC1394_FEATURE_OPTICAL_FILTER, DC1394_FEATURE_CAPTURE_SIZE, DC1394_FEATURE_CAPTURE_QUALITY } dc1394feature_id_t; #define DC1394_FEATURE_MIN DC1394_FEATURE_BRIGHTNESS #define DC1394_FEATURE_MAX DC1394_FEATURE_CAPTURE_QUALITY #define DC1394_FEATURE_NUM (DC1394_FEATURE_MAX - DC1394_FEATURE_MIN + 1) Operation modesAs the IEEE1394 speeds were increased with IEEE-1394b specifications, a new type of control is necessary when the camera is operating in iso speeds over 800Mbps. If you wish to use a 1394b camera you may need to switch the operation mode to 1394b. Legacy mode refers to speeds less than 400Mbps. You can play with the operation mode thanks to the functions dc1394_video_get/set_operation_mode(). typedef enum { DC1394_OPERATION_MODE_LEGACY = 480, DC1394_OPERATION_MODE_1394B } dc1394operation_mode_t; (Note: libdc1394 has not been much tested for 1394b operation. Hence, it 'should' work but this is not a firm statement.) Color sensor layoutWhen using a RAW image format the color is sent in... raw bayer format. Each pixel has one and only one color and the image can be interpolated in the host computer instead of the camera (thereby saving bandwidth on the 1394 bus). Four elementary tiles exist for this bayer code. The raw image consists in a two dimensional repetition of one of these patterns: RGGB, GBRG, GRBG, BGGR which refer to the following 2D tiles (respectively): RG GB GR BG GB RG BG GR You will need to specify the tile when working with interpolating functions. typedef enum { DC1394_COLOR_FILTER_RGGB = 512, DC1394_COLOR_FILTER_GBRG, DC1394_COLOR_FILTER_GRBG, DC1394_COLOR_FILTER_BGGR } dc1394color_filter_t; #define DC1394_COLOR_FILTER_MIN DC1394_COLOR_FILTER_RGGB #define DC1394_COLOR_FILTER_MAX DC1394_COLOR_FILTER_BGGR #define DC1394_COLOR_FILTER_NUM (DC1394_COLOR_FILTER_MAX - DC1394_COLOR_FILTER_MIN + 1) IIDC versionThis is a list of the IIDC versions in case you need to adapt your software according to this read-only parameter. Versions up to 1.31 are defined at the moment, other versions are for future use only. The PTGREY version is used in some stereo products of Point Grey Research in order to avoid the standard Windoze layers to deal with the image flow. typedef enum { DC1394_IIDC_VERSION_1_04 = 544, DC1394_IIDC_VERSION_1_20, DC1394_IIDC_VERSION_PTGREY, DC1394_IIDC_VERSION_1_30, DC1394_IIDC_VERSION_1_31, DC1394_IIDC_VERSION_1_32, DC1394_IIDC_VERSION_1_33, DC1394_IIDC_VERSION_1_34, DC1394_IIDC_VERSION_1_35, DC1394_IIDC_VERSION_1_36, DC1394_IIDC_VERSION_1_37, DC1394_IIDC_VERSION_1_38, DC1394_IIDC_VERSION_1_39 } dc1394iidc_version_t; #define DC1394_IIDC_VERSION_MIN DC1394_IIDC_VERSION_1_04 #define DC1394_IIDC_VERSION_MAX DC1394_IIDC_VERSION_1_39 #define DC1394_IIDC_VERSION_NUM (DC1394_IIDC_VERSION_MAX - DC1394_IIDC_VERSION_MIN + 1) Interface infoThis information may be removed soon. Use at your own risk. /* Enumeration of power classes */ typedef enum { DC1394_POWER_CLASS_NONE=608, DC1394_POWER_CLASS_PROV_MIN_15W, DC1394_POWER_CLASS_PROV_MIN_30W, DC1394_POWER_CLASS_PROV_MIN_45W, DC1394_POWER_CLASS_USES_MAX_1W, DC1394_POWER_CLASS_USES_MAX_3W, DC1394_POWER_CLASS_USES_MAX_6W, DC1394_POWER_CLASS_USES_MAX_10W } dc1394power_class_t; #define DC1394_POWER_CLASS_MIN DC1394_POWER_CLASS_NONE #define DC1394_POWER_CLASS_MAX DC1394_POWER_CLASS_USES_MAX_10W #define DC1394_POWER_CLASS_NUM (DC1394_POWER_CLASS_MAX - DC1394_POWER_CLASS_MIN + 1) /* Enumeration of PHY delays */ typedef enum { DC1394_PHY_DELAY_MAX_144_NS=640, DC1394_PHY_DELAY_UNKNOWN_0, DC1394_PHY_DELAY_UNKNOWN_1, DC1394_PHY_DELAY_UNKNOWN_2 } dc1394phy_delay_t; #define DC1394_PHY_DELAY_MIN DC1394_PHY_DELAY_MAX_144_NS #define DC1394_PHY_DELAY_MAX DC1394_PHY_DELAY_UNKNOWN_0 #define DC1394_PHY_DELAY_NUM (DC1394_PHY_DELAY_MAX - DC1394_PHY_DELAY_MIN + 1) Trigger sourcesSome cameras let you select the external trigger input. These are the codes to be sent to the appropriate functions: typedef enum { DC1394_TRIGGER_SOURCE_0= 576, DC1394_TRIGGER_SOURCE_1, DC1394_TRIGGER_SOURCE_2, DC1394_TRIGGER_SOURCE_3, } dc1394trigger_source_t; #define DC1394_TRIGGER_SOURCE_MIN DC1394_TRIGGER_SOURCE_0 #define DC1394_TRIGGER_SOURCE_MAX DC1394_TRIGGER_SOURCE_3 #define DC1394_TRIGGER_SOURCE_NUM (DC1394_TRIGGER_SOURCE_MAX - DC1394_TRIGGER_SOURCE_MIN + 1) Error codesSeveral error codes are defined but actually only a few are used in the library at the moment: don't be surprised if you receive only generic errors... One error code is negative which shows it is only a warning. Therefor I have to warn you: dont use comparisons such as "<=0" to detect success. typedef enum { DC1394_SUCCESS=0, /* Success is zero */ DC1394_FAILURE, /* Errors are positive numbers */ DC1394_NO_FRAME=-2, /* Warnings or info are negative numbers*/ DC1394_NO_CAMERA=3, DC1394_NOT_A_CAMERA, DC1394_FUNCTION_NOT_SUPPORTED, DC1394_CAMERA_NOT_INITITIALIZED, DC1394_INVALID_FEATURE, DC1394_INVALID_FORMAT, DC1394_INVALID_MODE, DC1394_INVALID_FRAMERATE, DC1394_INVALID_TRIGGER_MODE, DC1394_INVALID_TRIGGER_SOURCE, DC1394_INVALID_ISO_SPEED, DC1394_INVALID_IIDC_VERSION, DC1394_INVALID_COLOR_MODE, DC1394_INVALID_FORMAT7_COLOR_TILE, DC1394_REQ_VALUE_OUTSIDE_RANGE, DC1394_INVALID_ERROR_CODE, DC1394_MEMORY_ALLOCATION_FAILURE, DC1394_TAGGED_REGISTER_NOT_FOUND, DC1394_FORMAT7_ERROR_FLAG_1, DC1394_FORMAT7_ERROR_FLAG_2, DC1394_INVALID_BAYER_METHOD, DC1394_HANDLE_CREATION_FAILURE, DC1394_GENERIC_INVALID_ARGUMENT, DC1394_INVALID_VIDEO1394_DEVICE, DC1394_NO_ISO_CHANNEL, DC1394_NO_BANDWIDTH, DC1394_IOCTL_FAILURE, DC1394_CAPTURE_IS_NOT_SET = -30, DC1394_CAPTURE_IS_RUNNING = 31, DC1394_RAW1394_FAILURE, DC1394_BASLER_NO_MORE_SFF_CHUNKS, DC1394_BASLER_CORRUPTED_SFF_CHUNK, DC1394_BASLER_UNKNOWN_SFF_CHUNK } dc1394error_t; #define DC1394_ERROR_NUM DC1394_BASLER_UNKNOWN_SFF_CHUNK+1 ROI setting gizmosThe following definitions can be used to set ROI of Format_7 in a simpler fashion. QUERY_FROM_CAMERA will use the current value used by the camera, USE_MAX_AVAIL will set the value to its maximum and USE_RECOMMENDED can be used for the bytes-per-packet setting. #define DC1394_QUERY_FROM_CAMERA -1 #define DC1394_USE_MAX_AVAIL -2 #define DC1394_USE_RECOMMENDED -3 VIDEO1394 policyWhen capturing a frame you can choose to either wait for the frame indefinitely (WAIT) or return immediately if no frame arrived yet (POLL). typedef enum { DC1394_CAPTURE_POLICY_WAIT=0, DC1394_CAPTURE_POLICY_POLL } dc1394capture_policy_t; Trigger polarityYou've guessed it: it's used to set the tigger polarity. typedef enum { DC1394_TRIGGER_ACTIVE_LOW= 0, DC1394_TRIGGER_ACTIVE_HIGH } dc1394trigger_polarity_t; Feature modeFeature modes are the way the feature is controlled. Three modes exist: MANUAL, AUTO and ONE_PUSH_AUTO. The latter performs an automatic setting before self-clearing. typedef enum { DC1394_FEATURE_MODE_MANUAL= 0, DC1394_FEATURE_MODE_AUTO, DC1394_FEATURE_MODE_ONE_PUSH_AUTO } dc1394feature_mode_t; Boolean typesTwo types are used: one is indeed boolean and the other one is more like a binary switch. This makes programs easier to read (you switch a feature ON; you don't set it to TRUE). typedef enum { DC1394_FALSE= 0, DC1394_TRUE } dc1394bool_t; typedef enum { DC1394_OFF= 0, DC1394_ON } dc1394switch_t; | |
© 2024 Damien Douxchamps. All rights reserved. |