]> git.tdb.fi Git - xinema.git/blobdiff - remote/source/xinemacontrol.h
Display stream size and codecs on the playback page
[xinema.git] / remote / source / xinemacontrol.h
index dc7ad8fcd20cbdce0d439013bbe5f359e6da3aa2..fb62bab51be97583c2d37cc4d6910664e9a20b3f 100644 (file)
@@ -2,18 +2,41 @@
 #define XINEMACONTROL_H_
 
 #include <QObject>
+#include <QSize>
 #include <QTcpSocket>
 
 class XinemaControl: public QObject
 {
        Q_OBJECT
 
+public:
+       enum PlaybackState
+       {
+               STOPPED,
+               PAUSED,
+               PLAYING
+       };
+
+       enum
+       {
+               OFF = -1
+       };
+
 private:
        QTcpSocket socket;
        QByteArray buffer;
+       PlaybackState playback_state;
        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();
@@ -24,9 +47,26 @@ public:
        void list_directory(const QString &);
        void play_file(const QString &);
 
+       PlaybackState get_playback_state() const { return playback_state; }
        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();
@@ -34,9 +74,16 @@ signals:
        void directory_started(const QString &);
        void file_added(const QString &);
        void subdirectory_added(const QString &);
+       void playback_state_changed(PlaybackState);
        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 &);
@@ -44,6 +91,8 @@ private:
 private slots:
        void data_available();
        void process_reply(const QString &);
+       static int convert_channel(const QString &);
+       static void resize_list(QStringList &, int);
 };
 
 #endif