7 #include <msp/core/mutex.h>
8 #include <msp/strings/lexicalcast.h>
9 #include <msp/time/timedelta.h>
28 sigc::signal<void, State> signal_state_changed;
29 sigc::signal<void, const std::string &> signal_title_changed;
30 sigc::signal<void, const Msp::Time::TimeDelta &> signal_duration_changed;
31 sigc::signal<void, const Msp::Time::TimeDelta &> signal_position_changed;
32 sigc::signal<void, unsigned, unsigned> signal_video_size_changed;
33 sigc::signal<void, float> signal_framerate_changed;
34 sigc::signal<void, const std::string &, const std::string &> signal_codecs_changed;
35 sigc::signal<void> signal_channels_changed;
36 sigc::signal<void, int> signal_current_audio_channel_changed;
37 sigc::signal<void, int> signal_current_spu_channel_changed;
38 sigc::signal<void> signal_finished;
43 xine_stream_t *stream;
44 xine_event_queue_t *queue;
48 Msp::Time::TimeDelta duration;
49 Msp::Time::TimeDelta position;
51 unsigned video_height;
53 std::string video_codec;
54 std::string audio_codec;
55 std::vector<std::string> audio_channels;
56 std::vector<std::string> spu_channels;
59 bool channels_changed;
62 XineStream(XineEngine &, const std::string &);
65 Msp::Mutex &get_mutex() { return mutex; }
66 State get_state() const { return state; }
67 const Msp::Time::TimeDelta &get_duration() const { return duration; }
68 const Msp::Time::TimeDelta &get_position() const { return position; }
69 const std::string &get_title() const;
70 unsigned get_video_width() const { return video_width; }
71 unsigned get_video_height() const { return video_height; }
72 float get_framerate() const { return framerate; }
73 const std::string &get_video_codec() const { return video_codec; }
74 const std::string &get_audio_codec() const { return audio_codec; }
77 void seek(const Msp::Time::TimeDelta &);
81 void set_state(State);
84 const std::vector<std::string> &get_audio_channels() const { return audio_channels; }
85 const std::vector<std::string> &get_spu_channels() const { return spu_channels; }
86 void select_audio_channel(int);
87 void select_spu_channel(int);
88 int get_current_audio_channel() const { return current_audio; }
89 int get_current_spu_channel() const { return current_spu; }
93 static bool equals(const std::string &, const char *);
95 void update_channels();
96 void handle_event(const xine_event_t &);
99 void operator<<(Msp::LexicalConverter &, XineStream::State);
100 void operator>>(const Msp::LexicalConverter &, XineStream::State &);