Mercurial > hg > easaier-soundaccess
view data/fileio/VideoFileReaderFactory.cpp @ 192:709777a471c3
window compilation (add HAVE_VIDEO)
author | lbajardsilogic |
---|---|
date | Wed, 28 Nov 2007 14:52:28 +0000 |
parents | be6d31baecb9 |
children |
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ /* Sonic Visualiser An audio file viewer and annotation editor. Centre for Digital Music, Queen Mary, University of London. This file copyright 2006 Chris Cannam and QMUL. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. See the file COPYING included with this distribution for more information. */ #ifdef HAVE_VIDEO #include <iostream> #include <set> #include <QString> #include <QFileInfo> #ifdef HAVE_FFMPEG #include "VideoFileReader.h" #endif #include "VideoFileReaderFactory.h" QString VideoFileReaderFactory::getKnownExtensions() { std::set<QString> extensions; #ifdef HAVE_FFMPEG VideoFileReader::getSupportedExtensions(extensions); #endif QString rv; for (std::set<QString>::const_iterator i = extensions.begin(); i != extensions.end(); ++i) { if (i != extensions.begin()) rv += " "; rv += "*." + *i; } return rv; } bool VideoFileReaderFactory::isKnownExtensions(QString &extension) { bool isKnown = false; std::set<QString> extensions; #ifdef HAVE_FFMPEG VideoFileReader::getSupportedExtensions(extensions); #endif std::set<QString>::iterator iter = extensions.find(extension); if (iter != extensions.end()) { isKnown = true; } return isKnown; } /*VideoFileReader * VideoFileReaderFactory::createReader(QString path) { QString err; VideoFileReader *reader = 0; // First try to construct a preferred reader based on the // extension. If we can't identify one or it fails to load the // file, fall back to trying all readers in no particular order. QString ext = QFileInfo(path).suffix().toLower(); std::set<QString> extensions; //Ivan Damnjanovic 09-10/2007 added video support #ifdef HAVE_FFMPEG if (!reader) { extensions.clear(); VideoFileReader::getSupportedExtensions(extensions); if (extensions.find(ext) != extensions.end()) { reader = new VideoFileReader (path, true, VideoFileReader::CacheInTemporaryFile); } } #endif // if (reader) { if (reader->isOK()) return reader; if (reader->getError() != "") { std::cerr << "VideoFileReaderFactory: Preferred reader for " << "extension \"" << ext.toStdString() << "\" failed: \"" << reader->getError().toStdString() << "\"" << std::endl; } else { std::cerr << "VideoFileReaderFactory: Preferred reader for " << "extension \"" << ext.toStdString() << "\" failed" << std::endl; } delete reader; reader = 0; } reader = new VideoFileReader(path); if (reader->isOK()) return reader; if (reader->getError() != "") { std::cerr << "VideoFileReaderFactory: WAV file reader error: \"" << reader->getError().toStdString() << "\"" << std::endl; } else { std::cerr << "VideoFileReaderFactory: WAV file reader failed" << std::endl; } delete reader; return 0; } */ #endif