![]() |
UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
|
Files | |
| file | video_capture.h |
| file | video_capture_params.cpp |
| file | video_capture_params.h |
Classes | |
| struct | video_capture_info |
Macros | |
| #define | VIDCAP_NO_GENERIC_FPS_INDICATOR NULL |
| #define | VIDEO_CAPTURE_ABI_VERSION 13 |
Functions | |
| int | initialize_video_capture (struct module *parent, struct vidcap_params *params, struct vidcap **state) |
| Initializes video capture. | |
| void | list_video_capture_devices (bool) |
| void | vidcap_done (struct vidcap *state) |
| Destroys vidap state. | |
| const char * | vidcap_get_fps_print_prefix (struct vidcap *state) |
| struct video_frame * | vidcap_grab (struct vidcap *state, struct audio_frame **audio) |
| Grabs video frame. This function may block for a short period if waiting for incoming frame. This period, however, should not be longer than few frame times, a second at maximum. | |
vidcap_retval | |
| #define | VIDCAP_INIT_OK 0 |
| initialization successful | |
| #define | VIDCAP_INIT_NOERR 1 |
| state not initialized, other action performed (typically help) | |
| #define | VIDCAP_INIT_FAIL (-1) |
| error ocured | |
| #define | VIDCAP_INIT_AUDIO_NOT_SUPPORTED (-2) |
| card does not support audio | |
Normal operation is something like:
Where the "id" parameter to vidcap_init() is obtained from the probing API. The vidcap_grab() function returns a pointer to the frame, or NULL if no frame is currently available.
The vidcap_grab() may block, but not indefinitely (ideally no longer than 2x frame time) or it should observe global exit status with register_should_exit_callback() and yield control when notified.
Each module should implement API from video_capture_info. Furthermore, it should register the module with REGISTER_MODULE(). E.g.:
REGISTER_MODULE(dvs, &vidcap_dvs_info, LIBRARY_CLASS_VIDEO_CAPTURE, VIDEO_CAPTURE_ABI_VERSION);
| #define VIDCAP_INIT_AUDIO_NOT_SUPPORTED (-2) |
card does not support audio
Definition at line 124 of file video_capture.h.
Referenced by initialize_video_capture(), vidcap_bitflow_init(), vidcap_deltacast_dvi_init(), vidcap_dshow_init(), vidcap_dvs_init(), vidcap_gpustitch_init(), vidcap_null_init(), vidcap_pw_init(), vidcap_screen_osx_init(), vidcap_screen_x11_init(), vidcap_spout_init(), vidcap_syphon_init(), vidcap_v4l2_init(), and vidcap_ximea_init().
| #define VIDCAP_INIT_FAIL (-1) |
error ocured
Definition at line 123 of file video_capture.h.
Referenced by initialize_video_capture(), parse_fmt(), parse_params(), vidcap_aggregate_init(), vidcap_aja_init(), vidcap_bluefish444_init(), vidcap_decklink_init(), vidcap_deltacast_dvi_init(), vidcap_deltacast_init(), vidcap_dshow_init(), vidcap_dvs_init(), vidcap_file_init(), vidcap_gpustitch_init(), vidcap_import_init(), vidcap_ndi_init(), vidcap_rtsp_init(), vidcap_screen_osx_init(), vidcap_screen_win_init(), vidcap_screen_x11_init(), vidcap_spout_init(), vidcap_switcher_init(), vidcap_swmix_init(), vidcap_syphon_init_common(), vidcap_testcard2_init(), vidcap_testcard_init(), vidcap_ug_input_init(), vidcap_v4l2_init(), vidcap_ximea_init(), and vidcap_ximea_parse_params().
| #define VIDCAP_INIT_NOERR 1 |
state not initialized, other action performed (typically help)
Definition at line 122 of file video_capture.h.
Referenced by initialize_video_capture(), parse_fmt(), parse_params(), vidcap_aggregate_init(), vidcap_aja_init(), vidcap_bluefish444_init(), vidcap_decklink_init(), vidcap_deltacast_dvi_init(), vidcap_deltacast_init(), vidcap_dshow_init(), vidcap_dvs_init(), vidcap_file_init(), vidcap_gpustitch_init(), vidcap_import_init(), vidcap_ndi_init(), vidcap_rtsp_init(), vidcap_screen_osx_init(), vidcap_screen_win_init(), vidcap_screen_x11_init(), vidcap_spout_init(), vidcap_swmix_init(), vidcap_syphon_init_common(), vidcap_testcard2_init(), vidcap_testcard_init(), vidcap_ug_input_init(), vidcap_v4l2_init(), and vidcap_ximea_parse_params().
| #define VIDCAP_INIT_OK 0 |
initialization successful
Definition at line 121 of file video_capture.h.
Referenced by initialize_video_capture(), parse_params(), test_video_capture(), vidcap_aggregate_init(), vidcap_aja_init(), vidcap_bitflow_init(), vidcap_bluefish444_init(), vidcap_decklink_init(), vidcap_deltacast_dvi_init(), vidcap_deltacast_init(), vidcap_dshow_init(), vidcap_dvs_init(), vidcap_file_init(), vidcap_gpustitch_init(), vidcap_import_init(), vidcap_ndi_init(), vidcap_null_init(), vidcap_pw_init(), vidcap_rtsp_init(), vidcap_screen_osx_init(), vidcap_screen_x11_init(), vidcap_spout_init(), vidcap_switcher_init(), vidcap_swmix_init(), vidcap_syphon_init(), vidcap_syphon_init_common(), vidcap_syphon_probe(), vidcap_testcard2_init(), vidcap_testcard_init(), vidcap_ug_input_init(), vidcap_v4l2_init(), and vidcap_ximea_init().
| #define VIDCAP_NO_GENERIC_FPS_INDICATOR NULL |
Definition at line 127 of file video_capture.h.
| #define VIDEO_CAPTURE_ABI_VERSION 13 |
Definition at line 109 of file video_capture.h.
Referenced by initialize_video_capture(), and list_video_capture_devices().
| int initialize_video_capture | ( | struct module * | parent, |
| struct vidcap_params * | param, | ||
| struct vidcap ** | state ) |
Initializes video capture.
| [in] | parent | parent module |
| [in] | param | driver parameters |
| [out] | state | returned state |
| 0 | if initialization was successful |
| <0 | if initialization failed |
| >0 | if initialization was successful but no state was returned (eg. only having shown help). |
check appropriate cmdline parameters order (–capture-filter then -t) only if one capture device specified, allow setting -F after -t
Definition at line 96 of file video_capture.c.
References capture_filter, capture_filter_init(), module::cls, funcs, video_capture_info::init, LIBRARY_CLASS_VIDEO_CAPTURE, load_library(), LOG_LEVEL_ERROR, log_msg(), magic, mod, MODULE_CLASS_CAPTURE, module_done(), module_init_default(), module_register(), param, parent, state, state, VIDCAP_INIT_AUDIO_NOT_SUPPORTED, VIDCAP_INIT_FAIL, VIDCAP_INIT_NOERR, VIDCAP_INIT_OK, VIDCAP_MAGIC, vidcap_params_get_capture_filter(), vidcap_params_get_driver(), vidcap_params_get_flags(), vidcap_params_get_next(), vidcap_params_set_capture_filter(), vidcap_params_set_flags(), vidcap_params_set_parent(), and VIDEO_CAPTURE_ABI_VERSION.
Referenced by grab_worker(), main(), slave_worker(), test_video_capture(), vidcap_aggregate_init(), vidcap_screen_linux_init(), vidcap_switcher_grab(), and vidcap_switcher_init().

