/*
*/
#ifndef Phonon_GST_VIDEOPATH_H
#define Phonon_GST_VIDEOPATH_H

#include <QObject>
#include <phonon/videoframe.h>
#include <QList>

namespace Phonon
{
namespace Gst
{
	class VideoEffect;
	class AbstractVideoOutput;

	class VideoPath : public QObject
	{
		Q_OBJECT
		public:
			VideoPath( QObject* parent );
			~VideoPath();

			// Operations:
			Q_INVOKABLE bool addOutput( QObject* videoOutput );
			Q_INVOKABLE bool removeOutput( QObject* videoOutput );
			Q_INVOKABLE bool insertEffect( QObject* newEffect, QObject* insertBefore = 0 );
			Q_INVOKABLE bool removeEffect( QObject* effect );

			// fake specific
			void processFrame( Phonon::VideoFrame& frame );
			GPhoVideoPath *object;

		private:
			QList<VideoEffect*> m_effects;
			QList<AbstractVideoOutput*> m_outputs;
	};
}} //namespace Phonon::Gst

// vim: sw=4 ts=4 tw=80
#endif // Phonon_GST_VIDEOPATH_H
