📄 dc1394_control.h
字号:
if (err>DC1394_SUCCESS) { \ fprintf(stderr,"Libdc1394 error (%s:%s:%d): %s : ", \ __FILE__, __FUNCTION__, __LINE__, \ dc1394_error_strings[err]); \ fprintf(stderr, err_string); \ fprintf(stderr,"\n"); \ return err; \ } \ }#define DC1394_ERR_CLN(err, cleanup, err_string...) \ { \ if ((err<0)||(err>DC1394_ERROR_NUM)) \ err=DC1394_INVALID_ERROR_CODE; \ \ if (err>DC1394_SUCCESS) { \ fprintf(stderr,"Libdc1394 error (%s:%s:%d): %s : ", \ __FILE__, __FUNCTION__, __LINE__, \ dc1394_error_strings[err]); \ fprintf(stderr, err_string); \ fprintf(stderr,"\n"); \ cleanup; \ return; \ } \ }#define DC1394_ERR_CLN_RTN(err, cleanup, err_string...) \ { \ if ((err<0)||(err>DC1394_ERROR_NUM)) \ err=DC1394_INVALID_ERROR_CODE; \ \ if (err>DC1394_SUCCESS) { \ fprintf(stderr,"Libdc1394 error (%s:%s:%d): %s : ", \ __FILE__, __FUNCTION__, __LINE__, \ dc1394_error_strings[err]); \ fprintf(stderr, err_string); \ fprintf(stderr,"\n"); \ cleanup; \ return err; \ } \ }#ifdef __cplusplusextern "C" {#endif/*************************************************************************** General system functions ***************************************************************************//* create / free camera structure *///dc1394camera_t* dc1394_new_camera(uint_t port, nodeid_t node);void dc1394_free_camera(dc1394camera_t *camera);/* locate and initialise the cameras */dc1394error_t dc1394_find_cameras(dc1394camera_t ***cameras_ptr, uint_t* numCameras);/* print the camera information *///dc1394error_t dc1394_get_camera_info(dc1394camera_t *camera);dc1394error_t dc1394_print_camera_info(dc1394camera_t *camera);/* Sets and resets 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);/*************************************************************************** Other functionalities ***************************************************************************//* reset camera to factory default settings */dc1394error_t dc1394_reset_camera(dc1394camera_t *camera);/* turn camera on or off */dc1394error_t dc1394_set_camera_power(dc1394camera_t *camera, dc1394switch_t pwr);/* functions to read and write camera setups in memory channels */dc1394error_t dc1394_memory_get_load_ch(dc1394camera_t *camera, uint_t *channel);dc1394error_t dc1394_memory_get_save_ch(dc1394camera_t *camera, uint_t *channel);dc1394error_t dc1394_memory_is_save_in_operation(dc1394camera_t *camera, dc1394bool_t *value);dc1394error_t dc1394_memory_save(dc1394camera_t *camera, uint_t channel);dc1394error_t dc1394_memory_load(dc1394camera_t *camera, uint_t channel);/*************************************************************************** Trigger ***************************************************************************//* external trigger feature functions */dc1394error_t dc1394_external_trigger_set_polarity(dc1394camera_t *camera, dc1394trigger_polarity_t polarity);dc1394error_t dc1394_external_trigger_get_polarity(dc1394camera_t *camera, dc1394trigger_polarity_t *polarity);dc1394error_t dc1394_external_trigger_has_polarity(dc1394camera_t *camera, dc1394bool_t *polarity_capable);dc1394error_t dc1394_external_trigger_set_power(dc1394camera_t *camera, dc1394switch_t pwr);dc1394error_t dc1394_external_trigger_get_power(dc1394camera_t *camera, dc1394switch_t *pwr);dc1394error_t dc1394_external_trigger_set_mode(dc1394camera_t *camera, dc1394trigger_mode_t mode);dc1394error_t dc1394_external_trigger_get_mode(dc1394camera_t *camera, dc1394trigger_mode_t *mode);dc1394error_t dc1394_external_trigger_set_source(dc1394camera_t *camera, dc1394trigger_source_t source);dc1394error_t dc1394_external_trigger_get_source(dc1394camera_t *camera, dc1394trigger_source_t *source);dc1394error_t dc1394_external_trigger_get_supported_sources(dc1394camera_t *camera, dc1394trigger_sources_t *sources);/* Turn one software trigger on or off and get state */dc1394error_t dc1394_software_trigger_set_power(dc1394camera_t *camera, dc1394switch_t pwr);dc1394error_t dc1394_software_trigger_get_power(dc1394camera_t *camera, dc1394switch_t *pwr);/*************************************************************************** Features ***************************************************************************//* Collects the available features for the camera described by node and stores them in features. */dc1394error_t dc1394_get_camera_feature_set(dc1394camera_t *camera, dc1394featureset_t *features);/* Stores the bounds and options associated with the feature described by feature->feature_id */dc1394error_t dc1394_get_camera_feature(dc1394camera_t *camera, dc1394feature_info_t *feature);/* Displays the bounds and options of the given feature or of the entire feature set */dc1394error_t dc1394_print_feature(dc1394feature_info_t *feature);dc1394error_t dc1394_print_feature_set(dc1394featureset_t *features);/* get/set the values of multiple-value features on the camera */dc1394error_t dc1394_feature_whitebalance_get_value(dc1394camera_t *camera, uint_t *u_b_value, uint_t *v_r_value);dc1394error_t dc1394_feature_whitebalance_set_value(dc1394camera_t *camera, uint_t u_b_value, uint_t v_r_value);dc1394error_t dc1394_feature_temperature_get_value(dc1394camera_t *camera, uint_t *target_temperature, uint_t *temperature);dc1394error_t dc1394_feature_temperature_set_value(dc1394camera_t *camera, uint_t target_temperature);dc1394error_t dc1394_feature_whiteshading_get_value(dc1394camera_t *camera, uint_t *r_value, uint_t *g_value, uint_t *b_value);dc1394error_t dc1394_feature_whiteshading_set_value(dc1394camera_t *camera, uint_t r_value, uint_t g_value, uint_t b_value);/* get/set the values of single-value features on the camera */dc1394error_t dc1394_feature_get_value(dc1394camera_t *camera, dc1394feature_t feature, uint_t *value);dc1394error_t dc1394_feature_set_value(dc1394camera_t *camera, dc1394feature_t feature, uint_t value);/* query/set specific feature characteristics */dc1394error_t dc1394_feature_is_present(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value);dc1394error_t dc1394_feature_is_readable(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value);dc1394error_t dc1394_feature_get_boundaries(dc1394camera_t *camera, dc1394feature_t feature, uint_t *min, uint_t *max);dc1394error_t dc1394_feature_is_switchable(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value);dc1394error_t dc1394_feature_get_power(dc1394camera_t *camera, dc1394feature_t feature, dc1394switch_t *pwr);dc1394error_t dc1394_feature_set_power(dc1394camera_t *camera, dc1394feature_t feature, dc1394switch_t pwr);dc1394error_t dc1394_feature_has_auto_mode(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value);dc1394error_t dc1394_feature_has_manual_mode(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value);dc1394error_t dc1394_feature_has_one_push_auto(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value);dc1394error_t dc1394_feature_get_mode(dc1394camera_t *camera, dc1394feature_t feature, dc1394feature_mode_t *mode);dc1394error_t dc1394_feature_set_mode(dc1394camera_t *camera, dc1394feature_t feature, dc1394feature_mode_t mode);/* absolute settings */dc1394error_t dc1394_feature_has_absolute_control(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value);dc1394error_t dc1394_feature_get_absolute_boundaries(dc1394camera_t *camera, dc1394feature_t feature, float *min, float *max);dc1394error_t dc1394_feature_get_absolute_value(dc1394camera_t *camera, dc1394feature_t feature, float *value);dc1394error_t dc1394_feature_set_absolute_value(dc1394camera_t *camera, dc1394feature_t feature, float value);dc1394error_t dc1394_feature_get_absolute_control(dc1394camera_t *camera, dc1394feature_t feature, dc1394switch_t *pwr);dc1394error_t dc1394_feature_set_absolute_control(dc1394camera_t *camera, dc1394feature_t feature, dc1394switch_t pwr);/*************************************************************************** Video functions: formats, framerates,... ***************************************************************************//* functions for querying camera attributes */dc1394error_t dc1394_video_get_supported_modes(dc1394camera_t *camera, dc1394video_modes_t *video_modes);dc1394error_t dc1394_video_get_supported_framerates(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394framerates_t *framerates);/* get/set the framerate, mode, format, iso speed for the video */dc1394error_t dc1394_video_get_framerate(dc1394camera_t *camera, dc1394framerate_t *framerate);dc1394error_t dc1394_video_set_framerate(dc1394camera_t *camera, dc1394framerate_t framerate);dc1394error_t dc1394_video_get_mode(dc1394camera_t *camera, dc1394video_mode_t *video_mode);dc1394error_t dc1394_video_set_mode(dc1394camera_t *camera, dc1394video_mode_t video_mode);dc1394error_t dc1394_video_get_operation_mode(dc1394camera_t *camera, dc1394operation_mode_t *mode);dc1394error_t dc1394_video_set_operation_mode(dc1394camera_t *camera, dc1394operation_mode_t mode);dc1394error_t dc1394_video_get_iso_speed(dc1394camera_t *camera, dc1394speed_t *speed);dc1394error_t dc1394_video_set_iso_speed(dc1394camera_t *camera, dc1394speed_t speed);dc1394error_t dc1394_video_get_data_depth(dc1394camera_t *camera, uint_t *depth); /* start/stop isochronous data transmission */dc1394error_t dc1394_video_set_transmission(dc1394camera_t *camera, dc1394switch_t pwr);dc1394error_t dc1394_video_get_transmission(dc1394camera_t *camera, dc1394switch_t *pwr);/* The following function is not necessary in general. You should only use it if you want a specific ISO channel. Usage: Call it before setting up capture and transmission */dc1394error_t dc1394_video_specify_iso_channel(dc1394camera_t *camera, int iso_channel);/* turn one shot mode on or off */dc1394error_t dc1394_video_set_one_shot(dc1394camera_t *camera, dc1394switch_t pwr);dc1394error_t dc1394_video_get_one_shot(dc1394camera_t *camera, dc1394bool_t *is_on);/* turn multishot mode on or off */dc1394error_t dc1394_video_set_multi_shot(dc1394camera_t *camera, uint_t numFrames, dc1394switch_t pwr);dc1394error_t dc1394_video_get_multi_shot(dc1394camera_t *camera, dc1394bool_t *is_on, uint_t *numFrames);/* Utility function */dc1394error_t dc1394_video_get_bandwidth_usage(dc1394camera_t *camera, uint_t *bandwidth);/*************************************************************************** Capture Functions ***************************************************************************//* setup the capture (DMA or RAW1394)*/dc1394error_t dc1394_capture_setup_dma(dc1394camera_t *camera, uint_t num_dma_buffers, dc1394ring_buffer_policy_t policy);dc1394error_t dc1394_capture_setup(dc1394camera_t *camera);/* capture video frames (DMA or RAW1394)*/dc1394error_t dc1394_capture_dma(dc1394camera_t **camera, uint_t num, dc1394video_policy_t policy);dc1394error_t dc1394_capture(dc1394camera_t **camera, uint_t num);/* releases memory, channels, bandwidth,... */dc1394error_t dc1394_capture_stop(dc1394camera_t *camera);/* DMA specific functions*//* Set the DMA device filename manually. In most cases this is not necessary because the capture functions probe common filenames such as /dev/video1394/x or /dev/video1394. */dc1394error_t dc1394_capture_set_dma_device_filename(dc1394camera_t* camera, char *filename);/* returns the buffer previously handed to the user by dc1394_dma_*_capture to the DMA ring buffer */dc1394error_t dc1394_capture_dma_done_with_buffer(dc1394camera_t *camera);/* Functions for accessing the buffer content: */uchar_t* dc1394_capture_get_dma_buffer(dc1394camera_t *camera);struct timeval* dc1394_capture_get_dma_filltime(dc1394camera_t *camera);uint_t dc1394_capture_get_width(dc1394camera_t *camera);uint_t dc1394_capture_get_height(dc1394camera_t *camera);uint_t dc1394_capture_get_bytes_per_frame(dc1394camera_t *camera);uint_t dc1394_capture_get_frames_behind(dc1394camera_t *camera);/*************************************************************************** Format_7 (scalable image format) ***************************************************************************//* image size */dc1394error_t dc1394_format7_get_max_image_size(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint_t *h_size,uint_t *v_size);dc1394error_t dc1394_format7_get_unit_size(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint_t *h_unit, uint_t *v_unit);dc1394error_t dc1394_format7_get_image_size(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint_t *width, uint_t *height);dc1394error_t dc1394_format7_set_image_size(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint_t width, uint_t height);/* image position */dc1394error_t dc1394_format7_get_image_position(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint_t *left, uint_t *top);dc1394error_t dc1394_format7_set_image_position(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint_t left, uint_t top);dc1394error_t dc1394_format7_get_unit_position(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint_t *h_unit_pos, uint_t *v_unit_pos);/* color coding */dc1394error_t dc1394_format7_get_color_coding(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394color_coding_t *color_coding);dc1394error_t dc1394_format7_get_color_codings(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394color_codings_t *codings);dc1394error_t dc1394_format7_set_color_coding(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394color_coding_t color_coding);dc1394error_t dc1394_format7_set_color_filter(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394color_filter_t color_filter);dc1394error_t dc1394_format7_get_color_filter(dc1394camera_t *camera, dc1394video_mode_t video_mode, dc1394color_filter_t *color_filter);/* packet */dc1394error_t dc1394_format7_get_packet_para(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint_t *min_bytes, uint_t *max_bytes);dc1394error_t dc1394_format7_get_byte_per_packet(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint_t *packet_bytes);dc1394error_t dc1394_format7_set_byte_per_packet(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint_t packet_bytes);dc1394error_t dc1394_format7_get_recommended_byte_per_packet(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint_t *bpp);dc1394error_t dc1394_format7_get_packet_per_frame(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint_t *ppf);/* other */dc1394error_t dc1394_format7_get_data_depth(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint_t *data_depth);dc1394error_t dc1394_format7_get_frame_interval(dc1394camera_t *camera, dc1394video_mode_t video_mode, float *interval);dc1394error_t dc1394_format7_get_pixel_number(dc1394camera_t *camera, dc1394video_mode_t video_mode, uint_t *pixnum);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) */dc1394error_t dc1394_format7_get_modeset(dc1394camera_t *camera, dc1394format7modeset_t *info);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, int bytes_per_packet, int left, int top, int width, int height);/* This will have to be fixed or removed: it's ugly...*/dc1394error_t dc1394_cleanup_iso_channels_and_bandwidth(dc1394camera_t *camera);#ifdef __cplusplus}#endif#endif /* __DC1394_CAMERA_CONTROL_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -