]> git.tdb.fi Git - xinema.git/blob - source/xineengine.h
8acb1a5975cb8acb87930453393cbfbaba5df960
[xinema.git] / source / xineengine.h
1 #ifndef XINEENGINE_H_
2 #define XINEENGINE_H_
3
4 #include <pthread.h>
5 #include <xine.h>
6 #include <msp/core/mutex.h>
7 #include <msp/graphics/window.h>
8
9 class XineStream;
10
11 class XineEngine
12 {
13 private:
14         const Msp::Graphics::Window &window;
15         Msp::Mutex *display_mutex;
16         pthread_t locked_thread;
17         unsigned lock_count;
18         xine_t *engine;
19         xine_audio_port_t *audio_driver;
20         x11_visual_t visual;
21         xine_video_port_t *video_driver;
22
23 public:
24         XineEngine(const Msp::Graphics::Window &, Msp::Mutex * = 0);
25         ~XineEngine();
26
27         xine_t *get_engine() { return engine; }
28         xine_audio_port_t *get_audio_driver() { return audio_driver; }
29         xine_video_port_t *get_video_driver() { return video_driver; }
30
31 private:
32         static void dest_size_cb(void *, int, int, double, int *, int *, double *);
33         static void frame_output_cb(void *, int, int, double, int *, int *, int *, int *, double *, int *, int *);
34         static void lock_cb(void *);
35         static void unlock_cb(void *);
36 };
37
38 #endif