|
Packit |
713213 |
/*
|
|
Packit |
713213 |
* 1394-Based Digital Camera Control Library
|
|
Packit |
713213 |
*
|
|
Packit |
713213 |
* Utilities
|
|
Packit |
713213 |
*
|
|
Packit |
713213 |
* Written by Damien Douxchamps <ddouxchamps@users.sf.net>
|
|
Packit |
713213 |
*
|
|
Packit |
713213 |
* This library is free software; you can redistribute it and/or
|
|
Packit |
713213 |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit |
713213 |
* License as published by the Free Software Foundation; either
|
|
Packit |
713213 |
* version 2.1 of the License, or (at your option) any later version.
|
|
Packit |
713213 |
*
|
|
Packit |
713213 |
* This library is distributed in the hope that it will be useful,
|
|
Packit |
713213 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
713213 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
713213 |
* Lesser General Public License for more details.
|
|
Packit |
713213 |
*
|
|
Packit |
713213 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
713213 |
* License along with this library; if not, write to the Free Software
|
|
Packit |
713213 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
Packit |
713213 |
*/
|
|
Packit |
713213 |
|
|
Packit |
713213 |
#include "internal.h"
|
|
Packit |
713213 |
|
|
Packit |
713213 |
const char *dc1394_feature_desc[DC1394_FEATURE_NUM] = {
|
|
Packit |
713213 |
"Brightness",
|
|
Packit |
713213 |
"Exposure",
|
|
Packit |
713213 |
"Sharpness",
|
|
Packit |
713213 |
"White Balance",
|
|
Packit |
713213 |
"Hue",
|
|
Packit |
713213 |
"Saturation",
|
|
Packit |
713213 |
"Gamma",
|
|
Packit |
713213 |
"Shutter",
|
|
Packit |
713213 |
"Gain",
|
|
Packit |
713213 |
"Iris",
|
|
Packit |
713213 |
"Focus",
|
|
Packit |
713213 |
"Temperature",
|
|
Packit |
713213 |
"Trigger",
|
|
Packit |
713213 |
"Trigger Delay",
|
|
Packit |
713213 |
"White Shading",
|
|
Packit |
713213 |
"Frame Rate",
|
|
Packit |
713213 |
"Zoom",
|
|
Packit |
713213 |
"Pan",
|
|
Packit |
713213 |
"Tilt",
|
|
Packit |
713213 |
"Optical Filter",
|
|
Packit |
713213 |
"Capture Size",
|
|
Packit |
713213 |
"Capture Quality"
|
|
Packit |
713213 |
};
|
|
Packit |
713213 |
|
|
Packit |
713213 |
const char *dc1394_error_strings[DC1394_ERROR_NUM] = {
|
|
Packit |
713213 |
"Success",
|
|
Packit |
713213 |
"Generic failure",
|
|
Packit |
713213 |
"This node is not a camera",
|
|
Packit |
713213 |
"Function not supported by this camera",
|
|
Packit |
713213 |
"Camera not initialized",
|
|
Packit |
713213 |
"Memory allocation failure",
|
|
Packit |
713213 |
"Tagged register not found",
|
|
Packit |
713213 |
"Could not allocate an ISO channel",
|
|
Packit |
713213 |
"Could not allocate bandwidth",
|
|
Packit |
713213 |
"IOCTL failure",
|
|
Packit |
713213 |
"Capture is not set",
|
|
Packit |
713213 |
"Capture is running",
|
|
Packit |
713213 |
"RAW1394 failure",
|
|
Packit |
713213 |
"Format_7 Error_flag_1 is set",
|
|
Packit |
713213 |
"Format_7 Error_flag_2 is set",
|
|
Packit |
713213 |
"Invalid argument value",
|
|
Packit |
713213 |
"Requested value is out of range",
|
|
Packit |
713213 |
"Invalid feature",
|
|
Packit |
713213 |
"Invalid video format",
|
|
Packit |
713213 |
"Invalid video mode",
|
|
Packit |
713213 |
"Invalid framerate",
|
|
Packit |
713213 |
"Invalid trigger mode",
|
|
Packit |
713213 |
"Invalid trigger source",
|
|
Packit |
713213 |
"Invalid ISO speed",
|
|
Packit |
713213 |
"Invalid IIDC version",
|
|
Packit |
713213 |
"Invalid Format_7 color coding",
|
|
Packit |
713213 |
"Invalid Format_7 elementary Bayer tile",
|
|
Packit |
713213 |
"Invalid capture mode",
|
|
Packit |
713213 |
"Invalid error code",
|
|
Packit |
713213 |
"Invalid Bayer method",
|
|
Packit |
713213 |
"Invalid video1394 device",
|
|
Packit |
713213 |
"Invalid operation mode",
|
|
Packit |
713213 |
"Invalid trigger polarity",
|
|
Packit |
713213 |
"Invalid feature mode",
|
|
Packit |
713213 |
"Invalid log type",
|
|
Packit |
713213 |
"Invalid byte order",
|
|
Packit |
713213 |
"Invalid stereo method",
|
|
Packit |
713213 |
"Basler error: no more SFF chunks",
|
|
Packit |
713213 |
"Basler error: corrupted SFF chunk",
|
|
Packit |
713213 |
"Basler error: unknown SFF chunk"
|
|
Packit |
713213 |
};
|
|
Packit |
713213 |
|
|
Packit |
713213 |
dc1394error_t
|
|
Packit |
713213 |
dc1394_get_image_size_from_video_mode(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint32_t *w, uint32_t *h)
|
|
Packit |
713213 |
{
|
|
Packit |
713213 |
dc1394error_t err;
|
|
Packit |
713213 |
uint32_t sx, sy;
|
|
Packit |
713213 |
|
|
Packit |
713213 |
switch(video_mode) {
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_160x120_YUV444:
|
|
Packit |
713213 |
*w = 160;*h=120;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_320x240_YUV422:
|
|
Packit |
713213 |
*w = 320;*h=240;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_640x480_YUV411:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_640x480_YUV422:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_640x480_RGB8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_640x480_MONO8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_640x480_MONO16:
|
|
Packit |
713213 |
*w =640;*h=480;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_800x600_YUV422:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_800x600_RGB8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_800x600_MONO8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_800x600_MONO16:
|
|
Packit |
713213 |
*w=800;*h=600;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1024x768_YUV422:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1024x768_RGB8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1024x768_MONO8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1024x768_MONO16:
|
|
Packit |
713213 |
*w=1024;*h=768;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1280x960_YUV422:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1280x960_RGB8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1280x960_MONO8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1280x960_MONO16:
|
|
Packit |
713213 |
*w=1280;*h=960;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1600x1200_YUV422:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1600x1200_RGB8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1600x1200_MONO8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1600x1200_MONO16:
|
|
Packit |
713213 |
*w=1600;*h=1200;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_0:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_1:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_2:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_3:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_4:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_5:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_6:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_7:
|
|
Packit |
713213 |
// get the current color mode from the camera
|
|
Packit |
713213 |
err=dc1394_format7_get_image_size(camera, video_mode, &sx, &sy;;
|
|
Packit |
713213 |
if (err!=DC1394_SUCCESS) {
|
|
Packit |
713213 |
return err;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
else {
|
|
Packit |
713213 |
*w=sx;
|
|
Packit |
713213 |
*h=sy;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_EXIF:
|
|
Packit |
713213 |
return DC1394_FAILURE;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
|
|
Packit |
713213 |
return DC1394_FAILURE;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
|
|
Packit |
713213 |
|
|
Packit |
713213 |
dc1394error_t
|
|
Packit |
713213 |
dc1394_framerate_as_float(dc1394framerate_t framerate_enum, float *framerate)
|
|
Packit |
713213 |
{
|
|
Packit |
713213 |
switch(framerate_enum) {
|
|
Packit |
713213 |
case DC1394_FRAMERATE_1_875:
|
|
Packit |
713213 |
*framerate=1.875;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_FRAMERATE_3_75:
|
|
Packit |
713213 |
*framerate=3.75;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_FRAMERATE_7_5:
|
|
Packit |
713213 |
*framerate=7.5;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_FRAMERATE_15:
|
|
Packit |
713213 |
*framerate=15.0;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_FRAMERATE_30:
|
|
Packit |
713213 |
*framerate=30.0;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_FRAMERATE_60:
|
|
Packit |
713213 |
*framerate=60.0;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_FRAMERATE_120:
|
|
Packit |
713213 |
*framerate=120.0;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_FRAMERATE_240:
|
|
Packit |
713213 |
*framerate=240.0;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
return DC1394_INVALID_FRAMERATE;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
|
|
Packit |
713213 |
dc1394error_t
|
|
Packit |
713213 |
dc1394_is_color(dc1394color_coding_t color_coding, dc1394bool_t *is_color)
|
|
Packit |
713213 |
{
|
|
Packit |
713213 |
switch(color_coding) {
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_MONO8:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_MONO16:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_MONO16S:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_RAW8:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_RAW16:
|
|
Packit |
713213 |
*is_color=DC1394_FALSE;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_YUV411:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_YUV422:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_YUV444:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_RGB8:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_RGB16:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_RGB16S:
|
|
Packit |
713213 |
*is_color=DC1394_TRUE;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
return DC1394_INVALID_COLOR_CODING;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
|
|
Packit |
713213 |
dc1394error_t
|
|
Packit |
713213 |
dc1394_get_color_coding_data_depth(dc1394color_coding_t color_coding, uint32_t * bits)
|
|
Packit |
713213 |
{
|
|
Packit |
713213 |
switch(color_coding) {
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_MONO8:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_YUV411:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_YUV422:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_YUV444:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_RGB8:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_RAW8:
|
|
Packit |
713213 |
*bits = 8;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_MONO16:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_RGB16:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_MONO16S:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_RGB16S:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_RAW16:
|
|
Packit |
713213 |
// shoudn't we return the real bit depth (e.g. 12) instead of systematically 16?
|
|
Packit |
713213 |
*bits = 16;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
return DC1394_INVALID_COLOR_CODING;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
|
|
Packit |
713213 |
dc1394error_t
|
|
Packit |
713213 |
dc1394_get_color_coding_bit_size(dc1394color_coding_t color_coding, uint32_t* bits)
|
|
Packit |
713213 |
{
|
|
Packit |
713213 |
switch(color_coding) {
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_MONO8:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_RAW8:
|
|
Packit |
713213 |
*bits=8;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_YUV411:
|
|
Packit |
713213 |
*bits=12;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_MONO16:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_RAW16:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_MONO16S:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_YUV422:
|
|
Packit |
713213 |
*bits=16;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_YUV444:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_RGB8:
|
|
Packit |
713213 |
*bits=24;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_RGB16:
|
|
Packit |
713213 |
case DC1394_COLOR_CODING_RGB16S:
|
|
Packit |
713213 |
*bits=48;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
return DC1394_INVALID_COLOR_CODING;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
|
|
Packit |
713213 |
dc1394error_t
|
|
Packit |
713213 |
dc1394_get_color_coding_from_video_mode(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394color_coding_t *color_coding)
|
|
Packit |
713213 |
{
|
|
Packit |
713213 |
dc1394error_t err;
|
|
Packit |
713213 |
dc1394color_coding_t id;
|
|
Packit |
713213 |
|
|
Packit |
713213 |
switch(video_mode) {
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_160x120_YUV444:
|
|
Packit |
713213 |
*color_coding=DC1394_COLOR_CODING_YUV444;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_320x240_YUV422:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_640x480_YUV422:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_800x600_YUV422:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1024x768_YUV422:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1280x960_YUV422:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1600x1200_YUV422:
|
|
Packit |
713213 |
*color_coding=DC1394_COLOR_CODING_YUV422;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_640x480_YUV411:
|
|
Packit |
713213 |
*color_coding=DC1394_COLOR_CODING_YUV411;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_640x480_RGB8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_800x600_RGB8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1024x768_RGB8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1280x960_RGB8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1600x1200_RGB8:
|
|
Packit |
713213 |
*color_coding=DC1394_COLOR_CODING_RGB8;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_640x480_MONO8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_800x600_MONO8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1024x768_MONO8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1280x960_MONO8:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1600x1200_MONO8:
|
|
Packit |
713213 |
*color_coding=DC1394_COLOR_CODING_MONO8;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_800x600_MONO16:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_640x480_MONO16:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1024x768_MONO16:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1280x960_MONO16:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_1600x1200_MONO16:
|
|
Packit |
713213 |
*color_coding=DC1394_COLOR_CODING_MONO16;
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_0:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_1:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_2:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_3:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_4:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_5:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_6:
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_FORMAT7_7:
|
|
Packit |
713213 |
// get the current color mode from the camera
|
|
Packit |
713213 |
err=dc1394_format7_get_color_coding(camera, video_mode, &id;;
|
|
Packit |
713213 |
if (err!=DC1394_SUCCESS) {
|
|
Packit |
713213 |
return err;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
else {
|
|
Packit |
713213 |
*color_coding=id;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
return DC1394_SUCCESS;
|
|
Packit |
713213 |
case DC1394_VIDEO_MODE_EXIF:
|
|
Packit |
713213 |
return DC1394_FAILURE;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
|
|
Packit |
713213 |
return DC1394_FAILURE;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
|
|
Packit |
713213 |
dc1394bool_t
|
|
Packit |
713213 |
dc1394_is_video_mode_scalable(dc1394video_mode_t video_mode)
|
|
Packit |
713213 |
{
|
|
Packit |
713213 |
return ((video_mode>=DC1394_VIDEO_MODE_FORMAT7_MIN)&&(video_mode<=DC1394_VIDEO_MODE_FORMAT7_MAX));
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
|
|
Packit |
713213 |
dc1394bool_t
|
|
Packit |
713213 |
dc1394_is_video_mode_still_image(dc1394video_mode_t video_mode)
|
|
Packit |
713213 |
{
|
|
Packit |
713213 |
return ((video_mode>=DC1394_VIDEO_MODE_FORMAT6_MIN)&&(video_mode<=DC1394_VIDEO_MODE_FORMAT6_MAX));
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
|
|
Packit |
713213 |
dc1394bool_t
|
|
Packit |
713213 |
dc1394_is_same_camera(dc1394camera_id_t id1, dc1394camera_id_t id2)
|
|
Packit |
713213 |
{
|
|
Packit |
713213 |
return ((id1.guid==id2.guid)&&(id1.unit==id2.unit));
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
|
|
Packit |
713213 |
const char *
|
|
Packit |
713213 |
dc1394_feature_get_string(dc1394feature_t feature)
|
|
Packit |
713213 |
{
|
|
Packit |
713213 |
if ((feature>DC1394_FEATURE_MAX)||(feature
|
|
Packit |
713213 |
return NULL;
|
|
Packit |
713213 |
|
|
Packit |
713213 |
return dc1394_feature_desc[feature-DC1394_FEATURE_MIN];
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
|
|
Packit |
713213 |
const char *
|
|
Packit |
713213 |
dc1394_error_get_string(dc1394error_t error)
|
|
Packit |
713213 |
{
|
|
Packit |
713213 |
|
|
Packit |
713213 |
if ((error>DC1394_ERROR_MAX)||(error
|
|
Packit |
713213 |
return NULL;
|
|
Packit |
713213 |
|
|
Packit |
713213 |
return dc1394_error_strings[-error-DC1394_ERROR_MAX];
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
|
|
Packit |
713213 |
|
|
Packit |
713213 |
/*
|
|
Packit |
713213 |
* Checksum algorithms
|
|
Packit |
713213 |
* Copyright (C) 2006 Mikael Olenfalk, Tobii Technology AB, Stockholm Sweden
|
|
Packit |
713213 |
*
|
|
Packit |
713213 |
* Written by Mikael Olenfalk <mikael _DOT_ olenfalk _AT_ tobii _DOT_ com>
|
|
Packit |
713213 |
* Version : 16/02/2005
|
|
Packit |
713213 |
*/
|
|
Packit |
713213 |
|
|
Packit |
713213 |
uint16_t
|
|
Packit |
713213 |
dc1394_checksum_crc16 (const uint8_t* buffer, uint32_t buffer_size)
|
|
Packit |
713213 |
{
|
|
Packit |
713213 |
uint32_t i, j, c, bit;
|
|
Packit |
713213 |
uint32_t crc = 0;
|
|
Packit |
713213 |
for (i = 0; i < buffer_size; i++) {
|
|
Packit |
713213 |
c = (uint32_t)*buffer++;
|
|
Packit |
713213 |
for (j = 0x80; j; j >>= 1) {
|
|
Packit |
713213 |
bit = crc & 0x8000;
|
|
Packit |
713213 |
crc <<= 1;
|
|
Packit |
713213 |
if (c & j) bit ^= 0x8000;
|
|
Packit |
713213 |
if (bit) crc ^= 0x1021;
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
}
|
|
Packit |
713213 |
return (uint16_t)(crc & 0xffff);
|
|
Packit |
713213 |
}
|