示例#1
0
ofGstVideoFormat * ofGstUtils::selectFormat(int w, int h) {
    int minDiff=999999;
    int mostSimilarFormat=0;
    camData.webcam_devices[deviceID].current_format = new ofGstVideoFormat;
    get_device_data (camData.webcam_devices[deviceID]);

    for(int i=0; i<camData.webcam_devices[deviceID].num_video_formats; i++) {
        if(camData.webcam_devices[deviceID].video_formats[i]->width==w && camData.webcam_devices[deviceID].video_formats[i]->height==h) {
            mostSimilarFormat = i;
            break;
        }
        int diff = abs(camData.webcam_devices[deviceID].video_formats[i]->width + camData.webcam_devices[deviceID].video_formats[i]->height - w - h);
        if(diff<minDiff) {
            minDiff = diff;
            mostSimilarFormat = i;
        }
    }

    if(camData.webcam_devices[deviceID].video_formats.size() <= 0) {
        printf("ofGstUtils::selectFormat: No Video Formats found for Device\n");
        return NULL;
    }

    return camData.webcam_devices[deviceID].video_formats[mostSimilarFormat];
}
示例#2
0
ofGstVideoFormat & ofGstUtils::selectFormat(int w, int h, int desired_framerate){
	int minDiff=999999;
	int mostSimilarFormat=0;

	get_device_data (camData.webcam_devices[deviceID], desired_framerate);

	for(unsigned i=0; i<camData.webcam_devices[deviceID].video_formats.size(); i++){
		if(camData.webcam_devices[deviceID].video_formats[i].width==w && camData.webcam_devices[deviceID].video_formats[i].height==h){
			mostSimilarFormat = i;
			break;
		}
		int diff = abs(camData.webcam_devices[deviceID].video_formats[i].width + camData.webcam_devices[deviceID].video_formats[i].height - w - h);
		if(diff<minDiff){
			minDiff = diff;
			mostSimilarFormat = i;
		}
	}
	camData.webcam_devices[deviceID].current_format = mostSimilarFormat;
	return camData.webcam_devices[deviceID].video_formats[mostSimilarFormat];
}