Second copy of Windows libdc1394 include/libs without a hacked stdint.h.
authormark <mark@2c67d6c2-4361-4cd7-bd83-1149b1926c9b>
Tue, 26 Nov 2013 23:02:40 +0000 (23:02 +0000)
committermark <mark@2c67d6c2-4361-4cd7-bd83-1149b1926c9b>
Tue, 26 Nov 2013 23:02:40 +0000 (23:02 +0000)
git-svn-id: https://valelab.ucsf.edu/svn/3rdpartypublic@152 2c67d6c2-4361-4cd7-bd83-1149b1926c9b

19 files changed:
dc1394-drivers/libdc1394/include/dc1394/camera.h [new file with mode: 0644]
dc1394-drivers/libdc1394/include/dc1394/capture.h [new file with mode: 0644]
dc1394-drivers/libdc1394/include/dc1394/control.h [new file with mode: 0644]
dc1394-drivers/libdc1394/include/dc1394/conversions.h [new file with mode: 0644]
dc1394-drivers/libdc1394/include/dc1394/dc1394.h [new file with mode: 0644]
dc1394-drivers/libdc1394/include/dc1394/format7.h [new file with mode: 0644]
dc1394-drivers/libdc1394/include/dc1394/iso.h [new file with mode: 0644]
dc1394-drivers/libdc1394/include/dc1394/log.h [new file with mode: 0644]
dc1394-drivers/libdc1394/include/dc1394/register.h [new file with mode: 0644]
dc1394-drivers/libdc1394/include/dc1394/types.h [new file with mode: 0644]
dc1394-drivers/libdc1394/include/dc1394/utils.h [new file with mode: 0644]
dc1394-drivers/libdc1394/include/dc1394/vendor/avt.h [new file with mode: 0644]
dc1394-drivers/libdc1394/include/dc1394/vendor/basler.h [new file with mode: 0644]
dc1394-drivers/libdc1394/include/dc1394/vendor/basler_sff.h [new file with mode: 0644]
dc1394-drivers/libdc1394/include/dc1394/vendor/pixelink.h [new file with mode: 0644]
dc1394-drivers/libdc1394/include/dc1394/video.h [new file with mode: 0644]
dc1394-drivers/libdc1394/lib/libdc1394.a [new file with mode: 0644]
dc1394-drivers/libdc1394/lib/libgcc.a [new file with mode: 0644]
dc1394-drivers/libdc1394/lib/libsetupapi.a [new file with mode: 0644]

