summaryrefslogtreecommitdiffstats
path: root/kstars/kstars/indi/webcam/v4l1_base.h
diff options
context:
space:
mode:
Diffstat (limited to 'kstars/kstars/indi/webcam/v4l1_base.h')
-rw-r--r--kstars/kstars/indi/webcam/v4l1_base.h110
1 files changed, 110 insertions, 0 deletions
diff --git a/kstars/kstars/indi/webcam/v4l1_base.h b/kstars/kstars/indi/webcam/v4l1_base.h
new file mode 100644
index 00000000..7a7c93f9
--- /dev/null
+++ b/kstars/kstars/indi/webcam/v4l1_base.h
@@ -0,0 +1,110 @@
+/*
+ Copyright (C) 2005 by Jasem Mutlaq
+
+ Some code based on qastrocam
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+*/
+
+#ifndef V4L1_BASE_H
+#define V4L1_BASE_H
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "videodev.h"
+#include "../eventloop.h"
+
+class V4L1_Base
+{
+ public:
+ V4L1_Base();
+ virtual ~V4L1_Base();
+
+ /* Connection */
+ virtual int connectCam(const char * devpath, char *errmsg);
+ virtual void disconnectCam();
+ char * getDeviceName();
+
+ /* Image settings */
+ int getBrightness();
+ int getContrast();
+ int getColor();
+ int getHue();
+ int getWhiteness();
+ void setContrast(int val);
+ void setBrightness(int val);
+ void setColor(int val);
+ void setHue(int val);
+ void setWhiteness(int val);
+
+ /* Updates */
+ static void updateFrame(int d, void * p);
+ void newFrame();
+ void setPictureSettings();
+ void getPictureSettings();
+
+ /* Image Size */
+ int getWidth();
+ int getHeight();
+ void checkSize(int & x, int & y);
+ virtual bool setSize(int x, int y);
+ virtual void getMaxMinSize(int & xmax, int & ymax, int & xmin, int & ymin);
+
+ /* Frame rate */
+ void setFPS(int fps);
+ int getFPS();
+
+ void init(int preferedPalette);
+ void allocBuffers();
+ int mmapInit();
+ void mmapCapture();
+ void mmapSync();
+
+ unsigned char * mmapFrame();
+ unsigned char * getY();
+ unsigned char * getU();
+ unsigned char * getV();
+ unsigned char * getColorBuffer();
+
+ int start_capturing(char *errmsg);
+ int stop_capturing(char *errmsg);
+ void registerCallback(WPF *fp, void *ud);
+
+ protected:
+
+ int fd;
+ WPF *callback;
+ void *uptr;
+ unsigned long options;
+
+ struct video_capability capability;
+ struct video_window window;
+ struct video_picture picture_format;
+ struct video_mbuf mmap_buffer;
+
+ unsigned char * buffer_start;
+
+ long mmap_sync_buffer;
+ long mmap_capture_buffer;
+
+ int frameRate;
+ bool streamActive;
+ int selectCallBackID;
+ unsigned char * YBuf,*UBuf,*VBuf, *colorBuffer;
+
+};
+
+#endif