Advertisement
Guest User

remy

a guest
Sep 22nd, 2011
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.82 KB | None | 0 0
  1. #ifndef VLCSLIDE_H
  2. #define VLCSLIDE_H
  3.  
  4. #include <QObject>
  5. #include <QMutex>
  6. #include <QMutexLocker>
  7. #include <QGLContext>
  8. #include <QString>
  9. #include <QDebug>
  10. #include <vlc/vlc.h>
  11.  
  12. #include "slideshowable.h"
  13.  
  14. class VlcSlide : public Slideshowable
  15. {
  16.     Q_OBJECT
  17. public:
  18.     explicit VlcSlide(QString filename, int x, int y, int w, int h, double fadeTime, QGLContext *ctx, QObject *parent = 0);
  19.     virtual ~VlcSlide();
  20.  
  21. protected:
  22.     static void *lock_callback(void *data, void **p_pixels) {
  23.         VlcSlide* obj = (VlcSlide*) data;
  24.         return (obj->*&VlcSlide::lock)(p_pixels);
  25.     }
  26.     static void unlock_callback(void *data, void *id, void *const *p_pixels) {
  27.         VlcSlide* obj = (VlcSlide*) data;
  28.         return (obj->*&VlcSlide::unlock)(id, p_pixels);
  29.     }
  30.     static void display_callback(void *data, void *id){
  31.         VlcSlide* obj = (VlcSlide*) data;
  32.         return (obj->*&VlcSlide::display)(id);
  33.     }
  34.     static void video_end_callback(const libvlc_event_t *, void *data) {
  35.         qDebug() << "Video has ended";
  36.         VlcSlide* obj = (VlcSlide*) data;
  37.         return (obj->*&VlcSlide::video_end)();
  38.     }
  39.  
  40.     void *lock(void **p_pixels);
  41.     void unlock(void *id, void *const *);
  42.     void display(void *id) const;
  43.  
  44.     static QSize getVideoSize(libvlc_media_t *m);
  45.  
  46.     void *pixels;
  47.     libvlc_instance_t *vlc;
  48.     libvlc_media_t *m;
  49.     libvlc_media_player_t *mp;
  50.  
  51.     QGLContext *ctx;
  52.     QMutex *in, *out;
  53.     QMutexLocker lockin, lockout;
  54.     GLuint texture;
  55.     QSize video_size;
  56.     int nx, ny, nw, nh;
  57.  
  58. signals:
  59.     void finished();
  60.  
  61. public slots:
  62.     virtual void update();
  63.     virtual void resize(int x, int y, int w, int h);
  64.     virtual void play();
  65.     virtual void stop();
  66.     virtual void rewind();
  67.     virtual void video_end();
  68. };
  69.  
  70. #endif // VLCSLIDE_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement