Mercurial > hg > easaier-soundaccess
changeset 147:13b5b9af0484
enable to load video file from the server
author | lbajardsilogic |
---|---|
date | Tue, 13 Nov 2007 17:47:02 +0000 |
parents | 69061754408f |
children | 9f16a77107bd |
files | data/data.pro data/fileio/VideoFileReaderFactory.cpp data/fileio/VideoFileReaderFactory.h |
diffstat | 3 files changed, 163 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/data/data.pro Tue Nov 13 17:45:11 2007 +0000 +++ b/data/data.pro Tue Nov 13 17:47:02 2007 +0000 @@ -42,6 +42,8 @@ fileio/QueryConfigReader.h \ fileio/SparqlResultsReader.h \ fileio/SparqlRelatedMediaReader.h \ + fileio/VideoFileReaderFactory.h \ + fileio/VideoFileReader.h \ model/DenseThreeDimensionalModel.h \ model/DenseTimeValueModel.h \ model/EditableDenseThreeDimensionalModel.h \ @@ -88,6 +90,8 @@ fileio/QueryConfigReader.cpp \ fileio/SparqlResultsReader.cpp \ fileio/SparqlRelatedMediaReader.cpp \ + fileio/VideoFileReaderFactory.cpp \ + fileio/VideoFileReader.cpp \ model/DenseTimeValueModel.cpp \ model/EditableDenseThreeDimensionalModel.cpp \ model/FFTModel.cpp \
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data/fileio/VideoFileReaderFactory.cpp Tue Nov 13 17:47:02 2007 +0000 @@ -0,0 +1,114 @@ +/* -*- 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. +*/ + +#include "VideoFileReaderFactory.h" + +#include "VideoFileReader.h" + +#include <QString> +#include <QFileInfo> +#include <iostream> + +QString +VideoFileReaderFactory::getKnownExtensions() +{ + std::set<QString> extensions; + + VideoFileReader::getSupportedExtensions(extensions); + + 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; + + VideoFileReader::getSupportedExtensions(extensions); + + 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; +} +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data/fileio/VideoFileReaderFactory.h Tue Nov 13 17:47:02 2007 +0000 @@ -0,0 +1,45 @@ +/* -*- 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. + + 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. +*/ + +#ifndef _VIDEO_FILE_READER_FACTORY_H_ +#define _VIDEO_FILE_READER_FACTORY_H_ + +#include <QString> + +class VideoFileReader; + +class VideoFileReaderFactory +{ +public: + /** + * Return the file extensions that we have video file readers for, + * in a format suitable for use with QFileDialog. For example, + * "*.avi *.mpg ". + */ + static QString getKnownExtensions(); + + static bool isKnownExtensions(QString &extension); + + /** + * Return an video file reader initialised to the file at the + * given path, or NULL if no suitable reader for this path is + * available or the file cannot be opened. + * Caller owns the returned object and must delete it after use. + */ + // static AudioFileReader *createReader(QString path); +}; + +#endif +