Ejemplo n.º 1
0
void Libdc1394SequenceGrabber::setFeature(dc1394feature_t feature, float value)
{
	if (!_camera) return;
	
	dc1394bool_t is_present;
	dc1394error_t err;
	dc1394_feature_is_present(_camera, feature, &is_present);
	
	if (is_present == DC1394_FALSE) 
		return;
	
	dc1394feature_mode_t current_mode = (value == -1.0) ? DC1394_FEATURE_MODE_AUTO : DC1394_FEATURE_MODE_MANUAL;
	err = dc1394_feature_set_mode(_camera, feature, current_mode);
	checkSuccess(err, "dc1394_feature_set_mode failed");
	
	if (value == -1.0)
		return;
		
	uint32_t min, max, int_value;
	dc1394_feature_get_boundaries(_camera, feature, &min, &max);
	
	int_value = min + value / 1000.0 * (max-min);
	// std::cout << feature << " value: " << int_value << " min: " << min << " max: " << max << std::endl;
	err = dc1394_feature_set_value(_camera, feature, int_value);
	checkSuccess(err, "dc1394_feature_set_value failed");

}
Ejemplo n.º 2
0
int ar2VideoGetMinValue1394(AR2VideoParam1394T *vid, int paramName, int *value)
{
    dc1394feature_t feature;
    uint32_t        min, max;

    switch (paramName)
    {
    case AR_VIDEO_1394_BRIGHTNESS:
        feature = DC1394_FEATURE_BRIGHTNESS;
        break;

    case AR_VIDEO_1394_EXPOSURE:
        feature = DC1394_FEATURE_EXPOSURE;
        break;

    case AR_VIDEO_1394_WHITE_BALANCE:
        feature = DC1394_FEATURE_WHITE_BALANCE;
        break;

    case AR_VIDEO_1394_SHUTTER_SPEED:
        feature = DC1394_FEATURE_SHUTTER;
        break;

    case AR_VIDEO_1394_GAIN:
        feature = DC1394_FEATURE_GAIN;
        break;

    case AR_VIDEO_1394_FOCUS:
        feature = DC1394_FEATURE_FOCUS;
        break;

    case AR_VIDEO_1394_GAMMA:
        feature = DC1394_FEATURE_GAMMA;
        break;

    default:
        return -1;
    }

    if (dc1394_feature_get_boundaries(vid->camera, feature, &min, &max) != DC1394_SUCCESS)
    {
        ARLOGe("unable to get max value.\n");
        return -1;
    }

    *value = min;

    return 0;
}
Ejemplo n.º 3
0
float Libdc1394SequenceGrabber::getFeature(dc1394feature_t feature)
{
	if (!_camera) return -1;
	
	
	uint32_t min, max, value;
	dc1394feature_mode_t current_mode;
	dc1394bool_t is_present;
	
	dc1394_feature_is_present(_camera, feature, &is_present);
	if (is_present == DC1394_FALSE) 
		return -1.0; 
	
	dc1394_feature_get_mode(_camera, feature, &current_mode);
	
	if (current_mode == DC1394_FEATURE_MODE_AUTO) 
		return -1.0;
		
	dc1394_feature_get_boundaries(_camera, feature, &min, &max);
	dc1394_feature_get_value(_camera, feature, &value);
	
	return 1000.0 * (value-min) / static_cast<float>(max-min); 
}
Ejemplo n.º 4
0
void ofxLibdc::getFeatureRange(dc1394feature_t feature, unsigned int* min, unsigned int* max) const {
	dc1394_feature_get_boundaries(camera, feature, min, max);	
}
Ejemplo n.º 5
0
void FWCamera::getCameraControls(dc1394camera_t* pCamera, CameraInfo* camInfo)
{
    dc1394featureset_t featureSet;
    int err = dc1394_feature_get_all(pCamera, &featureSet);
    if (err != DC1394_SUCCESS) {
        AVG_ASSERT(false);
        return;
    }

    for (int i = DC1394_FEATURE_MIN; i <= DC1394_FEATURE_MAX; i++) {
        dc1394feature_info_t featureInfo = featureSet.feature[i - DC1394_FEATURE_MIN];

        dc1394bool_t bool_t;
        dc1394_feature_is_present(pCamera,featureInfo.id, &bool_t);
        if (bool_t != DC1394_TRUE) {
            continue;
        }

        uint32_t min = -1;
        uint32_t max = -1;
        uint32_t actValue = -1;

        //TODO: 428 (TRIGGER) doesnt have min max
        err = dc1394_feature_get_boundaries(pCamera, featureInfo.id, &min, &max);
        if (err != DC1394_SUCCESS) {
            continue;
        }

        switch(featureInfo.id) {
            case DC1394_FEATURE_TEMPERATURE: {
                uint32_t targetTemp = -1;
                uint32_t currentTemp = -1;
                err = dc1394_feature_temperature_get_value(pCamera,&targetTemp,&currentTemp);
                if (err != DC1394_SUCCESS) {
                    continue;
                }
                actValue = currentTemp;
                break;
            }
        //TODO: Think about a way to get this information into CameraInfo
            case DC1394_FEATURE_WHITE_BALANCE: {
                uint32_t ubValue = -1;
                uint32_t vrValue = -1;
                err = dc1394_feature_whitebalance_get_value(pCamera,&ubValue,&vrValue);
                if (err != DC1394_SUCCESS) {
                    continue;
                }
                //actValue = ubValue; //vrValue;
                //cout <<"UBlue Value: " << ubValue << " VRed Value: " << vrValue << endl;
                break;
            }
            default: {
                err = dc1394_feature_get_value(pCamera,featureInfo.id, &actValue);
                if (err != DC1394_SUCCESS) {
                    continue;
                }
                break;
            }
        }
        CameraFeature enumFeature = featureIDToEnum(featureInfo.id);
        if (enumFeature == CAM_FEATURE_UNSUPPORTED) {
            continue;
        }
        std::string controlName = cameraFeatureToString(enumFeature);

        CameraControl control = CameraControl(controlName,
                (int) min,
                (int) max,
                (int) actValue ); //TODO: isnt really a default value!?
        camInfo->addControl(control);
    }
}
void Camera1394::save_capa ( string filename ) {

    dc1394video_modes_t modes;
    dc1394error_t err ;

    bool framerates ;
    string modename ;
    string frate ;

    err=dc1394_video_get_supported_modes(cam, &modes);

    if ( err != DC1394_SUCCESS ) {
        std::cerr << "[vision_server]    Could not get list of modes" ;
    return ;
    }

    ofstream capafile ( filename.c_str() , ios::out ) ;

    for ( unsigned int i=0; i<modes.num; i++) {

    framerates = true ;

    if ( ( modes.modes[i] ==  DC1394_VIDEO_MODE_EXIF ) ||
         ( modes.modes[i] == DC1394_VIDEO_MODE_FORMAT7_0 ) ||
         ( modes.modes[i] == DC1394_VIDEO_MODE_FORMAT7_1 ) ||
         ( modes.modes[i] == DC1394_VIDEO_MODE_FORMAT7_2 ) ||
         ( modes.modes[i] == DC1394_VIDEO_MODE_FORMAT7_3 ) ||
         ( modes.modes[i] == DC1394_VIDEO_MODE_FORMAT7_4 ) ||
         ( modes.modes[i] == DC1394_VIDEO_MODE_FORMAT7_5 ) ||
         ( modes.modes[i] == DC1394_VIDEO_MODE_FORMAT7_6 ) ||
         ( modes.modes[i] == DC1394_VIDEO_MODE_FORMAT7_7 ) )
            framerates = false ;


    capafile << "[Mode] " << mode_2_string ( modes.modes[i] ) << endl ;


    if (framerates) {

        dc1394framerates_t framerates;

        err = dc1394_video_get_supported_framerates (cam, modes.modes[i], &framerates);
        if ( err != DC1394_SUCCESS ) {
            std::cerr << "[vision_server] ERROR : could not retrieve framerate" << endl ;
            exit(0) ;
        }

        for ( unsigned int j = 0; j < framerates.num; j++) {
            dc1394framerate_t rate = framerates.framerates[j];
            switch (rate) {
                case DC1394_FRAMERATE_1_875 :
                    frate = "DC1394_FRAMERATE_1_875" ;
                    break ;
                case DC1394_FRAMERATE_3_75 :
                    frate = "DC1394_FRAMERATE_3_75" ;
                    break ;
                case DC1394_FRAMERATE_7_5 :
                    frate = "DC1394_FRAMERATE_7_5" ;
                    break ;
                case DC1394_FRAMERATE_15 :
                    frate = "DC1394_FRAMERATE_15" ;
                    break ;
                case DC1394_FRAMERATE_30 :
                    frate = "DC1394_FRAMERATE_30" ;
                    break ;
                case DC1394_FRAMERATE_60 :
                    frate = "DC1394_FRAMERATE_60" ;
                    break ;
                case DC1394_FRAMERATE_120 :
                    frate = "DC1394_FRAMERATE_120" ;
                    break ;
                case DC1394_FRAMERATE_240 :
                    frate = "DC1394_FRAMERATE_240" ;
                    break ;
                default :
                    frate ="Unknown framerate" ;
                    break ;

            }

            capafile << "[Framerate] " << frate << endl ;
        }
    }

    capafile << endl ;

}

    // Enumerates features

    dc1394featureset_t  features ;

    dc1394_feature_get_all( cam, &features );

    for ( int i=0; i<DC1394_FEATURE_NUM; i++ ) {
        if ( features.feature[i].available ) {

                capafile << std::endl << "[Feature] " << feature_2_string ( features.feature[i].id ) << std::endl ;

                for (unsigned int j=0; j<features.feature[i].modes.num; j++ ) {

                    capafile << "  Mode : " << featuremode_2_string ( features.feature[i].modes.modes[j] ) << std::endl ;

                    if (features.feature[i].modes.modes[j] == DC1394_FEATURE_MODE_MANUAL ) {

                            uint32_t min = 0 ;
                            uint32_t max = 0 ;

                            err = dc1394_feature_get_boundaries( cam, features.feature[i].id , &min, &max);

                            if ( err != DC1394_SUCCESS ) {
                                std::cerr << "[vision_server] ERROR : Could not get boudaries for mode " << featuremode_2_string ( features.feature[i].modes.modes[j] ) << endl ;
                                exit(0) ;
                            }

                            capafile << "  Value : " << min << " - " << max << std::endl ;
                        }
                }

        }

    }


    // close file

    capafile.close() ;

}