* BUG: Fix all Contrast, Hue, Bright, Color and Whiteness properties in 
  VideoDevice.
* BUG: Remove the VideoDevice.Features property.


git-svn-id: svn://localhost/gambas/trunk@4127 867c0c6c-44f3-4631-809d-bfa615b0a4ec
This commit is contained in:
Benoît Minisini 2011-09-14 15:22:35 +00:00
parent f7338f544f
commit a75432661a
5 changed files with 434 additions and 427 deletions

File diff suppressed because it is too large Load diff

View file

@ -37,7 +37,6 @@
extern GB_DESC CWebcamDesc[]; extern GB_DESC CWebcamDesc[];
extern GB_DESC CTunerDesc[]; extern GB_DESC CTunerDesc[];
extern GB_DESC CFeaturesDesc[];
extern GB_STREAM_DESC VideoStream; extern GB_STREAM_DESC VideoStream;
#else #else
@ -46,8 +45,9 @@ extern GB_STREAM_DESC VideoStream;
#define DEVICE (THIS->dev) #define DEVICE (THIS->dev)
// ++ V4L2 // ++ V4L2
#define MCLEAR(x) memset (&(x), 0, sizeof (x)) #define MCLEAR(x) memset (&(x), 0, sizeof (x))
#define gv4l2_V4L 1 #define MODE_ANY 0
#define gv4l2_V4L2 2 #define MODE_V4L 1
#define MODE_V4L2 2
// -- // --
#endif #endif
@ -85,67 +85,69 @@ typedef
VIDEO_STREAM; VIDEO_STREAM;
// ++ V4L2 // ++ V4L2
typedef struct gv4l2_buffer typedef
{ struct gv4l2_buffer
void* start; {
size_t length; void* start;
size_t length;
} gv4l2_buffer_t; }
gv4l2_buffer_t;
//-- //--
typedef struct typedef
{ struct
GB_BASE ob; {
GB_STREAM stream; GB_BASE ob;
GB_STREAM stream;
char *device; char *device;
video_device_t *dev; video_device_t *dev;
unsigned char *membuf; unsigned char *membuf;
long gotframe; int gotframe;
long posframe; int posframe;
// ++ YUYV->RGB conversion // ++ YUYV->RGB conversion
void* frame; // "current" frame buffer void *frame; // "current" frame buffer
//-- //--
// ++ V4L2 // ++ V4L2
// //
// There is some duplication here but we really don't want to use // There is some duplication here but we really don't want to use
// the v4l video_device_t structure ... // the v4l video_device_t structure ...
// //
struct v4l2_capability cap; struct v4l2_capability cap;
struct v4l2_cropcap cropcap; struct v4l2_cropcap cropcap;
struct v4l2_crop crop; struct v4l2_crop crop;
struct v4l2_format fmt; struct v4l2_format fmt;
struct gv4l2_buffer* buffers; struct gv4l2_buffer *buffers;
// //
int is_v4l2; // which version is this dev int is_v4l2; // which version is this dev
int io; // raw device handle for V2 int io; // raw device handle for V2
int use_mmap; // is MMAP available int use_mmap; // is MMAP available
int buffer_count; // number of buffers int buffer_count; // number of buffers
int w,h; // "current" dimensions int w, h; // "current" dimensions
int format; // gb.image format int format; // gb.image format
// //
int bright_max; int bright_max;
int hue_max; int hue_max;
int contrast_max; int contrast_max;
int whiteness_max; int whiteness_max;
int color_max; int color_max;
// //
int bright_min; int bright_min;
int hue_min; int hue_min;
int contrast_min; int contrast_min;
int whiteness_min; int whiteness_min;
int color_min; int color_min;
// //
int bright_def; int bright_def;
int hue_def; int hue_def;
int contrast_def; int contrast_def;
int whiteness_def; int whiteness_def;
int color_def; int color_def;
// -- // --
struct v4lconvert_data *convert; struct v4lconvert_data *convert;
}
} CWEBCAM; CWEBCAM;
int Video_stream_read(GB_STREAM *stream, char *buffer, int len); int Video_stream_read(GB_STREAM *stream, char *buffer, int len);

View file

@ -46,7 +46,7 @@
#include "main.h" #include "main.h"
#include "CWebcam.h" #include "CWebcam.h"
// //
int gv4l2_debug_mode = 1; bool gv4l2_debug_mode = TRUE;
// //
//============================================================================= //=============================================================================
// //
@ -407,12 +407,12 @@ int gv4l2_init_device(CWEBCAM * _object , int width , int height )
return 0; return 0;
} }
if (req.count < 2) { if (req.count < 2) {
gv4l2_debug("insifficient memory for mmap"); gv4l2_debug("not enough memory for mmap");
return 0; return 0;
} }
GB.Alloc ( POINTER(&THIS->buffers),req.count * sizeof (*THIS->buffers)); GB.Alloc ( POINTER(&THIS->buffers),req.count * sizeof (*THIS->buffers));
if (!THIS->buffers) { if (!THIS->buffers) {
gv4l2_debug("insifficient memory for mmap"); gv4l2_debug("not memory for mmap");
return 0; return 0;
} }
THIS->buffer_count = req.count; THIS->buffer_count = req.count;

View file

@ -39,7 +39,6 @@ GB_DESC *GB_CLASSES[] EXPORT =
{ {
CWebcamDesc, CWebcamDesc,
CTunerDesc, CTunerDesc,
CFeaturesDesc,
NULL NULL
}; };

View file

@ -25,6 +25,7 @@
#define __MAIN_H #define __MAIN_H
#include "gambas.h" #include "gambas.h"
#include "gb_common.h"
#include "gb.image.h" #include "gb.image.h"
#ifndef __MAIN_C #ifndef __MAIN_C