/*****************************************************************************
 *
 *  mediainfoformat.h -- Base class for mediainfoformat interfaces.
 *
 *  Copyright (C) 2010 Starbuck <starbuck@labdv.com>
 *  All rights reserved.
 *
 *  This file is part of the JobManager module of the DVDx 4 application.
 *
 *  GNU Lesser General Public License Usage
 *  This file may be used under the terms of the GNU Lesser General
 *  Public License version 2.1 as published by the Free Software
 *  Foundation and appearing in the file LICENSE.LGPL included in the
 *  packaging of this file.  Please review the following information to
 *  ensure the GNU Lesser General Public License version 2.1 requirements
 *  will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 *
 *  GNU General Public License Usage
 *  Alternatively, this file may be used under the terms of the GNU
 *  General Public License version 3.0 as published by the Free Software
 *  Foundation and appearing in the file LICENSE.GPL included in the
 *  packaging of this file.  Please review the following information to
 *  ensure the GNU General Public License version 3.0 requirements will be
 *  met: http://www.gnu.org/copyleft/gpl.html.
 *
 *****************************************************************************/

#ifndef MEDIAINFOFORMAT_H
#define MEDIAINFOFORMAT_H

#include "../main/console.h"
#include "iprocessor.h"
#include "processlatency.h"
#include <QHash>
#include <QMap>
#include <QObject>
#include <QProcessEnvironment>
#include <QString>
#include <QStringList>
#include <QTextEdit>

class MediaInfoFormat 
{
public:
	MediaInfoFormat();
	//~MediaInfoFormat();

	double	bitrate();
	double	duration();
	QString	formatName();
	QString	formatLongName();

	bool isAvailableBitrate();
	bool isAvailableFormatName();
	bool isAvailableFormatLongName();
	bool isAvailableNbStreams();
	bool isAvailableSize();
	bool isAvailableStartTime();

	int		nbStreams();
	qint64	size();
	double	startTime();

	void setBitrate(double);
	void setDuration(double);
	void setFormatName(QString);
	void setFormatLongName(QString);
	void setNbStreams(int);
	void setSize(qint64);
	void setStartTime(double);

protected:
	double	m_bitrate;				//
	bool	m_bitrateFlag;
	double	m_duration;				// seconds
	bool	m_durationFlag;
	QString m_formatName;
	bool	m_formatNameFlag;
	QString m_formatLongName;
	bool	m_formatLongNameFlag;
	int		m_nbStreams;
	bool	m_nbStreamsFlag;
	qint64	m_size;					// bytes
	bool	m_sizeFlag;
	double	m_startTime;			// seconds
	bool	m_startTimeFlag;
};

#endif