diff --git a/dc1394-drivers/libdc1394/include/dc1394/camera.h b/dc1394-drivers/libdc1394/include/dc1394/camera.h
new file mode 100644 (file)
index 0000000..75a09a9
--- /dev/null
@@ -0,0 +1,245 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * Written by Damien Douxchamps <ddouxchamps@users.sf.net>
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <dc1394/log.h>
+#include <stdio.h>
+
+#ifndef __DC1394_CAMERA_H__
+#define __DC1394_CAMERA_H__
+
+/*! \file dc1394/camera.h
+    \brief Basic system and camera functions
+    \author Damien Douxchamps: coding
+    \author Peter Antoniac: documentation maintainer
+
+    More details soon
+*/
+
+/**
+ * List of IIDC versions
+ *
+ * Currently, the following versions exist: 1.04, 1.20, PTGREY, 1.30 and 1.31 (1.32 coming soon)
+ * Observing other versions means that there's a bug crawling somewhere.
+ */
+typedef enum {
+    DC1394_IIDC_VERSION_1_04 = 544,
+    DC1394_IIDC_VERSION_1_20,
+    DC1394_IIDC_VERSION_PTGREY,
+    DC1394_IIDC_VERSION_1_30,
+    DC1394_IIDC_VERSION_1_31,
+    DC1394_IIDC_VERSION_1_32,
+    DC1394_IIDC_VERSION_1_33,
+    DC1394_IIDC_VERSION_1_34,
+    DC1394_IIDC_VERSION_1_35,
+    DC1394_IIDC_VERSION_1_36,
+    DC1394_IIDC_VERSION_1_37,
+    DC1394_IIDC_VERSION_1_38,
+    DC1394_IIDC_VERSION_1_39
+} dc1394iidc_version_t;
+#define DC1394_IIDC_VERSION_MIN        DC1394_IIDC_VERSION_1_04
+#define DC1394_IIDC_VERSION_MAX        DC1394_IIDC_VERSION_1_39
+#define DC1394_IIDC_VERSION_NUM       (DC1394_IIDC_VERSION_MAX - DC1394_IIDC_VERSION_MIN + 1)
+
+/**
+ * Enumeration of power classes
+ *
+ * This is currently not used in libdc1394.
+ */
+typedef enum {
+    DC1394_POWER_CLASS_NONE=608,
+    DC1394_POWER_CLASS_PROV_MIN_15W,
+    DC1394_POWER_CLASS_PROV_MIN_30W,
+    DC1394_POWER_CLASS_PROV_MIN_45W,
+    DC1394_POWER_CLASS_USES_MAX_1W,
+    DC1394_POWER_CLASS_USES_MAX_3W,
+    DC1394_POWER_CLASS_USES_MAX_6W,
+    DC1394_POWER_CLASS_USES_MAX_10W
+} dc1394power_class_t;
+#define DC1394_POWER_CLASS_MIN       DC1394_POWER_CLASS_NONE
+#define DC1394_POWER_CLASS_MAX       DC1394_POWER_CLASS_USES_MAX_10W
+#define DC1394_POWER_CLASS_NUM      (DC1394_POWER_CLASS_MAX - DC1394_POWER_CLASS_MIN + 1)
+
+/**
+ * Enumeration of PHY delays
+ *
+ * This is currently not used in libdc1394.
+ */
+typedef enum {
+    DC1394_PHY_DELAY_MAX_144_NS=640,
+    DC1394_PHY_DELAY_UNKNOWN_0,
+    DC1394_PHY_DELAY_UNKNOWN_1,
+    DC1394_PHY_DELAY_UNKNOWN_2
+} dc1394phy_delay_t;
+#define DC1394_PHY_DELAY_MIN         DC1394_PHY_DELAY_MAX_144_NS
+#define DC1394_PHY_DELAY_MAX         DC1394_PHY_DELAY_UNKNOWN_0
+#define DC1394_PHY_DELAY_NUM        (DC1394_PHY_DELAY_MAX - DC1394_PHY_DELAY_MIN + 1)
+
+/**
+ * Camera structure
+ *
+ * This structure represents the camera in libdc1394. It contains a number of useful static information, such as model/vendor names,
+ * a few capabilities, some ROM offsets, a unique identifier, etc... 
+ */
+typedef struct __dc1394_camera
+{
+    /* system/firmware information */
+    uint64_t             guid;
+    int                  unit;
+    uint32_t             unit_spec_ID;
+    uint32_t             unit_sw_version;
+    uint32_t             unit_sub_sw_version;
+    uint32_t             command_registers_base;
+    uint32_t             unit_directory;
+    uint32_t             unit_dependent_directory;
+    uint64_t             advanced_features_csr;
+    uint64_t             PIO_control_csr;
+    uint64_t             SIO_control_csr;
+    uint64_t             strobe_control_csr;
+    uint64_t             format7_csr[DC1394_VIDEO_MODE_FORMAT7_NUM];
+    dc1394iidc_version_t iidc_version;
+    char               * vendor;
+    char               * model;
+    uint32_t             vendor_id;
+    uint32_t             model_id;
+    dc1394bool_t         bmode_capable;
+    dc1394bool_t         one_shot_capable;
+    dc1394bool_t         multi_shot_capable;
+    dc1394bool_t         can_switch_on_off;
+    dc1394bool_t         has_vmode_error_status;
+    dc1394bool_t         has_feature_error_status;
+    int                  max_mem_channel;
+
+    /* not used, for future use: */
+    uint32_t             flags;
+
+} dc1394camera_t;
+
+/**
+ * A unique identifier for a functional camera unit
+ *
+ * Since a single camera can contain several functional units (think stereo cameras), the GUID is not enough to identify an IIDC camera.
+ * The unit number must also be used, hence this struct. 
+ */
+typedef struct
+{
+    uint16_t             unit;
+    uint64_t             guid;
+} dc1394camera_id_t;
+
+/**
+ * A list of cameras
+ *
+ * Usually returned by dc1394_camera_eumerate(). 
+ */
+typedef struct __dc1394camera_list_t
+{
+    uint32_t             num;
+    dc1394camera_id_t    *ids;
+} dc1394camera_list_t;
+
+typedef struct __dc1394_t dc1394_t;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************
+     General system functions
+ ***************************************************************************/
+
+/**
+ * Creates a new context in which cameras can be searched and used. This should be called before using any other libdc1394 function. 
+ */
+dc1394_t* dc1394_new (void);
+
+/**
+ * Liberates a context. Last function to use in your program. After this, no libdc1394 function can be used.
+ */
+void dc1394_free (dc1394_t *dc1394);
+
+/**
+ * Sets and gets the broadcast flag of a camera. If the broadcast flag is set,
+ * all devices on the bus will execute the command. Useful to sync ISO start
+ * commands or setting a bunch of cameras at the same time. Broadcast only works
+ * with identical devices (brand/model). If the devices are not identical your
+ * mileage may vary. Some cameras may not answer broadcast commands at all. Also,
+ * this only works with cameras on the SAME bus (IOW, the same port).
+ */
+dc1394error_t dc1394_camera_set_broadcast(dc1394camera_t *camera, dc1394bool_t pwr);
+dc1394error_t dc1394_camera_get_broadcast(dc1394camera_t *camera, dc1394bool_t *pwr);
+
+/**
+ * Resets the IEEE1394 bus which camera is attached to.  Calling this function is
+ * "rude" to other devices because it causes them to re-enumerate on the bus and
+ * may cause a temporary disruption in their current activities.  Thus, use it
+ * sparingly.  Its primary use is if a program shuts down uncleanly and needs to
+ * free leftover ISO channels or bandwidth.  A bus reset will free those things
+ * as a side effect.
+ */
+dc1394error_t dc1394_reset_bus(dc1394camera_t *camera);
+dc1394error_t dc1394_read_cycle_timer (dc1394camera_t * camera,
+        uint32_t * cycle_timer, uint64_t * local_time);
+
+/**
+ * Gets the IEEE 1394 node ID of the camera.
+ */
+dc1394error_t dc1394_camera_get_node(dc1394camera_t *camera, uint32_t *node,
+        uint32_t * generation);
+
+
+/***************************************************************************
+     Camera functions
+ ***************************************************************************/
+
+/**
+ * Returns the list of cameras available on the computer. If present, multiple cards will be probed
+ */
+dc1394error_t dc1394_camera_enumerate(dc1394_t *dc1394, dc1394camera_list_t **list);
+
+/**
+ * Frees the memory allocated in dc1394_enumerate_cameras for the camera list
+ */
+void dc1394_camera_free_list(dc1394camera_list_t *list);
+
+/**
+ * Create a new camera based on a GUID (Global Unique IDentifier)
+ */
+dc1394camera_t * dc1394_camera_new(dc1394_t *dc1394, uint64_t guid);
+
+/**
+ * Create a new camera based on a GUID and a unit number (for multi-unit cameras)
+ */
+dc1394camera_t * dc1394_camera_new_unit(dc1394_t *dc1394, uint64_t guid, int unit);
+
+/**
+ * Frees a camera structure
+ */
+void dc1394_camera_free(dc1394camera_t *camera);
+
+/**
+ * Print various camera information, such as GUID, vendor, model, supported IIDC specs, etc...
+ */
+dc1394error_t dc1394_camera_print_info(dc1394camera_t *camera, FILE *fd);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/dc1394-drivers/libdc1394/include/dc1394/capture.h b/dc1394-drivers/libdc1394/include/dc1394/capture.h
new file mode 100644 (file)
index 0000000..5980719
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * Written by Damien Douxchamps <ddouxchamps@users.sf.net>
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <dc1394/log.h>
+#include <dc1394/video.h>
+
+#ifndef __DC1394_CAPTURE_H__
+#define __DC1394_CAPTURE_H__
+
+/*! \file dc1394/capture.h
+    \brief Capture functions
+    \author Damien Douxchamps: coding
+    \author Peter Antoniac: documentation maintainer
+
+    More details soon
+*/
+
+/**
+ * The capture policy.
+ *
+ * Can be blocking (wait for a frame forever) or polling (returns if no frames is in the ring buffer)
+ */
+typedef enum {
+    DC1394_CAPTURE_POLICY_WAIT=672,
+    DC1394_CAPTURE_POLICY_POLL
+} dc1394capture_policy_t;
+#define DC1394_CAPTURE_POLICY_MIN    DC1394_CAPTURE_POLICY_WAIT
+#define DC1394_CAPTURE_POLICY_MAX    DC1394_CAPTURE_POLICY_POLL
+#define DC1394_CAPTURE_POLICY_NUM   (DC1394_CAPTURE_POLICY_MAX - DC1394_CAPTURE_POLICY_MIN + 1)
+
+/**
+ * Capture flags. Currently limited to switching automatic functions on/off: channel allocation, bandwidth allocation and automatic
+ * starting of ISO transmission
+ */
+#define DC1394_CAPTURE_FLAGS_CHANNEL_ALLOC   0x00000001U
+#define DC1394_CAPTURE_FLAGS_BANDWIDTH_ALLOC 0x00000002U
+#define DC1394_CAPTURE_FLAGS_DEFAULT         0x00000004U /* a reasonable default value: do bandwidth and channel allocation */
+#define DC1394_CAPTURE_FLAGS_AUTO_ISO        0x00000008U /* automatically start iso before capture and stop it after */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************
+     Capture Functions
+ ***************************************************************************/
+
+/**
+ * Setup the capture, using a ring buffer of a certain size (num_dma_buffers) and certain options (flags)
+ */
+dc1394error_t dc1394_capture_setup(dc1394camera_t *camera, uint32_t num_dma_buffers, uint32_t flags);
+
+/**
+ * Stop the capture
+ */
+dc1394error_t dc1394_capture_stop(dc1394camera_t *camera);
+
+/**
+ * Gets a file descriptor to be used for select(). Must be called after dc1394_capture_setup().
+ */
+int dc1394_capture_get_fileno (dc1394camera_t * camera);
+
+/**
+ * Captures a video frame. The returned struct contains the image buffer, among others. This image buffer SHALL NOT be freed, as it represents an area
+ * in the memory that belongs to the system. 
+ */
+dc1394error_t dc1394_capture_dequeue(dc1394camera_t * camera, dc1394capture_policy_t policy, dc1394video_frame_t **frame);
+
+/**
+ * Returns a frame to the ring buffer once it has been used.
+ */
+dc1394error_t dc1394_capture_enqueue(dc1394camera_t * camera, dc1394video_frame_t * frame);
+
+/**
+ * Returns DC1394_TRUE if the given frame (previously dequeued) has been
+ * detected to be corrupt (missing data, corrupted data, overrun buffer, etc.).
+ * Note that certain types of corruption may go undetected in which case
+ * DC1394_FALSE will be returned.  The ability to detect corruption also
+ * varies between platforms.  Note that corrupt frames still need to be
+ * enqueued with dc1394_capture_enqueue() when no longer needed by the user.
+ */
+dc1394bool_t dc1394_capture_is_frame_corrupt (dc1394camera_t * camera,
+        dc1394video_frame_t * frame);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/dc1394-drivers/libdc1394/include/dc1394/control.h b/dc1394-drivers/libdc1394/include/dc1394/control.h
new file mode 100644 (file)
index 0000000..eb4202b
--- /dev/null
@@ -0,0 +1,456 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * Generic camera control functions
+ *
+ * Written by Damien Douxchamps <ddouxchamps@users.sf.net>
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <dc1394/log.h>
+
+#ifndef __DC1394_CONTROL_H__
+#define __DC1394_CONTROL_H__
+
+/*! \file dc1394/control.h
+    \brief Diverse controls of camera features
+    \author Gord Peters: main writer
+    \author Chris Urmson: some additions
+    \author Damien Douxchamps: some additions
+    \author Peter Antoniac: documentation maintainer
+    \author Rudolf Leitgeb: documentation writer
+
+    This is the main include file of the library. It lists most of the library
+    functions, enumerations and data structures.
+*/
+
+/**
+ * Enumeration of trigger modes
+ */
+typedef enum {
+    DC1394_TRIGGER_MODE_0= 384,
+    DC1394_TRIGGER_MODE_1,
+    DC1394_TRIGGER_MODE_2,
+    DC1394_TRIGGER_MODE_3,
+    DC1394_TRIGGER_MODE_4,
+    DC1394_TRIGGER_MODE_5,
+    DC1394_TRIGGER_MODE_14,
+    DC1394_TRIGGER_MODE_15
+} dc1394trigger_mode_t;
+#define DC1394_TRIGGER_MODE_MIN     DC1394_TRIGGER_MODE_0
+#define DC1394_TRIGGER_MODE_MAX     DC1394_TRIGGER_MODE_15
+#define DC1394_TRIGGER_MODE_NUM    (DC1394_TRIGGER_MODE_MAX - DC1394_TRIGGER_MODE_MIN + 1)
+
+/**
+ * Enumeration of camera features
+ */
+typedef enum {
+    DC1394_FEATURE_BRIGHTNESS= 416,
+    DC1394_FEATURE_EXPOSURE,
+    DC1394_FEATURE_SHARPNESS,
+    DC1394_FEATURE_WHITE_BALANCE,
+    DC1394_FEATURE_HUE,
+    DC1394_FEATURE_SATURATION,
+    DC1394_FEATURE_GAMMA,
+    DC1394_FEATURE_SHUTTER,
+    DC1394_FEATURE_GAIN,
+    DC1394_FEATURE_IRIS,
+    DC1394_FEATURE_FOCUS,
+    DC1394_FEATURE_TEMPERATURE,
+    DC1394_FEATURE_TRIGGER,
+    DC1394_FEATURE_TRIGGER_DELAY,
+    DC1394_FEATURE_WHITE_SHADING,
+    DC1394_FEATURE_FRAME_RATE,
+    DC1394_FEATURE_ZOOM,
+    DC1394_FEATURE_PAN,
+    DC1394_FEATURE_TILT,
+    DC1394_FEATURE_OPTICAL_FILTER,
+    DC1394_FEATURE_CAPTURE_SIZE,
+    DC1394_FEATURE_CAPTURE_QUALITY
+} dc1394feature_t;
+#define DC1394_FEATURE_MIN           DC1394_FEATURE_BRIGHTNESS
+#define DC1394_FEATURE_MAX           DC1394_FEATURE_CAPTURE_QUALITY
+#define DC1394_FEATURE_NUM          (DC1394_FEATURE_MAX - DC1394_FEATURE_MIN + 1)
+
+/**
+ * Enumeration of trigger sources
+ */
+typedef enum {
+    DC1394_TRIGGER_SOURCE_0= 576,
+    DC1394_TRIGGER_SOURCE_1,
+    DC1394_TRIGGER_SOURCE_2,
+    DC1394_TRIGGER_SOURCE_3,
+    DC1394_TRIGGER_SOURCE_SOFTWARE
+} dc1394trigger_source_t;
+#define DC1394_TRIGGER_SOURCE_MIN      DC1394_TRIGGER_SOURCE_0
+#define DC1394_TRIGGER_SOURCE_MAX      DC1394_TRIGGER_SOURCE_SOFTWARE
+#define DC1394_TRIGGER_SOURCE_NUM     (DC1394_TRIGGER_SOURCE_MAX - DC1394_TRIGGER_SOURCE_MIN + 1)
+
+/**
+ * External trigger polarity
+ */
+typedef enum {
+    DC1394_TRIGGER_ACTIVE_LOW= 704,
+    DC1394_TRIGGER_ACTIVE_HIGH
+} dc1394trigger_polarity_t;
+#define DC1394_TRIGGER_ACTIVE_MIN    DC1394_TRIGGER_ACTIVE_LOW
+#define DC1394_TRIGGER_ACTIVE_MAX    DC1394_TRIGGER_ACTIVE_HIGH
+#define DC1394_TRIGGER_ACTIVE_NUM   (DC1394_TRIGGER_ACTIVE_MAX - DC1394_TRIGGER_ACTIVE_MIN + 1)
+
+/**
+ * Control modes for a feature (excl. absolute control)
+ */
+typedef enum {
+    DC1394_FEATURE_MODE_MANUAL= 736,
+    DC1394_FEATURE_MODE_AUTO,
+    DC1394_FEATURE_MODE_ONE_PUSH_AUTO
+} dc1394feature_mode_t;
+#define DC1394_FEATURE_MODE_MIN      DC1394_FEATURE_MODE_MANUAL
+#define DC1394_FEATURE_MODE_MAX      DC1394_FEATURE_MODE_ONE_PUSH_AUTO
+#define DC1394_FEATURE_MODE_NUM     (DC1394_FEATURE_MODE_MAX - DC1394_FEATURE_MODE_MIN + 1)
+
+/**
+ * List of feature modes
+ */
+typedef struct
+{
+    uint32_t                num;
+    dc1394feature_mode_t    modes[DC1394_FEATURE_MODE_NUM];
+} dc1394feature_modes_t;
+
+/**
+ * List of trigger modes
+ */
+typedef struct
+{
+    uint32_t                num;
+    dc1394trigger_mode_t    modes[DC1394_TRIGGER_MODE_NUM];
+} dc1394trigger_modes_t;
+
+/**
+ * List of trigger sources
+ */
+typedef struct
+{
+    uint32_t                num;
+    dc1394trigger_source_t  sources[DC1394_TRIGGER_SOURCE_NUM];
+} dc1394trigger_sources_t;
+
+/**
+ * A structure containing all information about a feature.
+ *
+ * Some fields are only valid for some features (e.g. trigger, white balance,...)
+ */
+typedef struct __dc1394feature_info_t_struct
+{
+    dc1394feature_t    id;
+    dc1394bool_t       available;
+    dc1394bool_t       absolute_capable;
+    dc1394bool_t       readout_capable;
+    dc1394bool_t       on_off_capable;
+    dc1394bool_t       polarity_capable;
+    dc1394switch_t     is_on;
+    dc1394feature_mode_t     current_mode;
+    dc1394feature_modes_t    modes;
+    dc1394trigger_modes_t    trigger_modes;
+    dc1394trigger_mode_t     trigger_mode;
+    dc1394trigger_polarity_t trigger_polarity;
+    dc1394trigger_sources_t  trigger_sources;
+    dc1394trigger_source_t   trigger_source;
+    uint32_t           min;
+    uint32_t           max;
+    uint32_t           value;
+    uint32_t           BU_value;
+    uint32_t           RV_value;
+    uint32_t           B_value;
+    uint32_t           R_value;
+    uint32_t           G_value;
+    uint32_t           target_value;
+
+    dc1394switch_t     abs_control;
+    float              abs_value;
+    float              abs_max;
+    float              abs_min;
+
+} dc1394feature_info_t;
+
+/**
+ * The list of features
+ */
+typedef struct __dc1394featureset_t
+{
+    dc1394feature_info_t    feature[DC1394_FEATURE_NUM];
+} dc1394featureset_t;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************
+     Features
+ ***************************************************************************/
+
+/**
+ * Collects the available features for the camera described by node and stores them in features.
+ */
+dc1394error_t dc1394_feature_get_all(dc1394camera_t *camera, dc1394featureset_t *features);
+
+/**
+ * Stores the bounds and options associated with the feature described by feature->feature_id
+ */
+dc1394error_t dc1394_feature_get(dc1394camera_t *camera, dc1394feature_info_t *feature);
+
+/**
+ * Displays the bounds and options of the given feature
+ */
+dc1394error_t dc1394_feature_print(dc1394feature_info_t *feature, FILE *fd);
+
+/**
+ * Displays the bounds and options of every feature supported by the camera
+ */
+dc1394error_t dc1394_feature_print_all(dc1394featureset_t *features, FILE *fd);
+
+/**
+ * Gets the whitebalance values
+ */
+dc1394error_t dc1394_feature_whitebalance_get_value(dc1394camera_t *camera, uint32_t *u_b_value, uint32_t *v_r_value);
+
+/**
+ * Sets the whitebalance values
+ */
+dc1394error_t dc1394_feature_whitebalance_set_value(dc1394camera_t *camera, uint32_t u_b_value, uint32_t v_r_value);
+
+/**
+ * Gets the temperature values (target and current)
+ */
+dc1394error_t dc1394_feature_temperature_get_value(dc1394camera_t *camera, uint32_t *target_temperature, uint32_t *temperature);
+
+/**
+ * Sets the temperature values (target only) FIXME: COULD BE DROPPED? already in the standard feature_set_value()?
+ */
+dc1394error_t dc1394_feature_temperature_set_value(dc1394camera_t *camera, uint32_t target_temperature);
+
+/**
+ * Gets the white shading values
+ */
+dc1394error_t dc1394_feature_whiteshading_get_value(dc1394camera_t *camera, uint32_t *r_value, uint32_t *g_value, uint32_t *b_value);
+
+/**
+ * Sets the white shading values
+ */
+dc1394error_t dc1394_feature_whiteshading_set_value(dc1394camera_t *camera, uint32_t r_value, uint32_t g_value, uint32_t b_value);
+
+/**
+ * Gets the value of a feature
+ */
+dc1394error_t dc1394_feature_get_value(dc1394camera_t *camera, dc1394feature_t feature, uint32_t *value);
+
+/**
+ * Sets the value of a feature
+ */
+dc1394error_t dc1394_feature_set_value(dc1394camera_t *camera, dc1394feature_t feature, uint32_t value);
+
+/**
+ * Tells whether a feature is present or not
+ */
+dc1394error_t dc1394_feature_is_present(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value);
+
+/**
+ * Tells whether a feature is readable or not
+ */
+dc1394error_t dc1394_feature_is_readable(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value);
+
+/**
+ * Gets the boundaries of a feature
+ */
+dc1394error_t dc1394_feature_get_boundaries(dc1394camera_t *camera, dc1394feature_t feature, uint32_t *min, uint32_t *max);
+
+/**
+ * Tells whether a feature is switcheable or not (ON/OFF)
+ */
+dc1394error_t dc1394_feature_is_switchable(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value);
+
+/**
+ * Gets the power status of a feature (ON or OFF)
+ */
+dc1394error_t dc1394_feature_get_power(dc1394camera_t *camera, dc1394feature_t feature, dc1394switch_t *pwr);
+
+/**
+ * Sets the power status of a feature (ON or OFF)
+ */
+dc1394error_t dc1394_feature_set_power(dc1394camera_t *camera, dc1394feature_t feature, dc1394switch_t pwr);
+
+/**
+ * Gets the list of control modes for a feature (manual, auto, etc...)
+ */
+dc1394error_t dc1394_feature_get_modes(dc1394camera_t *camera, dc1394feature_t feature, dc1394feature_modes_t *modes);
+
+/**
+ * Gets the current control modes for a feature
+ */
+dc1394error_t dc1394_feature_get_mode(dc1394camera_t *camera, dc1394feature_t feature, dc1394feature_mode_t *mode);
+
+/**
+ * Sets the current control modes for a feature
+ */
+dc1394error_t dc1394_feature_set_mode(dc1394camera_t *camera, dc1394feature_t feature, dc1394feature_mode_t mode);
+
+/**
+ * Tells whether a feature can be controlled in absolute mode
+ */
+dc1394error_t dc1394_feature_has_absolute_control(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value);
+
+/**
+ * Gets the absolute boundaries of a feature
+ */
+dc1394error_t dc1394_feature_get_absolute_boundaries(dc1394camera_t *camera, dc1394feature_t feature, float *min, float *max);
+
+/**
+ * Gets the absolute value of a feature
+ */
+dc1394error_t dc1394_feature_get_absolute_value(dc1394camera_t *camera, dc1394feature_t feature, float *value);
+
+/**
+ * Sets the absolute value of a feature
+ */
+dc1394error_t dc1394_feature_set_absolute_value(dc1394camera_t *camera, dc1394feature_t feature, float value);
+
+/**
+ * Gets the status of absolute control of a feature
+ */
+dc1394error_t dc1394_feature_get_absolute_control(dc1394camera_t *camera, dc1394feature_t feature, dc1394switch_t *pwr);
+
+/**
+ * Sets the feature in absolute control mode (ON/OFF)
+ */
+dc1394error_t dc1394_feature_set_absolute_control(dc1394camera_t *camera, dc1394feature_t feature, dc1394switch_t pwr);
+
+/***************************************************************************
+     Trigger
+ ***************************************************************************/
+
+/**
+ * Sets the polarity of the external trigger
+ */
+dc1394error_t dc1394_external_trigger_set_polarity(dc1394camera_t *camera, dc1394trigger_polarity_t polarity);
+
+/**
+ * Gets the polarity of the external trigger
+ */
+dc1394error_t dc1394_external_trigger_get_polarity(dc1394camera_t *camera, dc1394trigger_polarity_t *polarity);
+
+/**
+ * Tells whether the external trigger can change its polarity or not.
+ */
+dc1394error_t dc1394_external_trigger_has_polarity(dc1394camera_t *camera, dc1394bool_t *polarity_capable);
+
+/**
+ * Switch between internal and external trigger
+ */
+dc1394error_t dc1394_external_trigger_set_power(dc1394camera_t *camera, dc1394switch_t pwr);
+
+/**
+ * Gets the status of the external trigger
+ */
+dc1394error_t dc1394_external_trigger_get_power(dc1394camera_t *camera, dc1394switch_t *pwr);
+
+/**
+ * Sets the external trigger mode
+ */
+dc1394error_t dc1394_external_trigger_set_mode(dc1394camera_t *camera, dc1394trigger_mode_t mode);
+
+/**
+ * Gets the external trigger mode
+ */
+dc1394error_t dc1394_external_trigger_get_mode(dc1394camera_t *camera, dc1394trigger_mode_t *mode);
+
+/**
+ * Sets the external trigger source
+ */
+dc1394error_t dc1394_external_trigger_set_source(dc1394camera_t *camera, dc1394trigger_source_t source);
+
+/**
+ * Gets the external trigger source
+ */
+dc1394error_t dc1394_external_trigger_get_source(dc1394camera_t *camera, dc1394trigger_source_t *source);
+
+/**
+ * Gets the list of available external trigger source
+ */
+dc1394error_t dc1394_external_trigger_get_supported_sources(dc1394camera_t *camera, dc1394trigger_sources_t *sources);
+
+/**
+ * Turn software trigger on or off
+ */
+dc1394error_t dc1394_software_trigger_set_power(dc1394camera_t *camera, dc1394switch_t pwr);
+
+/**
+ * Gets the state of software trigger
+ */
+dc1394error_t dc1394_software_trigger_get_power(dc1394camera_t *camera, dc1394switch_t *pwr);
+
+/***************************************************************************
+     PIO, SIO and Strobe Functions
+ ***************************************************************************/
+
+/**
+ * Sends a quadlet on the PIO (output)
+ */
+dc1394error_t dc1394_pio_set(dc1394camera_t *camera, uint32_t value);
+
+/**
+ * Gets the current quadlet at the PIO (input)
+ */
+dc1394error_t dc1394_pio_get(dc1394camera_t *camera, uint32_t *value);
+
+/***************************************************************************
+     Other functionalities
+ ***************************************************************************/
+
+/**
+ * reset a camera to factory default settings
+ */
+dc1394error_t dc1394_camera_reset(dc1394camera_t *camera);
+
+/**
+ * turn a camera on or off
+ */
+dc1394error_t dc1394_camera_set_power(dc1394camera_t *camera, dc1394switch_t pwr);
+
+/**
+ * Download a camera setup from the memory.
+ */
+dc1394error_t dc1394_memory_busy(dc1394camera_t *camera, dc1394bool_t *value);
+
+/**
+ * Uploads a camera setup in the memory.
+ *
+ * Note that this operation can only be performed a certain number of
+ * times for a given camera, as it requires reprogramming of an EEPROM.
+ */
+dc1394error_t dc1394_memory_save(dc1394camera_t *camera, uint32_t channel);
+
+/**
+ * Tells whether the writing of the camera setup in memory is finished or not.
+ */
+dc1394error_t dc1394_memory_load(dc1394camera_t *camera, uint32_t channel);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __DC1394_CONTROL_H__ */
diff --git a/dc1394-drivers/libdc1394/include/dc1394/conversions.h b/dc1394-drivers/libdc1394/include/dc1394/conversions.h
new file mode 100644 (file)
index 0000000..b838758
--- /dev/null
@@ -0,0 +1,220 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * Color conversion functions, including Bayer pattern decoding
+ *
+ * Written by Damien Douxchamps and Frederic Devernay
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <dc1394/log.h>
+
+#ifndef __DC1394_CONVERSIONS_H__
+#define __DC1394_CONVERSIONS_H__
+
+/*! \file dc1394/conversions.h
+    \brief functions to convert video formats
+    \author Damien Douxchamps: coding
+    \author Frederic Devernay: coding
+    \author Peter Antoniac: documentation maintainer
+
+    More details soon
+*/
+
+#define restrict __restrict
+
+/**
+ * A list of de-mosaicing techniques for Bayer-patterns.
+ *
+ * The speed of the techniques can vary greatly, as well as their quality.
+ */
+typedef enum {
+    DC1394_BAYER_METHOD_NEAREST=0,
+    DC1394_BAYER_METHOD_SIMPLE,
+    DC1394_BAYER_METHOD_BILINEAR,
+    DC1394_BAYER_METHOD_HQLINEAR,
+    DC1394_BAYER_METHOD_DOWNSAMPLE,
+    DC1394_BAYER_METHOD_EDGESENSE,
+    DC1394_BAYER_METHOD_VNG,
+    DC1394_BAYER_METHOD_AHD
+} dc1394bayer_method_t;
+#define DC1394_BAYER_METHOD_MIN      DC1394_BAYER_METHOD_NEAREST
+#define DC1394_BAYER_METHOD_MAX      DC1394_BAYER_METHOD_AHD
+#define DC1394_BAYER_METHOD_NUM     (DC1394_BAYER_METHOD_MAX-DC1394_BAYER_METHOD_MIN+1)
+
+/**
+ * A list of known stereo-in-normal-video modes used by manufacturers like Point Grey Research and Videre Design.
+ */
+typedef enum {
+    DC1394_STEREO_METHOD_INTERLACED=0,
+    DC1394_STEREO_METHOD_FIELD
+} dc1394stereo_method_t;
+#define DC1394_STEREO_METHOD_MIN     DC1394_STEREO_METHOD_INTERLACED
+#define DC1394_STEREO_METHOD_MAX     DC1394_STEREO_METHOD_FIELD
+#define DC1394_STEREO_METHOD_NUM    (DC1394_STEREO_METHOD_MAX-DC1394_STEREO_METHOD_MIN+1)
+
+
+// color conversion functions from Bart Nabbe.
+// corrected by Damien: bad coeficients in YUV2RGB
+#define YUV2RGB(y, u, v, r, g, b) {\
+  r = y + ((v*1436) >> 10);\
+  g = y - ((u*352 + v*731) >> 10);\
+  b = y + ((u*1814) >> 10);\
+  r = r < 0 ? 0 : r;\
+  g = g < 0 ? 0 : g;\
+  b = b < 0 ? 0 : b;\
+  r = r > 255 ? 255 : r;\
+  g = g > 255 ? 255 : g;\
+  b = b > 255 ? 255 : b; }
+
+
+#define RGB2YUV(r, g, b, y, u, v) {\
+  y = (306*r + 601*g + 117*b)  >> 10;\
+  u = ((-172*r - 340*g + 512*b) >> 10)  + 128;\
+  v = ((512*r - 429*g - 83*b) >> 10) + 128;\
+  y = y < 0 ? 0 : y;\
+  u = u < 0 ? 0 : u;\
+  v = v < 0 ? 0 : v;\
+  y = y > 255 ? 255 : y;\
+  u = u > 255 ? 255 : u;\
+  v = v > 255 ? 255 : v; }
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**********************************************************************
+ *  CONVERSION FUNCTIONS TO YUV422, MONO8 and RGB8
+ **********************************************************************/
+
+/**
+ * Converts an image buffer to YUV422
+ */
+dc1394error_t
+dc1394_convert_to_YUV422(uint8_t *src, uint8_t *dest, uint32_t width, uint32_t height, uint32_t byte_order,
+                         dc1394color_coding_t source_coding, uint32_t bits);
+
+/**
+ * Converts an image buffer to MONO8
+ */
+dc1394error_t
+dc1394_convert_to_MONO8(uint8_t *src, uint8_t *dest, uint32_t width, uint32_t height, uint32_t byte_order,
+                        dc1394color_coding_t source_coding, uint32_t bits);
+
+/**
+ * Converts an image buffer to RGB8
+ */
+dc1394error_t
+dc1394_convert_to_RGB8(uint8_t *src, uint8_t *dest, uint32_t width, uint32_t height, uint32_t byte_order,
+                       dc1394color_coding_t source_coding, uint32_t bits);
+
+/**********************************************************************
+ *  CONVERSION FUNCTIONS FOR STEREO IMAGES
+ **********************************************************************/
+
+/**
+ * changes a 16bit stereo image (8bit/channel) into two 8bit images on top of each other
+ */
+dc1394error_t
+dc1394_deinterlace_stereo(uint8_t *src, uint8_t *dest, uint32_t width, uint32_t height);
+
+/************************************************************************************************
+ *                                                                                              *
+ *      Color conversion functions for cameras that can output raw Bayer pattern images (color  *
+ *  codings DC1394_COLOR_CODING_RAW8 and DC1394_COLOR_CODING_RAW16).                            *
+ *                                                                                              *
+ *  Credits and sources:                                                                        *
+ *  - Nearest Neighbor : OpenCV library                                                         *
+ *  - Bilinear         : OpenCV library                                                         *
+ *  - HQLinear         : High-Quality Linear Interpolation For Demosaicing Of Bayer-Patterned   *
+ *                       Color Images, by Henrique S. Malvar, Li-wei He, and Ross Cutler,       *
+ *                          in Proceedings of the ICASSP'04 Conference.                            *
+ *  - Edge Sense II    : Laroche, Claude A. "Apparatus and method for adaptively interpolating  *
+ *                       a full color image utilizing chrominance gradients"                    *
+ *                          U.S. Patent 5,373,322. Based on the code found on the website          *
+ *                       http://www-ise.stanford.edu/~tingchen/ Converted to C and adapted to   *
+ *                       all four elementary patterns.                                          *
+ *  - Downsample       : "Known to the Ancients"                                                *
+ *  - Simple           : Implemented from the information found in the manual of Allied Vision  *
+ *                       Technologies (AVT) cameras.                                            *
+ *  - VNG              : Variable Number of Gradients, a method described in                    *
+ *                       http://www-ise.stanford.edu/~tingchen/algodep/vargra.html              *
+ *                       Sources import from DCRAW by Frederic Devernay. DCRAW is a RAW         *
+ *                       converter program by Dave Coffin. URL:                                 *
+ *                       http://www.cybercom.net/~dcoffin/dcraw/                                *
+ *  - AHD              : Adaptive Homogeneity-Directed Demosaicing Algorithm, by K. Hirakawa    *
+ *                       and T.W. Parks, IEEE Transactions on Image Processing, Vol. 14, Nr. 3, *
+ *                       March 2005, pp. 360 - 369.                                             *
+ *                                                                                              *
+ ************************************************************************************************/
+
+/**
+ * Perform de-mosaicing on an 8-bit image buffer
+ */
+dc1394error_t
+dc1394_bayer_decoding_8bit(const uint8_t *bayer, uint8_t *rgb,
+                           uint32_t width, uint32_t height, dc1394color_filter_t tile,
+                           dc1394bayer_method_t method);
+
+/**
+ * Perform de-mosaicing on an 16-bit image buffer
+ */
+dc1394error_t
+dc1394_bayer_decoding_16bit(const uint16_t *bayer, uint16_t *rgb,
+                            uint32_t width, uint32_t height, dc1394color_filter_t tile,
+                            dc1394bayer_method_t method, uint32_t bits);
+
+
+/**********************************************************************************
+ *  Frame based conversions
+ **********************************************************************************/
+
+/**
+ * Converts the format of a video frame.
+ *
+ * To set the format of the output, simply set the values of the corresponding fields in the output frame
+ */
+dc1394error_t
+dc1394_convert_frames(dc1394video_frame_t *in, dc1394video_frame_t *out);
+
+/**
+ * De-mosaicing of a Bayer-encoded video frame
+ *
+ * To set the format of the output, simply set the values of the corresponding fields in the output frame
+ * @param in is a pointer to the bayer video frame that is to be converted
+ * @param out is a pointer to the frame to be converted to.  If there is memory allocated to the image field, 
+ *      then it will be adjusted accordingly by this function.  If there is no memory allocated to the image
+ *      field, then ensure that out->image == NULL and out->allocated_image_bytes == 0
+ * @param method is the bayer method to interpolate the frame.
+ */
+dc1394error_t
+dc1394_debayer_frames(dc1394video_frame_t *in, dc1394video_frame_t *out, dc1394bayer_method_t method);
+
+/**
+ * De-interlacing of stereo data for cideo frames
+ *
+ * To set the format of the output, simply set the values of the corresponding fields in the output frame
+ */
+dc1394error_t
+dc1394_deinterlace_stereo_frames(dc1394video_frame_t *in, dc1394video_frame_t *out, dc1394stereo_method_t method);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DC1394_CONVERSIONS_H */
+
+
diff --git a/dc1394-drivers/libdc1394/include/dc1394/dc1394.h b/dc1394-drivers/libdc1394/include/dc1394/dc1394.h
new file mode 100644 (file)
index 0000000..3ce30ed
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * Written by
+ *   Gord Peters <GordPeters@smarttech.com>,
+ *   Chris Urmson <curmson@ri.cmu.edu>
+ *   Damien Douxchamps <ddouxchamps@users.sf.net>
+ *   Dan Dennedy <ddennedy@users.sf.net>
+ *   David Moore <dcm@acm.org>
+ *   ... and many ohters (see the AUTHORS file)
+ *
+ * Copyright (C) 2000-2001 SMART Technologies Inc.
+ * Copyright (C) 2001-2004 Universite catholique de Louvain
+ * Copyright (C) 2000 Carnegie Mellon University
+ * Copyright (C) 2006- Massachussets Institute of Technology
+ * Copyright (C) 2004- Nara Institute of Science and Technology
+ * All files are also Copyright (C) their respective author(s)
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __DC1394_H__
+#define __DC1394_H__
+
+
+/*! \file dc1394/dc1394.h
+    \brief Main include file, which include all others.
+
+    More details soon
+*/
+
+/* Include all public header files:*/
+#include <dc1394/types.h>
+#include <dc1394/camera.h>
+#include <dc1394/control.h>
+#include <dc1394/capture.h>
+#include <dc1394/conversions.h>
+#include <dc1394/format7.h>
+#include <dc1394/iso.h>
+#include <dc1394/log.h>
+#include <dc1394/register.h>
+#include <dc1394/video.h>
+#include <dc1394/utils.h>
+
+#endif
diff --git a/dc1394-drivers/libdc1394/include/dc1394/format7.h b/dc1394-drivers/libdc1394/include/dc1394/format7.h
new file mode 100644 (file)
index 0000000..b1915af
--- /dev/null
@@ -0,0 +1,231 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * Format_7 functions
+ *
+ * Written by Damien Douxchamps <ddouxchamps@users.sf.net>
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ */
+
+#include <dc1394/log.h>
+#include <dc1394/video.h>
+
+#ifndef __DC1394_FORMAT7_H__
+#define __DC1394_FORMAT7_H__
+
+/*! \file dc1394/format7.h
+    \brief Functions to control Format_7 (aka scalable format, ROI)
+
+    More details soon
+*/
+
+/**
+ * A struct containing information about a mode of Format_7, the scalable image format.
+ */
+typedef struct __dc1394format7mode_t
+{
+    dc1394bool_t present;
+
+    uint32_t size_x;
+    uint32_t size_y;
+    uint32_t max_size_x;
+    uint32_t max_size_y;
+
+    uint32_t pos_x;
+    uint32_t pos_y;
+
+    uint32_t unit_size_x;
+    uint32_t unit_size_y;
+    uint32_t unit_pos_x;
+    uint32_t unit_pos_y;
+
+    dc1394color_codings_t color_codings;
+    dc1394color_coding_t color_coding;
+
+    uint32_t pixnum;
+
+    uint32_t packet_size; /* in bytes */
+    uint32_t unit_packet_size;
+    uint32_t max_packet_size;
+
+    uint64_t total_bytes;
+
+    dc1394color_filter_t color_filter;
+
+} dc1394format7mode_t;
+
+/**
+ * A struct containing the list of Format_7 modes.
+ * FIXME: this may become very big if format_7 pages are used in IIDC 1.32. It would be better to use a "num" and an allocated list.
+ */
+typedef struct __dc1394format7modeset_t
+{
+    dc1394format7mode_t mode[DC1394_VIDEO_MODE_FORMAT7_NUM];
+} dc1394format7modeset_t;
+
+/* Parameter flags for dc1394_setup_format7_capture() */
+#define DC1394_QUERY_FROM_CAMERA -1
+#define DC1394_USE_MAX_AVAIL     -2
+#define DC1394_USE_RECOMMENDED   -3
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************
+     Format_7 (scalable image format)
+ ***************************************************************************/
+
+/* image size */
+
+/**
+ * Gets the maximal image size for a given mode.
+ */
+dc1394error_t dc1394_format7_get_max_image_size(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint32_t *h_size,uint32_t *v_size);
+
+/**
+ * Gets the unit sizes for a given mode. The image size can only be a multiple of the unit size, and cannot be smaller than it.
+ */
+dc1394error_t dc1394_format7_get_unit_size(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint32_t *h_unit, uint32_t *v_unit);
+
+/**
+ * Gets the current image size.
+ */
+dc1394error_t dc1394_format7_get_image_size(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint32_t *width, uint32_t *height);
+
+/**
+ * Sets the current image size
+ */
+dc1394error_t dc1394_format7_set_image_size(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint32_t width, uint32_t height);
+
+/* image position */
+
+/**
+ * Gets the current image position
+ */
+dc1394error_t dc1394_format7_get_image_position(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint32_t *left, uint32_t *top);
+
+/**
+ * Sets the current image position
+ */
+dc1394error_t dc1394_format7_set_image_position(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint32_t left, uint32_t top);
+
+/**
+ * Gets the unit positions for a given mode. The image position can only be a multiple of the unit position (zero is acceptable).
+ */
+dc1394error_t dc1394_format7_get_unit_position(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint32_t *h_unit_pos, uint32_t *v_unit_pos);
+
+/* color coding */
+
+/**
+ * Gets the current color coding
+ */
+dc1394error_t dc1394_format7_get_color_coding(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394color_coding_t *color_coding);
+
+/**
+ * Gets the list of color codings available for this mode
+ */
+dc1394error_t dc1394_format7_get_color_codings(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394color_codings_t *codings);
+
+/**
+ * Sets the current color coding
+ */
+dc1394error_t dc1394_format7_set_color_coding(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394color_coding_t color_coding);
+
+/**
+ * Gets the current color filter
+ */
+dc1394error_t dc1394_format7_get_color_filter(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394color_filter_t *color_filter);
+
+/* packet */
+
+/**
+ * Get the parameters of the packet size: its maximal size and its unit size. The packet size is always a multiple of the unit bytes and cannot be zero.
+ */
+dc1394error_t dc1394_format7_get_packet_parameters(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint32_t *unit_bytes, uint32_t *max_bytes);
+
+/**
+ * Gets the current packet size
+ */
+dc1394error_t dc1394_format7_get_packet_size(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint32_t *packet_size);
+
+/**
+ * Sets the current packet size
+ */
+dc1394error_t dc1394_format7_set_packet_size(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint32_t packet_size);
+
+/**
+ * Gets the recommended packet size. Ignore if zero.
+ */
+dc1394error_t dc1394_format7_get_recommended_packet_size(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint32_t *packet_size);
+
+/**
+ * Gets the number of packets per frame.
+ */
+dc1394error_t dc1394_format7_get_packets_per_frame(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint32_t *ppf);
+
+/* other */
+
+/**
+ * Gets the data depth (e.g. 12, 13, 14 bits/pixel)
+ */
+dc1394error_t dc1394_format7_get_data_depth(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint32_t *data_depth);
+
+/**
+ * Gets the frame interval in float format
+ */
+dc1394error_t dc1394_format7_get_frame_interval(dc1394camera_t *camera, dc1394video_mode_t video_mode, float *interval);
+
+/**
+ * Gets the number of pixels per image frame
+ */
+dc1394error_t dc1394_format7_get_pixel_number(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint32_t *pixnum);
+
+/**
+ * Get the total number of bytes per frame. This includes padding (to reach an entire number of packets)
+ */
+dc1394error_t dc1394_format7_get_total_bytes(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint64_t *total_bytes);
+
+/* These functions get the properties of (one or all) format7 mode(s) */
+
+/**
+ * Gets the properties of all Format_7 modes supported by the camera.
+ */
+dc1394error_t dc1394_format7_get_modeset(dc1394camera_t *camera, dc1394format7modeset_t *info);
+
+/**
+ * Gets the properties of a Format_7 mode
+ */
+dc1394error_t dc1394_format7_get_mode_info(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394format7mode_t *f7_mode);
+
+/**
+ * Joint function that fully sets a certain ROI taking all parameters into account.
+ * Note that this function does not SWITCH to the video mode passed as argument, it mearly sets it
+ */
+dc1394error_t dc1394_format7_set_roi(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394color_coding_t color_coding,
+                                     int32_t packet_size, int32_t left, int32_t top, int32_t width, int32_t height);
+
+/**
+ * Joint function that fully gets a certain ROI taking all parameters into account.
+ */
+dc1394error_t dc1394_format7_get_roi(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394color_coding_t *color_coding,
+                                     uint32_t *packet_size, uint32_t *left, uint32_t *top, uint32_t *width, uint32_t *height);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/dc1394-drivers/libdc1394/include/dc1394/iso.h b/dc1394-drivers/libdc1394/include/dc1394/iso.h
new file mode 100644 (file)
index 0000000..5df8577
--- /dev/null
@@ -0,0 +1,167 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * Functions for the manual allocations of ISO ressources.
+ *
+ * Written by David Moore <dcm@acm.org>
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __DC1394_ISO_H__
+#define __DC1394_ISO_H__
+
+/*! \file dc1394/iso.h
+    \brief Functions to manually manage the ISO resources (channels and bandwidth)
+    \author Damien Douxchamps: coding
+    \author Peter Antoniac: documentation maintainer
+
+    More details soon
+*/
+
+#include <dc1394/log.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * dc1394_iso_set_persist
+ * @param camera A camera handle.
+ *
+ * Calling this function will cause isochronous channel and bandwidth
+ * allocations to persist beyond the lifetime of this dc1394camera_t
+ * instance.  Normally (when this function is not called), any allocations
+ * would be automatically released upon freeing this camera or a
+ * premature shutdown of the application (if possible).  For this function
+ * to be used, it must be called prior to any allocations or an error will
+ * be returned.
+ *
+ * @return \a DC1394_SUCCESS if the operation succeeded.
+ * \a DC1394_FUNCTION_NOT_SUPPORTED if the current platform/driver does not
+ * allow persistent allocations.
+ */
+dc1394error_t dc1394_iso_set_persist (dc1394camera_t * camera);
+
+/**
+ * dc1394_iso_allocate_channel:
+ * @param camera A camera handle.
+ * @param channels_allowed A bitmask of acceptable channels for the allocation.
+ *   The LSB corresponds to channel 0 and the MSB corresponds to channel
+ *   63.  Only channels whose bit is set will be considered for the allocation.
+ *   If \a channels_allowed = 0, the complete set of channels supported by
+ *   this camera will be considered for the allocation.
+ * @param channel The allocated channel number is returned here.
+ *
+ * Allocates an isochronous channel.  This
+ * function may be called multiple times, each time allocating an additional
+ * channel.  The channel is automatically re-allocated if there is a bus
+ * reset.  The channel is automatically released when this dc1394camera_t
+ * is freed or if the application shuts down prematurely.  If the channel
+ * needs to persist beyond the lifetime of this application, call
+ * \a dc1394_iso_set_persist() first.  Note that this function does _not_
+ * automatically program @a camera to use the allocated channel for isochronous
+ * streaming.  You must do that manually using \a dc1394_video_set_iso_channel().
+ *
+ * @return \a DC1394_SUCCESS if the operation succeeded.  The allocated
+ * channel is stored in \a channel. \a DC1394_FUNCTION_NOT_SUPPORTED if the
+ * current driver/platform does not allow channel allocation.
+ * \a DC1394_NO_ISO_CHANNEL if none of the requested channels are available.
+ */
+dc1394error_t dc1394_iso_allocate_channel (dc1394camera_t * camera,
+    uint64_t channels_allowed, int * channel);
+
+/**
+ * dc1394_iso_release_channel:
+ * @param camera A camera handle.
+ * @param channel The channel number to release.
+ *
+ * Releases a previously allocated channel.  It is acceptable to release
+ * channels that were allocated by a different process or host.  If
+ * attempting to release a channel that is already released, the function
+ * will succeed.
+ *
+ * @return \a DC1394_SUCCESS if the operation succeeded.
+ * \a DC1394_FUNCTION_NOT_SUPPORTED if the current driver/platform does not
+ * allow channel release.
+ */
+dc1394error_t dc1394_iso_release_channel (dc1394camera_t * camera,
+    int channel);
+
+/**
+ * dc1394_iso_allocate_bandwidth:
+ * @param camera A camera handle.
+ * @param bandwidth_units The number of isochronous bandwidth units to allocate.
+ *
+ * Allocates isochronous bandwidth.  This functions allocates bandwidth
+ * _in addition_ to any previous allocations.  It may be called multiple
+ * times.  The bandwidth is automatically re-allocated if there is a bus
+ * reset.  The bandwidth is automatically released if this camera is freed
+ * or the application shuts down prematurely.  If the bandwidth needs to
+ * persist beyond the lifetime of this application, call
+ * \a dc1394_iso_set_persist() first.
+ *
+ * @return \a DC1394_SUCCESS if the operation succeeded.
+ * \a DC1394_FUNCTION_NOT_SUPPORTED if the current driver/platform does not
+ * allow bandwidth allocation. \a DC1394_NO_BANDWIDTH if there is not enough
+ * available bandwidth to support the allocation.  In this case,
+ * no bandwidth is allocated.
+ */
+dc1394error_t dc1394_iso_allocate_bandwidth (dc1394camera_t * camera,
+    int bandwidth_units);
+
+/**
+ * dc1394_iso_release_bandwidth:
+ * @param camera A camera handle.
+ * @param bandwidth_units The number of isochronous bandwidth units to free.
+ *
+ * Releases previously allocated isochronous bandwidth.  Each \a dc1394camera_t
+ * keeps track of a running total of bandwidth that has been allocated.
+ * Released bandwidth is subtracted from this total for the sake of
+ * automatic re-allocation and automatic release on shutdown.  It is also
+ * acceptable for a camera to release more bandwidth than it has allocated
+ * (to clean up for another process for example).  In this case, the
+ * running total of bandwidth is not affected.  It is acceptable to
+ * release more bandwidth than is allocated in total for the bus.  In this
+ * case, all bandwidth is released and the function succeeds.
+ *
+ * @return \a DC1394_SUCCESS if the operation succeeded.
+ * \a DC1394_FUNCTION_NOT_SUPPORTED if the current driver/platform does not
+ * allow bandwidth release.
+ */
+dc1394error_t dc1394_iso_release_bandwidth (dc1394camera_t * camera,
+    int bandwidth_units);
+
+/**
+ * dc1394_iso_release_all:
+ * @param camera A camera handle.
+ *
+ * Releases all channels and bandwidth that have been previously allocated
+ * for this dc1394camera_t.  Note that this information can only be tracked
+ * per process, and there is no knowledge of allocations for this camera
+ * by previous processes.  To release resources in such a case, the manual
+ * release functions \a dc1394_iso_release_channel() and
+ * \a dc1394_iso_release_bandwidth() must be used.
+ *
+ * @return \a DC1394_SUCCESS if the operation succeeded. \a DC1394_FAILURE
+ * if some resources were not able to be released.
+ */
+dc1394error_t dc1394_iso_release_all (dc1394camera_t * camera);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/dc1394-drivers/libdc1394/include/dc1394/log.h b/dc1394-drivers/libdc1394/include/dc1394/log.h
new file mode 100644 (file)
index 0000000..f958903
--- /dev/null
@@ -0,0 +1,255 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * Error logging functions
+ *
+ * Written by Damien Douxchamps <ddouxchamps@users.sf.net> and
+ *            Rudolf Leitgeb
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ */
+
+/***************************************************************************
+ * logging facility for libdc1394
+ *
+ * These functions provide the logging of error, warning and debug messages
+ * They allow registering of custom logging functions or the use
+ * of the builtin loggers which redirect the output to stderr.
+ * Three log levels are supported:
+ * error:   Indicates that an error has been detected which mandates
+ *          shutdown of the program as soon as feasible
+ * warning: Indicates that something happened which prevents libdc1394
+ *          from working but which could possibly be resolved by the
+ *          application or the user: plugging in a camera, resetting the
+ *          firewire bus, ....
+ * debug:   A sort of way point for the library. This log level is supposed
+ *          to report that a specific function has been entered or has
+ *          passed a certain stage. This log level is turned off by default
+ *          and may produce a lot of output during regular operation.
+ *          The main purpose for this log level is for debugging libdc1394
+ *          and for generating meaningful problem reports.
+ ***************************************************************************/
+
+#include <dc1394/dc1394.h>
+
+#ifndef __DC1394_LOG_H__
+#define __DC1394_LOG_H__
+
+/*! \file dc1394/log.h
+    \brief Functions to log errors, warning and debug messages
+    \author Damien Douxchamps: coding
+    \author Rudolf Leitgeb: coding
+    \author Peter Antoniac: documentation maintainer
+
+    More details soon
+*/
+
+/**
+ * Error codes returned by most libdc1394 functions.
+ *
+ * General rule: 0 is success, negative denotes a problem.
+ */
+typedef enum {
+    DC1394_SUCCESS                     =  0,
+    DC1394_FAILURE                     = -1,
+    DC1394_NOT_A_CAMERA                = -2,
+    DC1394_FUNCTION_NOT_SUPPORTED      = -3,
+    DC1394_CAMERA_NOT_INITIALIZED      = -4,
+    DC1394_MEMORY_ALLOCATION_FAILURE   = -5,
+    DC1394_TAGGED_REGISTER_NOT_FOUND   = -6,
+    DC1394_NO_ISO_CHANNEL              = -7,
+    DC1394_NO_BANDWIDTH                = -8,
+    DC1394_IOCTL_FAILURE               = -9,
+    DC1394_CAPTURE_IS_NOT_SET          = -10,
+    DC1394_CAPTURE_IS_RUNNING          = -11,
+    DC1394_RAW1394_FAILURE             = -12,
+    DC1394_FORMAT7_ERROR_FLAG_1        = -13,
+    DC1394_FORMAT7_ERROR_FLAG_2        = -14,
+    DC1394_INVALID_ARGUMENT_VALUE      = -15,
+    DC1394_REQ_VALUE_OUTSIDE_RANGE     = -16,
+    DC1394_INVALID_FEATURE             = -17,
+    DC1394_INVALID_VIDEO_FORMAT        = -18,
+    DC1394_INVALID_VIDEO_MODE          = -19,
+    DC1394_INVALID_FRAMERATE           = -20,
+    DC1394_INVALID_TRIGGER_MODE        = -21,
+    DC1394_INVALID_TRIGGER_SOURCE      = -22,
+    DC1394_INVALID_ISO_SPEED           = -23,
+    DC1394_INVALID_IIDC_VERSION        = -24,
+    DC1394_INVALID_COLOR_CODING        = -25,
+    DC1394_INVALID_COLOR_FILTER        = -26,
+    DC1394_INVALID_CAPTURE_POLICY      = -27,
+    DC1394_INVALID_ERROR_CODE          = -28,
+    DC1394_INVALID_BAYER_METHOD        = -29,
+    DC1394_INVALID_VIDEO1394_DEVICE    = -30,
+    DC1394_INVALID_OPERATION_MODE      = -31,
+    DC1394_INVALID_TRIGGER_POLARITY    = -32,
+    DC1394_INVALID_FEATURE_MODE        = -33,
+    DC1394_INVALID_LOG_TYPE            = -34,
+    DC1394_INVALID_BYTE_ORDER          = -35,
+    DC1394_INVALID_STEREO_METHOD       = -36,
+    DC1394_BASLER_NO_MORE_SFF_CHUNKS   = -37,
+    DC1394_BASLER_CORRUPTED_SFF_CHUNK  = -38,
+    DC1394_BASLER_UNKNOWN_SFF_CHUNK    = -39
+} dc1394error_t;
+#define DC1394_ERROR_MIN  DC1394_BASLER_UNKNOWN_SFF_CHUNK
+#define DC1394_ERROR_MAX  DC1394_SUCCESS
+#define DC1394_ERROR_NUM (DC1394_ERROR_MAX-DC1394_ERROR_MIN+1)
+
+/**
+ * Types of logging messages
+ *
+ * Three types exist:
+ * - ERROR for real, hard, unrecoverable errors that will result in the program terminating.
+ * - WARNING for things that have gone wrong, but are not requiring a termination of the program.
+ * - DEBUG for debug messages that can be very verbose but may help the developers to fix bugs.
+ */
+typedef enum {
+    DC1394_LOG_ERROR=768,
+    DC1394_LOG_WARNING,
+    DC1394_LOG_DEBUG
+} dc1394log_t;
+#define DC1394_LOG_MIN               DC1394_LOG_ERROR
+#define DC1394_LOG_MAX               DC1394_LOG_DEBUG
+#define DC1394_LOG_NUM              (DC1394_LOG_MAX - DC1394_LOG_MIN + 1)
+
+#if ! defined (_MSC_VER)
+/* Error logging/checking macros. Logs an error string on stderr and exit current function
+   if error is positive. Neg errors are messages and are thus ignored */
+
+/* Some macros to log errors, etc... conditionally */
+#define DC1394_WRN(err,message)                           \
+  do {                                                    \
+    if ((err>0)||(err<=-DC1394_ERROR_NUM))                \
+      err=DC1394_INVALID_ERROR_CODE;                      \
+                                                          \
+    if (err!=DC1394_SUCCESS) {                            \
+      dc1394_log_warning("%s: in %s (%s, line %d): %s\n", \
+      dc1394_error_get_string(err),                       \
+          __FUNCTION__, __FILE__, __LINE__, message);     \
+    }                                                     \
+  } while (0);
+
+#define DC1394_ERR(err,message)                           \
+  do {                                                    \
+    if ((err>0)||(err<=-DC1394_ERROR_NUM))                \
+      err=DC1394_INVALID_ERROR_CODE;                      \
+                                                          \
+    if (err!=DC1394_SUCCESS) {                            \
+      dc1394_log_error("%s: in %s (%s, line %d): %s\n",   \
+      dc1394_error_get_string(err),                       \
+          __FUNCTION__, __FILE__, __LINE__, message);     \
+      return;                                             \
+    }                                                     \
+  } while (0);
+
+#define DC1394_ERR_RTN(err,message)                       \
+  do {                                                    \
+    if ((err>0)||(err<=-DC1394_ERROR_NUM))                \
+      err=DC1394_INVALID_ERROR_CODE;                      \
+                                                          \
+    if (err!=DC1394_SUCCESS) {                            \
+      dc1394_log_error("%s: in %s (%s, line %d): %s\n",   \
+      dc1394_error_get_string(err),                       \
+          __FUNCTION__, __FILE__, __LINE__, message);     \
+      return err;                                         \
+    }                                                     \
+  } while (0);
+
+#define DC1394_ERR_CLN(err,cleanup,message)               \
+  do {                                                    \
+    if ((err>0)||(err<=-DC1394_ERROR_NUM))                \
+      err=DC1394_INVALID_ERROR_CODE;                      \
+                                                          \
+    if (err!=DC1394_SUCCESS) {                            \
+      dc1394_log_error("%s: in %s (%s, line %d): %s\n",   \
+      dc1394_error_get_string(err),                       \
+          __FUNCTION__, __FILE__, __LINE__, message);     \
+      cleanup;                                            \
+      return;                                             \
+    }                                                     \
+  } while (0);
+
+#define DC1394_ERR_CLN_RTN(err,cleanup,message)           \
+  do {                                                    \
+    if ((err>0)||(err<=-DC1394_ERROR_NUM))                \
+      err=DC1394_INVALID_ERROR_CODE;                      \
+                                                          \
+    if (err!=DC1394_SUCCESS) {                            \
+      dc1394_log_error("%s: in %s (%s, line %d): %s\n",   \
+      dc1394_error_get_string(err),                       \
+          __FUNCTION__, __FILE__, __LINE__, message);     \
+      cleanup;                                            \
+      return err;                                         \
+    }                                                     \
+  } while (0);
+
+
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * dc1394_log_register_handler: register log handler for reporting error, warning or debug statements
+ * Passing NULL as argument turns off this log level.
+ * @param [in] log_handler: pointer to a function which takes a character string as argument
+ *             type: the type of log
+ * @param [in] type: message type (\a debug, \a err or \a warning)
+ * @param [in] message: log message
+ */
+dc1394error_t dc1394_log_register_handler(dc1394log_t type, void(*log_handler)(dc1394log_t type,
+                                          const char *message, void* user), void* user);
+
+/**
+ * dc1394_log_set_default_handler: set the log handler to the default handler
+ * At boot time, debug logging is OFF (handler is NULL). Using this function for the debug statements
+ * will start logging of debug statements usng the default handler.
+ */
+dc1394error_t dc1394_log_set_default_handler(dc1394log_t type);
+
+/**
+ * dc1394_log_error: logs a fatal error condition to the registered facility
+ * This function shall be invoked if a fatal error condition is encountered.
+ * The message passed as argument is delivered to the registered error reporting
+ * function registered before.
+ * @param [in] format,...: error message to be logged, multiple arguments allowed (printf style)
+ */
+void dc1394_log_error(const char *format,...);
+
+/**
+ * dc1394_log_warning: logs a nonfatal error condition to the registered facility
+ * This function shall be invoked if a nonfatal error condition is encountered.
+ * The message passed as argument is delivered to the registered warning reporting
+ * function registered before.
+ * @param [in] format,...: warning message to be logged, multiple arguments allowed (printf style)
+ */
+void dc1394_log_warning(const char *format,...);
+
+/**
+ * dc1394_log_debug: logs a debug statement to the registered facility
+ * This function shall be invoked if a debug statement is to be logged.
+ * The message passed as argument is delivered to the registered debug reporting
+ * function registered before ONLY IF the environment variable DC1394_DEBUG has been set before the
+ * program starts.
+ * @param [in] format,...: debug statement to be logged, multiple arguments allowed (printf style)
+ */
+void dc1394_log_debug(const char *format,...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/dc1394-drivers/libdc1394/include/dc1394/register.h b/dc1394-drivers/libdc1394/include/dc1394/register.h
new file mode 100644 (file)
index 0000000..482c644
--- /dev/null
@@ -0,0 +1,229 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * Low-level register access functions
+ *
+ * Written by Damien Douxchamps <ddouxchamps@users.sf.net>
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __DC1394_REGISTER_H__
+#define __DC1394_REGISTER_H__
+
+/*! \file dc1394/register.h
+    \brief Functions to directly access camera registers.
+    \author Damien Douxchamps: coding
+    \author Peter Antoniac: documentation maintainer
+
+    More details soon
+*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * No Docs
+ */
+dc1394error_t dc1394_get_registers (dc1394camera_t *camera,
+        uint64_t offset, uint32_t *value, uint32_t num_regs);
+
+/**
+ * No Docs
+ */
+static inline dc1394error_t dc1394_get_register (dc1394camera_t *camera,
+        uint64_t offset, uint32_t *value)
+{
+    return dc1394_get_registers (camera, offset, value, 1);
+}
+
+/**
+ * No Docs
+ */
+dc1394error_t dc1394_set_registers (dc1394camera_t *camera,
+        uint64_t offset, const uint32_t *value, uint32_t num_regs);
+
+/**
+ * No Docs
+ */
+static inline dc1394error_t dc1394_set_register (dc1394camera_t *camera,
+                                                 uint64_t offset, uint32_t value)
+{
+    return dc1394_set_registers (camera, offset, &value, 1);
+}
+
+
+/********************************************************************************/
+/* Get/Set Command Registers                                                    */
+/********************************************************************************/
+
+/**
+ * No Docs
+ */
+dc1394error_t dc1394_get_control_registers (dc1394camera_t *camera,
+    uint64_t offset, uint32_t *value, uint32_t num_regs);
+
+/**
+ * No Docs
+ */
+static inline dc1394error_t dc1394_get_control_register (dc1394camera_t *camera,
+    uint64_t offset, uint32_t *value)
+{
+    return dc1394_get_control_registers (camera, offset, value, 1);
+}
+
+/**
+ * No Docs
+ */
+dc1394error_t dc1394_set_control_registers (dc1394camera_t *camera,
+        uint64_t offset, const uint32_t *value, uint32_t num_regs);
+
+/**
+ * No Docs
+ */
+static inline dc1394error_t dc1394_set_control_register (dc1394camera_t *camera,
+    uint64_t offset, uint32_t value)
+{
+    return dc1394_set_control_registers (camera, offset, &value, 1);
+}
+
+
+/********************************************************************************/
+/* Get/Set Advanced Features Registers                                          */
+/********************************************************************************/
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_get_adv_control_registers(dc1394camera_t *camera, uint64_t offset, uint32_t *value, uint32_t num_regs);
+
+/**
+ * No Docs
+ */
+static inline dc1394error_t
+dc1394_get_adv_control_register(dc1394camera_t *camera, uint64_t offset, uint32_t *value)
+{
+    return dc1394_get_adv_control_registers(camera, offset, value, 1);
+}
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_set_adv_control_registers(dc1394camera_t *camera, uint64_t offset,
+        const uint32_t *value, uint32_t num_regs);
+
+/**
+ * No Docs
+ */
+static inline dc1394error_t
+dc1394_set_adv_control_register(dc1394camera_t *camera, uint64_t offset, uint32_t value)
+{
+    return dc1394_set_adv_control_registers(camera, offset, &value, 1);
+}
+
+
+/********************************************************************************/
+/* Get/Set Format_7 Registers                                                   */
+/********************************************************************************/
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_get_format7_register(dc1394camera_t *camera, unsigned int mode, uint64_t offset, uint32_t *value);
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_set_format7_register(dc1394camera_t *camera, unsigned int mode, uint64_t offset, uint32_t value);
+
+
+/********************************************************************************/
+/* Get/Set Absolute Control Registers                                           */
+/********************************************************************************/
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_get_absolute_register(dc1394camera_t *camera, unsigned int feature, uint64_t offset, uint32_t *value);
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_set_absolute_register(dc1394camera_t *camera, unsigned int feature, uint64_t offset, uint32_t value);
+
+
+/********************************************************************************/
+/* Get/Set PIO Feature Registers                                                */
+/********************************************************************************/
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_get_PIO_register(dc1394camera_t *camera, uint64_t offset, uint32_t *value);
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_set_PIO_register(dc1394camera_t *camera, uint64_t offset, uint32_t value);
+
+
+/********************************************************************************/
+/* Get/Set SIO Feature Registers                                                */
+/********************************************************************************/
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_get_SIO_register(dc1394camera_t *camera, uint64_t offset, uint32_t *value);
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_set_SIO_register(dc1394camera_t *camera, uint64_t offset, uint32_t value);
+
+
+/********************************************************************************/
+/* Get/Set Strobe Feature Registers                                             */
+/********************************************************************************/
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_get_strobe_register(dc1394camera_t *camera, uint64_t offset, uint32_t *value);
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_set_strobe_register(dc1394camera_t *camera, uint64_t offset, uint32_t value);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __DC1394_REGISTER_H__ */
diff --git a/dc1394-drivers/libdc1394/include/dc1394/types.h b/dc1394-drivers/libdc1394/include/dc1394/types.h
new file mode 100644 (file)
index 0000000..083941b
--- /dev/null
@@ -0,0 +1,166 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * A few type definitions
+ *
+ * Written by Damien Douxchamps <ddouxchamps@users.sf.net>
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __DC1394_TYPES_H__
+#define __DC1394_TYPES_H__
+
+/*! \file dc1394/types.h
+    \brief Various types that must be defined here
+
+    More details soon
+*/
+
+#include <stdint.h>
+
+/**
+ * Enumeration of video modes. Note that the notion of IIDC "format" is not present here, except in the format_7 name.
+ */
+typedef enum {
+    DC1394_VIDEO_MODE_160x120_YUV444= 64,
+    DC1394_VIDEO_MODE_320x240_YUV422,
+    DC1394_VIDEO_MODE_640x480_YUV411,
+    DC1394_VIDEO_MODE_640x480_YUV422,
+    DC1394_VIDEO_MODE_640x480_RGB8,
+    DC1394_VIDEO_MODE_640x480_MONO8,
+    DC1394_VIDEO_MODE_640x480_MONO16,
+    DC1394_VIDEO_MODE_800x600_YUV422,
+    DC1394_VIDEO_MODE_800x600_RGB8,
+    DC1394_VIDEO_MODE_800x600_MONO8,
+    DC1394_VIDEO_MODE_1024x768_YUV422,
+    DC1394_VIDEO_MODE_1024x768_RGB8,
+    DC1394_VIDEO_MODE_1024x768_MONO8,
+    DC1394_VIDEO_MODE_800x600_MONO16,
+    DC1394_VIDEO_MODE_1024x768_MONO16,
+    DC1394_VIDEO_MODE_1280x960_YUV422,
+    DC1394_VIDEO_MODE_1280x960_RGB8,
+    DC1394_VIDEO_MODE_1280x960_MONO8,
+    DC1394_VIDEO_MODE_1600x1200_YUV422,
+    DC1394_VIDEO_MODE_1600x1200_RGB8,
+    DC1394_VIDEO_MODE_1600x1200_MONO8,
+    DC1394_VIDEO_MODE_1280x960_MONO16,
+    DC1394_VIDEO_MODE_1600x1200_MONO16,
+    DC1394_VIDEO_MODE_EXIF,
+    DC1394_VIDEO_MODE_FORMAT7_0,
+    DC1394_VIDEO_MODE_FORMAT7_1,
+    DC1394_VIDEO_MODE_FORMAT7_2,
+    DC1394_VIDEO_MODE_FORMAT7_3,
+    DC1394_VIDEO_MODE_FORMAT7_4,
+    DC1394_VIDEO_MODE_FORMAT7_5,
+    DC1394_VIDEO_MODE_FORMAT7_6,
+    DC1394_VIDEO_MODE_FORMAT7_7
+} dc1394video_mode_t;
+#define DC1394_VIDEO_MODE_MIN            DC1394_VIDEO_MODE_160x120_YUV444
+#define DC1394_VIDEO_MODE_MAX       DC1394_VIDEO_MODE_FORMAT7_7
+#define DC1394_VIDEO_MODE_NUM      (DC1394_VIDEO_MODE_MAX - DC1394_VIDEO_MODE_MIN + 1)
+
+/* Special min/max are defined for Format_7 */
+#define DC1394_VIDEO_MODE_FORMAT7_MIN       DC1394_VIDEO_MODE_FORMAT7_0
+#define DC1394_VIDEO_MODE_FORMAT7_MAX       DC1394_VIDEO_MODE_FORMAT7_7
+#define DC1394_VIDEO_MODE_FORMAT7_NUM      (DC1394_VIDEO_MODE_FORMAT7_MAX - DC1394_VIDEO_MODE_FORMAT7_MIN + 1)
+
+/**
+ * Enumeration of colour codings. For details on the data format please read the IIDC specifications.
+ */
+typedef enum {
+    DC1394_COLOR_CODING_MONO8= 352,
+    DC1394_COLOR_CODING_YUV411,
+    DC1394_COLOR_CODING_YUV422,
+    DC1394_COLOR_CODING_YUV444,
+    DC1394_COLOR_CODING_RGB8,
+    DC1394_COLOR_CODING_MONO16,
+    DC1394_COLOR_CODING_RGB16,
+    DC1394_COLOR_CODING_MONO16S,
+    DC1394_COLOR_CODING_RGB16S,
+    DC1394_COLOR_CODING_RAW8,
+    DC1394_COLOR_CODING_RAW16
+} dc1394color_coding_t;
+#define DC1394_COLOR_CODING_MIN     DC1394_COLOR_CODING_MONO8
+#define DC1394_COLOR_CODING_MAX     DC1394_COLOR_CODING_RAW16
+#define DC1394_COLOR_CODING_NUM    (DC1394_COLOR_CODING_MAX - DC1394_COLOR_CODING_MIN + 1)
+
+/**
+ * RAW sensor filters. These elementary tiles tesselate the image plane in RAW modes. RGGB should be interpreted in 2D as
+ *
+ *    RG
+ *    GB
+ *
+ * and similarly for other filters.
+ */
+typedef enum {
+    DC1394_COLOR_FILTER_RGGB = 512,
+    DC1394_COLOR_FILTER_GBRG,
+    DC1394_COLOR_FILTER_GRBG,
+    DC1394_COLOR_FILTER_BGGR
+} dc1394color_filter_t;
+#define DC1394_COLOR_FILTER_MIN        DC1394_COLOR_FILTER_RGGB
+#define DC1394_COLOR_FILTER_MAX        DC1394_COLOR_FILTER_BGGR
+#define DC1394_COLOR_FILTER_NUM       (DC1394_COLOR_FILTER_MAX - DC1394_COLOR_FILTER_MIN + 1)
+
+/**
+ * Byte order for YUV formats (may be expanded to RGB in the future)
+ *
+ * IIDC cameras always return data in UYVY order, but conversion functions can change this if requested.
+ */
+typedef enum {
+    DC1394_BYTE_ORDER_UYVY=800,
+    DC1394_BYTE_ORDER_YUYV
+} dc1394byte_order_t;
+#define DC1394_BYTE_ORDER_MIN        DC1394_BYTE_ORDER_UYVY
+#define DC1394_BYTE_ORDER_MAX        DC1394_BYTE_ORDER_YUYV
+#define DC1394_BYTE_ORDER_NUM       (DC1394_BYTE_ORDER_MAX - DC1394_BYTE_ORDER_MIN + 1)
+
+/**
+ * A struct containing a list of color codings
+ */
+typedef struct
+{
+    uint32_t                num;
+    dc1394color_coding_t    codings[DC1394_COLOR_CODING_NUM];
+} dc1394color_codings_t;
+
+/**
+ * A struct containing a list of video modes
+ */
+typedef struct
+{
+    uint32_t                num;
+    dc1394video_mode_t      modes[DC1394_VIDEO_MODE_NUM];
+} dc1394video_modes_t;
+
+/**
+ * Yet another boolean data type
+ */
+typedef enum {
+    DC1394_FALSE= 0,
+    DC1394_TRUE
+} dc1394bool_t;
+
+/**
+ * Yet another boolean data type, a bit more oriented towards electrical-engineers
+ */
+typedef enum {
+    DC1394_OFF= 0,
+    DC1394_ON
+} dc1394switch_t;
+
+
+#endif
diff --git a/dc1394-drivers/libdc1394/include/dc1394/utils.h b/dc1394-drivers/libdc1394/include/dc1394/utils.h
new file mode 100644 (file)
index 0000000..e1c6ea9
--- /dev/null
@@ -0,0 +1,105 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * Utilities
+ *
+ * Written by Damien Douxchamps <ddouxchamps@users.sf.net>
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __DC1394_UTILS_H__
+#define __DC1394_UTILS_H__
+
+/*! \file dc1394/utils.h
+    \brief Utility functions
+    \author Damien Douxchamps: coding
+    \author Peter Antoniac: documentation maintainer
+
+    More details soon
+*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Returns the image width and height (in pixels) corresponding to a video mode. Works for scalable and non-scalable video modes.
+ */
+dc1394error_t dc1394_get_image_size_from_video_mode(dc1394camera_t *camera, uint32_t video_mode, uint32_t *width, uint32_t *height);
+
+/**
+ * Returns the given framerate as a float.
+ */
+dc1394error_t dc1394_framerate_as_float(dc1394framerate_t framerate_enum, float *framerate);
+
+/**
+ * Returns the number of bits per pixel for a certain color coding. This is the size of the data sent on the bus, the effective
+ * data depth may vary. Example: RGB16 is 16, YUV411 is 8, YUV422 is 8.
+ */
+dc1394error_t dc1394_get_color_coding_data_depth(dc1394color_coding_t color_coding, uint32_t * bits);
+
+/**
+ * Returns the bit-space used by a pixel. This is different from the data depth! For instance, RGB16 has a bit space of 48 bits,
+ * YUV422 is 16bits and YU411 is 12bits. 
+ */
+dc1394error_t dc1394_get_color_coding_bit_size(dc1394color_coding_t color_coding, uint32_t* bits);
+
+/**
+ * Returns the color coding from the video mode. Works with scalable image formats too.
+ */
+dc1394error_t dc1394_get_color_coding_from_video_mode(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394color_coding_t *color_coding);
+
+/**
+ * Tells whether the color mode is color or monochrome
+ */
+dc1394error_t dc1394_is_color(dc1394color_coding_t color_mode, dc1394bool_t *is_color);
+
+/**
+ * Tells whether the video mode is scalable or not.
+ */
+dc1394bool_t dc1394_is_video_mode_scalable(dc1394video_mode_t video_mode);
+
+/**
+ * Tells whether the video mode is "still image" or not ("still image" is currently not supported by any cameras on the market)
+ */
+dc1394bool_t dc1394_is_video_mode_still_image(dc1394video_mode_t video_mode);
+
+/**
+ * Tells whether two IDs refer to the same physical camera unit.
+ */
+dc1394bool_t dc1394_is_same_camera(dc1394camera_id_t id1, dc1394camera_id_t id2);
+
+/**
+ * Returns a descriptive name for a feature 
+ */
+const char * dc1394_feature_get_string(dc1394feature_t feature);
+
+/**
+ * Returns a descriptive string for an error code
+ */
+const char * dc1394_error_get_string(dc1394error_t error);
+
+/**
+ * Calculates the CRC16 checksum of a memory region. Useful to verify the CRC of an image buffer, for instance.
+ */
+uint16_t dc1394_checksum_crc16 (const uint8_t* buffer, uint32_t buffer_size);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DC1394_UTILS_H */
+
diff --git a/dc1394-drivers/libdc1394/include/dc1394/vendor/avt.h b/dc1394-drivers/libdc1394/include/dc1394/vendor/avt.h
new file mode 100644 (file)
index 0000000..885f2a6
--- /dev/null
@@ -0,0 +1,467 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * Allied Vision Technologies (AVT) specific extensions
+ * 
+ * Written by Pierre MOOS <pierre.moos@gmail.com>
+ *
+ * Copyright (C) 2005 Inria Sophia-Antipolis
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __DC1394_VENDOR_AVT_H__
+#define __DC1394_VENDOR_AVT_H__
+
+#include <stdint.h>
+#include <dc1394/types.h>
+#include <dc1394/log.h>
+
+/*! \file dc1394/vendor/avt.h
+    \brief No docs yet
+
+    More details soon
+*/
+typedef struct __dc1394_avt_adv_feature_info_struct
+{
+    uint32_t feature_id;
+    dc1394bool_t features_requested;
+    /************************************************************************/
+    dc1394bool_t MaxResolution;      //ADV_INQ_1 0
+    dc1394bool_t TimeBase;           //ADV_INQ_1 1
+    dc1394bool_t ExtdShutter;        //ADV_INQ_1 2
+    dc1394bool_t TestImage;          //ADV_INQ_1 3
+    dc1394bool_t FrameInfo;          //ADV_INQ_1 4
+    dc1394bool_t Sequences;          //ADV_INQ_1 5
+    dc1394bool_t VersionInfo;        //ADV_INQ_1 6
+    //ADV_INQ_1 7
+    dc1394bool_t Lookup_Tables;      //ADV_INQ_1 8
+    dc1394bool_t Shading;            //ADV_INQ_1 9
+    dc1394bool_t DeferredTrans;      //ADV_INQ_1 10
+    dc1394bool_t HDR_Mode;           //ADV_INQ_1 11
+    dc1394bool_t DSNU;               //ADV_INQ_1 12
+    dc1394bool_t BlemishCorrection;  //ADV_INQ_1 13
+    dc1394bool_t TriggerDelay;       //ADV_INQ_1 14
+    dc1394bool_t MirrorImage;        //ADV_INQ_1 15
+    dc1394bool_t SoftReset;          //ADV_INQ_1 16
+    dc1394bool_t HSNR;               //ADV_INQ_1 17
+    dc1394bool_t ColorCorrection;    //ADV_INQ_1 18
+    dc1394bool_t UserProfiles;       //ADV_INQ_1 19
+    //ADV_INQ_1 20
+    dc1394bool_t UserSets;           //ADV_INQ_1 21
+    dc1394bool_t TimeStamp;          //ADV_INQ_1 22
+    dc1394bool_t FrmCntStamp;        //ADV_INQ_1 23
+    dc1394bool_t TrgCntStamp;        //ADV_INQ_1 24
+    //ADV_INQ_1 25-30
+    dc1394bool_t GP_Buffer;          //ADV_INQ_1 31
+    /************************************************************************/
+    dc1394bool_t Input_1;            //ADV_INQ_2 0
+    dc1394bool_t Input_2;            //ADV_INQ_2 1
+    //ADV_INQ_2 2-7
+    dc1394bool_t Output_1;           //ADV_INQ_2 8
+    dc1394bool_t Output_2;           //ADV_INQ_2 9
+    dc1394bool_t Output_3;           //ADV_INQ_2 10
+    dc1394bool_t Output_4;           //ADV_INQ_2 11
+    //ADV_INQ_2 12-15
+    dc1394bool_t IntEnaDelay;        //ADV_INQ_2 16
+    dc1394bool_t IncDecoder;         //ADV_INQ_2 17
+    //ADV_INQ_2 18-31
+    /************************************************************************/
+    dc1394bool_t CameraStatus;       //ADV_INQ_3 0
+    //ADV_INQ_3 1-3
+    dc1394bool_t AutoShutter;        //ADV_INQ_3 4
+    dc1394bool_t AutoGain;           //ADV_INQ_3 5
+    dc1394bool_t AutoFunctionAOI;    //ADV_INQ_3 6
+    //ADV_INQ_3 7-31
+    /************************************************************************/
+    dc1394bool_t HDRPike;            //ADV_INQ_4 0
+    //ADV_INQ_4 1-31
+
+
+} dc1394_avt_adv_feature_info_t;
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/**
+ * Retrieve the firmware version, FPGA version and the camera ID
+ */
+dc1394error_t dc1394_avt_get_version(dc1394camera_t *camera,
+                                     uint32_t *UCType,
+                                     uint32_t *Version,
+                                     uint32_t *Camera_ID,
+                                     uint32_t *FPGA_Version);
+
+
+
+/**
+ * Retrieve the supported features
+ */
+dc1394error_t dc1394_avt_get_advanced_feature_inquiry(dc1394camera_t *camera,
+                                                      dc1394_avt_adv_feature_info_t *adv_feature);
+
+/**
+ * Print the supported features requested
+ */
+dc1394error_t dc1394_avt_print_advanced_feature(dc1394_avt_adv_feature_info_t *adv_feature);
+
+/**
+ * Retrieve if shading is on and the number of frames used to compute the shading reference frame
+ */
+dc1394error_t dc1394_avt_get_shading(dc1394camera_t *camera,
+                                     dc1394bool_t *on_off,
+                                     dc1394bool_t *compute,
+                                     dc1394bool_t *show, uint32_t *frame_nb);
+
+/**
+ * Set the shading to on/off and the number of frames used to compute the shading reference frame
+ */
+dc1394error_t dc1394_avt_set_shading(dc1394camera_t *camera,
+                                     dc1394bool_t on_off, dc1394bool_t compute,
+                                     dc1394bool_t show, uint32_t frame_nb);
+
+/**
+ * Retrieve write and read access mode of the shading reference frame
+ */
+dc1394error_t dc1394_avt_get_shading_mem_ctrl(dc1394camera_t *camera,
+                                              dc1394bool_t *en_write,
+                                              dc1394bool_t *en_read,
+                                              uint32_t *addroffset);
+
+/**
+ * Set write and read access mode of the shading reference frame
+ */
+dc1394error_t dc1394_avt_set_shading_mem_ctrl(dc1394camera_t *camera,
+                                              dc1394bool_t en_write,
+                                              dc1394bool_t en_read,
+                                              uint32_t addroffset);
+
+/**
+ * Retrieve the max size of a shading image
+ */
+dc1394error_t dc1394_avt_get_shading_info(dc1394camera_t *camera,
+                                          uint32_t *MaxImageSize);
+
+/**
+ * Retrieve if on/off, the nb of kneepoints used and the kneepoints values
+ */
+dc1394error_t dc1394_avt_get_multiple_slope(dc1394camera_t *camera,
+                                            dc1394bool_t *on_off,
+                                            uint32_t *points_nb,
+                                            uint32_t *kneepoint1,
+                                            uint32_t *kneepoint2,
+                                            uint32_t *kneepoint3);
+
+/**
+ * Set on/off, the nb of kneepoints to use and the kneepoints values
+ */
+dc1394error_t dc1394_avt_set_multiple_slope(dc1394camera_t *camera,
+                                            dc1394bool_t on_off,
+                                            uint32_t points_nb,
+                                            uint32_t kneepoint1,
+                                            uint32_t kneepoint2,
+                                            uint32_t kneepoint3);
+
+/**
+ * Get the timebase value with an Id. See Manual for correspondance
+ */
+dc1394error_t dc1394_avt_get_timebase(dc1394camera_t *camera,
+                                      uint32_t *timebase_id);
+
+/**
+ * Set the timebase value with an Id. See Manual for correspondance
+ */
+dc1394error_t dc1394_avt_set_timebase(dc1394camera_t *camera,
+                                      uint32_t timebase_id);
+
+/**
+ * Get the extented shutter value in us
+ */
+dc1394error_t dc1394_avt_get_extented_shutter(dc1394camera_t *camera,
+                                              uint32_t *timebase_id);
+
+/**
+ * Set the extented shutter value in us
+ */
+dc1394error_t dc1394_avt_set_extented_shutter(dc1394camera_t *camera,
+                                              uint32_t timebase_id);
+
+/**
+ * Get the Max reachable resolution
+ */
+dc1394error_t dc1394_avt_get_MaxResolution(dc1394camera_t *camera,
+                                           uint32_t *MaxHeight,
+                                           uint32_t *MaxWidth);
+
+/**
+ * Get min and max shutter values for autoshutter
+ */
+dc1394error_t dc1394_avt_get_auto_shutter(dc1394camera_t *camera,
+                                          uint32_t *MinValue,
+                                          uint32_t *MaxValue);
+
+/**
+ * Set min and max shutter values for autoshutter
+ */
+dc1394error_t dc1394_avt_set_auto_shutter(dc1394camera_t *camera,
+                                          uint32_t MinValue,
+                                          uint32_t MaxValue);
+
+/**
+ * Get min and max gain values for autogain
+ */
+dc1394error_t dc1394_avt_get_auto_gain(dc1394camera_t *camera,
+                                       uint32_t *MinValue,
+                                       uint32_t *MaxValue);
+
+/**
+ * Set min and max gain values for autogain
+ */
+dc1394error_t dc1394_avt_set_auto_gain(dc1394camera_t *camera,
+                                       uint32_t MinValue,
+                                       uint32_t MaxValue);
+
+/**
+ * Get if trigger delay on and the trigger delay
+ */
+dc1394error_t dc1394_avt_get_trigger_delay(dc1394camera_t *camera,
+                                           dc1394bool_t *on_off,
+                                           uint32_t *DelayTime);
+
+/**
+ * Set trigger delay on/off  and the trigger delay value
+ */
+dc1394error_t dc1394_avt_set_trigger_delay(dc1394camera_t *camera,
+                                           dc1394bool_t on_off,
+                                           uint32_t DelayTime);
+
+/**
+ * Get mirror mode
+ */
+dc1394error_t dc1394_avt_get_mirror(dc1394camera_t *camera,
+                                    dc1394bool_t *on_off);
+
+/**
+ * Set mirror mode
+ */
+dc1394error_t dc1394_avt_set_mirror(dc1394camera_t *camera,
+                                    dc1394bool_t on_off);
+
+/**
+ * Get DSNU mode and num of frames used for computing  dsnu correction
+ */
+dc1394error_t dc1394_avt_get_dsnu(dc1394camera_t *camera,
+                                  dc1394bool_t *on_off,
+                                  uint32_t *frame_nb);
+
+/**
+ * Set DSNU mode, number of frames used for computing and launch the the computation of the dsnu frame
+ */
+dc1394error_t dc1394_avt_set_dsnu(dc1394camera_t *camera,
+                                  dc1394bool_t on_off, dc1394bool_t compute,
+                                  uint32_t frame_nb);
+
+/**
+ * Get Blemish mode and num of frames used for computing the correction
+ */
+dc1394error_t dc1394_avt_get_blemish(dc1394camera_t *camera,
+                                     dc1394bool_t *on_off, uint32_t *frame_nb);
+
+/**
+ * Set Blemish mode, num of frames used for computing and launch the the computation of the blemish correction
+ */
+dc1394error_t dc1394_avt_set_blemish(dc1394camera_t *camera,
+                                     dc1394bool_t on_off, dc1394bool_t compute,
+                                     uint32_t frame_nb);
+
+/**
+ * Get the polarity, the mode, the state of the IO
+ */
+dc1394error_t dc1394_avt_get_io(dc1394camera_t *camera, uint32_t IO,
+                                dc1394bool_t *polarity, uint32_t *mode,
+                                dc1394bool_t *pinstate);
+
+/**
+ * Set the polarity, the mode and the state of the IO
+ */
+dc1394error_t dc1394_avt_set_io(dc1394camera_t *camera,uint32_t IO,
+                                dc1394bool_t polarity, uint32_t mode,
+                                dc1394bool_t pinstate);
+
+/**
+ * Reset the bus and the fpga
+ */
+dc1394error_t dc1394_avt_reset(dc1394camera_t *camera);
+
+/**
+ * Get on/off and the num of the current lut loaded
+ */
+dc1394error_t dc1394_avt_get_lut(dc1394camera_t *camera,
+                                 dc1394bool_t *on_off, uint32_t *lutnb  );
+
+/**
+ * Set on/off and the num of the current lut to loa
+ */
+dc1394error_t dc1394_avt_set_lut(dc1394camera_t *camera,
+                                 dc1394bool_t on_off, uint32_t lutnb);
+
+/**
+ * Get access mode of a lut
+ */
+dc1394error_t dc1394_avt_get_lut_mem_ctrl(dc1394camera_t *camera,
+                                          dc1394bool_t *en_write,
+                                          uint32_t * AccessLutNo,
+                                          uint32_t *addroffset);
+
+/**
+ * Set access mode of a lut
+ */
+dc1394error_t dc1394_avt_set_lut_mem_ctrl(dc1394camera_t *camera,
+                                          dc1394bool_t en_write,
+                                          uint32_t AccessLutNo,
+                                          uint32_t addroffset);
+
+/**
+ * Get num of luts present and the max size
+ */
+dc1394error_t dc1394_avt_get_lut_info(dc1394camera_t *camera,
+                                      uint32_t *NumOfLuts, uint32_t *MaxLutSize);
+
+/**
+ * Get on/off and area
+ */
+dc1394error_t dc1394_avt_get_aoi(dc1394camera_t *camera,
+                                 dc1394bool_t *on_off, int *left, int *top,
+                                 int *width, int *height);
+
+/**
+ * Set on/off and area
+ */
+dc1394error_t dc1394_avt_set_aoi(dc1394camera_t *camera,
+                                 dc1394bool_t on_off,int left, int top,
+                                 int width, int height);
+
+/**
+ * Get current test image
+ */
+dc1394error_t dc1394_avt_get_test_images(dc1394camera_t *camera,
+                                         uint32_t *image_no);
+
+/**
+ * Set num of test image
+ */
+dc1394error_t dc1394_avt_set_test_images(dc1394camera_t *camera,
+                                         uint32_t image_no);
+
+/**
+ * Get the number of captured frames
+ */
+dc1394error_t dc1394_avt_get_frame_info(dc1394camera_t *camera,
+                                        uint32_t *framecounter);
+
+/**
+ * Reset frame counter
+ */
+dc1394error_t dc1394_avt_reset_frame_info(dc1394camera_t *camera);
+
+/**
+ * Get the size of the buffer
+ */
+dc1394error_t dc1394_avt_get_gpdata_info(dc1394camera_t *camera,
+                                         uint32_t *BufferSize);
+
+/**
+ * Get the fifo control mode
+ */
+dc1394error_t dc1394_avt_get_deferred_trans(dc1394camera_t *camera,
+                                            dc1394bool_t *HoldImage,
+                                            dc1394bool_t * FastCapture,
+                                            uint32_t *FifoSize,
+                                            uint32_t *NumOfImages );
+
+/**
+ * Set the fifo control mode
+ */
+dc1394error_t dc1394_avt_set_deferred_trans(dc1394camera_t *camera,
+                                            dc1394bool_t HoldImage,
+                                            dc1394bool_t  FastCapture,
+                                            uint32_t FifoSize,
+                                            uint32_t NumOfImages,
+                                            dc1394bool_t SendImage );
+
+/**
+ * Read size number of bytes from GPData buffe
+ */
+dc1394error_t dc1394_avt_read_gpdata(dc1394camera_t *camera, unsigned char *buf,
+                                     uint32_t size);
+
+/**
+ * Write size number of bytes to GPData buffer
+ */
+dc1394error_t dc1394_avt_write_gpdata(dc1394camera_t *camera,
+                                      unsigned char *buf, uint32_t size);
+
+/**
+ * Read shading image from camera into buffer
+ */
+dc1394error_t dc1394_avt_read_shading_img(dc1394camera_t *camera,
+                                          unsigned char *buf, uint32_t size);
+
+/**
+ * Write shading image from buffer to camera
+ */
+dc1394error_t dc1394_avt_write_shading_img(dc1394camera_t *camera,
+                                           unsigned char *buf, uint32_t size);
+
+/**
+ * Read channel adjust (AVT Pike)
+ */
+dc1394error_t dc1394_avt_get_channel_adjust(dc1394camera_t *camera,
+                                                int16_t *channel_adjust);
+
+/**
+ * Write channel adjust (AVT Pike)
+ */
+dc1394error_t dc1394_avt_set_channel_adjust(dc1394camera_t *camera,
+                                                int16_t channel_adjust);
+
+/**
+ * Set Color Correction + Coefficients
+ */
+dc1394error_t dc1394_avt_set_color_corr(dc1394camera_t *camera, dc1394bool_t on_off, dc1394bool_t reset,
+                int32_t Crr, int32_t Cgr, int32_t Cbr, int32_t Crg, int32_t Cgg, int32_t Cbg, int32_t Crb, int32_t Cgb, int32_t Cbb);
+
+/**
+ * Get Color Correction + Coefficients
+ */
+dc1394error_t dc1394_avt_get_color_corr(dc1394camera_t *camera, dc1394bool_t *on_off,
+                int32_t *Crr, int32_t *Cgr, int32_t *Cbr, int32_t *Crg, int32_t *Cgg, int32_t *Cbg, int32_t *Crb, int32_t *Cgb, int32_t *Cbb);
+
+/**
+ * Get HSNR
+ */
+dc1394error_t dc1394_avt_get_hsnr(dc1394camera_t *camera, dc1394bool_t *on_off, uint32_t *grabCount);
+
+/**
+ * Set HSNR
+ */
+dc1394error_t dc1394_avt_set_hsnr(dc1394camera_t *camera, dc1394bool_t on_off, uint32_t grabCount);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/dc1394-drivers/libdc1394/include/dc1394/vendor/basler.h b/dc1394-drivers/libdc1394/include/dc1394/vendor/basler.h
new file mode 100644 (file)
index 0000000..1469677
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * Basler Smart Feature Framework specific extensions
+ * 
+ * Written by Mikael Olenfalk <mikael _DOT_ olenfalk _AT_ tobii _DOT_ com>
+ *
+ * Copyright (C) 2006 Tobii Technology AB, Stockholm Sweden
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __DC1394_VENDOR_BASLER_H__
+#define __DC1394_VENDOR_BASLER_H__
+
+#include "basler_sff.h"
+
+/*! \file dc1394/vendor/basler.h
+    \brief No docs yet
+
+    More details soon
+*/
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Tests whether the camera supports Basler SFF
+ */
+dc1394error_t dc1394_basler_sff_is_available (dc1394camera_t* camera, dc1394bool_t *available);
+
+/**
+ * Tests whether the camera supports the specified SFF feature
+ */
+dc1394error_t dc1394_basler_sff_feature_is_available (dc1394camera_t* camera, dc1394basler_sff_feature_t feature_id, dc1394bool_t *available);
+
+/**
+ * Enables or disables a specific feature
+ */
+dc1394error_t dc1394_basler_sff_feature_enable (dc1394camera_t* camera, dc1394basler_sff_feature_t feature_id, dc1394switch_t on_off);
+
+/**
+ * checks if a feature has been enabled
+ */
+dc1394error_t dc1394_basler_sff_feature_is_enabled (dc1394camera_t* camera, dc1394basler_sff_feature_t feature_id, dc1394bool_t *is_enabled);
+
+/**
+ * Checks the crc checksum of the supplied frame
+ */
+dc1394bool_t dc1394_basler_sff_check_crc (const uint8_t* frame_buffer, uint32_t frame_size);
+
+/**
+ * Initializes an iteration
+ */
+dc1394error_t dc1394_basler_sff_chunk_iterate_init (dc1394basler_sff_t* chunk, void *frame_buffer, uint32_t frame_size, dc1394bool_t has_crc_checksum);
+
+/**
+ * Iterates over the available SFF chunks in the frame buffer
+ */
+dc1394error_t dc1394_basler_sff_chunk_iterate (dc1394basler_sff_t* chunk);
+
+/**
+ * Finds a specific SFF chunk in the frame buffer
+ */
+dc1394error_t dc1394_basler_sff_chunk_find (dc1394basler_sff_feature_t feature_id, void** chunk_data, void* frame_buffer, uint32_t frame_size, dc1394bool_t has_crc_checksum);
+
+/**
+ * prints info about one feature
+ */
+dc1394error_t dc1394_basler_sff_feature_print (dc1394camera_t* camera, dc1394basler_sff_feature_t feature_id, FILE *fd);
+
+/**
+ * prints info about all features
+ */
+dc1394error_t dc1394_basler_sff_feature_print_all (dc1394camera_t* camera, FILE *fd);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/dc1394-drivers/libdc1394/include/dc1394/vendor/basler_sff.h b/dc1394-drivers/libdc1394/include/dc1394/vendor/basler_sff.h
new file mode 100644 (file)
index 0000000..69177be
--- /dev/null
@@ -0,0 +1,303 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * Basler Smart Feature Framework specific extensions
+ * 
+ * Written by Mikael Olenfalk <mikael _DOT_ olenfalk _AT_ tobii _DOT_ com>
+ *
+ * Copyright (C) 2006 Tobii Technology AB, Stockholm Sweden
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __DC1394_VENDOR_BASLER_SFF_H__
+#define __DC1394_VENDOR_BASLER_SFF_H__
+
+#include <stdint.h>
+/*! \file dc1394/vendor/basler_sff.h
+    \brief No docs yet
+
+    More details soon
+*/
+
+/**
+ * \struct dc1394basler_sff_guid_t
+ * Basler SFF Guid struct, this structure is used to identify chunks and to
+ * request features from the camera, is basically just a normal GUID value
+ */
+typedef struct __dc1394basler_sff_guid_t {
+  uint32_t d1;
+  uint16_t d2, d3;
+  uint8_t  d4[8];
+} dc1394basler_sff_guid_t;
+
+/**
+ * \struct dc1394basler_sff_chunk_tail_t
+ * SFF chunks are read from the end to the beginning (that is backwards),
+ * each chunk ends in a chunk-tail, which contains information about the
+ * size of the chunk as well as the GUID used to identify which chunk this
+ * really is.
+ */
+typedef struct __dc1394basler_sff_chunk_tail_t {
+  dc1394basler_sff_guid_t chunk_guid; /**< the chunk GUID, this is different from
+             the CSR GUID used to request the feature */
+  uint32_t chunk_size; /**< the size of this chunk, including this struct */
+  uint32_t inverted_chunk_size; /**< the bitwise complement of the chunk size */
+} dc1394basler_sff_chunk_tail_t;
+
+/**
+ * SFF feature IDs
+ */
+typedef enum dc1394basler_sff_feature_t {
+  DC1394_BASLER_SFF_FEATURE_MIN = 0,
+
+  /**
+   * SFF Extended data stream, this feature must be enabled
+   * in order to use any other smart feature.
+   * Please refer to struct dc1394basler_sff_extended_data_stream
+   * for more information.
+    */
+  DC1394_BASLER_SFF_EXTENDED_DATA_STREAM = 0,
+
+  /**
+   * The frame counter feature numbers images sequentially as they
+   * are captured, the counter starts at 0 and wraps at 2^32-1.
+   * The counter increments by one for each captured frame.
+   * Whenever the camera is powered off, the counter resets to 0.
+   * Please refer to struct dc1394basler_sff_frame_counter_t
+   * for more information.
+   */
+  DC1394_BASLER_SFF_FRAME_COUNTER,
+
+  /**
+   * The cycle time stamp feature adds a chunk to each image frame
+   * containing the value of the IEEE1394 bus cycle timer.
+   * These counters are sampled at the start of exposure of each image.
+   * Please refer to struct dc1394basler_sff_cycle_time_stamp
+   * for more information.
+   */
+  DC1394_BASLER_SFF_CYCLE_TIME_STAMP,
+
+  /**
+   * The DCAM values smart features adds a chunk to each image
+   * containing the current settings for some standard DCAM features.
+   * The settings are sampled at the start of exposure of each image.
+   * Please refer to struct dc1394basler_sff_dcam_values_t
+   * for more information.
+   */
+  DC1394_BASLER_SFF_DCAM_VALUES,
+
+  /**
+   * The CRC checksum feature adds a chunk to each image frame
+   * containing a 16bit CRC checksum computed using the Z-modem
+   * algorithm. The checksum is computed for all the image data
+   * and all other SFF chunks except the CRC checksum chunk.
+   * Please refer to the function dc1394_basler_validate_checksum()
+   * for more information
+   */
+  DC1394_BASLER_SFF_CRC_CHECKSUM,
+
+  /**
+   * The test images feature is used to check the camera's basic
+   * functionality and its ability to transmit an image via
+   * the video data cable. The test image can be used for
+   * service purposes and for failure diagnostics. In test mode
+   * the image is generated with a software program and the camera's
+   * digital devices and does not use the optics the pixel array
+   * or the ADCs.
+   *
+   * <b>This feature is not implemented</b>
+   */
+  DC1394_BASLER_SFF_TEST_IMAGES,
+
+  /**
+   * Basler cameras include a register that contains version numbers
+   * for the camera's internal software. For troubleshooting
+   * purposes, Basler technical support may ask you to read
+   * this register and to supply the results.
+   *
+   * <b>This feature is not implemented</b>
+   */
+  DC1394_BASLER_SFF_EXTENDED_VERSION_INFO,
+
+  /**
+   * <b>This feature is not implemented</b>
+   */
+  DC1394_BASLER_SFF_LOOKUP_TABLE,
+
+  /**
+   * <b>This feature is not implemented</b>
+   */
+  DC1394_BASLER_SFF_TRIGGER_FLAG_AND_COUNTER,
+
+  /**
+   * <b>This feature is not implemented</b>
+   */
+  DC1394_BASLER_SFF_OUTPUT_PORT_0_CONFIGURATION,
+
+  /**
+   * <b>This feature is not implemented</b>
+   */
+  DC1394_BASLER_SFF_OUTPUT_PORT_1_CONFIGURATION,
+
+  /**
+   * <b>This feature is not implemented</b>
+   */
+  DC1394_BASLER_SFF_OUTPUT_PORT_2_CONFIGURATION,
+
+  /**
+   * <b>This feature is not implemented</b>
+   */
+  DC1394_BASLER_SFF_OUTPUT_PORT_3_CONFIGURATION,
+
+  DC1394_BASLER_SFF_FEATURE_MAX
+} dc1394basler_sff_feature_t;
+
+/**
+ * \struct dc1394basler_sff_t
+ * Data type used by this API to define SFFs and also when iterating
+ */
+typedef struct __dc1394basler_sff_t {
+  dc1394basler_sff_feature_t feature_id;
+
+  /* the following members are used for iterating */
+  void* frame_buffer;
+  uint32_t frame_size;
+  void* current_iter;
+
+  /* when iterating this member points to the beginning
+   * to the data for this chunk, in order to use it should
+   * be casted to a pointer of the type for this feature */
+  void* chunk_data;
+} dc1394basler_sff_t;
+
+/**
+ * This structure is used to capture the SFF extended data stream chunk.
+ * According to the Basler manuals the extended data stream chunk
+ * also contains to members pixel_data and gap of variable size;
+ * these members are ignored in this API because they can be obtained
+ * from other sources. The pixel_data member which is the actual image frame
+ * is all data from the beginning of the frame buffer until width*height*bytes_per_pixel
+ * bytes. The gap is required on some cameras for technical reason but not used
+ * otherwise. The size of the gap can be computed by computing
+ * frame_size - sizeof all chunks - image_size.
+ */
+typedef struct dc1394basler_sff_extended_data_stream_t {
+  /* pixel_data and gap members ignored, because they are not needed in this context */
+  uint32_t stride;
+  uint8_t reserved3[3];
+  uint8_t data_depth;
+  uint16_t top;
+  uint16_t left;
+  uint16_t height;
+  uint16_t width;
+  uint8_t reserved2[3];
+  uint8_t color_coding_id;
+  uint8_t reserved1[3];
+  uint8_t color_filter_id;
+  dc1394basler_sff_chunk_tail_t tail;
+} dc1394basler_sff_extended_data_stream_t;
+
+/**
+ * No Docs
+ */
+typedef struct dc1394basler_sff_frame_counter_t {
+  uint32_t counter;
+  dc1394basler_sff_chunk_tail_t tail;
+} dc1394basler_sff_frame_counter_t;
+
+/**
+ * No Docs
+ */
+typedef struct dc1394basler_sff_cycle_time_stamp_t {
+  union {
+    struct {
+      uint32_t cycle_offset: 12;
+      uint32_t cycle_count:  13;
+      uint32_t second_count:  7;
+    } structured;
+    struct {
+      uint32_t value;
+    } unstructured;
+  } cycle_time_stamp;
+} dc1394basler_sff_cycle_time_stamp_t;
+
+/**
+ * No Docs
+ */
+typedef struct dc1394basler_dcam_csr_value_t {
+  uint32_t value: 12;
+  uint32_t reserved2: 12;
+  uint32_t a_m_mode: 1;
+  uint32_t on_off: 1;
+  uint32_t one_push: 1;
+  uint32_t reserved1: 2;
+  uint32_t abs_control: 1;
+  uint32_t presence_inq: 1;
+} dc1394basler_dcam_csr_value_t;
+
+/**
+ * No Docs
+ */
+typedef struct dc1394basler_dcam_whitebalance_csr_value_t {
+  uint32_t v_r_value: 12;
+  uint32_t u_b_value: 12;
+  uint32_t a_m_mode: 1;
+  uint32_t on_off: 1;
+  uint32_t one_push: 1;
+  uint32_t reserved1: 2;
+  uint32_t abs_control: 1;
+  uint32_t presence_inq: 1;
+} dc1394basler_dcam_whitebalance_csr_value_t;
+
+/**
+ * No Docs
+ */
+typedef struct dc1394basler_sff_dcam_values_t {
+  /* gain */
+  dc1394basler_dcam_csr_value_t gain_csr;
+  uint32_t gain_absolute_value;
+
+  /* shutter */
+  dc1394basler_dcam_csr_value_t shutter_csr;
+  uint32_t shutter_absolute_value;
+
+  /* gamma */
+  dc1394basler_dcam_csr_value_t gamma_csr;
+  uint32_t gamma_absolute_value;
+
+  /* white balance */
+  dc1394basler_dcam_whitebalance_csr_value_t whitebalance_csr;
+  uint32_t whitebalance_absolute_value;
+
+  /* brightness */
+  dc1394basler_dcam_csr_value_t brightness_csr;
+  uint32_t brightness_absolute_value;
+
+  /* tail */
+  dc1394basler_sff_chunk_tail_t tail;
+} dc1394basler_sff_dcam_values_t;
+
+/**
+ * No Docs
+ */
+typedef struct dc1394basler_sff_crc_checksum_t {
+  uint8_t crc_checksum_low;
+  uint8_t crc_checksum_high;
+  uint8_t reserved1;
+  uint8_t reserved2;
+} dc1394basler_sff_crc_checksum_t;
+
+#endif
diff --git a/dc1394-drivers/libdc1394/include/dc1394/vendor/pixelink.h b/dc1394-drivers/libdc1394/include/dc1394/vendor/pixelink.h
new file mode 100644 (file)
index 0000000..7271524
--- /dev/null
@@ -0,0 +1,225 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * Pixelink (PxL) specific extensions for Multi-camera control.
+ * 
+ * Written by
+ *     Aravind Sundaresan <a.sundaresan@gmail.com>
+ *     James Sherman <shermanj@umd.edu>
+ *
+ * Copyright (C) 2006 Tobii Technology AB, Stockholm Sweden
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __DC1394_VENDOR_PIXELINK_H__
+#define __DC1394_VENDOR_PIXELINK_H__
+
+#include <dc1394/log.h>
+#include <dc1394/types.h>
+
+/*! \file dc1394/vendor/pixelink.h
+    \brief No docs yet
+
+    More details soon
+*/
+
+//#define PIXELINK_DEBUG_LOWEST_LEVEL
+//#define PIXELINK_DEBUG_DISPLAY
+
+/*
+ * The following deal with the Pixelink specific extensions for cameras
+ * PL-A74x. They have been tested on PL-A742 cameras.
+ */
+#define PxL_MAX_STRING_LENGTH        256
+
+/*
+ * Any definition with PxL_ACR prefix refers to the Advanced Feature Control
+ * and Status Registers. They are actually offsets from the
+ * Advanced_Feature_Inq Value.
+ */
+
+/* Camera Info Registers */
+#define PxL_ACR_SERIAL_NUM_OFFSET        0x0008U
+#define PxL_ACR_SERIAL_NUM_LENGTH        0x000cU
+#define PxL_ACR_FPGA_VERSION                0x0010U
+#define PxL_ACR_FW_VERSION                0x0014U
+#define PxL_ACR_CAMERA_DESC_OFFSET        0x0018U
+#define PxL_ACR_CAMERA_DESC_LENGTH        0x001cU
+
+/* Advanced Feature Inquiry Registers */
+#define PxL_ACR_NAME_INQUIRY                0x0100U
+#define PxL_ACR_NAME_OFFSET                0x0104U
+#define PxL_ACR_NAME_LENGTH                0x0108U
+
+/* Advanced Feature Inquiry Registers (GPIO) */
+#define PxL_ACR_GPIO_INQ                 0x0128U
+#define PxL_ACR_GPIO_PARM1_ABS                0x012CU
+#define PxL_ACR_GPIO_PARM2_ABS                0x0130U
+#define PxL_ACR_GPIO_PARM3_ABS                0x0134U
+
+#define PxL_ACR_GPIO_0_CFG                0x0300U
+#define PxL_ACR_GPIO_1_CFG                0x0304U
+#define PxL_ACR_GPIO_2_CFG                0x0308U
+#define PxL_ACR_GPIO_3_CFG                0x030CU
+
+/*
+ * The following are some of the constants that are register specific.
+ */
+#define PxL_GPO_CFG_ENABLE                        0x80000000U
+#define PxL_GPO_CFG_DISABLE                        0x00000000U
+#define PxL_GPO_CFG_POLARITY_HIGH                0x40000000U
+#define PxL_GPO_CFG_POLARITY_LOW                0x00000000U
+#define PxL_GPO_CFG_MODE_STROBE                        0x00000000U
+#define PxL_GPO_CFG_MODE_NORMAL                        0x00000001U
+#define PxL_GPO_CFG_MODE_PULSE                        0x00000002U
+#define PxL_GPO_CFG_MODE_BUSY                        0x00000003U
+#define PxL_GPO_CFG_MODE_FLASH                        0x00000004U
+
+/**
+ * No Docs
+ */
+typedef enum {
+    DC1394_PxL_GPIO_POLARITY_NONE=0,
+    DC1394_PxL_GPIO_POLARITY_HIGH,
+    DC1394_PxL_GPIO_POLARITY_LOW
+} dc1394pxl_gpio_polarity_t;
+
+/**
+ * No Docs
+ */
+typedef enum {
+    DC1394_PxL_GPIO_MODE_STROBE=0,
+    DC1394_PxL_GPIO_MODE_NORMAL,
+    DC1394_PxL_GPIO_MODE_PULSE,
+    DC1394_PxL_GPIO_MODE_BUSY,
+    DC1394_PxL_GPIO_MODE_FLASH
+} dc1394pxl_gpio_mode_t;
+
+/* IEEE 32 bit floating point type */
+typedef float float32_t;
+
+/**
+ * GPIO Information structure
+ */
+typedef struct __dc1394_pxl_gpio_info_struct {
+    uint32_t       number;
+    dc1394bool_t presence;
+    dc1394bool_t polarity;
+    dc1394bool_t mode_strobe;
+    dc1394bool_t mode_normal;
+    dc1394bool_t mode_pulse;
+    dc1394bool_t mode_busy;
+    dc1394bool_t mode_flash;
+} dc1394_pxl_gpio_info_t;
+
+/**
+ * Camera information
+ */
+typedef struct __dc1394_pxl_camera_info_struct {
+    uint32_t fpga_version;
+    uint32_t fw_version;
+    char serial_number[PxL_MAX_STRING_LENGTH];
+    char description[PxL_MAX_STRING_LENGTH];
+} dc1394_pxl_camera_info_t;
+
+/**
+ * Advanced feature inquiry
+ */
+typedef struct __dc1394_pxl_adv_feature_info_struct {
+    dc1394bool_t name_presence;
+    uint32_t name_offset;
+    char name[PxL_MAX_STRING_LENGTH];
+} dc1394_pxl_adv_feature_info_t;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_pxl_convert_float32_to_quadlet(double , uint32_t *);
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_pxl_convert_uint32_to_float32(uint32_t , double *);
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_pxl_get_camera_name(dc1394camera_t *, char *, uint32_t);
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_pxl_get_camera_info(dc1394camera_t *, dc1394_pxl_camera_info_t *);
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_pxl_get_camera_serial_number(dc1394camera_t *, uint32_t *);
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_pxl_get_gpo_param(dc1394camera_t *, uint32_t, uint32_t *, uint32_t *, uint32_t *);
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_pxl_get_gpo_param_min_max(dc1394camera_t *, uint32_t, uint32_t *,
+                uint32_t *, uint32_t *, uint32_t *, uint32_t *, uint32_t *,
+                uint32_t *, uint32_t *, uint32_t *);
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_pxl_get_gpo_config(dc1394camera_t *, uint32_t, uint32_t *);
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_pxl_set_gpo_config(dc1394camera_t *, uint32_t, uint32_t);
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_pxl_set_gpio_mode_param(dc1394camera_t *, uint32_t ,
+        dc1394pxl_gpio_polarity_t, dc1394pxl_gpio_mode_t, double, double, double);
+
+/**
+ * No Docs
+ */
+dc1394error_t
+dc1394_pxl_print_camera_info(dc1394camera_t *, FILE *fd);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/dc1394-drivers/libdc1394/include/dc1394/video.h b/dc1394-drivers/libdc1394/include/dc1394/video.h
new file mode 100644 (file)
index 0000000..6bcf006
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+ * 1394-Based Digital Camera Control Library
+ *
+ * Video format headers
+ *
+ * Written by Damien Douxchamps <ddouxchamps@users.sf.net>
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <dc1394/log.h>
+
+/*! \file dc1394/video.h
+    \brief Functions related to video modes, formats, framerate and video flow.
+
+    More details soon
+*/
+
+#ifndef __DC1394_VIDEO_H__
+#define __DC1394_VIDEO_H__
+
+/**
+ * Enumeration of iso data speeds
+ *
+ * Most (if not all) cameras are compatible with 400Mbps speed. Only older cameras (pre-1999) may still only work at sub-400
+ * speeds. However, speeds lower than 400Mbps are still useful: they can be used for longer distances (e.g. 10m cables).
+ * Speeds over 400Mbps are only available in "B" mode (DC1394_OPERATION_MODE_1394B).
+ */
+typedef enum {
+    DC1394_ISO_SPEED_100= 0,
+    DC1394_ISO_SPEED_200,
+    DC1394_ISO_SPEED_400,
+    DC1394_ISO_SPEED_800,
+    DC1394_ISO_SPEED_1600,
+    DC1394_ISO_SPEED_3200
+} dc1394speed_t;
+#define DC1394_ISO_SPEED_MIN                   DC1394_ISO_SPEED_100
+#define DC1394_ISO_SPEED_MAX                   DC1394_ISO_SPEED_3200
+#define DC1394_ISO_SPEED_NUM                  (DC1394_ISO_SPEED_MAX - DC1394_ISO_SPEED_MIN + 1)
+
+/**
+ * Enumeration of video framerates
+ *
+ * This enumeration is used for non-Format_7 modes. The framerate can be lower than expected if the exposure time is longer
+ * than the requested frame period. Framerate can be controlled in a number of other ways: framerate feature, external trigger,
+ * software trigger, shutter throttling and packet size (Format_7)
+ */
+typedef enum {
+    DC1394_FRAMERATE_1_875= 32,
+    DC1394_FRAMERATE_3_75,
+    DC1394_FRAMERATE_7_5,
+    DC1394_FRAMERATE_15,
+    DC1394_FRAMERATE_30,
+    DC1394_FRAMERATE_60,
+    DC1394_FRAMERATE_120,
+    DC1394_FRAMERATE_240
+} dc1394framerate_t;
+#define DC1394_FRAMERATE_MIN               DC1394_FRAMERATE_1_875
+#define DC1394_FRAMERATE_MAX               DC1394_FRAMERATE_240
+#define DC1394_FRAMERATE_NUM              (DC1394_FRAMERATE_MAX - DC1394_FRAMERATE_MIN + 1)
+
+/**
+ * Operation modes
+ *
+ * Two operation modes exist: the legacy and most common 1394a, and the newer 1394B. The latter allows speeds over 400Mbps, but
+ * can also be used at other speeds.
+ */
+typedef enum {
+    DC1394_OPERATION_MODE_LEGACY = 480,
+    DC1394_OPERATION_MODE_1394B
+} dc1394operation_mode_t;
+#define DC1394_OPERATION_MODE_MIN    DC1394_OPERATION_MODE_LEGACY
+#define DC1394_OPERATION_MODE_MAX    DC1394_OPERATION_MODE_1394B
+#define DC1394_OPERATION_MODE_NUM   (DC1394_OPERATION_MODE_MAX - DC1394_OPERATION_MODE_MIN + 1)
+
+/**
+ * List of framerates
+ *
+ * dc1394framerates_t contains a list of available framerates for a particular video mode.
+ */
+typedef struct {
+    uint32_t                num;
+    dc1394framerate_t       framerates[DC1394_FRAMERATE_NUM];
+} dc1394framerates_t;
+
+/**
+ * Video frame structure.
+ *
+ * dc1394video_frame_t is the structure returned by the capture functions. It contains the captured image as well as a number of
+ * information. 
+ *
+ * In general this structure should be calloc'ed so that members such as "allocated size"
+ * are properly set to zero. Don't forget to free the "image" member before freeing the struct itself.
+ */
+typedef struct __dc1394_video_frame
+{
+    unsigned char          * image;                 /* the image. May contain padding data too (vendor specific). Read/write allowed. Free NOT allowed if
+                                                      returned by dc1394_capture_dequeue() */
+    uint32_t                 size[2];               /* the image size [width, height] */
+    uint32_t                 position[2];           /* the WOI/ROI position [horizontal, vertical] == [0,0] for full frame */
+    dc1394color_coding_t     color_coding;          /* the color coding used. This field is valid for all video modes. */
+    dc1394color_filter_t     color_filter;          /* the color filter used. This field is valid only for RAW modes and IIDC 1.31 */
+    uint32_t                 yuv_byte_order;        /* the order of the fields for 422 formats: YUYV or UYVY */
+    uint32_t                 data_depth;            /* the number of bits per pixel. The number of grayscale levels is 2^(this_number).
+                                                       This is independent from the colour coding */
+    uint32_t                 stride;                /* the number of bytes per image line */
+    dc1394video_mode_t       video_mode;            /* the video mode used for capturing this frame */
+    uint64_t                 total_bytes;           /* the total size of the frame buffer in bytes. May include packet-
+                                                       multiple padding and intentional padding (vendor specific) */
+    uint32_t                 image_bytes;           /* the number of bytes used for the image (image data only, no padding) */
+    uint32_t                 padding_bytes;         /* the number of extra bytes, i.e. total_bytes-image_bytes.  */
+    uint32_t                 packet_size;           /* the size of a packet in bytes. (IIDC data) */
+    uint32_t                 packets_per_frame;     /* the number of packets per frame. (IIDC data) */
+    uint64_t                 timestamp;             /* the unix time [microseconds] at which the frame was captured in
+                                                       the video1394 ringbuffer */
+    uint32_t                 frames_behind;         /* the number of frames in the ring buffer that are yet to be accessed by the user */
+    dc1394camera_t           *camera;               /* the parent camera of this frame */
+    uint32_t                 id;                    /* the frame position in the ring buffer */
+    uint64_t                 allocated_image_bytes; /* amount of memory allocated in for the *image field. */
+    dc1394bool_t             little_endian;         /* DC1394_TRUE if little endian (16bpp modes only),
+                                                       DC1394_FALSE otherwise */
+    dc1394bool_t             data_in_padding;       /* DC1394_TRUE if data is present in the padding bytes in IIDC 1.32 format,
+                                                       DC1394_FALSE otherwise */
+} dc1394video_frame_t;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************
+     Video functions: formats, framerates,...
+ ***************************************************************************/
+
+/**
+ * Gets a list of video modes supported by the camera.
+ */
+dc1394error_t dc1394_video_get_supported_modes(dc1394camera_t *camera, dc1394video_modes_t *video_modes);
+
+/**
+ * Gets a list of supported video framerates for a given video mode. This function only works with non-scalable formats.
+ */
+dc1394error_t dc1394_video_get_supported_framerates(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394framerates_t *framerates);
+
+/**
+ * Gets the current framerate. This is meaningful only if the video mode is not scalable.
+ */
+dc1394error_t dc1394_video_get_framerate(dc1394camera_t *camera, dc1394framerate_t *framerate);
+
+/**
+ * Sets the current framerate. This is meaningful only if the video mode is not scalable.
+ */
+dc1394error_t dc1394_video_set_framerate(dc1394camera_t *camera, dc1394framerate_t framerate);
+
+/**
+ * Gets the current vide mode.
+ */
+dc1394error_t dc1394_video_get_mode(dc1394camera_t *camera, dc1394video_mode_t *video_mode);
+
+/**
+ * Sets the current vide mode.
+ */
+dc1394error_t dc1394_video_set_mode(dc1394camera_t *camera, dc1394video_mode_t video_mode);
+
+/**
+ * Gets the current operation mode.
+ */
+dc1394error_t dc1394_video_get_operation_mode(dc1394camera_t *camera, dc1394operation_mode_t *mode);
+
+/**
+ * Sets the current operation mode.
+ */
+dc1394error_t dc1394_video_set_operation_mode(dc1394camera_t *camera, dc1394operation_mode_t mode);
+
+/**
+ * Gets the current ISO speed.
+ */
+dc1394error_t dc1394_video_get_iso_speed(dc1394camera_t *camera, dc1394speed_t *speed);
+
+/**
+ * Sets the current ISO speed. Speeds over 400Mbps require 1394B.
+ */
+dc1394error_t dc1394_video_set_iso_speed(dc1394camera_t *camera, dc1394speed_t speed);
+
+/**
+ * Gets the current ISO channel
+ */
+dc1394error_t dc1394_video_get_iso_channel(dc1394camera_t *camera, uint32_t * channel);
+
+/**
+ * Sets the current ISO channel
+ */
+dc1394error_t dc1394_video_set_iso_channel(dc1394camera_t *camera, uint32_t channel);
+
+/**
+ * Gets the current data depth, in bits. Only meaningful for 16bpp video modes (RAW16, RGB48, MONO16,...)  
+ */
+dc1394error_t dc1394_video_get_data_depth(dc1394camera_t *camera, uint32_t *depth);
+
+/**
+ * Starts/stops the isochronous data transmission. In other words, use this to control the image flow.
+ */
+dc1394error_t dc1394_video_set_transmission(dc1394camera_t *camera, dc1394switch_t pwr);
+
+/**
+ * Gets the status of the video transmission
+ */
+dc1394error_t dc1394_video_get_transmission(dc1394camera_t *camera, dc1394switch_t *pwr);
+
+/**
+ * Turns one-shot mode on or off
+ */
+dc1394error_t dc1394_video_set_one_shot(dc1394camera_t *camera, dc1394switch_t pwr);
+
+/**
+ * Gets the status of the one-shot mode.
+ */
+dc1394error_t dc1394_video_get_one_shot(dc1394camera_t *camera, dc1394bool_t *is_on);
+
+/**
+ * Turns multishot mode on or off
+ */
+dc1394error_t dc1394_video_set_multi_shot(dc1394camera_t *camera, uint32_t numFrames, dc1394switch_t pwr);
+
+/**
+ * Gets the status of the multi-shot mode.
+ */
+dc1394error_t dc1394_video_get_multi_shot(dc1394camera_t *camera, dc1394bool_t *is_on, uint32_t *numFrames);
+
+/**
+ * Gets the bandwidth usage of a camera.
+ *
+ * This function returns the bandwidth that is used by the camera *IF* ISO was ON.
+ * The returned value is in bandwidth units. The 1394 bus has 4915 bandwidth units
+ * available per cycle. Each unit corresponds to the time it takes to send one
+ * quadlet at ISO speed S1600. The bandwidth usage at S400 is thus four times the
+ * number of quadlets per packet. Thanks to Krisitian Hogsberg for clarifying this.
+ */
+dc1394error_t dc1394_video_get_bandwidth_usage(dc1394camera_t *camera, uint32_t *bandwidth);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/dc1394-drivers/libdc1394/lib/libdc1394.a b/dc1394-drivers/libdc1394/lib/libdc1394.a
new file mode 100644 (file)
index 0000000..802c4d3
Binary files /dev/null and b/dc1394-drivers/libdc1394/lib/libdc1394.a differ
diff --git a/dc1394-drivers/libdc1394/lib/libgcc.a b/dc1394-drivers/libdc1394/lib/libgcc.a
new file mode 100644 (file)
index 0000000..050167a
Binary files /dev/null and b/dc1394-drivers/libdc1394/lib/libgcc.a differ
diff --git a/dc1394-drivers/libdc1394/lib/libsetupapi.a b/dc1394-drivers/libdc1394/lib/libsetupapi.a
new file mode 100644 (file)
index 0000000..8953962
Binary files /dev/null and b/dc1394-drivers/libdc1394/lib/libsetupapi.a differ