|
|
|
/* this file is part of the kmplayer application
|
|
|
|
copyright (c) 2003 koos vriezen <koos.vriezen@xs4all.nl>
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
this program is distributed in the hope that it will be useful,
|
|
|
|
but without any warranty; without even the implied warranty of
|
|
|
|
merchantability or fitness for a particular purpose. see the gnu
|
|
|
|
general public license for more details.
|
|
|
|
|
|
|
|
you should have received a copy of the gnu general public license
|
|
|
|
along with this program; see the file copying. if not, write to
|
|
|
|
the free software foundation, inc., 59 temple place - suite 330,
|
|
|
|
boston, ma 02110-1301, usa.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _KMPLAYER_BROADCAST_SOURCE_H_
|
|
|
|
#define _KMPLAYER_BROADCAST_SOURCE_H_
|
|
|
|
|
|
|
|
#include <list>
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
#include <tqframe.h>
|
|
|
|
#include <tqguardedptr.h>
|
|
|
|
|
|
|
|
#include "kmplayerappsource.h"
|
|
|
|
#include "kmplayerprocess.h"
|
|
|
|
#include "kmplayerconfig.h"
|
|
|
|
|
|
|
|
class KMPlayerPrefBroadcastPage; // broadcast
|
|
|
|
class KMPlayerPrefBroadcastFormatPage; // broadcast format
|
|
|
|
class TQListBox;
|
|
|
|
class TQComboBox;
|
|
|
|
class TQLineEdit;
|
|
|
|
class TQTable;
|
|
|
|
class TQPushButton;
|
|
|
|
class KLed;
|
|
|
|
|
|
|
|
namespace KMPlayer {
|
|
|
|
class FFMpeg;
|
|
|
|
}
|
|
|
|
|
|
|
|
class KMPLAYER_NO_EXPORT FFServerSetting {
|
|
|
|
public:
|
|
|
|
KDE_NO_CDTOR_EXPORT FFServerSetting () {}
|
|
|
|
FFServerSetting (int i, const TQString & n, const TQString & f, const TQString & ac, int abr, int asr, const TQString & vc, int vbr, int q, int fr, int gs, int w, int h);
|
|
|
|
KDE_NO_CDTOR_EXPORT FFServerSetting (const TQStringList & sl) { *this = sl; }
|
|
|
|
KDE_NO_CDTOR_EXPORT ~FFServerSetting () {}
|
|
|
|
int index;
|
|
|
|
TQString name;
|
|
|
|
TQString format;
|
|
|
|
TQString audiocodec;
|
|
|
|
TQString audiobitrate;
|
|
|
|
TQString audiosamplerate;
|
|
|
|
TQString videocodec;
|
|
|
|
TQString videobitrate;
|
|
|
|
TQString quality;
|
|
|
|
TQString framerate;
|
|
|
|
TQString gopsize;
|
|
|
|
TQString width;
|
|
|
|
TQString height;
|
|
|
|
TQStringList acl;
|
|
|
|
FFServerSetting & operator = (const TQStringList &);
|
|
|
|
FFServerSetting & operator = (const FFServerSetting & fs);
|
|
|
|
const TQStringList list ();
|
|
|
|
TQString & ffconfig (TQString & buf);
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef std::vector <FFServerSetting *> FFServerSettingList;
|
|
|
|
|
|
|
|
|
|
|
|
class KMPLAYER_NO_EXPORT KMPlayerPrefBroadcastPage : public TQFrame {
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
KMPlayerPrefBroadcastPage (TQWidget * parent);
|
|
|
|
KDE_NO_CDTOR_EXPORT ~KMPlayerPrefBroadcastPage () {}
|
|
|
|
|
|
|
|
TQLineEdit * bindaddress;
|
|
|
|
TQLineEdit * port;
|
|
|
|
TQLineEdit * maxclients;
|
|
|
|
TQLineEdit * maxbandwidth;
|
|
|
|
TQLineEdit * feedfile;
|
|
|
|
TQLineEdit * feedfilesize;
|
|
|
|
};
|
|
|
|
|
|
|
|
class KMPLAYER_NO_EXPORT KMPlayerPrefBroadcastFormatPage : public TQFrame {
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
KMPlayerPrefBroadcastFormatPage (TQWidget * parent, FFServerSettingList &);
|
|
|
|
KDE_NO_CDTOR_EXPORT ~KMPlayerPrefBroadcastFormatPage () {}
|
|
|
|
|
|
|
|
TQListBox * profilelist;
|
|
|
|
TQComboBox * format;
|
|
|
|
TQLineEdit * audiocodec;
|
|
|
|
TQLineEdit * audiobitrate;
|
|
|
|
TQLineEdit * audiosamplerate;
|
|
|
|
TQLineEdit * videocodec;
|
|
|
|
TQLineEdit * videobitrate;
|
|
|
|
TQLineEdit * quality;
|
|
|
|
TQLineEdit * framerate;
|
|
|
|
TQLineEdit * gopsize;
|
|
|
|
TQLineEdit * moviewidth;
|
|
|
|
TQLineEdit * movieheight;
|
|
|
|
TQLineEdit * profile;
|
|
|
|
TQPushButton * startbutton;
|
|
|
|
KLed * serverled;
|
|
|
|
KLed * feedled;
|
|
|
|
void setSettings (const FFServerSetting &);
|
|
|
|
void getSettings (FFServerSetting &);
|
|
|
|
private slots:
|
|
|
|
void slotIndexChanged (int index);
|
|
|
|
void slotItemHighlighted (int index);
|
|
|
|
void slotTextChanged (const TQString &);
|
|
|
|
void slotLoad ();
|
|
|
|
void slotSave ();
|
|
|
|
void slotDelete ();
|
|
|
|
private:
|
|
|
|
TQTable * accesslist;
|
|
|
|
TQPushButton * load;
|
|
|
|
TQPushButton * save;
|
|
|
|
TQPushButton * del;
|
|
|
|
FFServerSettingList & profiles;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Preference page for ffmpeg commandline arguments
|
|
|
|
*/
|
|
|
|
class KMPLAYER_NO_EXPORT KMPlayerFFServerConfig : public KMPlayer::PreferencesPage {
|
|
|
|
public:
|
|
|
|
KMPlayerFFServerConfig ();
|
|
|
|
KDE_NO_CDTOR_EXPORT ~KMPlayerFFServerConfig () {}
|
|
|
|
virtual void write (TDEConfig *);
|
|
|
|
virtual void read (TDEConfig *);
|
|
|
|
virtual void sync (bool fromUI);
|
|
|
|
virtual void prefLocation (TQString & item, TQString & icon, TQString & tab);
|
|
|
|
virtual TQFrame * prefPage (TQWidget * parent);
|
|
|
|
int ffserverport;
|
|
|
|
int maxclients;
|
|
|
|
int maxbandwidth;
|
|
|
|
TQString feedfile;
|
|
|
|
int feedfilesize;
|
|
|
|
TQString bindaddress;
|
|
|
|
private:
|
|
|
|
TQGuardedPtr <KMPlayerPrefBroadcastPage> m_configpage;
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Preference page for ffserver
|
|
|
|
*/
|
|
|
|
class KMPLAYER_NO_EXPORT KMPlayerBroadcastConfig : public TQObject, public KMPlayer::PreferencesPage {
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
KMPlayerBroadcastConfig (KMPlayer::PartBase * player, KMPlayerFFServerConfig * fsc);
|
|
|
|
KDE_NO_CDTOR_EXPORT ~KMPlayerBroadcastConfig ();
|
|
|
|
|
|
|
|
virtual void write (TDEConfig *);
|
|
|
|
virtual void read (TDEConfig *);
|
|
|
|
virtual void sync (bool fromUI);
|
|
|
|
virtual void prefLocation (TQString & item, TQString & icon, TQString & tab);
|
|
|
|
virtual TQFrame * prefPage (TQWidget * parent);
|
|
|
|
|
|
|
|
bool broadcasting () const;
|
|
|
|
void stopServer ();
|
|
|
|
KDE_NO_EXPORT const TQString & serverURL () const { return m_ffserver_url; }
|
|
|
|
|
|
|
|
FFServerSetting ffserversettings;
|
|
|
|
FFServerSettingList ffserversettingprofiles;
|
|
|
|
signals:
|
|
|
|
void broadcastStarted ();
|
|
|
|
void broadcastStopped ();
|
|
|
|
private slots:
|
|
|
|
void processOutput (TDEProcess *, char *, int);
|
|
|
|
void processStopped (TDEProcess * process);
|
|
|
|
void startServer ();
|
|
|
|
void startFeed ();
|
|
|
|
void stateChange (KMPlayer::Process::State, KMPlayer::Process::State);
|
|
|
|
void sourceChanged (KMPlayer::Source *, KMPlayer::Source *);
|
|
|
|
private:
|
|
|
|
KMPlayer::PartBase * m_player;
|
|
|
|
KMPlayerFFServerConfig * m_ffserverconfig;
|
|
|
|
TQGuardedPtr <KMPlayerPrefBroadcastFormatPage> m_configpage;
|
|
|
|
KMPlayer::FFMpeg * m_ffmpeg_process;
|
|
|
|
TDEProcess * m_ffserver_process;
|
|
|
|
bool m_endserver;
|
|
|
|
TQString m_ffserver_out;
|
|
|
|
TQString m_ffserver_url;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif //_KMPLAYER_BROADCAST_SOURCE_H_
|