You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SimpleSkyCam/filter.h

75 lines
1.9 KiB

/***************************************************************************************
*
* filter.h is part of SimpleSkyCam.
*
*****************************************************************************************/
#ifndef _FILTER_H_
#define _FILTER_H_
#include "gui.h"
#include "config.h"
#include "video.h"
#include "videoframe.h"
class Filter {
private:
int running;
VideoFrame inFrame; // input frame
int inFrameNew; // new input frame;
VideoFrame oldFrame; // oldinput frame
VideoFrame temp; // temporary image
VideoFrame tempgtk; // temp image for gtk
FloatImage image; // output image
VideoFrame imagegtk; // output image -- send to gtk
GMutex mutexout;
GMutex mutexin;
GMutex mutextmp; // for access the temp image
GMutex mutex; // general mutex for changing settings
GThread *thread;
int objectW; // object Image Size Width
int objectH; // object Image Size Height
float *fpixels; //
void InputDetect();
void ComposeOutput();
public:
Filter();
~Filter();
int NewFrame (VideoFrame *newframe);
//
// Thread Releated Functions (maybe soon private?)
int TryLockInMutex() { return g_mutex_trylock(&mutextmp); };
void LockInMutex() { g_mutex_lock(&mutextmp);};
void UnLockInMutex() { g_mutex_unlock(&mutextmp);};
int TryLockTempMutex() { return g_mutex_trylock(&mutextmp); };
void LockTempMutex() { g_mutex_lock(&mutextmp);};
void UnLockTempMutex() { g_mutex_unlock(&mutextmp);};
int TryLockOutMutex() { return g_mutex_trylock(&mutexout); };
void LockOutMutex() { g_mutex_lock(&mutexout);};
void UnLockOutMutex() { g_mutex_unlock(&mutexout);};
void LockMutex() { g_mutex_lock(&mutex);};
void UnLockMutex() { g_mutex_unlock(&mutex);};
//
// Object functions
void SetObjectSize (int neww, int newh);
void SetObject (VideoFrame objFrame, int newx, int newy);
void GetObjectPos (int *x, int *y);
void Thread();
};
#endif