]> git.tdb.fi Git - xinema.git/blobdiff - source/xinestream.h
Support changing audio and SPU channels
[xinema.git] / source / xinestream.h
index 65f25ab26ee13112a8e07a592075b75919308102..c5778c7d0f36975acb193d2c16c7c510e987687b 100644 (file)
@@ -2,6 +2,7 @@
 #define XINESTREAM_H_
 
 #include <string>
+#include <vector>
 #include <xine.h>
 #include <msp/core/mutex.h>
 #include <msp/strings/lexicalcast.h>
@@ -23,6 +24,8 @@ public:
        sigc::signal<void, const std::string &> signal_title_changed;
        sigc::signal<void, const Msp::Time::TimeDelta &> signal_duration_changed;
        sigc::signal<void, const Msp::Time::TimeDelta &> signal_position_changed;
+       sigc::signal<void> signal_channels_changed;
+       sigc::signal<void> signal_finished;
 
 private:
        XineEngine &engine;
@@ -33,6 +36,9 @@ private:
        std::string title;
        Msp::Time::TimeDelta duration;
        Msp::Time::TimeDelta position;
+       std::vector<std::string> audio_channels;
+       std::vector<std::string> spu_channels;
+       bool channels_changed;
 
 public:
        XineStream(XineEngine &, const std::string &);
@@ -43,6 +49,12 @@ public:
        const Msp::Time::TimeDelta &get_duration() const { return duration; }
        const Msp::Time::TimeDelta &get_position() const { return position; }
        const std::string &get_title() const { return title; }
+       const std::vector<std::string> &get_audio_channels() const { return audio_channels; }
+       const std::vector<std::string> &get_spu_channels() const { return spu_channels; }
+       void set_audio_channel(unsigned);
+       void set_audio_off();
+       void set_spu_channel(unsigned);
+       void set_spu_off();
 
        void play();
        void seek(const Msp::Time::TimeDelta &);
@@ -55,6 +67,7 @@ public:
        void tick();
 private:
        void update_info();
+       void update_channels();
        void handle_event(const xine_event_t &);
 };