lms-video/Gem/plugins/videoVLC/videoVLC.h
Santi Noreña e85d191b46 - Reestructuración de ficheros y directorios general
- merge v0.01 --> Añadido fileselector
- Añadidas fuentes de Gem y Pure Data
- pix2jpg incluído en Gem. Archivos de construcción de Gem modificados.
- Añadido fichero ompiling.txt con instrucciones de compilación
2013-02-04 18:00:17 +01:00

80 lines
2.2 KiB
C++

#ifndef _INCLUDE_GEMPLUGIN__VIDEOVLC_VIDEOVLC_H_
#define _INCLUDE_GEMPLUGIN__VIDEOVLC_VIDEOVLC_H_
#include "plugins/video.h"
#include "Gem/Image.h"
#include "Utils/ThreadMutex.h"
#include <vlc/vlc.h>
#include <stdarg.h>
#ifndef VLC_VAR_TIME
typedef int64_t mtime_t;
#endif /* VLC_VAR_TIME */
namespace gem { namespace plugins {
class GEM_EXPORT videoVLC : public video {
private:
std::string m_name;
std::string m_devname;
gem::thread::Mutex m_mutex;
pixBlock m_pixBlock;
Properties m_props;
unsigned int m_type;
public:
videoVLC(void);
virtual ~videoVLC(void);
virtual bool open(gem::Properties&props);
virtual pixBlock *getFrame(void);
virtual std::vector<std::string>enumerate(void);
virtual bool setDevice(int ID);
virtual bool setDevice(const std::string);
virtual bool enumProperties(gem::Properties&readable,
gem::Properties&writeable);
virtual void setProperties(gem::Properties&props);
virtual void getProperties(gem::Properties&props);
virtual std::vector<std::string>dialogs(void);
// for pix_video: query whether this backend provides access to this class of devices
// (e.g. "dv")
virtual bool provides(const std::string);
// get a list of all provided devices
virtual std::vector<std::string>provides(void);
// get's the name of the backend (e.g. "v4l")
virtual const std::string getName(void);
virtual bool isThreadable(void) {return true;}
virtual bool reset(void) {return true;}
virtual void releaseFrame(void);
virtual bool grabAsynchronous(bool) {return true;}
virtual bool dialog(std::vector<std::string>names=std::vector<std::string>()) {return false;}
virtual bool setColor(int) {return false;}
virtual void close(void);
virtual bool start(void);
virtual bool stop(void);
virtual void* lockFrame(void**plane);
virtual void unlockFrame(void*picture, void*const*plane);
private:
static void *lockCB(void*, void**plane);
static void unlockCB(void*, void*picture, void*const*plane);
static void displayCB(void*, void*picture);
libvlc_instance_t*m_instance;
libvlc_media_player_t*m_mediaplayer;
};
};}; // namespace
#endif // for header file