#define XINEMACONTROL_H_
#include <QObject>
+#include <QSize>
#include <QTcpSocket>
class XinemaControl: public QObject
PLAYING
};
+ enum
+ {
+ OFF = -1
+ };
+
private:
QTcpSocket socket;
QByteArray buffer;
QString title;
float duration;
float position;
+ QSize video_size;
+ float framerate;
+ QString video_codec;
+ QString audio_codec;
+ QStringList audio_channels;
+ QStringList spu_channels;
+ int current_audio_channel;
+ int current_spu_channel;
public:
XinemaControl();
const QString &get_title() const { return title; }
float get_duration() const { return duration; }
float get_position() const { return position; }
+ const QSize &get_video_size() const { return video_size; }
+ float get_framerate() const { return framerate; }
+ const QString &get_video_codec() const { return video_codec; }
+ const QString &get_audio_codec() const { return audio_codec; }
void play();
void seek(float);
void pause();
void stop();
+ const QStringList &get_audio_channels() const { return audio_channels; }
+ const QStringList &get_spu_channels() const { return spu_channels; }
+ void select_audio_channel(int);
+ void select_spu_channel(int);
+ int get_current_audio_channel() const { return current_audio_channel; }
+ int get_current_spu_channel() const { return current_spu_channel; }
+
signals:
void connected();
void disconnected();
void title_changed(const QString &);
void duration_changed(float);
void position_changed(float);
+ void size_changed(const QSize &);
+ void framerate_changed(float);
+ void codecs_changed(const QString &, const QString &);
+ void channels_changed();
+ void current_audio_channel_changed(int);
+ void current_spu_channel_changed(int);
private:
void send_request(const QString &);
private slots:
void data_available();
void process_reply(const QString &);
+ static int convert_channel(const QString &);
+ static void resize_list(QStringList &, int);
};
#endif