| void list_video_capture_devices | ( | bool | full | ) |
Definition at line 82 of file video_capture.c.
References LIBRARY_CLASS_VIDEO_CAPTURE, list_modules(), and VIDEO_CAPTURE_ABI_VERSION.
Referenced by parse_options_internal(), and test_video_capture().

| void vidcap_done | ( | struct vidcap * | state | ) |
Destroys vidap state.
| state | state to be destroyed (must have been successfully initialized with vidcap_init()) |
Definition at line 197 of file video_capture.c.
References capture_filter_destroy(), module_done(), state, and VIDCAP_MAGIC.
Referenced by grab_worker(), main(), slave_worker(), vidcap_aggregate_done(), vidcap_aggregate_init(), vidcap_screen_linux_done(), vidcap_switcher_done(), and vidcap_switcher_grab().

| const char * vidcap_get_fps_print_prefix | ( | struct vidcap * | state | ) |
Definition at line 233 of file video_capture.c.
References len, SHORT_STR, state, and VIDCAP_MAGIC.
Referenced by capture_thread().
| struct video_frame * vidcap_grab | ( | struct vidcap * | state, |
| struct audio_frame ** | audio ) |
Grabs video frame. This function may block for a short period if waiting for incoming frame. This period, however, should not be longer than few frame times, a second at maximum.
The decision of blocking behavior is on the vidcap driver.
The returned video frame is valid only until next vidcap_grab() call.
| [in] | state | vidcap state |
| [out] | audio | contains audio frame if driver is grabbing audio |
Definition at line 218 of file video_capture.c.
References audio, capture_filter(), frame, state, and VIDCAP_MAGIC.
Referenced by capture_thread(), grab_worker(), slave_worker(), vidcap_aggregate_grab(), vidcap_screen_linux_grab(), and vidcap_switcher_grab().
