]> git.tdb.fi Git - xinema.git/blobdiff - source/xineengine.h
Refactor the libxine interface into classes
[xinema.git] / source / xineengine.h
diff --git a/source/xineengine.h b/source/xineengine.h
new file mode 100644 (file)
index 0000000..8acb1a5
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef XINEENGINE_H_
+#define XINEENGINE_H_
+
+#include <pthread.h>
+#include <xine.h>
+#include <msp/core/mutex.h>
+#include <msp/graphics/window.h>
+
+class XineStream;
+
+class XineEngine
+{
+private:
+       const Msp::Graphics::Window &window;
+       Msp::Mutex *display_mutex;
+       pthread_t locked_thread;
+       unsigned lock_count;
+       xine_t *engine;
+       xine_audio_port_t *audio_driver;
+       x11_visual_t visual;
+       xine_video_port_t *video_driver;
+
+public:
+       XineEngine(const Msp::Graphics::Window &, Msp::Mutex * = 0);
+       ~XineEngine();
+
+       xine_t *get_engine() { return engine; }
+       xine_audio_port_t *get_audio_driver() { return audio_driver; }
+       xine_video_port_t *get_video_driver() { return video_driver; }
+
+private:
+       static void dest_size_cb(void *, int, int, double, int *, int *, double *);
+       static void frame_output_cb(void *, int, int, double, int *, int *, int *, int *, double *, int *, int *);
+       static void lock_cb(void *);
+       static void unlock_cb(void *);
+};
+
+#endif