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);
129 if (formatType == FORMAT_PGM ||
130 formatType == FORMAT_PPM ||
131 formatType == FORMAT_JPEG ||
132 formatType == FORMAT_PNG)
138 #ifdef VISP_HAVE_FFMPEG
139 else if (formatType == FORMAT_AVI ||
140 formatType == FORMAT_MPEG ||
141 formatType == FORMAT_MOV ||
142 formatType == FORMAT_OGV)
151 else if (formatType == FORMAT_AVI ||
152 formatType == FORMAT_MPEG ||
153 formatType == FORMAT_MOV ||
154 formatType == FORMAT_OGV)
156 vpERROR_TRACE(
"To read video files the FFmpeg library has to be installed");
160 else if (formatType == FORMAT_UNKNOWN)
162 vpERROR_TRACE(
"The format of the file does not correpsond to a readable format.");
166 frameCount = firstFrame;
177 findLastFrameIndex();
196 if (formatType == FORMAT_PGM ||
197 formatType == FORMAT_PPM ||
198 formatType == FORMAT_JPEG ||
199 formatType == FORMAT_PNG)
205 #ifdef VISP_HAVE_FFMPEG
206 else if (formatType == FORMAT_AVI ||
207 formatType == FORMAT_MPEG ||
208 formatType == FORMAT_MOV ||
209 formatType == FORMAT_OGV)
217 else if (formatType == FORMAT_AVI ||
218 formatType == FORMAT_MPEG ||
219 formatType == FORMAT_MOV ||
220 formatType == FORMAT_OGV)
222 vpERROR_TRACE(
"To read video files the FFmpeg library has to be installed");
226 else if (formatType == FORMAT_UNKNOWN)
228 vpERROR_TRACE(
"The format of the file does not correpsond to a readable format.");
232 frameCount = firstFrame;
243 findLastFrameIndex();
263 if (imSequence != NULL)
265 #ifdef VISP_HAVE_FFMPEG
266 else if (ffmpeg !=NULL)
290 if (imSequence != NULL)
292 #ifdef VISP_HAVE_FFMPEG
293 else if (ffmpeg != NULL)
315 if (imSequence != NULL)
327 #ifdef VISP_HAVE_FFMPEG
331 if(!ffmpeg->
getFrame(I, (
unsigned int)frame))
356 if (imSequence != NULL)
368 #ifdef VISP_HAVE_FFMPEG
371 if(!ffmpeg->
getFrame(I, (
unsigned int)frame))
387 vpVideoReader::vpVideoFormatType
388 vpVideoReader::getFormat(
const char *filename)
390 std::string sfilename(filename);
392 std::string ext = vpVideoReader::getExtension(sfilename);
394 if (ext.compare(
".PGM") == 0)
396 else if (ext.compare(
".pgm") == 0)
398 else if (ext.compare(
".PPM") == 0)
400 else if (ext.compare(
".ppm") == 0)
402 else if (ext.compare(
".JPG") == 0)
404 else if (ext.compare(
".jpg") == 0)
406 else if (ext.compare(
".JPEG") == 0)
408 else if (ext.compare(
".jpeg") == 0)
410 else if (ext.compare(
".PNG") == 0)
412 else if (ext.compare(
".png") == 0)
414 else if (ext.compare(
".AVI") == 0)
416 else if (ext.compare(
".avi") == 0)
418 else if (ext.compare(
".MPEG") == 0)
420 else if (ext.compare(
".mpeg") == 0)
422 else if (ext.compare(
".MPG") == 0)
424 else if (ext.compare(
".mpg") == 0)
426 else if (ext.compare(
".MOV") == 0)
428 else if (ext.compare(
".mov") == 0)
430 else if (ext.compare(
".OGV") == 0)
432 else if (ext.compare(
".ogv") == 0)
435 return FORMAT_UNKNOWN;
439 std::string vpVideoReader::getExtension(
const std::string &filename)
442 size_t dot = filename.find_last_of(
".");
443 std::string ext = filename.substr(dot, filename.size()-1);
452 vpVideoReader::findLastFrameIndex()
460 if (imSequence != NULL)
462 char name[FILENAME_MAX];
463 int image_number = firstFrame;
468 sprintf(name,fileName,image_number) ;
469 file.open(name, std::fstream::in);
470 failed = file.fail();
471 if (!failed) file.close();
475 lastFrame = image_number - 2;
478 #ifdef VISP_HAVE_FFMPEG
479 else if (ffmpeg != NULL)
unsigned int getWidth() const
bool getFrame(vpImage< vpRGBa > &I, unsigned int frameNumber)
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)