48 #include <visp/vpDebug.h>
49 #include <visp/vpVideoReader.h>
60 #ifdef VISP_HAVE_FFMPEG
76 if (imSequence != NULL)
80 #ifdef VISP_HAVE_FFMPEG
100 if (filename ==
'\0')
106 strcpy(this->fileName,filename);
108 formatType = getFormat(fileName);
142 if (formatType == FORMAT_PGM ||
143 formatType == FORMAT_PPM ||
144 formatType == FORMAT_JPEG ||
145 formatType == FORMAT_PNG)
151 #ifdef VISP_HAVE_FFMPEG
152 else if (formatType == FORMAT_AVI ||
153 formatType == FORMAT_MPEG ||
154 formatType == FORMAT_MOV ||
155 formatType == FORMAT_OGV)
164 else if (formatType == FORMAT_AVI ||
165 formatType == FORMAT_MPEG ||
166 formatType == FORMAT_MOV ||
167 formatType == FORMAT_OGV)
169 vpERROR_TRACE(
"To read video files the FFmpeg library has to be installed");
173 else if (formatType == FORMAT_UNKNOWN)
175 vpERROR_TRACE(
"The format of the file does not correpsond to a readable format.");
179 frameCount = firstFrame;
190 findLastFrameIndex();
209 if (formatType == FORMAT_PGM ||
210 formatType == FORMAT_PPM ||
211 formatType == FORMAT_JPEG ||
212 formatType == FORMAT_PNG)
218 #ifdef VISP_HAVE_FFMPEG
219 else if (formatType == FORMAT_AVI ||
220 formatType == FORMAT_MPEG ||
221 formatType == FORMAT_MOV ||
222 formatType == FORMAT_OGV)
230 else if (formatType == FORMAT_AVI ||
231 formatType == FORMAT_MPEG ||
232 formatType == FORMAT_MOV ||
233 formatType == FORMAT_OGV)
235 vpERROR_TRACE(
"To read video files the FFmpeg library has to be installed");
239 else if (formatType == FORMAT_UNKNOWN)
241 vpERROR_TRACE(
"The format of the file does not correpsond to a readable format.");
245 frameCount = firstFrame;
256 findLastFrameIndex();
276 if (imSequence != NULL)
278 #ifdef VISP_HAVE_FFMPEG
279 else if (ffmpeg !=NULL)
303 if (imSequence != NULL)
305 #ifdef VISP_HAVE_FFMPEG
306 else if (ffmpeg != NULL)
328 if (imSequence != NULL)
340 #ifdef VISP_HAVE_FFMPEG
344 if(!ffmpeg->
getFrame(I, (
unsigned int)frame))
369 if (imSequence != NULL)
381 #ifdef VISP_HAVE_FFMPEG
384 if(!ffmpeg->
getFrame(I, (
unsigned int)frame))
400 vpVideoReader::vpVideoFormatType
401 vpVideoReader::getFormat(
const char *filename)
403 std::string sfilename(filename);
405 std::string ext = vpVideoReader::getExtension(sfilename);
407 if (ext.compare(
".PGM") == 0)
409 else if (ext.compare(
".pgm") == 0)
411 else if (ext.compare(
".PPM") == 0)
413 else if (ext.compare(
".ppm") == 0)
415 else if (ext.compare(
".JPG") == 0)
417 else if (ext.compare(
".jpg") == 0)
419 else if (ext.compare(
".JPEG") == 0)
421 else if (ext.compare(
".jpeg") == 0)
423 else if (ext.compare(
".PNG") == 0)
425 else if (ext.compare(
".png") == 0)
427 else if (ext.compare(
".AVI") == 0)
429 else if (ext.compare(
".avi") == 0)
431 else if (ext.compare(
".MPEG") == 0)
433 else if (ext.compare(
".mpeg") == 0)
435 else if (ext.compare(
".MPG") == 0)
437 else if (ext.compare(
".mpg") == 0)
439 else if (ext.compare(
".MOV") == 0)
441 else if (ext.compare(
".mov") == 0)
443 else if (ext.compare(
".OGV") == 0)
445 else if (ext.compare(
".ogv") == 0)
448 return FORMAT_UNKNOWN;
452 std::string vpVideoReader::getExtension(
const std::string &filename)
455 size_t dot = filename.find_last_of(
".");
456 std::string ext = filename.substr(dot, filename.size()-1);
465 vpVideoReader::findLastFrameIndex()
473 if (imSequence != NULL)
475 char name[FILENAME_MAX];
476 int image_number = firstFrame;
481 sprintf(name,fileName,image_number) ;
482 file.open(name, std::fstream::in);
483 failed = file.fail();
484 if (!failed) file.close();
488 lastFrame = image_number - 2;
491 #ifdef VISP_HAVE_FFMPEG
492 else if (ffmpeg != NULL)
unsigned int getWidth() const
bool getFrame(vpImage< vpRGBa > &I, unsigned int frameNumber)
error that can be emited by ViSP classes.
Error that can be emited by the vpImage class and its derivates.
unsigned long getFrameNumber() const
void open(vpImage< vpRGBa > &I)
bool getFrame(vpImage< vpRGBa > &I, long frame)
unsigned int height
Number of rows in the image.
bool openStream(const char *filename, vpFFMPEGColorType color_type)
void acquire(vpImage< vpRGBa > &I)
This class interfaces the FFmpeg library to enable the reading of video files.
void setImageNumber(long number)
void setFileName(const char *filename)
Class to grab (ie. read) images from the disk.
bool acquire(vpImage< vpRGBa > &I)
unsigned int getHeight() const
void acquire(vpImage< unsigned char > &I)
unsigned int width
Number of columns in the image.
void setGenericName(const char *genericName)