view data/fileio/VideoFileReaderFactory.cpp @ 191:be6d31baecb9

compilation under linux - kunbuntu V7.10 (without video support)
author lbajardsilogic
date Wed, 28 Nov 2007 13:03:45 +0000
parents 13b5b9af0484
children 709777a471c3
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_FFMPEG

#include <iostream>
#include <set>

#include <QString>
#include <QFileInfo>

#include "VideoFileReader.h"

#include "VideoFileReaderFactory.h"

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;
}
*/
#endif