view data/fileio/VideoFileReaderFactory.cpp @ 147:13b5b9af0484

enable to load video file from the server
author lbajardsilogic
date Tue, 13 Nov 2007 17:47:02 +0000
parents
children be6d31baecb9
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.
*/

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