JavaCPP Presets for libdc1394 - Java bindings for controlling IEEE 1394 (FireWire) digital cameras following IIDC/DCAM specifications
—
Core system initialization, camera discovery, and resource management functionality for libdc1394.
Creates and manages the main libdc1394 system context required for all operations.
/**
* Creates a new libdc1394 system context
* @return System context handle, or null on failure
*/
dc1394_t dc1394_new();
/**
* Releases the libdc1394 system context and associated resources
* @param d System context to release
*/
void dc1394_free(dc1394_t d);
/**
* Resets the IEEE 1394 bus
* @param camera Camera connected to the bus to reset
* @return DC1394_SUCCESS on success, error code on failure
*/
int dc1394_reset_bus(dc1394camera_t camera);Usage Example:
import static org.bytedeco.libdc1394.global.dc1394.*;
// Initialize system
dc1394_t d = dc1394_new();
if (d == null) {
System.err.println("Failed to initialize libdc1394");
System.exit(1);
}
// Use system context for camera operations...
// Always release resources
dc1394_free(d);Discovers and enumerates available IEEE 1394 cameras on the system.
/**
* Enumerates all available cameras on the IEEE 1394 bus
* @param d System context
* @param list Output camera list structure
* @return DC1394_SUCCESS on success, error code on failure
*/
int dc1394_camera_enumerate(dc1394_t d, dc1394camera_list_t list);
/**
* Releases camera list resources
* @param list Camera list to release
*/
void dc1394_camera_free_list(dc1394camera_list_t list);
/**
* Prints information about a camera
* @param camera Camera to print information for
* @return DC1394_SUCCESS on success, error code on failure
*/
int dc1394_camera_print_info(dc1394camera_t camera);Usage Example:
import org.bytedeco.libdc1394.*;
import static org.bytedeco.libdc1394.global.dc1394.*;
dc1394_t d = dc1394_new();
dc1394camera_list_t list = new dc1394camera_list_t();
// Discover cameras
int err = dc1394_camera_enumerate(d, list);
if (err != DC1394_SUCCESS) {
dc1394_log_error("Failed to enumerate cameras: " + err);
dc1394_free(d);
return;
}
System.out.println("Found " + list.num() + " cameras");
// Iterate through discovered cameras
for (int i = 0; i < list.num(); i++) {
dc1394camera_id_t id = list.ids().position(i);
System.out.println("Camera " + i + ": GUID=" +
Long.toHexString(id.guid()) + ", Unit=" + id.unit());
}
// Always free the list
dc1394_camera_free_list(list);
dc1394_free(d);Creates and manages individual camera instances for control and capture operations.
/**
* Creates a new camera instance using the camera's GUID
* @param d System context
* @param guid Camera GUID obtained from enumeration
* @return Camera instance, or null on failure
*/
dc1394camera_t dc1394_camera_new(dc1394_t d, long guid);
/**
* Creates a new camera instance using GUID and unit number
* @param d System context
* @param guid Camera GUID
* @param unit Unit number on the bus
* @return Camera instance, or null on failure
*/
dc1394camera_t dc1394_camera_new_unit(dc1394_t d, long guid, int unit);
/**
* Releases camera instance and associated resources
* @param camera Camera instance to release
*/
void dc1394_camera_free(dc1394camera_t camera);
/**
* Checks if two cameras are the same device
* @param camera1 First camera
* @param camera2 Second camera
* @return true if cameras are the same device, false otherwise
*/
boolean dc1394_is_same_camera(dc1394camera_t camera1, dc1394camera_t camera2);Usage Example:
import org.bytedeco.libdc1394.*;
import static org.bytedeco.libdc1394.global.dc1394.*;
dc1394_t d = dc1394_new();
dc1394camera_list_t list = new dc1394camera_list_t();
// Discover cameras
dc1394_camera_enumerate(d, list);
if (list.num() == 0) {
System.err.println("No cameras found");
dc1394_camera_free_list(list);
dc1394_free(d);
return;
}
// Create camera instance from first discovered camera
long guid = list.ids().guid();
dc1394camera_t camera = dc1394_camera_new(d, guid);
if (camera == null) {
System.err.println("Failed to create camera instance");
dc1394_camera_free_list(list);
dc1394_free(d);
return;
}
System.out.println("Successfully created camera instance");
System.out.println("Camera model: " + camera.model());
System.out.println("Camera vendor: " + camera.vendor());
// Print detailed camera information
dc1394_camera_print_info(camera);
// Always release resources
dc1394_camera_free_list(list);
dc1394_camera_free(camera);
dc1394_free(d);Controls camera power state and reset functionality.
/**
* Sets camera power state
* @param camera Camera instance
* @param pwr Power state (DC1394_ON or DC1394_OFF)
* @return DC1394_SUCCESS on success, error code on failure
*/
int dc1394_camera_set_power(dc1394camera_t camera, int pwr);
/**
* Resets the camera
* @param camera Camera instance to reset
* @return DC1394_SUCCESS on success, error code on failure
*/
int dc1394_camera_reset(dc1394camera_t camera);Manages broadcast settings for multi-camera operations.
/**
* Sets camera broadcast mode for multi-camera control
* @param camera Camera instance
* @param pwr Broadcast state (DC1394_ON or DC1394_OFF)
* @return DC1394_SUCCESS on success, error code on failure
*/
int dc1394_camera_set_broadcast(dc1394camera_t camera, int pwr);
/**
* Gets camera broadcast mode state
* @param camera Camera instance
* @param pwr Output parameter for broadcast state
* @return DC1394_SUCCESS on success, error code on failure
*/
int dc1394_camera_get_broadcast(dc1394camera_t camera, IntPointer pwr);/**
* Main libdc1394 system context
* Opaque structure - no direct field access
*/
class dc1394_t extends Pointer {
// Internal implementation hidden
}/**
* Camera list container for discovery results
*/
class dc1394camera_list_t extends Pointer {
/**
* Number of cameras found
* @return Count of discovered cameras
*/
int num();
/**
* Array of camera identifiers
* @return Pointer to first camera ID in array
*/
dc1394camera_id_t ids();
}
/**
* Camera identifier with GUID and unit information
*/
class dc1394camera_id_t extends Pointer {
/**
* Camera unit number on the IEEE 1394 bus
* @return Unit number
*/
int unit();
/**
* Camera globally unique identifier (GUID)
* @return 64-bit GUID
*/
long guid();
}// Power control states
static final int DC1394_ON = 1;
static final int DC1394_OFF = 0;// System operation results
static final int DC1394_SUCCESS = 0;
static final int DC1394_FAILURE = -1;
static final int DC1394_NOT_A_CAMERA = -2;
static final int DC1394_FUNCTION_NOT_SUPPORTED = -3;
static final int DC1394_CAMERA_NOT_INITIALIZED = -4;
static final int DC1394_MEMORY_ALLOCATION_FAILURE = -5;System management functions return integer error codes. Always check return values:
int err = dc1394_camera_enumerate(d, list);
if (err != DC1394_SUCCESS) {
System.err.println("Camera enumeration failed with error: " + err);
// Handle error appropriately
}Use the logging functions for detailed error information:
if (camera == null) {
dc1394_log_error("Failed to create camera instance for GUID: " +
Long.toHexString(guid));
}Install with Tessl CLI
npx tessl i tessl/maven-org-bytedeco--libdc1394