summaryrefslogtreecommitdiffstats
path: root/sys/qcam
diff options
context:
space:
mode:
Diffstat (limited to 'sys/qcam')
-rw-r--r--sys/qcam/dark.c65
-rw-r--r--sys/qcam/exposure.c99
-rw-r--r--sys/qcam/gstqcamsrc.c274
-rw-r--r--sys/qcam/gstqcamsrc.h48
-rw-r--r--sys/qcam/qcam-Linux.c202
-rw-r--r--sys/qcam/qcam-Linux.h2
-rw-r--r--sys/qcam/qcam-lib.c595
-rw-r--r--sys/qcam/qcam-os.c202
-rw-r--r--sys/qcam/qcam-os.h2
-rw-r--r--sys/qcam/qcam.h117
-rw-r--r--sys/qcam/qcamip.h18
11 files changed, 869 insertions, 755 deletions
diff --git a/sys/qcam/dark.c b/sys/qcam/dark.c
index 70acf979..e15a53c9 100644
--- a/sys/qcam/dark.c
+++ b/sys/qcam/dark.c
@@ -50,8 +50,8 @@ OTHER DEALINGS IN THE SOFTWARE.
#define FNAME "qcam.darkfile"
static unsigned char master_darkmask1[MAX_HEIGHT][MAX_WIDTH];
-static unsigned char master_darkmask2[MAX_HEIGHT/2+1][MAX_WIDTH/2+1];
-static unsigned char master_darkmask4[MAX_HEIGHT/4+1][MAX_WIDTH/4+1];
+static unsigned char master_darkmask2[MAX_HEIGHT / 2 + 1][MAX_WIDTH / 2 + 1];
+static unsigned char master_darkmask4[MAX_HEIGHT / 4 + 1][MAX_WIDTH / 4 + 1];
/*
int
@@ -133,7 +133,7 @@ read_darkmask()
*/
int
-fixdark(const struct qcam *q, scanbuf *scan)
+fixdark (const struct qcam *q, scanbuf * scan)
{
static int init = 0;
static int smallest_dm = 255;
@@ -150,14 +150,15 @@ fixdark(const struct qcam *q, scanbuf *scan)
int scale = q->transfer_scale;
if (!init) {
- if (!read_darkmask()) return 0;
+ if (!read_darkmask ())
+ return 0;
for (y = 0; y < MAX_HEIGHT; y++)
for (x = 0; x < MAX_HEIGHT; x++)
- if (master_darkmask1[y][x] < smallest_dm) {
+ if (master_darkmask1[y][x] < smallest_dm) {
smallest_dm = master_darkmask1[y][x];
#ifdef DEBUG
- fprintf(stderr, "Smallest mask is %d at (%d, %d)\n",
- smallest_dm, x, y);
+ fprintf (stderr, "Smallest mask is %d at (%d, %d)\n",
+ smallest_dm, x, y);
#endif
}
init = 1;
@@ -165,7 +166,8 @@ fixdark(const struct qcam *q, scanbuf *scan)
if (brightness < smallest_dm) {
#ifdef DEBUG
- fprintf(stderr, "Brightness %d (dark current starts at %d), no fixup needed\n",
+ fprintf (stderr,
+ "Brightness %d (dark current starts at %d), no fixup needed\n",
brightness, smallest_dm);
#endif
return 1;
@@ -186,53 +188,53 @@ fixdark(const struct qcam *q, scanbuf *scan)
darkmask[y][x] = master_darkmask4[y][x];
} else {
#ifdef DEBUG
- fprintf(stderr, "Bad transfer_scale in darkmask assignment!\n");
+ fprintf (stderr, "Bad transfer_scale in darkmask assignment!\n");
#endif
return 0;
}
do {
again = 0;
- ccd_y = (q->top-1)/scale;
+ ccd_y = (q->top - 1) / scale;
for (y = 0; y < height; y++, ccd_y++) {
- ccd_x = q->left-1;
+ ccd_x = q->left - 1;
ccd_x /= 2;
ccd_x *= 2;
ccd_x /= scale;
for (x = 0; x < width; x++, ccd_x++) {
- val = scan[y*width + x];
- if (brightness < darkmask[ccd_y][ccd_x]) { /* good pixel */
+ val = scan[y * width + x];
+ if (brightness < darkmask[ccd_y][ccd_x]) { /* good pixel */
new_image[y][x] = val;
- } else { /* bad pixel */
+ } else { /* bad pixel */
/* look at nearby pixels, average the good values */
pixelcount = 0;
pixeltotal = 0;
- if (x > 0) { /* left */
- if (brightness < darkmask[ccd_y][ccd_x-1]) {
+ if (x > 0) { /* left */
+ if (brightness < darkmask[ccd_y][ccd_x - 1]) {
pixelcount++;
- pixeltotal += scan[y*width + x - 1];
+ pixeltotal += scan[y * width + x - 1];
}
}
- if (x < width-1) { /* right */
- if (brightness < darkmask[ccd_y][ccd_x+1]) {
+ if (x < width - 1) { /* right */
+ if (brightness < darkmask[ccd_y][ccd_x + 1]) {
pixelcount++;
- pixeltotal += scan[y*width + x + 1];
+ pixeltotal += scan[y * width + x + 1];
}
}
- if (y > 0) { /* above */
- if (brightness < darkmask[ccd_y-1][ccd_x]) {
+ if (y > 0) { /* above */
+ if (brightness < darkmask[ccd_y - 1][ccd_x]) {
pixelcount++;
- pixeltotal += scan[(y-1)*width + x];
+ pixeltotal += scan[(y - 1) * width + x];
}
}
- if (y < height-1) { /* below */
- if (brightness < darkmask[ccd_y+1][ccd_x]) {
+ if (y < height - 1) { /* below */
+ if (brightness < darkmask[ccd_y + 1][ccd_x]) {
pixelcount++;
- pixeltotal += scan[(y+1)*width + x];
+ pixeltotal += scan[(y + 1) * width + x];
}
}
-
- if (pixelcount == 0) { /* no valid neighbors! */
+
+ if (pixelcount == 0) { /* no valid neighbors! */
again = 1;
} else {
new_image[y][x] = pixeltotal / pixelcount;
@@ -245,13 +247,12 @@ fixdark(const struct qcam *q, scanbuf *scan)
for (y = 0; y < height; y++)
for (x = 0; x < width; x++)
- scan[y*width + x] = new_image[y][x];
+ scan[y * width + x] = new_image[y][x];
} while (loopcount++ < MAX_LOOPS && again);
#ifdef DEBUG
- fprintf(stderr, "Darkmask fix took %d loop%s\n",
- loopcount, (loopcount == 1)?"":"s");
+ fprintf (stderr, "Darkmask fix took %d loop%s\n",
+ loopcount, (loopcount == 1) ? "" : "s");
#endif
return 1;
}
-
diff --git a/sys/qcam/exposure.c b/sys/qcam/exposure.c
index b393bdb7..b63e364f 100644
--- a/sys/qcam/exposure.c
+++ b/sys/qcam/exposure.c
@@ -49,8 +49,8 @@ SOFTWARE.
* prototyped in qcamip.h
*/
-static int qcip_pixel_average(struct qcam *q, scanbuf *scan);
-static int qcip_luminance_std(struct qcam *q, scanbuf *scan, int avg);
+static int qcip_pixel_average (struct qcam *q, scanbuf * scan);
+static int qcip_luminance_std (struct qcam *q, scanbuf * scan, int avg);
/* Private data used by the auto exposure routine */
@@ -63,7 +63,7 @@ static int ae_mode = AE_ALL_AVG;
/* Calculate average pixel value for entire image */
static int
-qcip_pixel_average(struct qcam *q, scanbuf *scan)
+qcip_pixel_average (struct qcam *q, scanbuf * scan)
{
int count = 0;
int sum = 0;
@@ -83,7 +83,7 @@ qcip_pixel_average(struct qcam *q, scanbuf *scan)
/* Calculate average pixel value for center of image */
static int
-qcip_pixel_average_center(struct qcam *q, scanbuf *scan)
+qcip_pixel_average_center (struct qcam *q, scanbuf * scan)
{
int count = 0;
int sum = 0;
@@ -95,12 +95,12 @@ qcip_pixel_average_center(struct qcam *q, scanbuf *scan)
width = q->width / q->transfer_scale;
height = q->height / q->transfer_scale;
- maxcol = width * 2 / 3;
+ maxcol = width * 2 / 3;
maxrow = height * 2 / 3;
- for (i = width/3; i < maxcol; i++) {
- for (j = height/3; j < maxrow; j++) {
- sum += scan[j*width+i];
+ for (i = width / 3; i < maxcol; i++) {
+ for (j = height / 3; j < maxrow; j++) {
+ sum += scan[j * width + i];
count++;
}
}
@@ -108,7 +108,7 @@ qcip_pixel_average_center(struct qcam *q, scanbuf *scan)
}
int
-qcip_set_luminance_target(struct qcam *q, int val)
+qcip_set_luminance_target (struct qcam *q, int val)
{
const int max_pixel_val = q->bpp == 6 ? 63 : 15;
@@ -121,7 +121,7 @@ qcip_set_luminance_target(struct qcam *q, int val)
}
int
-qcip_set_luminance_tolerance(struct qcam *q, int val)
+qcip_set_luminance_tolerance (struct qcam *q, int val)
{
const int max_pixel_val = q->bpp == 6 ? 63 : 15;
@@ -139,21 +139,21 @@ qcip_set_luminance_tolerance(struct qcam *q, int val)
}
int
-qcip_set_luminance_std_target(struct qcam *q, int val)
+qcip_set_luminance_std_target (struct qcam *q, int val)
{
luminance_std_target = val;
return QCIP_XPSR_OK;
}
int
-qcip_set_luminance_std_tolerance(struct qcam *q, int val)
+qcip_set_luminance_std_tolerance (struct qcam *q, int val)
{
luminance_std_tolerance = val;
return QCIP_XPSR_OK;
}
int
-qcip_set_autoexposure_mode(int val)
+qcip_set_autoexposure_mode (int val)
{
ae_mode = val;
return 0;
@@ -162,7 +162,7 @@ qcip_set_autoexposure_mode(int val)
/* Calculate standard deviation of pixel value for entire image */
static int
-qcip_luminance_std(struct qcam *q, scanbuf *scan, int avg)
+qcip_luminance_std (struct qcam *q, scanbuf * scan, int avg)
{
int count = 0;
int sum = 0;
@@ -197,7 +197,7 @@ qcip_luminance_std(struct qcam *q, scanbuf *scan, int avg)
*/
int
-qcip_autoexposure(struct qcam *q, scanbuf *scan)
+qcip_autoexposure (struct qcam *q, scanbuf * scan)
{
int luminance_dif;
int luminance_avg;
@@ -207,45 +207,46 @@ qcip_autoexposure(struct qcam *q, scanbuf *scan)
int ret = QCIP_XPSR_OK;
#ifdef DEBUG
- fprintf(stderr, "Brightness: %d Contrast: %d\n",
- qc_getbrightness(q), qc_getcontrast(q));
+ fprintf (stderr, "Brightness: %d Contrast: %d\n",
+ qc_getbrightness (q), qc_getcontrast (q));
#endif
switch (ae_mode) {
- case AE_CTR_AVG:
- luminance_avg = qcip_pixel_average_center(q, scan);
- break;
- case AE_STD_AVG:
- luminance_avg = qcip_pixel_average(q, scan);
- lum_std = qcip_luminance_std(q, scan, luminance_avg);
-
- /* ==>> Contrast adjustment <<== */
-
- /* set target if it has not been explicitly set */
- if (luminance_std_target == -1) {
- luminance_std_target = q->bpp == 6 ? 10 : 2;
- }
+ case AE_CTR_AVG:
+ luminance_avg = qcip_pixel_average_center (q, scan);
+ break;
+ case AE_STD_AVG:
+ luminance_avg = qcip_pixel_average (q, scan);
+ lum_std = qcip_luminance_std (q, scan, luminance_avg);
+
+ /* ==>> Contrast adjustment <<== */
+
+ /* set target if it has not been explicitly set */
+ if (luminance_std_target == -1) {
+ luminance_std_target = q->bpp == 6 ? 10 : 2;
+ }
- /* Adjust contrast to reach target luminance standard deviation */
- lum_std_min = luminance_std_target - luminance_std_tolerance;
- lum_std_max = luminance_std_target + luminance_std_tolerance;
+ /* Adjust contrast to reach target luminance standard deviation */
+ lum_std_min = luminance_std_target - luminance_std_tolerance;
+ lum_std_max = luminance_std_target + luminance_std_tolerance;
- if (lum_std < lum_std_min || lum_std > lum_std_max) {
- ret = QCIP_XPSR_RSCN;
- if (qc_setcontrast(q, luminance_std_target - lum_std + qc_getcontrast(q))) {
- return QCIP_XPSR_ERR;
+ if (lum_std < lum_std_min || lum_std > lum_std_max) {
+ ret = QCIP_XPSR_RSCN;
+ if (qc_setcontrast (q,
+ luminance_std_target - lum_std + qc_getcontrast (q))) {
+ return QCIP_XPSR_ERR;
+ }
}
- }
#ifdef DEBUG
- fprintf(stderr, "Luminance std/target/tolerance: %d/%d/%d\n",
- lum_std, luminance_std_target, luminance_std_tolerance );
+ fprintf (stderr, "Luminance std/target/tolerance: %d/%d/%d\n",
+ lum_std, luminance_std_target, luminance_std_tolerance);
#endif
-
- break;
- case AE_ALL_AVG:
- default:
- luminance_avg = qcip_pixel_average(q, scan);
- break;
+
+ break;
+ case AE_ALL_AVG:
+ default:
+ luminance_avg = qcip_pixel_average (q, scan);
+ break;
}
/* ==>> Brightness adjustment <<== */
@@ -259,8 +260,8 @@ qcip_autoexposure(struct qcam *q, scanbuf *scan)
lum_max = luminance_target + luminance_tolerance;
#ifdef DEBUG
- fprintf(stderr, "Luminance avg/target/tolerance: %d/%d/%d\n",
- luminance_avg, luminance_target, luminance_tolerance );
+ fprintf (stderr, "Luminance avg/target/tolerance: %d/%d/%d\n",
+ luminance_avg, luminance_target, luminance_tolerance);
#endif
/* check for luminance within target range */
@@ -277,7 +278,7 @@ qcip_autoexposure(struct qcam *q, scanbuf *scan)
/* Adjusted brightness is out of range ..
* throw in the towel ... auto-exposure has failed!
*/
- if (qc_setbrightness(q, brightness_adj + qc_getbrightness(q))) {
+ if (qc_setbrightness (q, brightness_adj + qc_getbrightness (q))) {
return QCIP_XPSR_ERR;
}
}
diff --git a/sys/qcam/gstqcamsrc.c b/sys/qcam/gstqcamsrc.c
index 04de351f..0c68ca13 100644
--- a/sys/qcam/gstqcamsrc.c
+++ b/sys/qcam/gstqcamsrc.c
@@ -34,12 +34,11 @@
#include "qcamip.h"
/* elementfactory information */
-static GstElementDetails gst_qcamsrc_details = GST_ELEMENT_DETAILS (
- "QCam Source",
- "Source/Video",
- "Read from a QuickCam device",
- "Wim Taymans <wim.taymans@chello.be>"
-);
+static GstElementDetails gst_qcamsrc_details =
+GST_ELEMENT_DETAILS ("QCam Source",
+ "Source/Video",
+ "Read from a QuickCam device",
+ "Wim Taymans <wim.taymans@chello.be>");
#define AE_NONE 3
@@ -56,12 +55,11 @@ static GstElementDetails gst_qcamsrc_details = GST_ELEMENT_DETAILS (
#define DEF_AUTOEXP AE_NONE
static GstStaticPadTemplate gst_qcamsrc_src_factory =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV("I420"))
-);
+GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
+ );
#define GST_TYPE_AUTOEXP_MODE (gst_autoexp_mode_get_type())
static GType
@@ -69,25 +67,28 @@ gst_autoexp_mode_get_type (void)
{
static GType autoexp_mode_type = 0;
static GEnumValue autoexp_modes[] = {
- { AE_ALL_AVG, "0", "Average Picture" },
- { AE_CTR_AVG, "1", "Average Center" },
- { AE_STD_AVG, "2", "Standard Deviation" },
- { AE_NONE, "3", "None" },
- { 0, NULL, NULL },
+ {AE_ALL_AVG, "0", "Average Picture"},
+ {AE_CTR_AVG, "1", "Average Center"},
+ {AE_STD_AVG, "2", "Standard Deviation"},
+ {AE_NONE, "3", "None"},
+ {0, NULL, NULL},
};
if (!autoexp_mode_type) {
- autoexp_mode_type = g_enum_register_static ("GstAutoExposureMode", autoexp_modes);
+ autoexp_mode_type =
+ g_enum_register_static ("GstAutoExposureMode", autoexp_modes);
}
return autoexp_mode_type;
}
/* QCamSrc signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_WIDTH,
ARG_HEIGHT,
@@ -102,22 +103,23 @@ enum {
ARG_AUTOEXP,
};
-static void gst_qcamsrc_base_init (gpointer g_class);
-static void gst_qcamsrc_class_init (GstQCamSrcClass *klass);
-static void gst_qcamsrc_init (GstQCamSrc *qcamsrc);
+static void gst_qcamsrc_base_init (gpointer g_class);
+static void gst_qcamsrc_class_init (GstQCamSrcClass * klass);
+static void gst_qcamsrc_init (GstQCamSrc * qcamsrc);
-static void gst_qcamsrc_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gst_qcamsrc_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
+static void gst_qcamsrc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_qcamsrc_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
-static GstElementStateReturn gst_qcamsrc_change_state (GstElement *element);
-static void gst_qcamsrc_close (GstQCamSrc *src);
-static gboolean gst_qcamsrc_open (GstQCamSrc *src);
+static GstElementStateReturn gst_qcamsrc_change_state (GstElement * element);
+static void gst_qcamsrc_close (GstQCamSrc * src);
+static gboolean gst_qcamsrc_open (GstQCamSrc * src);
-static GstData* gst_qcamsrc_get (GstPad *pad);
+static GstData *gst_qcamsrc_get (GstPad * pad);
static GstElementClass *parent_class = NULL;
+
/*//static guint gst_qcamsrc_signals[LAST_SIGNAL] = { 0 }; */
GType
@@ -127,18 +129,20 @@ gst_qcamsrc_get_type (void)
if (!qcamsrc_type) {
static const GTypeInfo qcamsrc_info = {
- sizeof(GstQCamSrcClass),
+ sizeof (GstQCamSrcClass),
gst_qcamsrc_base_init,
NULL,
- (GClassInitFunc)gst_qcamsrc_class_init,
+ (GClassInitFunc) gst_qcamsrc_class_init,
NULL,
NULL,
- sizeof(GstQCamSrc),
+ sizeof (GstQCamSrc),
0,
- (GInstanceInitFunc)gst_qcamsrc_init,
+ (GInstanceInitFunc) gst_qcamsrc_init,
NULL
};
- qcamsrc_type = g_type_register_static(GST_TYPE_ELEMENT, "GstQCamSrc", &qcamsrc_info, 0);
+ qcamsrc_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstQCamSrc", &qcamsrc_info,
+ 0);
}
return qcamsrc_type;
}
@@ -146,54 +150,55 @@ static void
gst_qcamsrc_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&gst_qcamsrc_src_factory));
+
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&gst_qcamsrc_src_factory));
gst_element_class_set_details (element_class, &gst_qcamsrc_details);
}
static void
-gst_qcamsrc_class_init (GstQCamSrcClass *klass)
+gst_qcamsrc_class_init (GstQCamSrcClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_WIDTH,
- g_param_spec_int ("width", "width", "width",
- 0, 320, DEF_WIDTH, G_PARAM_READWRITE));
- g_object_class_install_property (G_OBJECT_CLASS(klass), ARG_HEIGHT,
- g_param_spec_int ("height", "height", "height",
- 0, 240, DEF_HEIGHT, G_PARAM_READWRITE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_BRIGHTNESS,
- g_param_spec_int ("brightness", "brightness", "brightness",
- 0, 255, DEF_BRIGHTNESS, G_PARAM_READWRITE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_WHITEBAL,
- g_param_spec_int ("whitebal", "whitebal", "whitebal",
- 0, 255, DEF_WHITEBAL, G_PARAM_READWRITE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_CONTRAST,
- g_param_spec_int ("contrast", "contrast", "contrast",
- 0, 255, DEF_CONTRAST, G_PARAM_READWRITE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_TOP,
- g_param_spec_int ("top", "top", "top",
- 0, 240, DEF_TOP, G_PARAM_READWRITE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_LEFT,
- g_param_spec_int ("left", "left", "left",
- 0, 320, DEF_LEFT, G_PARAM_READWRITE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_TRANSFER_SCALE,
- g_param_spec_int ("transfer_scale", "transfer_scale", "transfer_scale",
- 1, 4, DEF_TRANSFER_SCALE, G_PARAM_READWRITE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_DEPTH,
- g_param_spec_int ("depth", "depth", "depth",
- 4, 6, DEF_DEPTH, G_PARAM_READWRITE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_PORT,
- g_param_spec_int ("port","port","port",
- 0, G_MAXINT, DEF_PORT, G_PARAM_READWRITE));
- g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_AUTOEXP,
- g_param_spec_enum ("autoexposure", "autoexposure", "autoexposure",
- GST_TYPE_AUTOEXP_MODE, DEF_AUTOEXP, G_PARAM_READWRITE));
+ g_param_spec_int ("width", "width", "width",
+ 0, 320, DEF_WIDTH, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_HEIGHT,
+ g_param_spec_int ("height", "height", "height",
+ 0, 240, DEF_HEIGHT, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BRIGHTNESS,
+ g_param_spec_int ("brightness", "brightness", "brightness",
+ 0, 255, DEF_BRIGHTNESS, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_WHITEBAL,
+ g_param_spec_int ("whitebal", "whitebal", "whitebal",
+ 0, 255, DEF_WHITEBAL, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_CONTRAST,
+ g_param_spec_int ("contrast", "contrast", "contrast",
+ 0, 255, DEF_CONTRAST, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_TOP,
+ g_param_spec_int ("top", "top", "top",
+ 0, 240, DEF_TOP, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LEFT,
+ g_param_spec_int ("left", "left", "left",
+ 0, 320, DEF_LEFT, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_TRANSFER_SCALE,
+ g_param_spec_int ("transfer_scale", "transfer_scale", "transfer_scale",
+ 1, 4, DEF_TRANSFER_SCALE, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DEPTH,
+ g_param_spec_int ("depth", "depth", "depth",
+ 4, 6, DEF_DEPTH, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PORT,
+ g_param_spec_int ("port", "port", "port",
+ 0, G_MAXINT, DEF_PORT, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_AUTOEXP,
+ g_param_spec_enum ("autoexposure", "autoexposure", "autoexposure",
+ GST_TYPE_AUTOEXP_MODE, DEF_AUTOEXP, G_PARAM_READWRITE));
gobject_class->set_property = gst_qcamsrc_set_property;
gobject_class->get_property = gst_qcamsrc_get_property;
@@ -202,15 +207,16 @@ gst_qcamsrc_class_init (GstQCamSrcClass *klass)
}
static void
-gst_qcamsrc_init (GstQCamSrc *qcamsrc)
+gst_qcamsrc_init (GstQCamSrc * qcamsrc)
{
- qcamsrc->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&gst_qcamsrc_src_factory), "src");
- gst_element_add_pad(GST_ELEMENT(qcamsrc),qcamsrc->srcpad);
- gst_pad_set_get_function (qcamsrc->srcpad,gst_qcamsrc_get);
+ qcamsrc->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&gst_qcamsrc_src_factory), "src");
+ gst_element_add_pad (GST_ELEMENT (qcamsrc), qcamsrc->srcpad);
+ gst_pad_set_get_function (qcamsrc->srcpad, gst_qcamsrc_get);
/* if the destination cannot say what it wants, we give this */
- qcamsrc->qcam = qc_init();
+ qcamsrc->qcam = qc_init ();
qcamsrc->qcam->port = DEF_PORT;
qc_setwidth (qcamsrc->qcam, DEF_WIDTH);
qc_setheight (qcamsrc->qcam, DEF_HEIGHT);
@@ -222,12 +228,12 @@ gst_qcamsrc_init (GstQCamSrc *qcamsrc)
qc_settransfer_scale (qcamsrc->qcam, DEF_TRANSFER_SCALE);
qc_setbitdepth (qcamsrc->qcam, DEF_DEPTH);
qcamsrc->autoexposure = DEF_AUTOEXP;
- if (qcamsrc->autoexposure != AE_NONE)
+ if (qcamsrc->autoexposure != AE_NONE)
qcip_set_autoexposure_mode (qcamsrc->autoexposure);
}
-static GstData*
-gst_qcamsrc_get (GstPad *pad)
+static GstData *
+gst_qcamsrc_get (GstPad * pad)
{
GstQCamSrc *qcamsrc;
GstBuffer *buf;
@@ -243,45 +249,46 @@ gst_qcamsrc_get (GstPad *pad)
frame = qcamsrc->qcam->width * qcamsrc->qcam->height / (scale * scale);
- buf = gst_buffer_new();
- outdata = GST_BUFFER_DATA(buf) = g_malloc0((frame * 3) / 2);
- GST_BUFFER_SIZE(buf) = (frame * 3) / 2;
+ buf = gst_buffer_new ();
+ outdata = GST_BUFFER_DATA (buf) = g_malloc0 ((frame * 3) / 2);
+ GST_BUFFER_SIZE (buf) = (frame * 3) / 2;
qc_set (qcamsrc->qcam);
if (!GST_PAD_CAPS (pad)) {
- gst_pad_try_set_caps (pad, gst_caps_new_simple("video/x-raw-yuv",
- "format", GST_TYPE_FOURCC, "I420",
- "width", G_TYPE_INT, qcamsrc->qcam->width / scale,
- "height", G_TYPE_INT, qcamsrc->qcam->height / scale,
- "framerate", G_TYPE_DOUBLE, 10., NULL));
+ gst_pad_try_set_caps (pad, gst_caps_new_simple ("video/x-raw-yuv",
+ "format", GST_TYPE_FOURCC, "I420",
+ "width", G_TYPE_INT, qcamsrc->qcam->width / scale,
+ "height", G_TYPE_INT, qcamsrc->qcam->height / scale,
+ "framerate", G_TYPE_DOUBLE, 10., NULL));
}
scan = qc_scan (qcamsrc->qcam);
/* FIXME, this doesn't seem to work... */
/*fixdark(qcamsrc->qcam, scan); */
-
- if (qcamsrc->autoexposure != AE_NONE)
- qcip_autoexposure(qcamsrc->qcam, scan);
- convert = (qcamsrc->qcam->bpp==4?4:2);
+ if (qcamsrc->autoexposure != AE_NONE)
+ qcip_autoexposure (qcamsrc->qcam, scan);
+
+ convert = (qcamsrc->qcam->bpp == 4 ? 4 : 2);
- for (i=frame; i; i--) {
- outdata[i] = scan[i]<<convert;
+ for (i = frame; i; i--) {
+ outdata[i] = scan[i] << convert;
}
- memset (outdata+frame, 128, frame>>1);
+ memset (outdata + frame, 128, frame >> 1);
g_free (scan);
return GST_DATA (buf);
}
static void
-gst_qcamsrc_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_qcamsrc_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstQCamSrc *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_QCAMSRC(object));
- src = GST_QCAMSRC(object);
+ g_return_if_fail (GST_IS_QCAMSRC (object));
+ src = GST_QCAMSRC (object);
switch (prop_id) {
case ARG_WIDTH:
@@ -316,8 +323,8 @@ gst_qcamsrc_set_property (GObject *object, guint prop_id, const GValue *value, G
break;
case ARG_AUTOEXP:
src->autoexposure = g_value_get_enum (value);
- if (src->autoexposure != AE_NONE)
- qcip_set_autoexposure_mode (src->autoexposure);
+ if (src->autoexposure != AE_NONE)
+ qcip_set_autoexposure_mode (src->autoexposure);
break;
default:
break;
@@ -325,13 +332,14 @@ gst_qcamsrc_set_property (GObject *object, guint prop_id, const GValue *value, G
}
static void
-gst_qcamsrc_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_qcamsrc_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstQCamSrc *src;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_QCAMSRC(object));
- src = GST_QCAMSRC(object);
+ g_return_if_fail (GST_IS_QCAMSRC (object));
+ src = GST_QCAMSRC (object);
switch (prop_id) {
case ARG_WIDTH:
@@ -374,69 +382,63 @@ gst_qcamsrc_get_property (GObject *object, guint prop_id, GValue *value, GParamS
}
static GstElementStateReturn
-gst_qcamsrc_change_state (GstElement *element)
+gst_qcamsrc_change_state (GstElement * element)
{
- g_return_val_if_fail(GST_IS_QCAMSRC(element), FALSE);
+ g_return_val_if_fail (GST_IS_QCAMSRC (element), FALSE);
/* if going down into NULL state, close the file if it's open */
- if (GST_STATE_PENDING(element) == GST_STATE_NULL) {
- if (GST_FLAG_IS_SET(element,GST_QCAMSRC_OPEN))
- gst_qcamsrc_close(GST_QCAMSRC(element));
- /* otherwise (READY or higher) we need to open the sound card */
+ if (GST_STATE_PENDING (element) == GST_STATE_NULL) {
+ if (GST_FLAG_IS_SET (element, GST_QCAMSRC_OPEN))
+ gst_qcamsrc_close (GST_QCAMSRC (element));
+ /* otherwise (READY or higher) we need to open the sound card */
} else {
- if (!GST_FLAG_IS_SET(element,GST_QCAMSRC_OPEN)) {
+ if (!GST_FLAG_IS_SET (element, GST_QCAMSRC_OPEN)) {
gst_info ("qcamsrc: opening\n");
- if (!gst_qcamsrc_open(GST_QCAMSRC(element))) {
+ if (!gst_qcamsrc_open (GST_QCAMSRC (element))) {
gst_info ("qcamsrc: open failed\n");
- return GST_STATE_FAILURE;
+ return GST_STATE_FAILURE;
}
}
}
- if (GST_ELEMENT_CLASS(parent_class)->change_state)
- return GST_ELEMENT_CLASS(parent_class)->change_state(element);
+ if (GST_ELEMENT_CLASS (parent_class)->change_state)
+ return GST_ELEMENT_CLASS (parent_class)->change_state (element);
return GST_STATE_SUCCESS;
}
static gboolean
-gst_qcamsrc_open (GstQCamSrc *qcamsrc)
+gst_qcamsrc_open (GstQCamSrc * qcamsrc)
{
if (qc_open (qcamsrc->qcam)) {
- g_warning("qcamsrc: Cannot open QuickCam.\n");
+ g_warning ("qcamsrc: Cannot open QuickCam.\n");
return FALSE;
}
- GST_FLAG_SET(qcamsrc, GST_QCAMSRC_OPEN);
+ GST_FLAG_SET (qcamsrc, GST_QCAMSRC_OPEN);
return TRUE;
}
static void
-gst_qcamsrc_close (GstQCamSrc *src)
+gst_qcamsrc_close (GstQCamSrc * src)
{
qc_close (src->qcam);
- GST_FLAG_UNSET(src, GST_QCAMSRC_OPEN);
+ GST_FLAG_UNSET (src, GST_QCAMSRC_OPEN);
}
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- if (!gst_element_register (plugin, "qcamsrc", GST_RANK_NONE, GST_TYPE_QCAMSRC))
+ if (!gst_element_register (plugin, "qcamsrc", GST_RANK_NONE,
+ GST_TYPE_QCAMSRC))
return FALSE;
return TRUE;
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "qcamsrc",
- "Read from a QuickCam device",
- plugin_init,
- VERSION,
- GST_LICENSE,
- GST_PACKAGE,
- GST_ORIGIN
-)
-
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "qcamsrc",
+ "Read from a QuickCam device",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
diff --git a/sys/qcam/gstqcamsrc.h b/sys/qcam/gstqcamsrc.h
index 0bd201c8..c6e763d4 100644
--- a/sys/qcam/gstqcamsrc.h
+++ b/sys/qcam/gstqcamsrc.h
@@ -25,8 +25,9 @@
#include <gst/gst.h>
#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+extern "C"
+{
+#endif /* __cplusplus */
/** QuickCam include files */
#include "qcam.h"
@@ -44,35 +45,38 @@ extern "C" {
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_QCAMSRC))
/* NOTE: per-element flags start with 16 for now */
-typedef enum {
- GST_QCAMSRC_OPEN = GST_ELEMENT_FLAG_LAST,
+ typedef enum
+ {
+ GST_QCAMSRC_OPEN = GST_ELEMENT_FLAG_LAST,
- GST_QCAMSRC_FLAG_LAST = GST_ELEMENT_FLAG_LAST+2,
-} GstQCamSrcFlags;
+ GST_QCAMSRC_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2,
+ } GstQCamSrcFlags;
-typedef struct _GstQCamSrc GstQCamSrc;
-typedef struct _GstQCamSrcClass GstQCamSrcClass;
+ typedef struct _GstQCamSrc GstQCamSrc;
+ typedef struct _GstQCamSrcClass GstQCamSrcClass;
-struct _GstQCamSrc {
- GstElement element;
+ struct _GstQCamSrc
+ {
+ GstElement element;
- /* pads */
- GstPad *srcpad;
+ /* pads */
+ GstPad *srcpad;
- struct qcam *qcam;
- gboolean autoexposure;
- gint port;
-};
+ struct qcam *qcam;
+ gboolean autoexposure;
+ gint port;
+ };
-struct _GstQCamSrcClass {
- GstElementClass parent_class;
-};
+ struct _GstQCamSrcClass
+ {
+ GstElementClass parent_class;
+ };
-GType gst_qcamsrc_get_type(void);
+ GType gst_qcamsrc_get_type (void);
#ifdef __cplusplus
}
-#endif /* __cplusplus */
+#endif /* __cplusplus */
-#endif /* __GST_QCAMSRC_H__ */
+#endif /* __GST_QCAMSRC_H__ */
diff --git a/sys/qcam/qcam-Linux.c b/sys/qcam/qcam-Linux.c
index e73933d9..2c959e72 100644
--- a/sys/qcam/qcam-Linux.c
+++ b/sys/qcam/qcam-Linux.c
@@ -48,22 +48,50 @@ OTHER DEALINGS IN THE SOFTWARE.
#include "qcam.h"
#include "qcam-Linux.h"
-int __inline__ read_lpstatus(const struct qcam *q) { return inb(q->port+1); }
-int read_lpcontrol(const struct qcam *q) { return inb(q->port+2); }
-int read_lpdata(const struct qcam *q) { return inb(q->port); }
-void write_lpdata(const struct qcam *q, int d) { outb(d,q->port); }
-void write_lpcontrol(const struct qcam *q, int d) { outb(d,q->port+2); }
+int __inline__
+read_lpstatus (const struct qcam *q)
+{
+ return inb (q->port + 1);
+}
+
+int
+read_lpcontrol (const struct qcam *q)
+{
+ return inb (q->port + 2);
+}
+
+int
+read_lpdata (const struct qcam *q)
+{
+ return inb (q->port);
+}
-int enable_ports(const struct qcam *q)
+void
+write_lpdata (const struct qcam *q, int d)
{
- if(q->port<0x278) return 1; /* Better safe than sorry */
- if(q->port>0x3bc) return 1;
- return (ioperm(q->port, 3, 1));
+ outb (d, q->port);
}
-int disable_ports(const struct qcam *q)
+void
+write_lpcontrol (const struct qcam *q, int d)
{
- return (ioperm(q->port, 3, 0));
+ outb (d, q->port + 2);
+}
+
+int
+enable_ports (const struct qcam *q)
+{
+ if (q->port < 0x278)
+ return 1; /* Better safe than sorry */
+ if (q->port > 0x3bc)
+ return 1;
+ return (ioperm (q->port, 3, 1));
+}
+
+int
+disable_ports (const struct qcam *q)
+{
+ return (ioperm (q->port, 3, 0));
}
/* Lock port. This is currently sub-optimal, and is begging to be
@@ -81,121 +109,118 @@ int disable_ports(const struct qcam *q)
* multiple processes (eg. qcam) taking "snapshots" can peacefully coexist.
* - Dave Plonka (plonka@carroll1.cc.edu)
*/
-int qc_lock_wait(struct qcam *q, int wait)
+int
+qc_lock_wait (struct qcam *q, int wait)
{
#if 1
static struct flock sfl;
- if (-1 == q->fd) /* we've yet to open the lock file */
- {
- static char lockfile[128];
-
- sprintf(lockfile,"/var/run/LOCK.qcam.0x%x",q->port);
- if (-1 == (q->fd = open(lockfile, O_WRONLY | O_CREAT, 0666)))
- {
- perror("open");
- return 1;
- }
+ if (-1 == q->fd) { /* we've yet to open the lock file */
+ static char lockfile[128];
+ sprintf (lockfile, "/var/run/LOCK.qcam.0x%x", q->port);
+ if (-1 == (q->fd = open (lockfile, O_WRONLY | O_CREAT, 0666))) {
+ perror ("open");
+ return 1;
+ }
#ifdef TESTING
- fprintf(stderr, "%s - %d: %s open(2)ed\n", __FILE__, __LINE__, lockfile);
+ fprintf (stderr, "%s - %d: %s open(2)ed\n", __FILE__, __LINE__, lockfile);
#endif
- /* initialize the l_type memver to lock the file exclusively */
- sfl.l_type = F_WRLCK;
+ /* initialize the l_type memver to lock the file exclusively */
+ sfl.l_type = F_WRLCK;
}
-
#ifdef TESTING
- if (0 != fcntl(q->fd, F_SETLK, &sfl)) /* non-blocking set lock */
+ if (0 != fcntl (q->fd, F_SETLK, &sfl)) /* non-blocking set lock */
#else
- if (0 != fcntl(q->fd, wait? F_SETLKW : F_SETLK, &sfl))
+ if (0 != fcntl (q->fd, wait ? F_SETLKW : F_SETLK, &sfl))
#endif
{
#ifdef TESTING
- perror("fcntl");
- if (EAGAIN != errno || !wait) return 1;
-
- fprintf(stderr, "%s - %d: waiting for exclusive lock on fd %d...\n", __FILE__, __LINE__, q->fd);
+ perror ("fcntl");
+ if (EAGAIN != errno || !wait)
+ return 1;
+
+ fprintf (stderr, "%s - %d: waiting for exclusive lock on fd %d...\n",
+ __FILE__, __LINE__, q->fd);
- if (0 != fcntl(q->fd, F_SETLKW, &sfl)) /* "blocking" set lock */
+ if (0 != fcntl (q->fd, F_SETLKW, &sfl)) /* "blocking" set lock */
#endif
- {
- perror("fcntl");
- return 1;
- }
+ {
+ perror ("fcntl");
+ return 1;
+ }
}
-
#ifdef TESTING
- fprintf(stderr, "%s - %d: fd %d locked exclusively\n", __FILE__, __LINE__, q->fd);
+ fprintf (stderr, "%s - %d: fd %d locked exclusively\n", __FILE__, __LINE__,
+ q->fd);
#endif
#else
char lockfile[128], tmp[128];
struct stat statbuf;
- sprintf(lockfile,"/var/run/LOCK.qcam.0x%x",q->port);
- sprintf(tmp,"%s-%d",lockfile,getpid());
+ sprintf (lockfile, "/var/run/LOCK.qcam.0x%x", q->port);
+ sprintf (tmp, "%s-%d", lockfile, getpid ());
- if ((creat(tmp,0)==-1) ||
- (link(tmp,lockfile)==-1) ||
- (stat(tmp,&statbuf)==-1) ||
- (statbuf.st_nlink==1))
- {
+ if ((creat (tmp, 0) == -1) ||
+ (link (tmp, lockfile) == -1) ||
+ (stat (tmp, &statbuf) == -1) || (statbuf.st_nlink == 1)) {
#ifdef DEBUGQC
- perror("QuickCam Locked");
- if(unlink(tmp)==-1)
- perror("Error unlinking temp file.");
+ perror ("QuickCam Locked");
+ if (unlink (tmp) == -1)
+ perror ("Error unlinking temp file.");
#else
- unlink(tmp);
+ unlink (tmp);
#endif
return 1;
}
-
- unlink(tmp);
- if (chown(lockfile,getuid(),getgid())==-1)
- perror("Chown problems");
+
+ unlink (tmp);
+ if (chown (lockfile, getuid (), getgid ()) == -1)
+ perror ("Chown problems");
#endif
return 0;
}
-int qc_lock(struct qcam *q)
+int
+qc_lock (struct qcam *q)
{
#if 1
- return qc_lock_wait(q, 1 /*wait*/);
+ return qc_lock_wait (q, 1 /*wait */ );
#else
- return qc_lock_wait(q, 0 /*don't wait*/);
+ return qc_lock_wait (q, 0 /*don't wait */ );
#endif
}
/* Unlock port */
-int qc_unlock(struct qcam *q)
+int
+qc_unlock (struct qcam *q)
{
static struct flock sfl;
+
#if 1
- if (-1 == q->fd)
- { /* port was not locked */
- return 1;
+ if (-1 == q->fd) { /* port was not locked */
+ return 1;
}
/* clear the exclusive lock */
sfl.l_type = F_UNLCK;
- if (0 != fcntl(q->fd, F_SETLK, &sfl))
- {
- perror("fcntl");
- return 1;
+ if (0 != fcntl (q->fd, F_SETLK, &sfl)) {
+ perror ("fcntl");
+ return 1;
}
-
#ifdef TESTING
- fprintf(stderr, "%s - %d: fd %d unlocked\n", __FILE__, __LINE__, q->fd);
+ fprintf (stderr, "%s - %d: fd %d unlocked\n", __FILE__, __LINE__, q->fd);
#endif
#else
char lockfile[128];
- sprintf(lockfile,"/var/run/LOCK.qcam.0x%x",q->port);
- unlink(lockfile); /* What would I do with an error? */
+ sprintf (lockfile, "/var/run/LOCK.qcam.0x%x", q->port);
+ unlink (lockfile); /* What would I do with an error? */
#endif
return 0;
@@ -205,28 +230,28 @@ int qc_unlock(struct qcam *q)
/* Probe for camera. Returns 0 if found, 1 if not found, sets
q->port.*/
-int qc_probe(struct qcam *q)
+int
+qc_probe (struct qcam *q)
{
- int ioports[]={0x378, 0x278, 0x3bc,0};
- int i=0;
+ int ioports[] = { 0x378, 0x278, 0x3bc, 0 };
+ int i = 0;
/* Attempt to get permission to access IO ports. Must be root */
- while(ioports[i]!=0) {
- q->port=ioports[i++];
+ while (ioports[i] != 0) {
+ q->port = ioports[i++];
- if (qc_open(q)) {
- perror("Can't get I/O permission");
- exit(1);
+ if (qc_open (q)) {
+ perror ("Can't get I/O permission");
+ exit (1);
}
- if(qc_detect(q)) {
- fprintf(stderr,"QuickCam detected at 0x%x\n",q->port);
- qc_close(q);
- return(0);
- }
- else
- qc_close(q);
+ if (qc_detect (q)) {
+ fprintf (stderr, "QuickCam detected at 0x%x\n", q->port);
+ qc_close (q);
+ return (0);
+ } else
+ qc_close (q);
}
return 1;
@@ -240,10 +265,11 @@ usleep(0)'s, and that's too slow -- qc_start was taking over a second
to run. This seems to help, but if anyone has a good
speed-independent pause routine, please tell me. -- Scott */
-void qc_wait(int val)
+void
+qc_wait (int val)
{
int i;
-
- while(val--)
- for(i=0;i<50000;i++);
+
+ while (val--)
+ for (i = 0; i < 50000; i++);
}
diff --git a/sys/qcam/qcam-Linux.h b/sys/qcam/qcam-Linux.h
index 46dcbe51..06c1cb20 100644
--- a/sys/qcam/qcam-Linux.h
+++ b/sys/qcam/qcam-Linux.h
@@ -28,5 +28,3 @@ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
******************************************************************/
-
-
diff --git a/sys/qcam/qcam-lib.c b/sys/qcam/qcam-lib.c
index cacd5d08..e7208cdc 100644
--- a/sys/qcam/qcam-lib.c
+++ b/sys/qcam/qcam-lib.c
@@ -53,11 +53,11 @@ OTHER DEALINGS IN THE SOFTWARE.
/* Prototypes for static functions. Externally visible functions
* should be prototyped in qcam.h */
-static int qc_waithand(const struct qcam *q, int val);
-static int qc_command(const struct qcam *q, int command);
-static int qc_readparam(const struct qcam *q);
-static int qc_setscanmode(struct qcam *q);
-static int qc_readbytes(const struct qcam *q, char buffer[]);
+static int qc_waithand (const struct qcam *q, int val);
+static int qc_command (const struct qcam *q, int command);
+static int qc_readparam (const struct qcam *q);
+static int qc_setscanmode (struct qcam *q);
+static int qc_readbytes (const struct qcam *q, char buffer[]);
/* The next several functions are used for controlling the qcam
* structure. They aren't used inside this library, but they should
@@ -65,15 +65,17 @@ static int qc_readbytes(const struct qcam *q, char buffer[]);
/* Gets/sets the brightness. */
-int qc_getbrightness(const struct qcam *q)
+int
+qc_getbrightness (const struct qcam *q)
{
return q->brightness;
}
-int qc_setbrightness(struct qcam *q, int val)
+int
+qc_setbrightness (struct qcam *q, int val)
{
if (val >= 0 && val <= 255) {
- q->brightness=val;
+ q->brightness = val;
return 0;
}
return 1;
@@ -82,15 +84,17 @@ int qc_setbrightness(struct qcam *q, int val)
/* Gets/sets the contrast */
-int qc_getcontrast(const struct qcam *q)
+int
+qc_getcontrast (const struct qcam *q)
{
return q->contrast;
}
-int qc_setcontrast(struct qcam *q, int val)
+int
+qc_setcontrast (struct qcam *q, int val)
{
if (val >= 0 && val <= 255) {
- q->contrast=val;
+ q->contrast = val;
return 0;
}
return 1;
@@ -99,15 +103,17 @@ int qc_setcontrast(struct qcam *q, int val)
/* Gets/sets the white balance */
-int qc_getwhitebal(const struct qcam *q)
+int
+qc_getwhitebal (const struct qcam *q)
{
return q->whitebal;
}
-int qc_setwhitebal(struct qcam *q, int val)
+int
+qc_setwhitebal (struct qcam *q, int val)
{
if (val >= 0 && val <= 255) {
- q->whitebal=val;
+ q->whitebal = val;
return 0;
}
return 1;
@@ -116,45 +122,51 @@ int qc_setwhitebal(struct qcam *q, int val)
/* Gets/sets the resolution */
-void qc_getresolution(const struct qcam *q, int *x, int *y)
+void
+qc_getresolution (const struct qcam *q, int *x, int *y)
{
- *x=q->width;
- *y=q->height;
+ *x = q->width;
+ *y = q->height;
}
-int qc_setresolution(struct qcam *q, int x, int y)
+int
+qc_setresolution (struct qcam *q, int x, int y)
{
if (x >= 0 && x <= 336 && y >= 0 && y <= 243) {
- q->width=x;
- q->height=y;
+ q->width = x;
+ q->height = y;
return 0;
}
return 1;
}
-int qc_getheight(const struct qcam *q)
+int
+qc_getheight (const struct qcam *q)
{
return q->height;
}
-int qc_setheight(struct qcam *q, int y)
+int
+qc_setheight (struct qcam *q, int y)
{
if (y >= 0 && y <= 243) {
- q->height=y;
+ q->height = y;
return 0;
}
return 1;
}
-int qc_getwidth(const struct qcam *q)
+int
+qc_getwidth (const struct qcam *q)
{
return q->width;
}
-int qc_setwidth(struct qcam *q, int x)
+int
+qc_setwidth (struct qcam *q, int x)
{
if (x >= 0 && x <= 336) {
- q->width=x;
+ q->width = x;
return 0;
}
return 1;
@@ -162,26 +174,30 @@ int qc_setwidth(struct qcam *q, int x)
/* Gets/sets the bit depth */
-int qc_getbitdepth(const struct qcam *q)
+int
+qc_getbitdepth (const struct qcam *q)
{
return q->bpp;
}
-int qc_setbitdepth(struct qcam *q, int val)
+int
+qc_setbitdepth (struct qcam *q, int val)
{
if (val == 4 || val == 6) {
- q->bpp=val;
- return qc_setscanmode(q);
+ q->bpp = val;
+ return qc_setscanmode (q);
}
return 1;
}
-int qc_gettop(const struct qcam *q)
+int
+qc_gettop (const struct qcam *q)
{
return q->top;
}
-int qc_settop(struct qcam *q, int val)
+int
+qc_settop (struct qcam *q, int val)
{
if (val >= 1 && val <= 243) {
q->top = val;
@@ -190,12 +206,14 @@ int qc_settop(struct qcam *q, int val)
return 1;
}
-int qc_getleft(const struct qcam *q)
+int
+qc_getleft (const struct qcam *q)
{
return q->left;
}
-int qc_setleft(struct qcam *q, int val)
+int
+qc_setleft (struct qcam *q, int val)
{
if (val % 2 == 0 && val >= 2 && val <= 336) {
q->left = val;
@@ -204,22 +222,24 @@ int qc_setleft(struct qcam *q, int val)
return 1;
}
-int qc_gettransfer_scale(const struct qcam *q)
+int
+qc_gettransfer_scale (const struct qcam *q)
{
return q->transfer_scale;
}
-int qc_settransfer_scale(struct qcam *q, int val)
+int
+qc_settransfer_scale (struct qcam *q, int val)
{
if (val == 1 || val == 2 || val == 4) {
q->transfer_scale = val;
- return qc_setscanmode(q);
+ return qc_setscanmode (q);
}
return 1;
}
int
-qc_calibrate(struct qcam *q)
+qc_calibrate (struct qcam *q)
/* bugfix by Hanno Mueller hmueller@kabel.de, Mai 21 96 */
/* The white balance is an individiual value for each */
/* quickcam. Run calibration once, write the value down */
@@ -227,19 +247,21 @@ qc_calibrate(struct qcam *q)
/* recalibrate your camera again. */
{
int value;
+
#ifdef DEBUG
int count = 0;
#endif
- qc_command(q, 27); /* AutoAdjustOffset */
- qc_command(q, 0); /* Dummy Parameter, ignored by the camera */
+ qc_command (q, 27); /* AutoAdjustOffset */
+ qc_command (q, 0); /* Dummy Parameter, ignored by the camera */
/* GetOffset (33) will read 255 until autocalibration */
/* is finished. After that, a value of 1-254 will be */
/* returned. */
do {
- qc_command(q, 33); value = qc_readparam(q);
+ qc_command (q, 33);
+ value = qc_readparam (q);
#ifdef DEBUG
count++;
#endif
@@ -248,15 +270,15 @@ qc_calibrate(struct qcam *q)
q->whitebal = value;
#ifdef DEBUG
- fprintf(stderr, "%d loops to calibrate\n", count);
- fprintf(stderr, "Calibrated to %d\n", value);
+ fprintf (stderr, "%d loops to calibrate\n", count);
+ fprintf (stderr, "Calibrated to %d\n", value);
#endif
return value;
}
int
-qc_forceunidir(struct qcam *q)
+qc_forceunidir (struct qcam *q)
{
q->port_mode = (q->port_mode & ~QC_FORCE_MASK) | QC_FORCE_UNIDIR;
return 0;
@@ -266,29 +288,29 @@ qc_forceunidir(struct qcam *q)
/* Initialize the QuickCam driver control structure. This is where
* defaults are set for people who don't have a config file.*/
struct qcam *
-qc_init(void)
+qc_init (void)
{
struct qcam *q;
- q=malloc(sizeof(struct qcam));
+ q = malloc (sizeof (struct qcam));
- q->port=0; /* Port 0 == Autoprobe */
- q->port_mode=(QC_ANY | QC_NOTSET);
- q->width=160;
- q->height=120;
- q->bpp=4;
+ q->port = 0; /* Port 0 == Autoprobe */
+ q->port_mode = (QC_ANY | QC_NOTSET);
+ q->width = 160;
+ q->height = 120;
+ q->bpp = 4;
q->transfer_scale = 2;
- q->contrast=104;
- q->brightness=150;
- q->whitebal=150;
+ q->contrast = 104;
+ q->brightness = 150;
+ q->whitebal = 150;
q->top = 1;
q->left = 14;
q->mode = -1;
- q->fd=-1; /* added initialization of fd member
- * BTW, there doesn't seem to be a place to close this fd...
- * I think we need a qc_free function.
- * - Dave Plonka (plonka@carroll1.cc.edu)
- */
+ q->fd = -1; /* added initialization of fd member
+ * BTW, there doesn't seem to be a place to close this fd...
+ * I think we need a qc_free function.
+ * - Dave Plonka (plonka@carroll1.cc.edu)
+ */
return q;
}
@@ -301,21 +323,22 @@ qc_init(void)
* Returns 0 for success, 1 for opening error, 2 for locking error,
* and 3 for qcam not found */
-int qc_open(struct qcam *q)
+int
+qc_open (struct qcam *q)
{
- if(q->port==0)
- if(qc_probe(q)) {
- fprintf(stderr,"Qcam not found\n");
+ if (q->port == 0)
+ if (qc_probe (q)) {
+ fprintf (stderr, "Qcam not found\n");
return 3;
}
- if(qc_lock(q)) {
- fprintf(stderr,"Cannot lock qcam.\n");
+ if (qc_lock (q)) {
+ fprintf (stderr, "Cannot lock qcam.\n");
return 2;
}
- if(enable_ports(q)) {
- fprintf(stderr,"Cannot open QuickCam -- permission denied.");
+ if (enable_ports (q)) {
+ fprintf (stderr, "Cannot open QuickCam -- permission denied.");
return 1;
} else {
return 0;
@@ -326,11 +349,12 @@ int qc_open(struct qcam *q)
/* qc_close closes and unlocks the driver. You *need* to call this,
* or lockfiles will be left behind and everything will be screwed. */
-int qc_close(struct qcam *q)
+int
+qc_close (struct qcam *q)
{
- qc_unlock(q);
+ qc_unlock (q);
- disable_ports(q);
+ disable_ports (q);
return 0;
}
@@ -340,43 +364,46 @@ int qc_close(struct qcam *q)
* or arguments to commands, so the name fits, but it still bugs me a
* bit. See the documentation for a list of commands. */
-static int qc_command(const struct qcam *q, int command)
+static int
+qc_command (const struct qcam *q, int command)
{
int n1, n2;
int cmd;
- write_lpdata(q, command);
- write_lpcontrol(q,6);
+ write_lpdata (q, command);
+ write_lpcontrol (q, 6);
- n1 = qc_waithand(q,1);
+ n1 = qc_waithand (q, 1);
- write_lpcontrol(q,0xe);
- n2 = qc_waithand(q,0);
+ write_lpcontrol (q, 0xe);
+ n2 = qc_waithand (q, 0);
cmd = (n1 & 0xf0) | ((n2 & 0xf0) >> 4);
#ifdef DEBUG
if (cmd != command) {
- fprintf(stderr, "Command 0x%02x sent, 0x%02x echoed", command, cmd);
- n2 = read_lpstatus(q);
+ fprintf (stderr, "Command 0x%02x sent, 0x%02x echoed", command, cmd);
+ n2 = read_lpstatus (q);
cmd = (n1 & 0xf0) | ((n2 & 0xf0) >> 4);
- if (cmd != command) fprintf(stderr, " (re-read does not help)\n");
- else fprintf(stderr, " (fixed on re-read)\n");
+ if (cmd != command)
+ fprintf (stderr, " (re-read does not help)\n");
+ else
+ fprintf (stderr, " (fixed on re-read)\n");
}
#endif
return cmd;
}
static int
-qc_readparam(const struct qcam *q)
+qc_readparam (const struct qcam *q)
{
int n1, n2;
int cmd;
- write_lpcontrol(q,6);
- n1 = qc_waithand(q,1);
+ write_lpcontrol (q, 6);
+ n1 = qc_waithand (q, 1);
- write_lpcontrol(q,0xe);
- n2 = qc_waithand(q,0);
+ write_lpcontrol (q, 0xe);
+ n2 = qc_waithand (q, 0);
cmd = (n1 & 0xf0) | ((n2 & 0xf0) >> 4);
return cmd;
@@ -385,16 +412,15 @@ qc_readparam(const struct qcam *q)
/* qc_waithand busy-waits for a handshake signal from the QuickCam.
* Almost all communication with the camera requires handshaking. */
-static int qc_waithand(const struct qcam *q, int val)
+static int
+qc_waithand (const struct qcam *q, int val)
{
int status;
if (val)
- while(! ((status = read_lpstatus(q))&8))
- ;
+ while (!((status = read_lpstatus (q)) & 8));
else
- while (((status = read_lpstatus(q))&8))
- ;
+ while (((status = read_lpstatus (q)) & 8));
return status;
}
@@ -405,12 +431,13 @@ static int qc_waithand(const struct qcam *q, int val)
* since this data is useful. */
static unsigned int
-qc_waithand2(const struct qcam *q, int val)
+qc_waithand2 (const struct qcam *q, int val)
{
unsigned int status;
+
do {
- status = read_lpdata(q);
- } while ( (status & 1) != val);
+ status = read_lpdata (q);
+ } while ((status & 1) != val);
return status;
}
@@ -423,27 +450,29 @@ qc_waithand2(const struct qcam *q, int val)
almost completely safe, while their method screws up my printer if
I plug it in before the camera. */
-int qc_detect(const struct qcam *q)
+int
+qc_detect (const struct qcam *q)
{
- int reg,lastreg;
- int count=0;
+ int reg, lastreg;
+ int count = 0;
int i;
- lastreg=reg=read_lpstatus(q)&0xf0;
+ lastreg = reg = read_lpstatus (q) & 0xf0;
- for(i=0;i<30;i++) {
- reg=read_lpstatus(q)&0xf0;
- if(reg!=lastreg) count++;
- lastreg=reg;
- usleep(10000);
+ for (i = 0; i < 30; i++) {
+ reg = read_lpstatus (q) & 0xf0;
+ if (reg != lastreg)
+ count++;
+ lastreg = reg;
+ usleep (10000);
}
/* Be liberal in what you accept... */
- if(count>3&&count<15)
- return 1; /* found */
- else
- return 0; /* not found */
+ if (count > 3 && count < 15)
+ return 1; /* found */
+ else
+ return 0; /* not found */
}
@@ -452,10 +481,10 @@ int qc_detect(const struct qcam *q)
* check that bi-directional mode is detected right, and then
* implement bi-directional mode in qc_readbyte(). */
-void qc_reset(struct qcam *q)
+void
+qc_reset (struct qcam *q)
{
- switch (q->port_mode & QC_FORCE_MASK)
- {
+ switch (q->port_mode & QC_FORCE_MASK) {
case QC_FORCE_UNIDIR:
q->port_mode = (q->port_mode & ~QC_MODE_MASK) | QC_UNIDIR;
break;
@@ -465,10 +494,10 @@ void qc_reset(struct qcam *q)
break;
case QC_ANY:
- write_lpcontrol(q,0x20);
- write_lpdata(q,0x75);
+ write_lpcontrol (q, 0x20);
+ write_lpdata (q, 0x75);
- if (read_lpdata(q) != 0x75) {
+ if (read_lpdata (q) != 0x75) {
q->port_mode = (q->port_mode & ~QC_MODE_MASK) | QC_BIDIR;
} else {
q->port_mode = (q->port_mode & ~QC_MODE_MASK) | QC_UNIDIR;
@@ -477,15 +506,15 @@ void qc_reset(struct qcam *q)
case QC_FORCE_SERIAL:
default:
- fprintf(stderr, "Illegal port_mode %x\n", q->port_mode);
+ fprintf (stderr, "Illegal port_mode %x\n", q->port_mode);
break;
}
- /* usleep(250);*/
- write_lpcontrol(q,0xb);
- usleep(250);
- write_lpcontrol(q,0xe);
- (void)qc_setscanmode(q); /* in case port_mode changed */
+ /* usleep(250); */
+ write_lpcontrol (q, 0xb);
+ usleep (250);
+ write_lpcontrol (q, 0xe);
+ (void) qc_setscanmode (q); /* in case port_mode changed */
}
@@ -498,28 +527,43 @@ void qc_reset(struct qcam *q)
* returned. If the scan is smaller, then the rest of the image
* returned contains garbage. */
-static int qc_setscanmode(struct qcam *q)
+static int
+qc_setscanmode (struct qcam *q)
{
switch (q->transfer_scale) {
- case 1: q->mode = 0; break;
- case 2: q->mode = 4; break;
- case 4: q->mode = 8; break;
- default: return 1;
+ case 1:
+ q->mode = 0;
+ break;
+ case 2:
+ q->mode = 4;
+ break;
+ case 4:
+ q->mode = 8;
+ break;
+ default:
+ return 1;
}
switch (q->bpp) {
- case 4: break;
- case 6: q->mode+=2; break;
- default:
- fprintf(stderr,"Error: Unsupported bit depth\n");
- return 1;
+ case 4:
+ break;
+ case 6:
+ q->mode += 2;
+ break;
+ default:
+ fprintf (stderr, "Error: Unsupported bit depth\n");
+ return 1;
}
switch (q->port_mode & QC_MODE_MASK) {
- case QC_BIDIR: q->mode += 1; break;
- case QC_NOTSET:
- case QC_UNIDIR: break;
- default: return 1;
+ case QC_BIDIR:
+ q->mode += 1;
+ break;
+ case QC_NOTSET:
+ case QC_UNIDIR:
+ break;
+ default:
+ return 1;
}
return 0;
}
@@ -528,44 +572,51 @@ static int qc_setscanmode(struct qcam *q)
/* Reset the QuickCam and program for brightness, contrast,
* white-balance, and resolution. */
-void qc_set(struct qcam *q)
+void
+qc_set (struct qcam *q)
{
int val;
int val2;
- qc_reset(q);
+ qc_reset (q);
/* Set the brightness. Yes, this is repetitive, but it works.
* Shorter versions seem to fail subtly. Feel free to try :-). */
/* I think the problem was in qc_command, not here -- bls */
- qc_command(q,0xb);
- qc_command(q,q->brightness);
+ qc_command (q, 0xb);
+ qc_command (q, q->brightness);
val = q->height / q->transfer_scale;
- qc_command(q,0x11); qc_command(q, val);
+ qc_command (q, 0x11);
+ qc_command (q, val);
if ((q->port_mode & QC_MODE_MASK) == QC_UNIDIR && q->bpp == 6) {
/* The normal "transfers per line" calculation doesn't seem to work
- as expected here (and yet it works fine in qc_scan). No idea
- why this case is the odd man out. Fortunately, Laird's original
- working version gives me a good way to guess at working values.
- -- bls */
+ as expected here (and yet it works fine in qc_scan). No idea
+ why this case is the odd man out. Fortunately, Laird's original
+ working version gives me a good way to guess at working values.
+ -- bls */
val = q->width;
val2 = q->transfer_scale * 4;
} else {
val = q->width * q->bpp;
- val2 = (((q->port_mode & QC_MODE_MASK) == QC_BIDIR)?24:8) *
+ val2 = (((q->port_mode & QC_MODE_MASK) == QC_BIDIR) ? 24 : 8) *
q->transfer_scale;
}
val = (val + val2 - 1) / val2;
- qc_command(q,0x13); qc_command(q, val);
+ qc_command (q, 0x13);
+ qc_command (q, val);
/* I still don't know what these do! */
/* They're setting top and left -- bls */
- qc_command(q,0xd); qc_command(q,q->top);
- qc_command(q,0xf); qc_command(q,q->left/2);
+ qc_command (q, 0xd);
+ qc_command (q, q->top);
+ qc_command (q, 0xf);
+ qc_command (q, q->left / 2);
- qc_command(q,0x19); qc_command(q,q->contrast);
- qc_command(q,0x1f); qc_command(q,q->whitebal);
+ qc_command (q, 0x19);
+ qc_command (q, q->contrast);
+ qc_command (q, 0x1f);
+ qc_command (q, q->whitebal);
}
@@ -573,9 +624,8 @@ void qc_set(struct qcam *q)
the supplied buffer. It returns the number of bytes read,
or -1 on error. */
-static int
-__inline__
-qc_readbytes(const struct qcam *q, char buffer[])
+static int __inline__
+qc_readbytes (const struct qcam *q, char buffer[])
{
int ret;
unsigned int hi, lo;
@@ -585,84 +635,90 @@ qc_readbytes(const struct qcam *q, char buffer[])
if (buffer == NULL) {
state = 0;
- return 0;
+ return 0;
}
switch (q->port_mode & QC_MODE_MASK) {
- case QC_BIDIR: /* Bi-directional Port */
- write_lpcontrol(q, 0x26);
- lo = (qc_waithand2(q, 1) >> 1);
- hi = (read_lpstatus(q) >> 3) & 0x1f;
- write_lpcontrol(q, 0x2e);
- lo2 = (qc_waithand2(q, 0) >> 1);
- hi2 = (read_lpstatus(q) >> 3) & 0x1f;
- switch (q->bpp) {
- case 4:
- buffer[0] = lo & 0xf;
- buffer[1] = ((lo & 0x70) >> 4) | ((hi & 1) << 3);
- buffer[2] = (hi & 0x1e) >> 1;
- buffer[3] = lo2 & 0xf;
- buffer[4] = ((lo2 & 0x70) >> 4) | ((hi2 & 1) << 3);
- buffer[5] = (hi2 & 0x1e) >> 1;
- ret = 6;
- break;
- case 6:
- buffer[0] = lo & 0x3f;
- buffer[1] = ((lo & 0x40) >> 6) | (hi << 1);
- buffer[2] = lo2 & 0x3f;
- buffer[3] = ((lo2 & 0x40) >> 6) | (hi2 << 1);
- ret = 4;
- break;
- default:
- fprintf(stderr, "Bad bidir pixel depth %d\n", q->bpp);
- ret = -1;
- break;
- }
- break;
-
- case QC_UNIDIR: /* Unidirectional Port */
- write_lpcontrol(q,6);
- lo = (qc_waithand(q,1) & 0xf0) >> 4;
- write_lpcontrol(q,0xe);
- hi = (qc_waithand(q,0) & 0xf0) >> 4;
-
- switch (q->bpp) {
- case 4:
- buffer[0] = lo;
- buffer[1] = hi;
- ret = 2;
- break;
- case 6:
- switch (state) {
- case 0:
- buffer[0] = (lo << 2) | ((hi & 0xc) >> 2);
- saved_bits = (hi & 3) << 4;
- state = 1; ret = 1; break;
- case 1:
- buffer[0] = lo | saved_bits;
- saved_bits = hi << 2;
- state = 2; ret = 1; break;
- case 2:
- buffer[0] = ((lo & 0xc) >> 2) | saved_bits;
- buffer[1] = ((lo & 3) << 4) | hi;
- state = 0; ret = 2; break;
- default:
- fprintf(stderr, "Unidir 6-bit state %d?\n", state);
- ret = -1;
- break;
- }
- break;
- default:
- fprintf(stderr, "Bad unidir pixel depth %d\n", q->bpp);
- ret = -1;
- break;
- }
- break;
- case QC_SERIAL: /* Serial Interface. Just in case.*/
- default:
- fprintf(stderr,"Mode %x not supported\n",q->port_mode);
- ret=-1;
- break;
+ case QC_BIDIR: /* Bi-directional Port */
+ write_lpcontrol (q, 0x26);
+ lo = (qc_waithand2 (q, 1) >> 1);
+ hi = (read_lpstatus (q) >> 3) & 0x1f;
+ write_lpcontrol (q, 0x2e);
+ lo2 = (qc_waithand2 (q, 0) >> 1);
+ hi2 = (read_lpstatus (q) >> 3) & 0x1f;
+ switch (q->bpp) {
+ case 4:
+ buffer[0] = lo & 0xf;
+ buffer[1] = ((lo & 0x70) >> 4) | ((hi & 1) << 3);
+ buffer[2] = (hi & 0x1e) >> 1;
+ buffer[3] = lo2 & 0xf;
+ buffer[4] = ((lo2 & 0x70) >> 4) | ((hi2 & 1) << 3);
+ buffer[5] = (hi2 & 0x1e) >> 1;
+ ret = 6;
+ break;
+ case 6:
+ buffer[0] = lo & 0x3f;
+ buffer[1] = ((lo & 0x40) >> 6) | (hi << 1);
+ buffer[2] = lo2 & 0x3f;
+ buffer[3] = ((lo2 & 0x40) >> 6) | (hi2 << 1);
+ ret = 4;
+ break;
+ default:
+ fprintf (stderr, "Bad bidir pixel depth %d\n", q->bpp);
+ ret = -1;
+ break;
+ }
+ break;
+
+ case QC_UNIDIR: /* Unidirectional Port */
+ write_lpcontrol (q, 6);
+ lo = (qc_waithand (q, 1) & 0xf0) >> 4;
+ write_lpcontrol (q, 0xe);
+ hi = (qc_waithand (q, 0) & 0xf0) >> 4;
+
+ switch (q->bpp) {
+ case 4:
+ buffer[0] = lo;
+ buffer[1] = hi;
+ ret = 2;
+ break;
+ case 6:
+ switch (state) {
+ case 0:
+ buffer[0] = (lo << 2) | ((hi & 0xc) >> 2);
+ saved_bits = (hi & 3) << 4;
+ state = 1;
+ ret = 1;
+ break;
+ case 1:
+ buffer[0] = lo | saved_bits;
+ saved_bits = hi << 2;
+ state = 2;
+ ret = 1;
+ break;
+ case 2:
+ buffer[0] = ((lo & 0xc) >> 2) | saved_bits;
+ buffer[1] = ((lo & 3) << 4) | hi;
+ state = 0;
+ ret = 2;
+ break;
+ default:
+ fprintf (stderr, "Unidir 6-bit state %d?\n", state);
+ ret = -1;
+ break;
+ }
+ break;
+ default:
+ fprintf (stderr, "Bad unidir pixel depth %d\n", q->bpp);
+ ret = -1;
+ break;
+ }
+ break;
+ case QC_SERIAL: /* Serial Interface. Just in case. */
+ default:
+ fprintf (stderr, "Mode %x not supported\n", q->port_mode);
+ ret = -1;
+ break;
}
return ret;
}
@@ -679,7 +735,8 @@ qc_readbytes(const struct qcam *q, char buffer[])
* n=2^(bit depth)-1. Ask me for more details if you don't understand
* this. */
-scanbuf *qc_scan(const struct qcam *q)
+scanbuf *
+qc_scan (const struct qcam * q)
{
unsigned char *ret;
int i, j, k;
@@ -692,31 +749,32 @@ scanbuf *qc_scan(const struct qcam *q)
char invert;
if (q->mode != -1) {
- qc_command(q, 0x7);
- qc_command(q, q->mode);
+ qc_command (q, 0x7);
+ qc_command (q, q->mode);
} else {
struct qcam bogus_cam;
+
/* We're going through these odd hoops to retain the "const"
- qualification on q. We can't do a qc_setscanmode directly on q,
- so we copy it, do a setscanmode on that, and pass in the newly
- computed mode. -- bls 11/21/96
- */
+ qualification on q. We can't do a qc_setscanmode directly on q,
+ so we copy it, do a setscanmode on that, and pass in the newly
+ computed mode. -- bls 11/21/96
+ */
#ifdef DEBUG
- fprintf(stderr, "Warning! qc->mode not set!\n");
+ fprintf (stderr, "Warning! qc->mode not set!\n");
#endif
bogus_cam = *q;
- (void)qc_setscanmode(&bogus_cam);
- qc_command(q, 0x7);
- qc_command(q, bogus_cam.mode);
+ (void) qc_setscanmode (&bogus_cam);
+ qc_command (q, 0x7);
+ qc_command (q, bogus_cam.mode);
}
if ((q->port_mode & QC_MODE_MASK) == QC_BIDIR) {
- write_lpcontrol(q, 0x2e); /* turn port around */
- write_lpcontrol(q, 0x26);
- (void) qc_waithand(q, 1);
- write_lpcontrol(q, 0x2e);
- (void) qc_waithand(q, 0);
+ write_lpcontrol (q, 0x2e); /* turn port around */
+ write_lpcontrol (q, 0x26);
+ (void) qc_waithand (q, 1);
+ write_lpcontrol (q, 0x2e);
+ (void) qc_waithand (q, 0);
}
/* strange -- should be 15:63 below, but 4bpp is odd */
@@ -725,23 +783,23 @@ scanbuf *qc_scan(const struct qcam *q)
linestotrans = q->height / q->transfer_scale;
pixels_per_line = q->width / q->transfer_scale;
transperline = q->width * q->bpp;
- divisor = (((q->port_mode & QC_MODE_MASK) == QC_BIDIR)?24:8) *
- q->transfer_scale;
+ divisor = (((q->port_mode & QC_MODE_MASK) == QC_BIDIR) ? 24 : 8) *
+ q->transfer_scale;
transperline = (transperline + divisor - 1) / divisor;
- ret = malloc(linestotrans * pixels_per_line);
- assert(ret);
+ ret = malloc (linestotrans * pixels_per_line);
+ assert (ret);
#ifdef DEBUG
- fprintf(stderr, "%s %d bpp\n%d lines of %d transfers each\n",
- ((q->port_mode & QC_MODE_MASK) == QC_BIDIR)?"Bidir":"Unidir",
- q->bpp, linestotrans, transperline);
+ fprintf (stderr, "%s %d bpp\n%d lines of %d transfers each\n",
+ ((q->port_mode & QC_MODE_MASK) == QC_BIDIR) ? "Bidir" : "Unidir",
+ q->bpp, linestotrans, transperline);
#endif
for (i = 0; i < linestotrans; i++) {
for (pixels_read = j = 0; j < transperline; j++) {
- bytes = qc_readbytes(q, buffer);
- assert(bytes > 0);
+ bytes = qc_readbytes (q, buffer);
+ assert (bytes > 0);
for (k = 0; k < bytes && (pixels_read + k) < pixels_per_line; k++) {
assert (buffer[k] <= invert);
assert (buffer[k] >= 0);
@@ -750,18 +808,18 @@ scanbuf *qc_scan(const struct qcam *q)
must be 0-15 -- bls */
buffer[k] = 16;
}
- ret[i*pixels_per_line + pixels_read + k] = invert - buffer[k];
+ ret[i * pixels_per_line + pixels_read + k] = invert - buffer[k];
}
pixels_read += bytes;
}
- (void) qc_readbytes(q, 0); /* reset state machine */
+ (void) qc_readbytes (q, 0); /* reset state machine */
}
if ((q->port_mode & QC_MODE_MASK) == QC_BIDIR) {
- write_lpcontrol(q, 2);
- write_lpcontrol(q, 6);
- usleep(3);
- write_lpcontrol(q, 0xe);
+ write_lpcontrol (q, 2);
+ write_lpcontrol (q, 6);
+ usleep (3);
+ write_lpcontrol (q, 0xe);
}
return ret;
@@ -769,24 +827,23 @@ scanbuf *qc_scan(const struct qcam *q)
void
-qc_dump(const struct qcam *q, char *fname)
+qc_dump (const struct qcam *q, char *fname)
{
FILE *fp;
time_t t;
- if ((fp = fopen(fname, "w")) == 0)
- {
- fprintf(stderr, "Error: cannot open %s\n", fname);
+ if ((fp = fopen (fname, "w")) == 0) {
+ fprintf (stderr, "Error: cannot open %s\n", fname);
return;
}
- fprintf(fp, "# Version 0.9\n");
- time(&t);
- fprintf(fp, "# Created %s", ctime(&t));
- fprintf(fp, "Width %d\nHeight %d\n", q->width, q->height);
- fprintf(fp, "Top %d\nLeft %d\n", q->top, q->left);
- fprintf(fp, "Bpp %d\nContrast %d\n", q->bpp, q->contrast);
- fprintf(fp, "Brightness %d\nWhitebal %d\n", q->brightness, q->whitebal);
- fprintf(fp, "Port 0x%x\nScale %d\n", q->port, q->transfer_scale);
- fclose(fp);
+ fprintf (fp, "# Version 0.9\n");
+ time (&t);
+ fprintf (fp, "# Created %s", ctime (&t));
+ fprintf (fp, "Width %d\nHeight %d\n", q->width, q->height);
+ fprintf (fp, "Top %d\nLeft %d\n", q->top, q->left);
+ fprintf (fp, "Bpp %d\nContrast %d\n", q->bpp, q->contrast);
+ fprintf (fp, "Brightness %d\nWhitebal %d\n", q->brightness, q->whitebal);
+ fprintf (fp, "Port 0x%x\nScale %d\n", q->port, q->transfer_scale);
+ fclose (fp);
}
diff --git a/sys/qcam/qcam-os.c b/sys/qcam/qcam-os.c
index e73933d9..2c959e72 100644
--- a/sys/qcam/qcam-os.c
+++ b/sys/qcam/qcam-os.c
@@ -48,22 +48,50 @@ OTHER DEALINGS IN THE SOFTWARE.
#include "qcam.h"
#include "qcam-Linux.h"
-int __inline__ read_lpstatus(const struct qcam *q) { return inb(q->port+1); }
-int read_lpcontrol(const struct qcam *q) { return inb(q->port+2); }
-int read_lpdata(const struct qcam *q) { return inb(q->port); }
-void write_lpdata(const struct qcam *q, int d) { outb(d,q->port); }
-void write_lpcontrol(const struct qcam *q, int d) { outb(d,q->port+2); }
+int __inline__
+read_lpstatus (const struct qcam *q)
+{
+ return inb (q->port + 1);
+}
+
+int
+read_lpcontrol (const struct qcam *q)
+{
+ return inb (q->port + 2);
+}
+
+int
+read_lpdata (const struct qcam *q)
+{
+ return inb (q->port);
+}
-int enable_ports(const struct qcam *q)
+void
+write_lpdata (const struct qcam *q, int d)
{
- if(q->port<0x278) return 1; /* Better safe than sorry */
- if(q->port>0x3bc) return 1;
- return (ioperm(q->port, 3, 1));
+ outb (d, q->port);
}
-int disable_ports(const struct qcam *q)
+void
+write_lpcontrol (const struct qcam *q, int d)
{
- return (ioperm(q->port, 3, 0));
+ outb (d, q->port + 2);
+}
+
+int
+enable_ports (const struct qcam *q)
+{
+ if (q->port < 0x278)
+ return 1; /* Better safe than sorry */
+ if (q->port > 0x3bc)
+ return 1;
+ return (ioperm (q->port, 3, 1));
+}
+
+int
+disable_ports (const struct qcam *q)
+{
+ return (ioperm (q->port, 3, 0));
}
/* Lock port. This is currently sub-optimal, and is begging to be
@@ -81,121 +109,118 @@ int disable_ports(const struct qcam *q)
* multiple processes (eg. qcam) taking "snapshots" can peacefully coexist.
* - Dave Plonka (plonka@carroll1.cc.edu)
*/
-int qc_lock_wait(struct qcam *q, int wait)
+int
+qc_lock_wait (struct qcam *q, int wait)
{
#if 1
static struct flock sfl;
- if (-1 == q->fd) /* we've yet to open the lock file */
- {
- static char lockfile[128];
-
- sprintf(lockfile,"/var/run/LOCK.qcam.0x%x",q->port);
- if (-1 == (q->fd = open(lockfile, O_WRONLY | O_CREAT, 0666)))
- {
- perror("open");
- return 1;
- }
+ if (-1 == q->fd) { /* we've yet to open the lock file */
+ static char lockfile[128];
+ sprintf (lockfile, "/var/run/LOCK.qcam.0x%x", q->port);
+ if (-1 == (q->fd = open (lockfile, O_WRONLY | O_CREAT, 0666))) {
+ perror ("open");
+ return 1;
+ }
#ifdef TESTING
- fprintf(stderr, "%s - %d: %s open(2)ed\n", __FILE__, __LINE__, lockfile);
+ fprintf (stderr, "%s - %d: %s open(2)ed\n", __FILE__, __LINE__, lockfile);
#endif
- /* initialize the l_type memver to lock the file exclusively */
- sfl.l_type = F_WRLCK;
+ /* initialize the l_type memver to lock the file exclusively */
+ sfl.l_type = F_WRLCK;
}
-
#ifdef TESTING
- if (0 != fcntl(q->fd, F_SETLK, &sfl)) /* non-blocking set lock */
+ if (0 != fcntl (q->fd, F_SETLK, &sfl)) /* non-blocking set lock */
#else
- if (0 != fcntl(q->fd, wait? F_SETLKW : F_SETLK, &sfl))
+ if (0 != fcntl (q->fd, wait ? F_SETLKW : F_SETLK, &sfl))
#endif
{
#ifdef TESTING
- perror("fcntl");
- if (EAGAIN != errno || !wait) return 1;
-
- fprintf(stderr, "%s - %d: waiting for exclusive lock on fd %d...\n", __FILE__, __LINE__, q->fd);
+ perror ("fcntl");
+ if (EAGAIN != errno || !wait)
+ return 1;
+
+ fprintf (stderr, "%s - %d: waiting for exclusive lock on fd %d...\n",
+ __FILE__, __LINE__, q->fd);
- if (0 != fcntl(q->fd, F_SETLKW, &sfl)) /* "blocking" set lock */
+ if (0 != fcntl (q->fd, F_SETLKW, &sfl)) /* "blocking" set lock */
#endif
- {
- perror("fcntl");
- return 1;
- }
+ {
+ perror ("fcntl");
+ return 1;
+ }
}
-
#ifdef TESTING
- fprintf(stderr, "%s - %d: fd %d locked exclusively\n", __FILE__, __LINE__, q->fd);
+ fprintf (stderr, "%s - %d: fd %d locked exclusively\n", __FILE__, __LINE__,
+ q->fd);
#endif
#else
char lockfile[128], tmp[128];
struct stat statbuf;
- sprintf(lockfile,"/var/run/LOCK.qcam.0x%x",q->port);
- sprintf(tmp,"%s-%d",lockfile,getpid());
+ sprintf (lockfile, "/var/run/LOCK.qcam.0x%x", q->port);
+ sprintf (tmp, "%s-%d", lockfile, getpid ());
- if ((creat(tmp,0)==-1) ||
- (link(tmp,lockfile)==-1) ||
- (stat(tmp,&statbuf)==-1) ||
- (statbuf.st_nlink==1))
- {
+ if ((creat (tmp, 0) == -1) ||
+ (link (tmp, lockfile) == -1) ||
+ (stat (tmp, &statbuf) == -1) || (statbuf.st_nlink == 1)) {
#ifdef DEBUGQC
- perror("QuickCam Locked");
- if(unlink(tmp)==-1)
- perror("Error unlinking temp file.");
+ perror ("QuickCam Locked");
+ if (unlink (tmp) == -1)
+ perror ("Error unlinking temp file.");
#else
- unlink(tmp);
+ unlink (tmp);
#endif
return 1;
}
-
- unlink(tmp);
- if (chown(lockfile,getuid(),getgid())==-1)
- perror("Chown problems");
+
+ unlink (tmp);
+ if (chown (lockfile, getuid (), getgid ()) == -1)
+ perror ("Chown problems");
#endif
return 0;
}
-int qc_lock(struct qcam *q)
+int
+qc_lock (struct qcam *q)
{
#if 1
- return qc_lock_wait(q, 1 /*wait*/);
+ return qc_lock_wait (q, 1 /*wait */ );
#else
- return qc_lock_wait(q, 0 /*don't wait*/);
+ return qc_lock_wait (q, 0 /*don't wait */ );
#endif
}
/* Unlock port */
-int qc_unlock(struct qcam *q)
+int
+qc_unlock (struct qcam *q)
{
static struct flock sfl;
+
#if 1
- if (-1 == q->fd)
- { /* port was not locked */
- return 1;
+ if (-1 == q->fd) { /* port was not locked */
+ return 1;
}
/* clear the exclusive lock */
sfl.l_type = F_UNLCK;
- if (0 != fcntl(q->fd, F_SETLK, &sfl))
- {
- perror("fcntl");
- return 1;
+ if (0 != fcntl (q->fd, F_SETLK, &sfl)) {
+ perror ("fcntl");
+ return 1;
}
-
#ifdef TESTING
- fprintf(stderr, "%s - %d: fd %d unlocked\n", __FILE__, __LINE__, q->fd);
+ fprintf (stderr, "%s - %d: fd %d unlocked\n", __FILE__, __LINE__, q->fd);
#endif
#else
char lockfile[128];
- sprintf(lockfile,"/var/run/LOCK.qcam.0x%x",q->port);
- unlink(lockfile); /* What would I do with an error? */
+ sprintf (lockfile, "/var/run/LOCK.qcam.0x%x", q->port);
+ unlink (lockfile); /* What would I do with an error? */
#endif
return 0;
@@ -205,28 +230,28 @@ int qc_unlock(struct qcam *q)
/* Probe for camera. Returns 0 if found, 1 if not found, sets
q->port.*/
-int qc_probe(struct qcam *q)
+int
+qc_probe (struct qcam *q)
{
- int ioports[]={0x378, 0x278, 0x3bc,0};
- int i=0;
+ int ioports[] = { 0x378, 0x278, 0x3bc, 0 };
+ int i = 0;
/* Attempt to get permission to access IO ports. Must be root */
- while(ioports[i]!=0) {
- q->port=ioports[i++];
+ while (ioports[i] != 0) {
+ q->port = ioports[i++];
- if (qc_open(q)) {
- perror("Can't get I/O permission");
- exit(1);
+ if (qc_open (q)) {
+ perror ("Can't get I/O permission");
+ exit (1);
}
- if(qc_detect(q)) {
- fprintf(stderr,"QuickCam detected at 0x%x\n",q->port);
- qc_close(q);
- return(0);
- }
- else
- qc_close(q);
+ if (qc_detect (q)) {
+ fprintf (stderr, "QuickCam detected at 0x%x\n", q->port);
+ qc_close (q);
+ return (0);
+ } else
+ qc_close (q);
}
return 1;
@@ -240,10 +265,11 @@ usleep(0)'s, and that's too slow -- qc_start was taking over a second
to run. This seems to help, but if anyone has a good
speed-independent pause routine, please tell me. -- Scott */
-void qc_wait(int val)
+void
+qc_wait (int val)
{
int i;
-
- while(val--)
- for(i=0;i<50000;i++);
+
+ while (val--)
+ for (i = 0; i < 50000; i++);
}
diff --git a/sys/qcam/qcam-os.h b/sys/qcam/qcam-os.h
index 46dcbe51..06c1cb20 100644
--- a/sys/qcam/qcam-os.h
+++ b/sys/qcam/qcam-os.h
@@ -28,5 +28,3 @@ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
******************************************************************/
-
-
diff --git a/sys/qcam/qcam.h b/sys/qcam/qcam.h
index 35b2dc26..4697befd 100644
--- a/sys/qcam/qcam.h
+++ b/sys/qcam/qcam.h
@@ -54,7 +54,8 @@ OTHER DEALINGS IN THE SOFTWARE.
#define MAX_HEIGHT 243
#define MAX_WIDTH 336
-struct qcam {
+struct qcam
+{
int width, height;
int bpp;
int mode;
@@ -63,72 +64,72 @@ struct qcam {
int port_mode;
int transfer_scale;
int top, left;
- int fd; /* lock file descriptor
- * It was, unfortunately, necessary to add this member to the
- * struct qcam to conveniently implement POSIX fcntl-style locking.
- * We need a seperate lock file for each struct qcam, for instance,
- * if the same process (using qcam-lib) is accessing multiple
- * QuickCams on (of course) multiple ports.
- * - Dave Plonka (plonka@carroll1.cc.edu)
- */
+ int fd; /* lock file descriptor
+ * It was, unfortunately, necessary to add this member to the
+ * struct qcam to conveniently implement POSIX fcntl-style locking.
+ * We need a seperate lock file for each struct qcam, for instance,
+ * if the same process (using qcam-lib) is accessing multiple
+ * QuickCams on (of course) multiple ports.
+ * - Dave Plonka (plonka@carroll1.cc.edu)
+ */
};
typedef unsigned char scanbuf;
/* General QuickCam handling routines */
-int qc_getbrightness(const struct qcam *q);
-int qc_setbrightness(struct qcam *q, int val);
-int qc_getcontrast(const struct qcam *q);
-int qc_setcontrast(struct qcam *q, int val);
-int qc_getwhitebal(const struct qcam *q);
-int qc_setwhitebal(struct qcam *q, int val);
-void qc_getresolution(const struct qcam *q, int *x, int *y);
-int qc_setresolution(struct qcam *q, int x, int y);
-int qc_getbitdepth(const struct qcam *q);
-int qc_setbitdepth(struct qcam *q, int val);
-int qc_getheight(const struct qcam *q);
-int qc_setheight(struct qcam *q, int y);
-int qc_getwidth(const struct qcam *q);
-int qc_setwidth(struct qcam *q, int x);
-int qc_gettop(const struct qcam *q);
-int qc_settop(struct qcam *q, int val);
-int qc_getleft(const struct qcam *q);
-int qc_setleft(struct qcam *q, int val);
-int qc_gettransfer_scale(const struct qcam *q);
-int qc_settransfer_scale(struct qcam *q, int val);
-int qc_calibrate(struct qcam *q);
-int qc_forceunidir(struct qcam *q);
-void qc_dump(const struct qcam *q, char *file);
-
-struct qcam *qc_init(void);
-int qc_initfile(struct qcam *q, char *fname);
-int qc_open(struct qcam *q);
-int qc_close(struct qcam *q);
-int qc_detect(const struct qcam *q);
-void qc_reset(struct qcam *q);
-void qc_set(struct qcam *q);
-scanbuf *qc_scan(const struct qcam *q);
-scanbuf *qc_convertscan(struct qcam *q, scanbuf *scan);
-void qc_writepgm(const struct qcam *q, FILE *f, scanbuf *scan);
-void qc_wait(int val);
+int qc_getbrightness (const struct qcam *q);
+int qc_setbrightness (struct qcam *q, int val);
+int qc_getcontrast (const struct qcam *q);
+int qc_setcontrast (struct qcam *q, int val);
+int qc_getwhitebal (const struct qcam *q);
+int qc_setwhitebal (struct qcam *q, int val);
+void qc_getresolution (const struct qcam *q, int *x, int *y);
+int qc_setresolution (struct qcam *q, int x, int y);
+int qc_getbitdepth (const struct qcam *q);
+int qc_setbitdepth (struct qcam *q, int val);
+int qc_getheight (const struct qcam *q);
+int qc_setheight (struct qcam *q, int y);
+int qc_getwidth (const struct qcam *q);
+int qc_setwidth (struct qcam *q, int x);
+int qc_gettop (const struct qcam *q);
+int qc_settop (struct qcam *q, int val);
+int qc_getleft (const struct qcam *q);
+int qc_setleft (struct qcam *q, int val);
+int qc_gettransfer_scale (const struct qcam *q);
+int qc_settransfer_scale (struct qcam *q, int val);
+int qc_calibrate (struct qcam *q);
+int qc_forceunidir (struct qcam *q);
+void qc_dump (const struct qcam *q, char *file);
+
+struct qcam *qc_init (void);
+int qc_initfile (struct qcam *q, char *fname);
+int qc_open (struct qcam *q);
+int qc_close (struct qcam *q);
+int qc_detect (const struct qcam *q);
+void qc_reset (struct qcam *q);
+void qc_set (struct qcam *q);
+scanbuf *qc_scan (const struct qcam *q);
+scanbuf *qc_convertscan (struct qcam *q, scanbuf * scan);
+void qc_writepgm (const struct qcam *q, FILE * f, scanbuf * scan);
+void qc_wait (int val);
/* OS/hardware specific routines */
-int read_lpstatus(const struct qcam *q);
-int read_lpcontrol(const struct qcam *q);
-int read_lpdata(const struct qcam *q);
-void write_lpdata(const struct qcam *q, int d);
-void write_lpcontrol(const struct qcam *q, int d);
-int enable_ports(const struct qcam *q);
-int disable_ports(const struct qcam *q);
-int qc_unlock(struct qcam *q);
-int qc_lock(struct qcam *q);
-void qc_wait(int val);
-int qc_probe(struct qcam *q);
+int read_lpstatus (const struct qcam *q);
+int read_lpcontrol (const struct qcam *q);
+int read_lpdata (const struct qcam *q);
+void write_lpdata (const struct qcam *q, int d);
+void write_lpcontrol (const struct qcam *q, int d);
+int enable_ports (const struct qcam *q);
+int disable_ports (const struct qcam *q);
+int qc_unlock (struct qcam *q);
+int qc_lock (struct qcam *q);
+void qc_wait (int val);
+int qc_probe (struct qcam *q);
/* Image processing routines */
-int fixdark(const struct qcam *q, scanbuf *scan);
-int qc_edge_detect(const struct qcam *q, scanbuf *scan, int tolerance);
+int fixdark (const struct qcam *q, scanbuf * scan);
+int qc_edge_detect (const struct qcam *q, scanbuf * scan, int tolerance);
-#endif /*! _QCAM_H*/
+#endif /*! _QCAM_H */
diff --git a/sys/qcam/qcamip.h b/sys/qcam/qcamip.h
index 3bab6faf..e3bc5c2e 100644
--- a/sys/qcam/qcamip.h
+++ b/sys/qcam/qcamip.h
@@ -55,13 +55,13 @@ SOFTWARE.
/* Prototypes for image processing routines */
-int qcip_autoexposure(struct qcam *q, scanbuf *scan);
-int qcip_set_luminance_target(struct qcam *q, int val);
-int qcip_set_luminance_tolerance(struct qcam *q, int val);
-int qcip_set_luminance_std_target(struct qcam *q, int val);
-int qcip_set_luminance_std_tolerance(struct qcam *q, int val);
-int qcip_set_autoexposure_mode(int val);
-void qcip_histogram(struct qcam *q, scanbuf *scan, int *histogram);
-void qcip_display_histogram(struct qcam *q, scanbuf *scan);
+int qcip_autoexposure (struct qcam *q, scanbuf * scan);
+int qcip_set_luminance_target (struct qcam *q, int val);
+int qcip_set_luminance_tolerance (struct qcam *q, int val);
+int qcip_set_luminance_std_target (struct qcam *q, int val);
+int qcip_set_luminance_std_tolerance (struct qcam *q, int val);
+int qcip_set_autoexposure_mode (int val);
+void qcip_histogram (struct qcam *q, scanbuf * scan, int *histogram);
+void qcip_display_histogram (struct qcam *q, scanbuf * scan);
-#endif /*! _QCAMIP_H*/
+#endif /*! _QCAMIP_H */