⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dc1394_control.c

📁 较新版本的libdc1394
💻 C
📖 第 1 页 / 共 5 页
字号:
intdc1394_query_feature_characteristics(raw1394handle_t handle, nodeid_t node,                                     unsigned int feature, quadlet_t *value){    octlet_t offset;    int retval;    FEATURE_TO_INQUIRY_OFFSET(feature, offset);    retval= GetCameraControlRegister(handle, node, offset, value);    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_get_video_framerate(raw1394handle_t handle, nodeid_t node,                           unsigned int *framerate){    quadlet_t value;    int retval= GetCameraControlRegister(handle, node, REG_CAMERA_FRAME_RATE,                                         &value);    if (!retval) {        *framerate= (unsigned int)((value >> 29) & 0x7UL) + FRAMERATE_MIN;    }    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_set_video_framerate(raw1394handle_t handle, nodeid_t node,                           unsigned int framerate){    int retval;    if ( (framerate < FRAMERATE_MIN) || (framerate > FRAMERATE_MAX) ) {        return DC1394_FAILURE;    }    retval= SetCameraControlRegister(handle, node, REG_CAMERA_FRAME_RATE,                     (quadlet_t)(((framerate - FRAMERATE_MIN) & 0x7UL) << 29));    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_get_video_mode(raw1394handle_t handle, nodeid_t node,                      unsigned int *mode){    quadlet_t value;    int retval;    unsigned int format;    if (dc1394_get_video_format(handle, node, &format) != DC1394_SUCCESS) {        return DC1394_FAILURE;    }    retval= GetCameraControlRegister(handle, node, REG_CAMERA_VIDEO_MODE,                                     &value);    if (!retval) {        switch(format) {        case FORMAT_VGA_NONCOMPRESSED:            *mode= (unsigned int)((value >> 29) & 0x7UL) + MODE_FORMAT0_MIN;            break;        case FORMAT_SVGA_NONCOMPRESSED_1:            *mode= (unsigned int)((value >> 29) & 0x7UL) + MODE_FORMAT1_MIN;            break;        case FORMAT_SVGA_NONCOMPRESSED_2:            *mode= (unsigned int)((value >> 29) & 0x7UL) + MODE_FORMAT2_MIN;            break;        case FORMAT_STILL_IMAGE:            *mode= (unsigned int)((value >> 29) & 0x7UL) + MODE_FORMAT6_MIN;            break;        case FORMAT_SCALABLE_IMAGE_SIZE:            *mode= (unsigned int)((value >> 29) & 0x7UL) + MODE_FORMAT7_MIN;            break;        default:            return DC1394_FAILURE;            break;        }    }    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_set_video_mode(raw1394handle_t handle, nodeid_t node, unsigned int mode){    int retval;    unsigned int format, min, max;    if (dc1394_get_video_format(handle, node, &format) != DC1394_SUCCESS) {        return DC1394_FAILURE;    }    switch(format) {        case FORMAT_VGA_NONCOMPRESSED:            min= MODE_FORMAT0_MIN;            max= MODE_FORMAT0_MAX;            break;        case FORMAT_SVGA_NONCOMPRESSED_1:            min= MODE_FORMAT1_MIN;            max= MODE_FORMAT1_MAX;            break;        case FORMAT_SVGA_NONCOMPRESSED_2:            min= MODE_FORMAT2_MIN;            max= MODE_FORMAT2_MAX;            break;        case FORMAT_STILL_IMAGE:            min= MODE_FORMAT6_MIN;            max= MODE_FORMAT6_MAX;            break;        case FORMAT_SCALABLE_IMAGE_SIZE:            min= MODE_FORMAT7_MIN;            max= MODE_FORMAT7_MAX;            break;        default:            return DC1394_FAILURE;            break;    }    if ( (mode < min) || (mode > max) ) {        return DC1394_FAILURE;    }    retval= SetCameraControlRegister(handle, node, REG_CAMERA_VIDEO_MODE,                                    (quadlet_t)(((mode - min) & 0x7UL) << 29));    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_get_video_format(raw1394handle_t handle, nodeid_t node,                        unsigned int *format){    quadlet_t value;    int retval= GetCameraControlRegister(handle, node, REG_CAMERA_VIDEO_FORMAT,                                         &value);    if (!retval) {        *format= (unsigned int)((value >> 29) & 0x7UL) + FORMAT_MIN;    }    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_set_video_format(raw1394handle_t handle, nodeid_t node,                        unsigned int format){    int retval;    if ( (format < FORMAT_MIN) || (format > FORMAT_MAX) ) {        return DC1394_FAILURE;    }    retval= SetCameraControlRegister(handle, node, REG_CAMERA_VIDEO_FORMAT,                           (quadlet_t)(((format - FORMAT_MIN) & 0x7UL) << 29));    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_get_operation_mode(raw1394handle_t handle, nodeid_t node, unsigned int *mode){  quadlet_t value_inq, value;  int retval;  retval= dc1394_query_basic_functionality(handle, node, &value_inq);  retval= GetCameraControlRegister(handle, node, REG_CAMERA_ISO_DATA, &value);    if (value_inq & 0x00800000) {    *mode=((value & 0x00008000) >0);  }  else {    *mode=OPERATION_MODE_LEGACY;  }    return retval;}intdc1394_set_operation_mode(raw1394handle_t handle, nodeid_t node, unsigned int mode){  quadlet_t value_inq, value;  int retval;    retval= dc1394_query_basic_functionality(handle, node, &value_inq);  retval= GetCameraControlRegister(handle, node, REG_CAMERA_ISO_DATA, &value);  if (mode==OPERATION_MODE_LEGACY) {    retval= SetCameraControlRegister(handle, node, REG_CAMERA_ISO_DATA,				     (quadlet_t) (value & 0xFFFF7FFF));  }  else { // 1394b    if (value_inq & 0x00800000) { // if 1394b available      retval= SetCameraControlRegister(handle, node, REG_CAMERA_ISO_DATA,				       (quadlet_t) (value | 0x00008000));    }    else { // 1394b asked, but it is not available      return DC1394_FAILURE;    }  }  return (retval ? DC1394_FAILURE : DC1394_SUCCESS);  }intdc1394_get_iso_channel_and_speed(raw1394handle_t handle, nodeid_t node,                                 unsigned int *channel, unsigned int *speed){  quadlet_t value_inq, value;  int retval;    retval= dc1394_query_basic_functionality(handle, node, &value_inq);  retval= GetCameraControlRegister(handle, node, REG_CAMERA_ISO_DATA, &value);    if (value_inq & 0x00800000) { // check if 1394b is available    if (value & 0x00008000) { //check if we are now using 1394b      *channel= (unsigned int)((value >> 8) & 0x3FUL);      *speed= (unsigned int)(value& 0x7UL);    }    else { // fallback to legacy      *channel= (unsigned int)((value >> 28) & 0xFUL);      *speed= (unsigned int)((value >> 24) & 0x3UL);    }  }  else { // legacy    *channel= (unsigned int)((value >> 28) & 0xFUL);    *speed= (unsigned int)((value >> 24) & 0x3UL);  }    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_set_iso_channel_and_speed(raw1394handle_t handle, nodeid_t node,                                 unsigned int channel, unsigned int speed){  quadlet_t value_inq, value;  int retval;  retval= dc1394_query_basic_functionality(handle, node, &value_inq);  retval= GetCameraControlRegister(handle, node, REG_CAMERA_ISO_DATA, &value);  if ((value_inq & 0x00800000)&&(value & 0x00008000)) {    // check if 1394b is available and if we are now using 1394b    retval= SetCameraControlRegister(handle, node, REG_CAMERA_ISO_DATA,				     (quadlet_t) ( ((channel & 0x3FUL) << 8) |						   (speed & 0x7UL) |						   (0x1 << 15) ));  }  else { // fallback to legacy    if (speed>SPEED_400) {      fprintf(stderr,"(%s) line %d: an ISO speed >400Mbps was requested while the camera is in LEGACY mode\n",__FILE__,__LINE__);      fprintf(stderr,"              Please set the operation mode to OPERATION_MODE_1394B before asking for\n");      fprintf(stderr,"              1394b ISO speeds\n");      return DC1394_FAILURE;    }    retval= SetCameraControlRegister(handle, node, REG_CAMERA_ISO_DATA,				     (quadlet_t) (((channel & 0xFUL) << 28) |						  ((speed & 0x3UL) << 24) ));  }    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_camera_on(raw1394handle_t handle, nodeid_t node){    int retval= SetCameraControlRegister(handle, node, REG_CAMERA_POWER,                                         ON_VALUE);    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_camera_off(raw1394handle_t handle, nodeid_t node){    int retval= SetCameraControlRegister(handle, node, REG_CAMERA_POWER,                                         OFF_VALUE);    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_start_iso_transmission(raw1394handle_t handle, nodeid_t node){    int retval= SetCameraControlRegister(handle, node, REG_CAMERA_ISO_EN,                                         ON_VALUE);    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_stop_iso_transmission(raw1394handle_t handle, nodeid_t node){    int retval= SetCameraControlRegister(handle, node, REG_CAMERA_ISO_EN,                                         OFF_VALUE);    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_get_iso_status(raw1394handle_t handle, nodeid_t node,                      dc1394bool_t *is_on){    int retval;    quadlet_t value;    retval= GetCameraControlRegister(handle, node, REG_CAMERA_ISO_EN,&value);    *is_on= (value & ON_VALUE)>>31;    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_set_one_shot(raw1394handle_t handle, nodeid_t node){    int retval= SetCameraControlRegister(handle, node, REG_CAMERA_ONE_SHOT,                                         ON_VALUE);    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_unset_one_shot(raw1394handle_t handle, nodeid_t node){    int retval= SetCameraControlRegister(handle, node, REG_CAMERA_ONE_SHOT,                                         OFF_VALUE);    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_get_one_shot(raw1394handle_t handle, nodeid_t node, dc1394bool_t *is_on){ quadlet_t value; int retval = GetCameraControlRegister(handle, node,                                          REG_CAMERA_ONE_SHOT, &value); *is_on = value & ON_VALUE; return (retval ? DC1394_FAILURE : DC1394_SUCCESS);     }intdc1394_get_multi_shot(raw1394handle_t handle, nodeid_t node, dc1394bool_t *is_on,		      unsigned int *numFrames){ quadlet_t value; int retval = GetCameraControlRegister(handle, node,                                          REG_CAMERA_ONE_SHOT, &value); *is_on = (value & (ON_VALUE>>1)) >> 30; *numFrames= value & 0xFFFFUL; return (retval ? DC1394_FAILURE : DC1394_SUCCESS);     }intdc1394_set_multi_shot(raw1394handle_t handle, nodeid_t node,                      unsigned int numFrames){    int retval= SetCameraControlRegister(handle, node, REG_CAMERA_ONE_SHOT,                                      (0x40000000UL | (numFrames & 0xFFFFUL)));    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_unset_multi_shot(raw1394handle_t handle, nodeid_t node){    return dc1394_unset_one_shot(handle, node);}intdc1394_get_brightness(raw1394handle_t handle, nodeid_t node,                      unsigned int *brightness){    return GetFeatureValue(handle, node, FEATURE_BRIGHTNESS, brightness);}intdc1394_set_brightness(raw1394handle_t handle, nodeid_t node,                      unsigned int brightness){    return SetFeatureValue(handle, node, FEATURE_BRIGHTNESS, brightness);}intdc1394_get_exposure(raw1394handle_t handle, nodeid_t node,                    unsigned int *exposure){    return GetFeatureValue(handle, node, FEATURE_EXPOSURE, exposure);}intdc1394_set_exposure(raw1394handle_t handle, nodeid_t node,                    unsigned int exposure){    return SetFeatureValue(handle, node, FEATURE_EXPOSURE, exposure);}intdc1394_get_sharpness(raw1394handle_t handle, nodeid_t node,                     unsigned int *sharpness){    return GetFeatureValue(handle, node, FEATURE_SHARPNESS, sharpness);}intdc1394_set_sharpness(raw1394handle_t handle, nodeid_t node,                     unsigned int sharpness){    return SetFeatureValue(handle, node, FEATURE_SHARPNESS, sharpness);}intdc1394_get_white_balance(raw1394handle_t handle, nodeid_t node,                         unsigned int *u_b_value, unsigned int *v_r_value){    quadlet_t value;    int retval= GetCameraControlRegister(handle, node,                                         REG_CAMERA_WHITE_BALANCE, &value);    *u_b_value= (unsigned int)((value & 0xFFF000UL) >> 12);    *v_r_value= (unsigned int)(value & 0xFFFUL);    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_set_white_balance(raw1394handle_t handle, nodeid_t node,                         unsigned int u_b_value, unsigned int v_r_value){    int retval;    quadlet_t curval;    if (GetCameraControlRegister(handle, node, REG_CAMERA_WHITE_BALANCE,                                 &curval) < 0)    {        return DC1394_FAILURE;    }    curval= (curval & 0xFF000000UL) | ( ((u_b_value & 0xFFFUL) << 12) |                                        (v_r_value & 0xFFFUL) );    retval= SetCameraControlRegister(handle, node, REG_CAMERA_WHITE_BALANCE,                                     curval);    return (retval ? DC1394_FAILURE : DC1394_SUCCESS);}intdc1394_get_hue(raw1394handle_t handle, nodeid_t node,               unsigned int *hue){    return G

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -