X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fxinestream.h;h=c4df85ded5383b1dd6af54f7b7116a6adf9a92b3;hb=85d198e71b7d1d6279db4e2f22d9a1393b8369ff;hp=832e3a72b0bfd34470d0af2b4c06dd6438644762;hpb=2e629085885b652a10d775695e63bc4892aa2eca;p=xinema.git diff --git a/source/xinestream.h b/source/xinestream.h index 832e3a7..c4df85d 100644 --- a/source/xinestream.h +++ b/source/xinestream.h @@ -2,6 +2,7 @@ #define XINESTREAM_H_ #include +#include #include #include #include @@ -19,10 +20,19 @@ public: PLAYING }; + enum + { + OFF = -1 + }; + sigc::signal signal_state_changed; sigc::signal signal_title_changed; sigc::signal signal_duration_changed; sigc::signal signal_position_changed; + sigc::signal signal_channels_changed; + sigc::signal signal_current_audio_channel_changed; + sigc::signal signal_current_spu_channel_changed; + sigc::signal signal_finished; private: XineEngine &engine; @@ -33,15 +43,27 @@ private: std::string title; Msp::Time::TimeDelta duration; Msp::Time::TimeDelta position; + std::vector audio_channels; + std::vector spu_channels; + int current_audio; + int current_spu; + bool channels_changed; public: XineStream(XineEngine &, const std::string &); ~XineStream(); + Msp::Mutex &get_mutex() { return mutex; } State get_state() const { return state; } 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 &get_audio_channels() const { return audio_channels; } + const std::vector &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; } + int get_current_spu_channel() const { return current_spu; } void play(); void seek(const Msp::Time::TimeDelta &); @@ -53,7 +75,8 @@ private: public: void tick(); private: - void check_info(); + void update_info(); + void update_channels(); void handle_event(const xine_event_t &); };