]> git.tdb.fi Git - xinema.git/blob - source/xinestream.h
Export some simple playback information to clients
[xinema.git] / source / xinestream.h
1 #ifndef XINESTREAM_H_
2 #define XINESTREAM_H_
3
4 #include <string>
5 #include <xine.h>
6 #include <msp/time/timedelta.h>
7
8 class XineEngine;
9
10 class XineStream
11 {
12 public:
13         sigc::signal<void, const Msp::Time::TimeDelta &> signal_duration_changed;
14         sigc::signal<void, const Msp::Time::TimeDelta &> signal_position_changed;
15
16 private:
17         XineEngine &engine;
18         xine_stream_t *stream;
19         xine_event_queue_t *queue;
20         Msp::Time::TimeDelta duration;
21         Msp::Time::TimeDelta position;
22
23 public:
24         XineStream(XineEngine &, const std::string &);
25         ~XineStream();
26
27         const Msp::Time::TimeDelta &get_duration() const { return duration; }
28         const Msp::Time::TimeDelta &get_position() const { return position; }
29         std::string get_title() const;
30
31         void play();
32         void stop();
33
34         void tick();
35 private:
36         void handle_event(const xine_event_t &);
37 };
38
39 #endif