/*****************************************************************************
 *
 *  interfaceffprobe.h -- Interface to FFmpeg probe CLI.
 *
 *  Copyright (C) 2010 Starbuck <starbuck@labdv.com>
 *  All rights reserved.
 *
 *  This file is part of the Encoder 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 INTERFACEFFPROBE_H
#define INTERFACEFFPROBE_H

#include "interfaceffprobe_struct.h"
#include <QString>

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

	void initialize(const QString &, interfaceffprobe_t *, utility_status_t *);
	void setBinPath(const QString &);
	void setDvdSource(const QString &dev, const int title);
	void setFileSource(const QString &path);

	inline QString getBinPath() { return exec; };

	void cliCmdGetInfo(const QString &, QString *, QStringList *);
	void cliCmdGetStatus(QString *, QStringList *);

	bool parseStatus(QString *);
	void parseData(interfaceffprobe_t *, QString *, QString *);

private:
	double fieldToDouble(const QString &);

private:	
	QString exec;		// full qualified bin path

	interfaceffprobe_t *data;
	utility_status_t *status;

	QStringList formatFields;
	QStringList streamFields;
};

#endif
