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]; }
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]; }