]> git.tdb.fi Git - xinema.git/blob - source/xinestream.cpp
fd2c6224fb9e6aea49551af343f829b4881d37fe
[xinema.git] / source / xinestream.cpp
1 #include <msp/io/print.h>
2 #include "xineengine.h"
3 #include "xinestream.h"
4
5 using namespace std;
6 using namespace Msp;
7
8 XineStream::XineStream(XineEngine &engine, const string &mrl)
9 {
10         stream = xine_stream_new(engine.get_engine(), engine.get_audio_driver(), engine.get_video_driver());
11         xine_open(stream, mrl.c_str());
12
13         queue = xine_event_new_queue(stream);
14 }
15
16 XineStream::~XineStream()
17 {
18         xine_close(stream);
19         xine_event_dispose_queue(queue);
20         xine_dispose(stream);
21 }
22
23 void XineStream::play()
24 {
25         xine_play(stream, 0, 0);
26 }
27
28 void XineStream::stop()
29 {
30         xine_stop(stream);
31 }
32
33 void XineStream::tick()
34 {
35         while(xine_event_t *event = xine_event_get(queue))
36         {
37                 handle_event(*event);
38                 xine_event_free(event);
39         }
40 }
41
42 void XineStream::handle_event(const xine_event_t &event)
43 {
44         switch(event.type)
45         {
46         case XINE_EVENT_PROGRESS:
47                 {
48                         xine_progress_data_t *data = reinterpret_cast<xine_progress_data_t *>(event.data);
49                         IO::print("%s [%d%%]\n", data->description, data->percent);
50                 }
51                 break;
52         }
53 }