diff --git a/output.cc b/output.cc index f88f9d0..38c9533 100644 --- a/output.cc +++ b/output.cc @@ -194,19 +194,19 @@ void Output::Thread() { } outputser = new SER(); - outputser->setWidth(outputserw); - outputser->setHeight(outputserh); - outputser->setColorID(serformat); - outputser->setPixelDepth(pixsize); + if (outputser) outputser->setWidth(outputserw); + if (outputser) outputser->setHeight(outputserh); + if (outputser) outputser->setColorID(serformat); + if (outputser) outputser->setPixelDepth(pixsize); if (outputser->setFile((char *)outputfilename.c_str()) == -1) { errormessage_display((char*)"windows-main", (char*)"Error", (char*)"Could not set output file [%s]. Error: %s", outputfilename.c_str(), strerror(errno)); SERStop(); } - outputser->setObserver((char *)"FIXME:read username from OS"); - outputser->setTelescope((char *)"FIXME:not implemented yet"); - outputser->setInstrument((char *)"FIXME:just read device from dirver"); - outputser->setNumberOfFrames(0); - outputser->writeHeader(); + if (outputser) outputser->setObserver((char *)"FIXME:read username from OS"); + if (outputser) outputser->setTelescope((char *)"FIXME:not implemented yet"); + if (outputser) outputser->setInstrument((char *)"FIXME:just read device from dirver"); + if (outputser) outputser->setNumberOfFrames(0); + if (outputser) outputser->writeHeader(); } else { @@ -220,7 +220,7 @@ void Output::Thread() { } } - if (outputser != NULL) { // we need to check in case outputser got deleted. + if (outputser) { // we need to check in case outputser got deleted. // // write frame outputser->appendFrame(inFrame.data); diff --git a/videodev-dumpfile.cc b/videodev-dumpfile.cc index f56f842..9e45334 100644 --- a/videodev-dumpfile.cc +++ b/videodev-dumpfile.cc @@ -40,6 +40,7 @@ VideoDev_Dumpfile::VideoDev_Dumpfile() { inframe_size = 0; inframe_maxsize = 0; inframe_nexttime = 0; + fixedframesize = 0; }; @@ -359,14 +360,19 @@ int VideoDev_Dumpfile::ReadFrame() { */ int VideoDev_Dumpfile::SetDevCtrl(unsigned int id, int value) { std::list::iterator ctrl; - printf ("%s:%d VideoDev_Dumpfile::SetDevCtrl Set Offset to %d id:%d\n", __FILE__, __LINE__, value, id); + printf ("%s:%d VideoDev_Dumpfile::SetDevCtrl Set Offset to %d id:%d fixedframesize:%d\n", __FILE__, __LINE__, value, id, fixedframesize); if (id == 1) { ctrl = vidctrls.begin(); if (value != ctrl->value && value < ctrl->max) { + filepos = SIZE_DUMPHEADER + (value * (SIZE_FRAMEHEADER + fixedframesize)); ctrl->value = value; - lseek (fd, SEEK_SET, SIZE_DUMPHEADER + (value * (SIZE_FRAMEHEADER + fixedframesize))); + if (lseek (fd, filepos, SEEK_SET) < 0) { + printf ("%s:%d ******* lseek error:%s\n", __FILE__, __LINE__, strerror(errno)); + } } + else printf ("%s:%d could not set video position (ctrl->value:%d value:%d max:%d)\n", + __FILE__, __LINE__, ctrl->value, value, ctrl->max); } return VDEV_STATUS_OK; };