7 #include <msp/core/mutex.h>
8 #include <msp/strings/lexicalcast.h>
9 #include <msp/time/timedelta.h>
23 sigc::signal<void, State> signal_state_changed;
24 sigc::signal<void, const std::string &> signal_title_changed;
25 sigc::signal<void, const Msp::Time::TimeDelta &> signal_duration_changed;
26 sigc::signal<void, const Msp::Time::TimeDelta &> signal_position_changed;
27 sigc::signal<void> signal_channels_changed;
28 sigc::signal<void> signal_finished;
32 xine_stream_t *stream;
33 xine_event_queue_t *queue;
37 Msp::Time::TimeDelta duration;
38 Msp::Time::TimeDelta position;
39 std::vector<std::string> audio_channels;
40 std::vector<std::string> spu_channels;
41 bool channels_changed;
44 XineStream(XineEngine &, const std::string &);
47 Msp::Mutex &get_mutex() { return mutex; }
48 State get_state() const { return state; }
49 const Msp::Time::TimeDelta &get_duration() const { return duration; }
50 const Msp::Time::TimeDelta &get_position() const { return position; }
51 const std::string &get_title() const { return title; }
52 const std::vector<std::string> &get_audio_channels() const { return audio_channels; }
53 const std::vector<std::string> &get_spu_channels() const { return spu_channels; }
54 void set_audio_channel(unsigned);
56 void set_spu_channel(unsigned);
60 void seek(const Msp::Time::TimeDelta &);
64 void set_state(State);
70 void update_channels();
71 void handle_event(const xine_event_t &);
74 void operator<<(Msp::LexicalConverter &, XineStream::State);
75 void operator>>(const Msp::LexicalConverter &, XineStream::State &);