зеркало из https://github.com/mozilla/eideticker.git
Bug 928115 - Support Flea3 FL3-U3-13Y3M + variable framerate in point grey capture program;r=davehunt
This commit is contained in:
Родитель
6e78810d56
Коммит
b335560f09
|
@ -31,7 +31,8 @@ int usage(char *progname, int status)
|
||||||
" -d Output debugging information\n"
|
" -d Output debugging information\n"
|
||||||
" -o If specified, print frame numbers while capturing\n"
|
" -o If specified, print frame numbers while capturing\n"
|
||||||
" -f <outputdir> Directory video files will be written to\n"
|
" -f <outputdir> Directory video files will be written to\n"
|
||||||
" -n <frames> Max number of frames to capture (default is 20 * 60)\n"
|
" -r <framerate> Framerate to capture at (default is 60)\n"
|
||||||
|
" -n <frames> Max number of frames to capture (default is 20 * framerate)\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Capture video to a set of pngs.\n"
|
"Capture video to a set of pngs.\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
@ -51,7 +52,7 @@ int main(int argc, char *argv[])
|
||||||
Error error;
|
Error error;
|
||||||
int ch;
|
int ch;
|
||||||
const char *videoOutputDir = NULL;
|
const char *videoOutputDir = NULL;
|
||||||
int maxFrames = 20*60; // 20 seconds at 60fps
|
int maxFrames = 0;
|
||||||
int fps = 60;
|
int fps = 60;
|
||||||
bool printFrameNums = false;
|
bool printFrameNums = false;
|
||||||
bool debug = false;
|
bool debug = false;
|
||||||
|
@ -73,6 +74,9 @@ int main(int argc, char *argv[])
|
||||||
case 'n':
|
case 'n':
|
||||||
maxFrames = atoi(optarg);
|
maxFrames = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
|
case 'r':
|
||||||
|
fps = atoi(optarg);
|
||||||
|
break;
|
||||||
case '?':
|
case '?':
|
||||||
case 'h':
|
case 'h':
|
||||||
usage(argv[0], 0);
|
usage(argv[0], 0);
|
||||||
|
@ -84,6 +88,11 @@ int main(int argc, char *argv[])
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!maxFrames)
|
||||||
|
{
|
||||||
|
maxFrames = 20 * fps;
|
||||||
|
}
|
||||||
|
|
||||||
BusManager busMgr;
|
BusManager busMgr;
|
||||||
PGRGuid guid;
|
PGRGuid guid;
|
||||||
error = busMgr.GetCameraFromIndex(0, &guid);
|
error = busMgr.GetCameraFromIndex(0, &guid);
|
||||||
|
@ -101,21 +110,63 @@ int main(int argc, char *argv[])
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
FrameRate frameRate = FRAMERATE_60; // hardcoded for now
|
// do different things depending on camera model detected...
|
||||||
|
CameraInfo camInfo;
|
||||||
error = cam.SetVideoModeAndFrameRate(VIDEOMODE_1280x960Y8,
|
error = cam.GetCameraInfo(&camInfo);
|
||||||
frameRate);
|
|
||||||
if (error != PGRERROR_OK)
|
if (error != PGRERROR_OK)
|
||||||
{
|
{
|
||||||
printError(error);
|
printError(error);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (strcmp(camInfo.modelName, "Flea3 FL3-U3-13Y3M") == 0)
|
||||||
|
{
|
||||||
|
Format7ImageSettings f7Settings;
|
||||||
|
f7Settings.width = 1280;
|
||||||
|
f7Settings.height = 1024;
|
||||||
|
f7Settings.pixelFormat = PIXEL_FORMAT_RAW8;
|
||||||
|
error = cam.SetFormat7Configuration(&f7Settings, (unsigned int)24764);
|
||||||
|
if (error != PGRERROR_OK)
|
||||||
|
{
|
||||||
|
printError(error);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
Property frameRateProp;
|
||||||
|
frameRateProp.type = FRAME_RATE;
|
||||||
|
cam.GetProperty(&frameRateProp);
|
||||||
|
frameRateProp.onOff = true;
|
||||||
|
frameRateProp.autoManualMode = false;
|
||||||
|
frameRateProp.valueA = fps;
|
||||||
|
frameRateProp.absValue = (float)fps;
|
||||||
|
cam.SetProperty(&frameRateProp);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (fps != 60)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Currently only 60fps is supported with this model\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
FrameRate frameRate = FRAMERATE_60; // hardcoded for now
|
||||||
|
|
||||||
|
error = cam.SetVideoModeAndFrameRate(VIDEOMODE_1280x960Y8,
|
||||||
|
frameRate);
|
||||||
|
if (error != PGRERROR_OK)
|
||||||
|
{
|
||||||
|
printError(error);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
// turn off all auto adjustments for eideticker
|
// turn off all auto adjustments for eideticker
|
||||||
PropertyType propTypes[5] = { AUTO_EXPOSURE, SHARPNESS, SHUTTER, GAIN, WHITE_BALANCE };
|
PropertyType propTypes[5] = { AUTO_EXPOSURE, SHARPNESS, SHUTTER, GAIN, WHITE_BALANCE };
|
||||||
for (int i=0; i<5; i++) {
|
for (int i=0; i<5; i++) {
|
||||||
Property prop;
|
Property prop;
|
||||||
prop.type = propTypes[i];
|
prop.type = propTypes[i];
|
||||||
|
cam.GetProperty(&prop);
|
||||||
|
if (propTypes[i] == AUTO_EXPOSURE)
|
||||||
|
prop.onOff = true;
|
||||||
prop.autoManualMode = false;
|
prop.autoManualMode = false;
|
||||||
cam.SetProperty(&prop);
|
cam.SetProperty(&prop);
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче