diff --git a/.github/workflows/aravis-linux.yml b/.github/workflows/aravis-linux.yml index bdfc06e6e..d2fad0f68 100644 --- a/.github/workflows/aravis-linux.yml +++ b/.github/workflows/aravis-linux.yml @@ -15,12 +15,12 @@ jobs: - uses: actions/checkout@v2 - name: Install dependencies run: | - pip install meson ninja + pip3 install meson ninja Markdown toml typogrify sudo apt update sudo apt install python3 libusb-1.0-0-dev gobject-introspection valgrind libgstreamer-plugins-bad1.0-dev libgtk-3-dev libgirepository1.0-dev python3-gi - name: Build run: | - meson --buildtype=plain -Ddocumentation=disabled -Dgst-plugin=enabled -Dintrospection=enabled -Dusb=disabled -Dviewer=enabled . ./build + meson --buildtype=plain -Ddocumentation=enabled -Dgst-plugin=enabled -Dintrospection=enabled -Dusb=disabled -Dviewer=enabled . ./build ninja -C ./build meson configure -Dusb=enabled build ninja -C ./build @@ -35,3 +35,10 @@ jobs: with: name: Linux_Meson_Testlog path: build/meson-logs/testlog.txt + - name: Documentation + uses: peaceiris/actions-gh-pages@v3 + if: ${{ github.ref == 'refs/heads/main' }} + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./build/docs/reference/aravis/aravis-0.8 + diff --git a/README.md b/README.md index fca4bb14e..71c29504e 100644 --- a/README.md +++ b/README.md @@ -25,173 +25,10 @@ simple video viewer. Aravis is released under the LGPL v2+. -### Installing Aravis +### Documentation -Aravis uses the meson build system ( http://mesonbuild.com/ ). After you have -downloaded the latest release from -[https://github.com/AravisProject/aravis/releases](https://github.com/AravisProject/aravis/releases), -you can build and install Aravis like [any other meson -project](http://mesonbuild.com/Quick-guide.html#compiling-a-meson-project): - -``` -meson build -cd build -ninja -ninja install -``` - -The build can be configured at any time using `meson configure` in the build -directory. `meson configure` invoked without any other argument will show the -configuration options. - -On some platforms (like Ubuntu), you may have to configure the dynamic linker -(ld) to let it know where the aravis libraries are installed, and run ldconfig -as root in order to update ld cache. - -#### Install dependencies on Ubuntu 20.04 - -Prior to running `meson` and `ninja`, dependencies can be installed using the -following(tested on Ubuntu 20.04): - -``` -sudo apt install libxml2-dev libglib2.0-dev cmake libusb-1.0-0-dev gobject-introspection \ - libgtk-3-dev gtk-doc-tools xsltproc libgstreamer1.0-dev \ - libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \ - libgirepository1.0-dev -``` - -#### Building on macOS - -Using the GNU build system on macOS is not directly supported, but can be -mimicked by augmenting the install procedure above with some environment -settings (tested on macOS Catalina): - -``` -brew install gettext intltool gtk-doc libxml2 meson libusb -meson build -ninja -C build -``` - -If you want to be able to build the viewer, you have to install some additional -packages: - -``` -brew install gtk+3 gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad libnotify gnome-icon-theme -meson configure -Dviewer=enabled -``` - -Python bindings and camera simulator are not functional yet. - -#### Building on Windows - -[MSYS2](https://msys2.org) provides native [Aravis packages](https://packages.msys2.org/base/mingw-w64-aravis). -The package includes the DLL, headers and utilities (including the viewer). - -To built Aravis by yourself, install MSYS2 and enter the mingw64 shell. Refer to -the [mingw CI configuration file](https://github.com/AravisProject/aravis/blob/main/.github/workflows/aravis-mingw.yml) -for list of dependencies (such as `mingw-w64-x86_64-libxml2` and so on) which must be installed prior -to building via `pacman -S ...`. The build process itself is the same as on other platforms (meson/ninja). - -Alternatively, you can build Aravis using Microsoft Visual C++ (MSVC) and Conan -package manager. Have a look at the [msvc CI configuration file](https://github.com/AravisProject/aravis/blob/main/.github/workflows/aravis-msvc.yml). - -##### Cross-compilation for Windows - -Aravis for Windows can be also cross-compiled on Linux (and used in Wine) using [crossroad](https://pypi.org/project/crossroad/), provided that cross-compiler and native build tools (`sudo apt install gcc-mingw-w64-x86-64 meson ninja=build` on Debian/Ubuntu) are installed: - -``` -# note: use the git version, not the one from pypi -pip3 install --user git+git://git.tuxfamily.org/gitroot/crossroad/crossroad.git -# create cross-compilation environment with architecture "w64" called "aravis" -crossroad w64 aravis -# install packages required for compilation; crossroad adds the mingw-w64_x86_64- prefix automatically -crossroad install libnotify gstreamer gst-plugins-good gst-plugins-bad gst-plugins-bad gobject-introspection libusb gtk3 libxml2 zlib -# clone aravis sources -git clone https://github.com/AravisProject/aravis -cd aravis -# configure, crossroad adjusts meson for cross-compilation; build directory is created -crossroad meson build -# compile and install -ninja -C build install -``` - -### Utilities - -The main goal of Aravis is to provide a library that interfaces with industrial -cameras. It also provides a set of utilities that help to debug the library, -namely arv-viewer-0.8, arv-tool-0.8, arv-camera-test-0.8 and -arv-fake-gv-camera-0.8. The version suffix corresponds to the API version, as -several stable series of Aravis can be installed at the same time. - -The options for each utility is obtained using `--help` argument. - -### Ethernet Device Performance - -#### Stream Packet Size - -One way to increase streaming performance is to increase the stream packet size. -arv_camera_gv_set_packet_size() and arv_camera_gv_auto_packet_size() allow you -to change this parameter. By default, the network adapter of your machine will -probably not let you receive packet bigger than 1500 bytes, which is the default -Maximum Transfer Unit (MTU). It means if you want to use big packets, you also -have to increase the network adapter MTU to a greater walue (8192 bytes being a -recommended value). The exact procedure to change the MTU depends on the -distribution you are using. Please refer to the administrator manual of your -distribution. - -On Fedora, MTU can be changed using the network setting panel. Edit the wired -network settings. MTU parameter is in the Identity page. - -On Debian / Ubuntu you can add a line "mtu 8192" to /etc/network/interfaces -under the correct device. - -``` -iface ethusb0 inet static - address 192.168.45.1 - netmask 255.255.255.0 - broadcast 192.168.45.255 - mtu 8192 -``` - -Please note if your device is not connected directly to the machine, you may -also have to tweak the active devices on your network. - -#### Packet Socket Support - -Aravis can use packet sockets for the video receiving thread. But this mode -requires extended capabilities. If you want to allow your application to use -packet socket, you must set the `cap_net_raw` capability using `setcap`. For -example, the following command gives this capability to the Aravis viewer (You -should do this on the installed arv-viewer executable, has the one in the source -tree is just a wrapper shell script): - -``` -sudo setcap cap_net_raw+ep arv-viewer -``` - -### USB - -#### Permissions - -By default, USB devices permissions may not be sufficient to allow any user to -access the USB3 cameras. This permissions can be changed by using an udev rule -file. There is a file example in Aravis sources, src/aravis.rules. This file -must be placed in /etc/udev/rules.d directory (The exact location may depend on -the distribution you are using). This file only contains declarations for a -couple of vendors. If you want to add an entry with the vendor of your camera, -the output of `lsusb` command will give you the vendor id, which is the first 4 -digits of the ID field. - -#### Performance - -Aravis uses by default the synchronous libusb API. But it can be told to use the -asynchronous API for better performances, especially on embedded platform like -RapsberryPi or Nvidia Jetson boards. The function to use is -`arv_camera_uv_set_usb_mode()`. - -`arv-viewer` and `arv-camera-test` can use the asynchronous API if `usb-mode` -option is set to `async`. Similarly, the GStreamer plugin is using the -asynchronous API if `usb-mode` property is set to `async`. +The latest documentation is available +[here](https://aravisproject.github.io/aravis). ### Dependencies @@ -220,78 +57,11 @@ aravis project: code, bug reports, testing... However, contributions to both Gigabit Ethernet and USB3 protocol code (files `src/arvuv*.[ch]` `src/arvgv*.[ch]`) must not be based on the corresponding specification documents published by the [AIA](http://www.visiononline.org/), as -this organisation forbids the use of their documents for the development of an +this organization forbids the use of their documents for the development of an open source implementation of the specifications. So, if you want to contribute to this part of Aravis, don't use the AIA documents and state clearly in the pull request your work is not based on them. -#### Unit tests - -Aravis has a set of unit tests that helps to catch regressions and memory leaks -during the development. The test suite is run using the following commands: - -``` -ninja test -``` - -The is a small helper script that run the same tests under valgrind memmory -checker - -``` -../tests/valgrind-memcheck -``` - -All the code is not covered yet by the tests. Code coverage can be obtained -using: - -``` -meson configure -Db_coverage=true -ninja coverage -``` - -The report is published in `build/meson-logs/coveragereport/index.html`. Help on -code coverage improvement is welcome. - -### Programming examples - -While most of the API is documented, Aravis documentation lacks some good -tutorial about the many features if offers. But a good resource is the tests -directory inside Aravis sources, where you will find a set of small samples -showing different key features. - -### Porting to Aravis 0.8 - -Aravis 0.8 has seen a major rewrite of how communication errors are handled. -Instead of relying on a status API, each function that can fail has an -additional error parameter now. This is the standard way of handling error in -the glib ecosytem. The nice side effect is now errors throw exceptions in -bindings where the language support them (rust, python, javascript). - -A quick port from the older series to 0.8 series is just a matter of adding a -NULL parameter to most of the modified functions. But you are advised to take -this opportunity to correctly handle errors. - -There is a page explaining Glib errors and how to manage them in the [Glib -documentation](https://developer.gnome.org/glib/stable/glib-Error-Reporting.html). - -During the camera configuration, in C language it can be somehow cumbersome to -check for errors at each function call. A convenient way to deal with this issue -is the following construction: - -``` -GError **error = NULL; - -if (!error) arv_camera_... (..., &error); -if (!error) arv_camera_... (..., &error); -if (!error) arv_camera_... (..., &error); -if (!error) arv_camera_... (..., &error); - -if (error) { - handle error here; - g_clear_error (&error); -} -``` - ### Links * Forum: https://aravis-project.discourse.group diff --git a/docs/reference/aravis/aravis-docs.xml b/docs/reference/aravis/aravis-docs.xml deleted file mode 100644 index e0e6fbb30..000000000 --- a/docs/reference/aravis/aravis-docs.xml +++ /dev/null @@ -1,211 +0,0 @@ - - - - %gtkdocentities; -]> - - - - &package_name; Reference Manual - For &package_name; &package_api_version;. - - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free - Documentation License, Version 1.1 or any later - version published by the Free Software Foundation with no - Invariant Sections, no Front-Cover Texts, and no Back-Cover - Texts. You may obtain a copy of the GNU Free - Documentation License from the Free Software - Foundation by visiting their Web site or by writing - to: - -
- The Free Software Foundation, Inc., - 59 Temple Place - Fifth Floor, - Boston, MA 02110-1301, - USA -
-
-
-
- - - - - &package_name; API reference - - - Base - - - - - - - - - - - Genicam - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ethernet cameras - - - - - - - - USB cameras - - - - - - - Fake cameras - - - - - - - - DOM - - - - - - - - - - - - - Utils - - - - - - - - - - Object Hierarchy - - - - - Index - - - - - Index of new symbols in 0.2.0 - - - - Index of new symbols in 0.2.3 - - - - - Index of new symbols in 0.4.0 - - - - - Index of new symbols in 0.6.0 - - - - Index of new symbols in 0.6.2 - - - - - Index of new symbols in 0.8.0 - - - - Index of new symbols in 0.8.3 - - - - Index of new symbols in 0.8.6 - - - - Index of new symbols in 0.8.8 - - - - Index of new symbols in 0.8.11 - - - - Index of new symbols in 0.8.15 - - - - Index of new symbols in 0.8.16 - - - - Index of new symbols in 0.8.17 - - - - Index of new symbols in 0.8.19 - - - - Index of new symbols in 0.8.20 - - - - - - - - -
diff --git a/docs/reference/aravis/aravis-overview.xml b/docs/reference/aravis/aravis-overview.xml deleted file mode 100644 index 6edccdd69..000000000 --- a/docs/reference/aravis/aravis-overview.xml +++ /dev/null @@ -1,109 +0,0 @@ - - Overview - - - Introduction - - - Aravis is a GObject based library for the control and the video stream - acquisition of digital cameras. - - - - While using GenICam xml files for the description of the camera - registers, it does not try to be a complete implementation of the - Genicam API as described in the GenAPI GenICam document. Nevertheless, - a good knowledge of the GenICam standard should - help to understand how Aravis operates. - - - - Aravis currently provides an implementation of a gigabit ethernet UDP - based protocol, found in a lot of ethernet industrial cameras. - - - - ArvCamera is a simple API for easy access of standard camera features. - - - - ArvDevice and ArvGc are more low level APIs, which enable the full - control of the cameras, allowing the use of the features specific to - each model. - - - - - Thread Safety - - - Aravis is not thread safe, which means one can not use the same object simultaneously from different - threads, without using mutexes. But it is perfectly fine to use different aravis objects in different - threads, with the exception of the ArvInterface instances. - - - - A possible trap is that glib signal callbacks are called from the thread that emitted the - corresponding signal. For example, the "new-buffer" callback is emitted from the stream packet - receiving thread, which is an internal thread created by ArvGvStream. It is not safe to use ArvDevice - and some ArvStream functions from this callback without using mutexes. The exceptions are - arv_stream_push_buffer(), arv_stream_pop_buffer(), arv_stream_try_pop_buffer() and - arv_stream_timeout_pop_buffer(). - - - - - Building and Debugging Aravis - - - Aravis is built using meson build system. Release tarballs are - stored on https://github.com/AravisProject/aravis/releases. - You can build and install Aravis like any other meson project: - - meson build - cd build - ninja - ninja install - - - - - The build can be configured at any time using meson configure in the build directory. - meson configure invoked without any other argument will show the configuration options. - - - - On some platforms (like Ubuntu), you may have to configure the dynamic linker (ld) to let it know where the aravis - libraries are installed, and run ldconfig as root in order to update ld cache - - - - The ARV_DEBUG environment variable can be set to a comma - separated list of debugging categories, which will make Aravis - print out different types of debugging informations to the - console. A debug level can also be specified, using a number from 0 (none) to - 3 (log) separated from the category name by a colon. For example, the - following command before running an Aravis based application will make - Aravis print out all stream and device related informations: - - export ARV_DEBUG=stream:3,device:3 - - Available categories are: - - all - interface - device - chunk - stream - stream-thread - cp - sp - genicam - evaluator - dom - misc - - - - diff --git a/docs/reference/aravis/aravis-sections.txt b/docs/reference/aravis/aravis-sections.txt deleted file mode 100644 index e0a41fbd5..000000000 --- a/docs/reference/aravis/aravis-sections.txt +++ /dev/null @@ -1,1728 +0,0 @@ -
-arvcamera -ArvCamera -ARAVIS_VERSION -ARAVIS_API_VERSION -ARAVIS_CHECK_VERSION -ARAVIS_MAJOR_VERSION -ARAVIS_MICRO_VERSION -ARAVIS_MINOR_VERSION -arv_get_major_version -arv_get_micro_version -arv_get_minor_version -ARAVIS_HAS_PACKET_SOCKET -ARAVIS_HAS_USB -ARAVIS_HAS_FAST_HEARTBEAT -ArvAuto -arv_auto_from_string -arv_auto_to_string -ArvCamera -arv_camera_new -arv_camera_new_with_device -arv_camera_create_stream -arv_camera_get_device -arv_camera_get_vendor_name -arv_camera_get_model_name -arv_camera_get_device_serial_number -arv_camera_get_device_id -arv_camera_get_sensor_size -arv_camera_set_region -arv_camera_get_region -arv_camera_get_x_offset_bounds -arv_camera_get_x_offset_increment -arv_camera_get_y_offset_bounds -arv_camera_get_y_offset_increment -arv_camera_get_height_bounds -arv_camera_get_height_increment -arv_camera_get_width_bounds -arv_camera_get_width_increment -arv_camera_is_binning_available -arv_camera_set_binning -arv_camera_get_binning -arv_camera_get_x_binning_bounds -arv_camera_get_x_binning_increment -arv_camera_get_y_binning_bounds -arv_camera_get_y_binning_increment -arv_camera_set_pixel_format -arv_camera_get_pixel_format -arv_camera_get_pixel_format_as_string -arv_camera_set_pixel_format_from_string -arv_camera_dup_available_pixel_formats -arv_camera_dup_available_pixel_formats_as_display_names -arv_camera_dup_available_pixel_formats_as_strings -arv_camera_start_acquisition -arv_camera_stop_acquisition -arv_camera_abort_acquisition -arv_camera_acquisition -arv_camera_set_acquisition_mode -arv_camera_get_acquisition_mode -arv_camera_set_frame_count -arv_camera_get_frame_count -arv_camera_get_frame_count_bounds -arv_camera_is_frame_rate_available -arv_camera_set_frame_rate -arv_camera_get_frame_rate -arv_camera_get_frame_rate_bounds -arv_camera_set_trigger -arv_camera_set_trigger_source -arv_camera_get_trigger_source -arv_camera_dup_available_trigger_sources -arv_camera_dup_available_triggers -arv_camera_clear_triggers -arv_camera_is_software_trigger_supported -arv_camera_software_trigger -arv_camera_is_exposure_time_available -arv_camera_is_exposure_auto_available -arv_camera_set_exposure_time -arv_camera_get_exposure_time -arv_camera_get_exposure_time_bounds -arv_camera_set_exposure_time_auto -arv_camera_get_exposure_time_auto -arv_camera_set_exposure_mode -arv_camera_is_gain_available -arv_camera_is_gain_auto_available -arv_camera_set_gain -arv_camera_get_gain -arv_camera_get_gain_bounds -arv_camera_set_gain_auto -arv_camera_get_gain_auto -arv_camera_is_black_level_available -arv_camera_get_black_level -arv_camera_set_black_level -arv_camera_get_black_level_bounds -arv_camera_is_black_level_auto_available -arv_camera_get_black_level_auto -arv_camera_set_black_level_auto -arv_camera_get_payload -arv_camera_is_feature_available -arv_camera_execute_command -arv_camera_is_enumeration_entry_available -arv_camera_dup_available_enumerations -arv_camera_dup_available_enumerations_as_strings -arv_camera_dup_available_enumerations_as_display_names -arv_camera_get_boolean -arv_camera_get_float -arv_camera_get_float_bounds -arv_camera_get_float_increment -arv_camera_get_integer -arv_camera_get_integer_bounds -arv_camera_get_integer_increment -arv_camera_get_string -arv_camera_set_boolean -arv_camera_set_float -arv_camera_set_integer -arv_camera_set_string -ArvGvPacketSizeAdjustment -arv_camera_set_range_check_policy -arv_camera_set_register_cache_policy -arv_camera_is_gv_device -arv_camera_gv_get_n_stream_channels -arv_camera_gv_select_stream_channel -arv_camera_gv_get_current_stream_channel -arv_camera_gv_get_packet_delay -arv_camera_gv_set_packet_delay -arv_camera_gv_get_packet_size -arv_camera_gv_set_packet_size -arv_camera_gv_auto_packet_size -arv_camera_gv_set_packet_size_adjustment -arv_camera_gv_set_stream_options -arv_camera_is_uv_device -arv_camera_uv_set_usb_mode -arv_camera_uv_get_bandwidth -arv_camera_uv_get_bandwidth_bounds -arv_camera_uv_is_bandwidth_control_available -arv_camera_uv_set_bandwidth -arv_camera_are_chunks_available -arv_camera_get_chunk_mode -arv_camera_get_chunk_state -arv_camera_set_chunk_mode -arv_camera_set_chunk_state -arv_camera_set_chunks -arv_camera_create_chunk_parser -ArvAcquisitionMode -arv_acquisition_mode_to_string -arv_acquisition_mode_from_string -ArvExposureMode -arv_exposure_mode_from_string -arv_exposure_mode_to_string - -ARV_CAMERA -ARV_IS_CAMERA -ARV_TYPE_CAMERA -arv_camera_get_type -ARV_CAMERA_CLASS -ARV_IS_CAMERA_CLASS -ARV_CAMERA_GET_CLASS - -ARV_API -ArvCameraPrivate -ArvCameraClass -arv_camera_get_boolean_gi -
- -
-arvbuffer -ArvBuffer -ArvFrameCallback -ArvBufferStatus -ArvBuffer -ArvBufferPayloadType -ArvPixelFormat -arv_buffer_new -arv_buffer_new_full -arv_buffer_new_allocate -arv_buffer_get_user_data -arv_buffer_get_data -arv_buffer_has_chunks -arv_buffer_get_chunk_data -arv_buffer_get_timestamp -arv_buffer_set_timestamp -arv_buffer_get_system_timestamp -arv_buffer_set_system_timestamp -arv_buffer_set_frame_id -arv_buffer_get_frame_id -arv_buffer_get_payload_type -arv_buffer_get_status -arv_buffer_get_image_height -arv_buffer_get_image_pixel_format -arv_buffer_get_image_region -arv_buffer_get_image_width -arv_buffer_get_image_x -arv_buffer_get_image_y -ARV_PIXEL_FORMAT_BIT_PER_PIXEL -ARV_PIXEL_FORMAT_BAYER_BG_10P -ARV_PIXEL_FORMAT_BAYER_BG_10_PACKED -ARV_PIXEL_FORMAT_BAYER_BG_12P -ARV_PIXEL_FORMAT_BAYER_GB_10P -ARV_PIXEL_FORMAT_BAYER_GB_10_PACKED -ARV_PIXEL_FORMAT_BAYER_GB_12P -ARV_PIXEL_FORMAT_BAYER_GR_10P -ARV_PIXEL_FORMAT_BAYER_GR_10_PACKED -ARV_PIXEL_FORMAT_BAYER_GR_12P -ARV_PIXEL_FORMAT_BAYER_RG_10P -ARV_PIXEL_FORMAT_BAYER_RG_10_PACKED -ARV_PIXEL_FORMAT_BAYER_RG_12P -ARV_PIXEL_FORMAT_BAYER_BG_10 -ARV_PIXEL_FORMAT_BAYER_BG_12 -ARV_PIXEL_FORMAT_BAYER_GR_12_PACKED -ARV_PIXEL_FORMAT_BAYER_GB_12_PACKED -ARV_PIXEL_FORMAT_BAYER_RG_12_PACKED -ARV_PIXEL_FORMAT_BAYER_BG_12_PACKED -ARV_PIXEL_FORMAT_BAYER_BG_8 -ARV_PIXEL_FORMAT_BAYER_GB_10 -ARV_PIXEL_FORMAT_BAYER_GB_12 -ARV_PIXEL_FORMAT_BAYER_GB_8 -ARV_PIXEL_FORMAT_BAYER_GR_10 -ARV_PIXEL_FORMAT_BAYER_GR_12 -ARV_PIXEL_FORMAT_BAYER_GR_8 -ARV_PIXEL_FORMAT_BAYER_RG_10 -ARV_PIXEL_FORMAT_BAYER_RG_12 -ARV_PIXEL_FORMAT_BAYER_RG_8 -ARV_PIXEL_FORMAT_BAYER_BG_16 -ARV_PIXEL_FORMAT_BAYER_GB_16 -ARV_PIXEL_FORMAT_BAYER_GR_16 -ARV_PIXEL_FORMAT_BAYER_RG_16 -ARV_PIXEL_FORMAT_BGRA_8_PACKED -ARV_PIXEL_FORMAT_BGR_10_PACKED -ARV_PIXEL_FORMAT_BGR_12_PACKED -ARV_PIXEL_FORMAT_BGR_8_PACKED -ARV_PIXEL_FORMAT_CUSTOM_BAYER_BG_12_PACKED -ARV_PIXEL_FORMAT_CUSTOM_BAYER_BG_16 -ARV_PIXEL_FORMAT_CUSTOM_BAYER_GB_12_PACKED -ARV_PIXEL_FORMAT_CUSTOM_BAYER_GB_16 -ARV_PIXEL_FORMAT_CUSTOM_BAYER_GR_12_PACKED -ARV_PIXEL_FORMAT_CUSTOM_BAYER_GR_16 -ARV_PIXEL_FORMAT_CUSTOM_BAYER_RG_12_PACKED -ARV_PIXEL_FORMAT_CUSTOM_BAYER_RG_16 -ARV_PIXEL_FORMAT_CUSTOM_YUV_422_YUYV_PACKED -ARV_PIXEL_FORMAT_MONO_10 -ARV_PIXEL_FORMAT_MONO_10_PACKED -ARV_PIXEL_FORMAT_MONO_12 -ARV_PIXEL_FORMAT_MONO_12_PACKED -ARV_PIXEL_FORMAT_MONO_14 -ARV_PIXEL_FORMAT_MONO_16 -ARV_PIXEL_FORMAT_MONO_8 -ARV_PIXEL_FORMAT_MONO_8_SIGNED -ARV_PIXEL_FORMAT_RGBA_8_PACKED -ARV_PIXEL_FORMAT_RGB_10_PACKED -ARV_PIXEL_FORMAT_RGB_10_PLANAR -ARV_PIXEL_FORMAT_RGB_12_PACKED -ARV_PIXEL_FORMAT_RGB_12_PLANAR -ARV_PIXEL_FORMAT_RGB_16_PLANAR -ARV_PIXEL_FORMAT_RGB_8_PACKED -ARV_PIXEL_FORMAT_RGB_8_PLANAR -ARV_PIXEL_FORMAT_YUV_411_PACKED -ARV_PIXEL_FORMAT_YUV_422_PACKED -ARV_PIXEL_FORMAT_YUV_422_YUYV_PACKED -ARV_PIXEL_FORMAT_YUV_444_PACKED - -ARV_TYPE_PIXEL_FORMAT -ARV_BUFFER -ARV_IS_BUFFER -ARV_TYPE_BUFFER -arv_buffer_get_type -ARV_BUFFER_CLASS -ARV_IS_BUFFER_CLASS -ARV_BUFFER_GET_CLASS - -ArvBufferClass -ArvBufferPrivate -
- -
-arv -Arv -arv_update_device_list -arv_get_n_devices -arv_get_device_id -arv_get_device_physical_id -arv_get_device_model -arv_get_device_serial_nbr -arv_get_device_vendor -arv_get_device_manufacturer_info -arv_get_device_address -arv_get_device_protocol -arv_open_device -arv_get_n_interfaces -arv_get_interface_id -arv_disable_interface -arv_enable_interface -arv_shutdown -
- -
-arvinterface -ArvInterface -arv_interface_get_device_address -arv_interface_get_device_id -arv_interface_get_device_model -arv_interface_get_device_physical_id -arv_interface_get_device_serial_nbr -arv_interface_get_device_vendor -arv_interface_get_device_manufacturer_info -arv_interface_get_device_protocol -arv_interface_get_n_devices -arv_interface_open_device -arv_interface_update_device_list - -ARV_INTERFACE -ARV_INTERFACE_CLASS -ARV_INTERFACE_GET_CLASS -ARV_IS_INTERFACE -ARV_IS_INTERFACE_CLASS -ARV_TYPE_INTERFACE -arv_interface_get_type - -ArvInterfaceDeviceIds -ArvInterfacePrivate -arv_vendor_alias_lookup -
- -
-arvdevice -ArvDevice -ARV_DEVICE_ERROR -ArvDeviceError -ArvDevice -arv_device_create_stream -arv_device_create_chunk_parser -arv_device_read_memory -arv_device_write_memory -arv_device_read_register -arv_device_write_register -arv_device_get_genicam_xml -arv_device_get_genicam -arv_device_get_feature -arv_device_is_feature_available -arv_device_execute_command -arv_device_get_boolean_feature_value -arv_device_set_boolean_feature_value -arv_device_set_string_feature_value -arv_device_get_string_feature_value -arv_device_set_integer_feature_value -arv_device_get_integer_feature_value -arv_device_get_integer_feature_bounds -arv_device_get_integer_feature_increment -arv_device_set_float_feature_value -arv_device_get_float_feature_value -arv_device_get_float_feature_bounds -arv_device_get_float_feature_increment -arv_device_is_enumeration_entry_available -arv_device_dup_available_enumeration_feature_values -arv_device_dup_available_enumeration_feature_values_as_strings -arv_device_dup_available_enumeration_feature_values_as_display_names -arv_device_set_features_from_string -arv_device_set_range_check_policy -arv_device_set_register_cache_policy - -ARV_DEVICE -ARV_IS_DEVICE -ARV_TYPE_DEVICE -arv_device_get_type -ARV_DEVICE_CLASS -ARV_IS_DEVICE_CLASS -ARV_DEVICE_GET_CLASS - -arv_device_error_quark -ArvDeviceClass -ArvDevicePrivate -ARV_DEVICE_NAME_ILLEGAL_CHARACTERS -ARV_DEVICE_NAME_REPLACEMENT_CHARACTER -arv_device_get_boolean_feature_value_gi -
- -
-arvfakeinterface -ArvFakeInterface -ArvFakeInterface -arv_fake_interface_get_instance - -ARV_FAKE_INTERFACE -ARV_IS_FAKE_INTERFACE -ARV_TYPE_FAKE_INTERFACE -arv_fake_interface_get_type -ARV_FAKE_INTERFACE_CLASS -ARV_IS_FAKE_INTERFACE_CLASS -ARV_FAKE_INTERFACE_GET_CLASS - -ArvFakeInterfacePrivate -ArvFakeInterfaceClass -arv_fake_interface_destroy_instance -ARV_FAKE_INTERFACE_DISCOVERY_TIMEOUT_MS -ARV_FAKE_INTERFACE_SOCKET_BUFFER_SIZE -
- -
-arvuvinterface -ArvUvInterface -arv_uv_interface_get_instance - -ArvUvInterface -ARV_IS_UV_INTERFACE -ARV_IS_UV_INTERFACE_CLASS -ARV_TYPE_UV_INTERFACE -ARV_UV_INTERFACE -ARV_UV_INTERFACE_CLASS -ARV_UV_INTERFACE_GET_CLASS -ArvUvInterfaceClass -ArvUvInterfacePrivate -arv_uv_interface_get_type - -arv_uv_interface_destroy_instance -
- -
-arvuvdevice -ArvUvDevice -ArvUvUsbMode -arv_uv_device_new -arv_uv_device_new_from_guid -arv_uv_device_set_usb_mode - -ArvUvDevice -ARV_IS_UV_DEVICE -ARV_IS_UV_DEVICE_CLASS -ARV_TYPE_UV_DEVICE -ARV_UV_DEVICE -ARV_UV_DEVICE_CLASS -ARV_UV_DEVICE_GET_CLASS -ArvUvDeviceClass -ArvUvDevicePrivate -arv_uv_device_get_type - -arv_uv_device_bulk_transfer -
- -
-arvuvstream -ArvUvStream - -ArvUvStream -ARV_IS_UV_STREAM -ARV_IS_UV_STREAM_CLASS -ARV_TYPE_UV_STREAM -ARV_UV_STREAM -ARV_UV_STREAM_CLASS -ARV_UV_STREAM_GET_CLASS -ArvUvStreamClass -ArvUvStreamPrivate -arv_uv_stream_get_type - -arv_uv_stream_new -
- -
-arvgcport -ArvGcPort -ArvGcPort -arv_gc_port_new -arv_gc_port_read -arv_gc_port_write -arv_gc_set_default_node_data - -ARV_GC_PORT -ARV_IS_GC_PORT -ARV_TYPE_GC_PORT -arv_gc_port_get_type -ARV_GC_PORT_CLASS -ARV_IS_GC_PORT_CLASS -ARV_GC_PORT_GET_CLASS - -ArvGcPortPrivate -ArvGcPortClass -
- -
-arvchunkparser -ArvChunkParser -ARV_CHUNK_PARSER_ERROR -ArvChunkParserError -ArvChunkParser -arv_chunk_parser_new -arv_chunk_parser_get_float_value -arv_chunk_parser_get_integer_value -arv_chunk_parser_get_boolean_value -arv_chunk_parser_get_string_value - -arv_chunk_parser_get_type -ARV_CHUNK_PARSER -ARV_CHUNK_PARSER_CLASS -ARV_CHUNK_PARSER_GET_CLASS -ARV_IS_CHUNK_PARSER -ARV_IS_CHUNK_PARSER_CLASS -ARV_TYPE_CHUNK_PARSER - -ArvChunkParserStatus -ArvChunkParserPrivate -arv_chunk_parser_error_quark -
- -
-arvgcnode -ArvGcNode -ArvGcNode -arv_gc_node_get_genicam - -ARV_GC_NODE -ARV_IS_GC_NODE -ARV_TYPE_GC_NODE -arv_gc_node_get_type -ARV_GC_NODE_CLASS -ARV_IS_GC_NODE_CLASS -ARV_GC_NODE_GET_CLASS - -ArvGcNodePrivate -ArvGcNodeClass -ARV_GC_ERROR -ArvGcError -arv_gc_error_quark -
- -
-arvgcpropertynode -ArvGcPropertyNode -ArvGcPropertyNode -arv_gc_property_node_new_access_mode -arv_gc_property_node_new_address -arv_gc_property_node_new_bit -arv_gc_property_node_new_cachable -arv_gc_property_node_new_command_value -arv_gc_property_node_new_constant -arv_gc_property_node_new_description -arv_gc_property_node_new_display_name -arv_gc_property_node_new_endianness -arv_gc_property_node_new_expression -arv_gc_property_node_new_formula -arv_gc_property_node_new_formula_from -arv_gc_property_node_new_formula_to -arv_gc_property_node_new_increment -arv_gc_property_node_new_imposed_access_mode -arv_gc_property_node_new_is_linear -arv_gc_property_node_new_length -arv_gc_property_node_new_lsb -arv_gc_property_node_new_maximum -arv_gc_property_node_new_minimum -arv_gc_property_node_new_msb -arv_gc_property_node_new_off_value -arv_gc_property_node_new_on_value -arv_gc_property_node_new_chunk_id -arv_gc_property_node_new_p_address -arv_gc_property_node_new_p_command_value -arv_gc_property_node_new_p_feature -arv_gc_property_node_new_p_increment -arv_gc_property_node_new_p_is_available -arv_gc_property_node_new_p_is_implemented -arv_gc_property_node_new_p_is_locked -arv_gc_property_node_new_p_length -arv_gc_property_node_new_p_maximum -arv_gc_property_node_new_p_minimum -arv_gc_property_node_new_p_port -arv_gc_property_node_new_p_value -arv_gc_property_node_new_p_variable -arv_gc_property_node_new_polling_time -arv_gc_property_node_new_sign -arv_gc_property_node_new_slope -arv_gc_property_node_new_tooltip -arv_gc_property_node_new_unit -arv_gc_property_node_new_p_value_default -arv_gc_property_node_new_value_default -arv_gc_property_node_new_value -arv_gc_property_node_new_event_id -arv_gc_property_node_new_p_selected -arv_gc_property_node_get_name -arv_gc_property_node_get_node_type -arv_gc_property_node_get_linked_node -arv_gc_property_node_get_double -arv_gc_property_node_set_double -arv_gc_property_node_get_int64 -arv_gc_property_node_set_int64 -arv_gc_property_node_get_string -arv_gc_property_node_set_string -arv_gc_property_node_get_access_mode -arv_gc_property_node_get_cachable -arv_gc_property_node_get_endianness -arv_gc_property_node_get_lsb -arv_gc_property_node_get_msb -arv_gc_property_node_get_sign -arv_gc_property_node_get_visibility -arv_gc_property_node_new_visibility -arv_gc_property_node_get_representation -arv_gc_property_node_new_representation -arv_gc_property_node_get_display_notation -arv_gc_property_node_new_display_notation -arv_gc_property_node_get_display_precision -arv_gc_property_node_new_display_precision -arv_gc_property_node_new_streamable -arv_gc_property_node_get_streamable - -arv_gc_property_node_get_type -ARV_GC_PROPERTY_NODE -ARV_GC_PROPERTY_NODE_CLASS -ARV_GC_PROPERTY_NODE_GET_CLASS -ARV_IS_GC_PROPERTY_NODE -ARV_IS_GC_PROPERTY_NODE_CLASS -ARV_TYPE_GC_PROPERTY_NODE - -ArvGcPropertyNodePrivate -ArvGcPropertyNodeType -
- -
-arvgcindexnode -ArvGcIndexNode -ArvGcIndexNode -arv_gc_index_node_new -arv_gc_index_node_get_index - -arv_gc_index_node_get_type -ARV_GC_INDEX_NODE -ARV_GC_INDEX_NODE_CLASS -ARV_GC_INDEX_NODE_GET_CLASS -ARV_IS_GC_INDEX_NODE -ARV_IS_GC_INDEX_NODE_CLASS -ARV_TYPE_GC_INDEX_NODE -
- -
-arvgcvalueindexednode -ArvGcValueIndexedNode -arv_gc_p_value_indexed_node_new -arv_gc_value_indexed_node_get_index -arv_gc_value_indexed_node_new - -ArvGcValueIndexedNode -ARV_GC_VALUE_INDEXED_NODE -ARV_GC_VALUE_INDEXED_NODE_CLASS -ARV_GC_VALUE_INDEXED_NODE_GET_CLASS -ARV_IS_GC_VALUE_INDEXED_NODE -ARV_IS_GC_VALUE_INDEXED_NODE_CLASS -ARV_TYPE_GC_VALUE_INDEXED_NODE - -
- -
-arvgcinvalidatornode -ArvGcInvalidatorNode -ArvGcInvalidatorNode -arv_gc_invalidator_node_new -arv_gc_invalidator_has_changed - -arv_gc_invalidator_node_get_type -ARV_GC_INVALIDATOR_NODE -ARV_GC_INVALIDATOR_NODE_CLASS -ARV_GC_INVALIDATOR_NODE_GET_CLASS -ARV_IS_GC_INVALIDATOR_NODE -ARV_IS_GC_INVALIDATOR_NODE_CLASS -ARV_TYPE_GC_INVALIDATOR_NODE -
- -
-arvgcfeaturenode -ArvGcFeatureNode -ArvGcFeatureNode -arv_gc_feature_node_get_value_as_string -arv_gc_feature_node_set_value_from_string -arv_gc_feature_node_get_name -arv_gc_feature_node_get_name_space -arv_gc_feature_node_get_display_name -arv_gc_feature_node_get_tooltip -arv_gc_feature_node_get_description -arv_gc_feature_node_is_available -arv_gc_feature_node_is_implemented -arv_gc_feature_node_is_locked -arv_gc_feature_node_get_visibility -arv_gc_feature_node_get_imposed_access_mode -arv_gc_feature_node_get_actual_access_mode - -ARV_GC_FEATURE_NODE -ARV_IS_GC_FEATURE_NODE -ARV_TYPE_GC_FEATURE_NODE -arv_gc_feature_node_get_type -ARV_GC_FEATURE_NODE_CLASS -ARV_IS_GC_FEATURE_NODE_CLASS -ARV_GC_FEATURE_NODE_GET_CLASS - -ArvGcFeatureNodePrivate -ArvGcFeatureNodeClass -arv_gc_feature_node_get_change_count -arv_gc_feature_node_increment_change_count -
- -
-arvgcgroupnode -ArvGcGroupNode -ArvGcGroupNode -arv_gc_group_node_new - -ARV_GC_GROUP_NODE -ARV_GC_GROUP_NODE_CLASS -ARV_GC_GROUP_NODE_GET_CLASS -ARV_IS_GC_GROUP_NODE -ARV_IS_GC_GROUP_NODE_CLASS -ARV_TYPE_GC_GROUP_NODE -
- -
-arvgcregisterdescriptionnode -ArvGcRegisterDescriptionNode -ArvGcRegisterDescriptionNode -arv_gc_register_description_node_new -arv_gc_register_description_node_compare_schema_version -arv_gc_register_description_node_check_schema_version -arv_gc_register_description_node_get_model_name -arv_gc_register_description_node_get_vendor_name -arv_gc_register_description_node_get_major_version -arv_gc_register_description_node_get_minor_version -arv_gc_register_description_node_get_subminor_version -arv_gc_register_description_node_get_schema_major_version -arv_gc_register_description_node_get_schema_minor_version -arv_gc_register_description_node_get_schema_subminor_version -arv_gc_register_feature_node - -arv_gc_register_description_node_get_type -ARV_GC_REGISTER_DESCRIPTION_NODE -ARV_GC_REGISTER_DESCRIPTION_NODE_CLASS -ARV_GC_REGISTER_DESCRIPTION_NODE_GET_CLASS -ARV_IS_GC_REGISTER_DESCRIPTION_NODE -ARV_IS_GC_REGISTER_DESCRIPTION_NODE_CLASS -ARV_TYPE_GC_REGISTER_DESCRIPTION_NODE -
- -
-arvgcintegernode -ArvGcIntegerNode -ArvGcIntegerNode -arv_gc_integer_node_new - -ARV_GC_INTEGER_NODE -ARV_IS_GC_INTEGER_NODE -ARV_TYPE_GC_INTEGER_NODE -arv_gc_integer_node_get_type -ARV_GC_INTEGER_NODE_CLASS -ARV_IS_GC_INTEGER_NODE_CLASS -ARV_GC_INTEGER_NODE_GET_CLASS - -ArvGcIntegerNodeClass -
- -
-arvgcenumeration -ArvGcEnumeration -ArvGcEnumeration -arv_gc_enumeration_new -arv_gc_enumeration_get_string_value -arv_gc_enumeration_set_string_value -arv_gc_enumeration_get_int_value -arv_gc_enumeration_set_int_value -arv_gc_enumeration_get_entries -arv_gc_enumeration_dup_available_int_values -arv_gc_enumeration_dup_available_string_values -arv_gc_enumeration_dup_available_display_names - -ARV_GC_ENUMERATION -ARV_IS_GC_ENUMERATION -ARV_TYPE_GC_ENUMERATION -arv_gc_enumeration_get_type -ARV_GC_ENUMERATION_CLASS -ARV_IS_GC_ENUMERATION_CLASS -ARV_GC_ENUMERATION_GET_CLASS - -ArvGcEnumerationClass -
- -
-arvevaluator -ArvEvaluator -ArvEvaluator -arv_evaluator_new -arv_evaluator_set_expression -arv_evaluator_get_expression -arv_evaluator_get_constant -arv_evaluator_get_sub_expression -arv_evaluator_set_constant -arv_evaluator_set_sub_expression -arv_evaluator_evaluate_as_double -arv_evaluator_evaluate_as_int64 -arv_evaluator_set_double_variable -arv_evaluator_set_int64_variable - -ARV_EVALUATOR -ARV_IS_EVALUATOR -ARV_TYPE_EVALUATOR -arv_evaluator_get_type -ARV_EVALUATOR_CLASS -ARV_IS_EVALUATOR_CLASS -ARV_EVALUATOR_GET_CLASS - -ArvEvaluatorPrivate -ArvEvaluatorClass -
- -
-arvgcinteger -ArvGcInteger -ArvGcInteger -arv_gc_integer_get_value -arv_gc_integer_set_value -arv_gc_integer_get_min -arv_gc_integer_get_max -arv_gc_integer_get_inc -arv_gc_integer_get_representation -arv_gc_integer_get_unit -arv_gc_integer_impose_min -arv_gc_integer_impose_max - -ARV_GC_INTEGER -ARV_IS_GC_INTEGER -ARV_TYPE_GC_INTEGER -arv_gc_integer_get_type -ARV_GC_INTEGER_GET_INTERFACE - -ArvGcIntegerInterface -
- -
-arvgcregister -ArvGcRegister -ArvGcRegister -arv_gc_register_get -arv_gc_register_get_address -arv_gc_register_get_length -arv_gc_register_set - -ARV_GC_REGISTER -ARV_GC_REGISTER_GET_CLASS -ARV_GC_REGISTER_GET_INTERFACE -ARV_IS_GC_REGISTER -ARV_TYPE_GC_REGISTER -ArvGcRegisterInterface -ArvGcRegisterType -
- -
-arvgcconverter -ArvGcConverter -ArvGcConverter - -ARV_GC_CONVERTER -ARV_IS_GC_CONVERTER -ARV_TYPE_GC_CONVERTER -arv_gc_converter_get_type -ARV_GC_CONVERTER_CLASS -ARV_IS_GC_CONVERTER_CLASS -ARV_GC_CONVERTER_GET_CLASS - -ArvGcConverterClass -
- -
-arvgcconverternode -ArvGcConverterNode -ArvGcConverterNode -arv_gc_converter_node_new - -arv_gc_converter_node_get_type -ARV_GC_CONVERTER_NODE -ARV_GC_CONVERTER_NODE_CLASS -ARV_GC_CONVERTER_NODE_GET_CLASS -ARV_IS_GC_CONVERTER_NODE -ARV_IS_GC_CONVERTER_NODE_CLASS -ARV_TYPE_GC_CONVERTER_NODE -ArvGcConverterNodeClass - -ArvGcConverterNodeType -ArvGcConverterPrivate -
- -
-arvgcintconverternode -ArvGcIntConverterNode -ArvGcIntConverterNode -arv_gc_int_converter_node_new - -arv_gc_int_converter_node_get_type -ARV_GC_INT_CONVERTER_NODE -ARV_GC_INT_CONVERTER_NODE_CLASS -ARV_GC_INT_CONVERTER_NODE_GET_CLASS -ARV_IS_GC_INT_CONVERTER_NODE -ARV_IS_GC_INT_CONVERTER_NODE_CLASS -ARV_TYPE_GC_INT_CONVERTER_NODE -ArvGcIntConverterNodeClass - -
- -
-arvstream -ArvStream -ArvStreamCallbackType -ArvStreamCallback -ArvStream -arv_stream_push_buffer -arv_stream_pop_buffer -arv_stream_try_pop_buffer -arv_stream_timeout_pop_buffer -arv_stream_get_n_buffers -arv_stream_start_thread -arv_stream_stop_thread -arv_stream_get_emit_signals -arv_stream_set_emit_signals -arv_make_thread_realtime -arv_make_thread_high_priority -arv_stream_get_statistics -arv_stream_get_n_infos -arv_stream_get_info_name -arv_stream_get_info_type -arv_stream_get_info_double -arv_stream_get_info_double_by_name -arv_stream_get_info_uint64 -arv_stream_get_info_uint64_by_name - -ARV_STREAM -ARV_IS_STREAM -ARV_TYPE_STREAM -arv_stream_get_type -ARV_STREAM_CLASS -ARV_IS_STREAM_CLASS -ARV_STREAM_GET_CLASS - -ArvStreamPrivate -arv_stream_pop_input_buffer -arv_stream_push_output_buffer -ArvStreamClass -
- -
-arvfakedevice -ArvFakeDevice -ArvFakeDevice -arv_fake_device_new -arv_fake_device_get_fake_camera - -ARV_FAKE_DEVICE -ARV_IS_FAKE_DEVICE -ARV_TYPE_FAKE_DEVICE -arv_fake_device_get_type -ARV_FAKE_DEVICE_CLASS -ARV_IS_FAKE_DEVICE_CLASS -ARV_FAKE_DEVICE_GET_CLASS - -ArvFakeDeviceClass -ArvFakeDevicePrivate -
- -
-arvgc -ArvGc -ArvGc -ArvRangeCheckPolicy -ArvRegisterCachePolicy -ArvGcNameSpace -ArvGcAccessMode -ArvGcCachable -ArvGcSignedness -ArvGcIsLinear -ArvGcVisibility -ArvGcRepresentation -ArvGcDisplayNotation -ArvGcStreamable -arv_gc_new -arv_gc_get_node -arv_gc_get_device -arv_gc_get_buffer -arv_gc_set_buffer -arv_gc_get_range_check_policy -arv_gc_set_range_check_policy -arv_gc_get_register_cache_policy -arv_gc_set_register_cache_policy - -ARV_GC -ARV_IS_GC -ARV_TYPE_GC -arv_gc_get_type -ARV_GC_CLASS -ARV_IS_GC_CLASS -ARV_GC_GET_CLASS - -ArvGcPrivate -ArvGcClass -arv_gc_get_int64_from_value -arv_gc_set_int64_to_value -arv_gc_get_double_from_value -arv_gc_set_double_to_value -
- -
-arvgvinterface -ArvGvInterface -ArvGvInterface -arv_gv_interface_get_instance - -ARV_GV_INTERFACE -ARV_IS_GV_INTERFACE -ARV_TYPE_GV_INTERFACE -arv_gv_interface_get_type -ARV_GV_INTERFACE_CLASS -ARV_IS_GV_INTERFACE_CLASS -ARV_GV_INTERFACE_GET_CLASS - -ARV_GV_INTERFACE_DISCOVERY_TIMEOUT_MS -ARV_GV_INTERFACE_SOCKET_BUFFER_SIZE -arv_gv_interface_destroy_instance -ArvGvInterfacePrivate -ArvGvInterfaceClass -
- -
-arvgvdevice -ArvGvDevice -ArvGvDevice -arv_gv_device_new -arv_gv_device_get_timestamp_tick_frequency -arv_gv_device_get_device_address -arv_gv_device_get_interface_address -arv_gv_device_get_packet_size -arv_gv_device_set_packet_size -arv_gv_device_set_packet_size_adjustment -arv_gv_device_get_stream_options -arv_gv_device_set_stream_options -arv_gv_device_auto_packet_size -arv_gv_device_take_control -arv_gv_device_leave_control -arv_gv_device_is_controller - -ARV_GV_DEVICE -ARV_IS_GV_DEVICE -ARV_TYPE_GV_DEVICE -arv_gv_device_get_type -ARV_GV_DEVICE_CLASS -ARV_IS_GV_DEVICE_CLASS -ARV_GV_DEVICE_GET_CLASS - -ARV_GV_DEVICE_GVCP_N_RETRIES_DEFAULT -ARV_GV_DEVICE_GVCP_TIMEOUT_MS_DEFAULT -ARV_GV_DEVICE_GVSP_PACKET_SIZE_DEFAULT -ARV_GV_DEVICE_HEARTBEAT_PERIOD_US -ARV_GV_DEVICE_HEARTBEAT_RETRY_DELAY_US -ARV_GV_DEVICE_HEARTBEAT_RETRY_TIMEOUT_S -ARV_GV_DEVICE_BUFFER_SIZE -ArvGvDeviceClass -ArvGvDevicePrivate -arv_gv_device_get_url_regex -
- -
-arvgvfakecamera -ArvGvFakeCamera -arv_gv_fake_camera_new -arv_gv_fake_camera_new_full -arv_gv_fake_camera_get_fake_camera -arv_gv_fake_camera_is_running - -ArvGvFakeCamera -ArvGvFakeCameraClass -ArvGvFakeCameraPrivate -arv_gv_fake_camera_get_type -ARV_GV_FAKE_CAMERA -ARV_GV_FAKE_CAMERA_CLASS -ARV_GV_FAKE_CAMERA_GET_CLASS -ARV_IS_GV_FAKE_CAMERA -ARV_IS_GV_FAKE_CAMERA_CLASS -ARV_TYPE_GV_FAKE_CAMERA - -ARV_GV_FAKE_CAMERA_DEFAULT_INTERFACE -ARV_GV_FAKE_CAMERA_DEFAULT_SERIAL_NUMBER -
- -
-arvgcenumentry -ArvGcEnumEntry -ArvGcEnumEntry -arv_gc_enum_entry_new -arv_gc_enum_entry_get_value - -ARV_GC_ENUM_ENTRY -ARV_IS_GC_ENUM_ENTRY -ARV_TYPE_GC_ENUM_ENTRY -arv_gc_enum_entry_get_type -ARV_GC_ENUM_ENTRY_CLASS -ARV_IS_GC_ENUM_ENTRY_CLASS -ARV_GC_ENUM_ENTRY_GET_CLASS - -ArvGcEnumEntryClass -
- -
-arvfakestream -ArvFakeStream -ArvFakeStream - -ARV_FAKE_STREAM -ARV_IS_FAKE_STREAM -ARV_TYPE_FAKE_STREAM -arv_fake_stream_get_type -ARV_FAKE_STREAM_CLASS -ARV_IS_FAKE_STREAM_CLASS -ARV_FAKE_STREAM_GET_CLASS - -ArvFakeStreamPrivate -ArvFakeStreamClass -arv_fake_stream_new -
- -
-arvgcboolean -ArvGcBoolean -ArvGcBoolean -arv_gc_boolean_new -arv_gc_boolean_get_value -arv_gc_boolean_set_value - -ARV_GC_BOOLEAN -ARV_IS_GC_BOOLEAN -ARV_TYPE_GC_BOOLEAN -arv_gc_boolean_get_type -ARV_GC_BOOLEAN_CLASS -ARV_IS_GC_BOOLEAN_CLASS -ARV_GC_BOOLEAN_GET_CLASS - -ArvGcBooleanClass -arv_gc_boolean_get_value_gi -
- -
-arvgccategory -ArvGcCategory -ArvGcCategory -arv_gc_category_new -arv_gc_category_get_features - -ARV_GC_CATEGORY -ARV_IS_GC_CATEGORY -ARV_TYPE_GC_CATEGORY -arv_gc_category_get_type -ARV_GC_CATEGORY_CLASS -ARV_IS_GC_CATEGORY_CLASS -ARV_GC_CATEGORY_GET_CLASS - -ArvGcCategoryClass -
- -
-arvgcfloat -ArvGcFloat -ArvGcFloat -arv_gc_float_get_value -arv_gc_float_set_value -arv_gc_float_get_min -arv_gc_float_get_max -arv_gc_float_get_inc -arv_gc_float_get_representation -arv_gc_float_get_unit -arv_gc_float_get_display_notation -arv_gc_float_get_display_precision -arv_gc_float_impose_min -arv_gc_float_impose_max - -ARV_GC_FLOAT -ARV_IS_GC_FLOAT -ARV_TYPE_GC_FLOAT -arv_gc_float_get_type -ARV_GC_FLOAT_GET_INTERFACE - -ArvGcFloatInterface -
- -
-arvgcswissknife -ArvGcSwissKnife -ArvGcSwissKnifeNode -ArvGcIntSwissKnifeNode -arv_gc_swiss_knife_node_new -arv_gc_int_swiss_knife_node_new - -ArvGcSwissKnifeNodeClass -ArvGcIntSwissKnifeNodeClass -ARV_GC_SWISS_KNIFE -ARV_IS_GC_SWISS_KNIFE -ARV_TYPE_GC_SWISS_KNIFE -ARV_TYPE_GC_SWISS_KNIFE_NODE -ARV_TYPE_GC_INT_SWISS_KNIFE_NODE -arv_gc_swiss_knife_get_type -ARV_GC_SWISS_KNIFE_CLASS -ARV_IS_GC_SWISS_KNIFE_CLASS -ARV_GC_SWISS_KNIFE_GET_CLASS - -ArvGcSwissKnifeClass -
- -
-arvfakecamera -ArvFakeCamera -ArvFakeCamera -arv_fake_camera_new -arv_fake_camera_new_full -arv_fake_camera_read_memory -arv_fake_camera_write_memory -arv_fake_camera_read_register -arv_fake_camera_write_register -arv_fake_camera_wait_for_next_frame -arv_fake_camera_get_sleep_time_for_next_frame -arv_fake_camera_fill_buffer -arv_fake_camera_set_inet_address -arv_fake_camera_get_acquisition_status -arv_fake_camera_get_control_channel_privilege -arv_fake_camera_get_heartbeat_timeout -arv_fake_camera_get_payload -arv_fake_camera_get_stream_address -arv_fake_camera_set_control_channel_privilege -arv_fake_camera_set_fill_pattern -arv_fake_camera_set_trigger_frequency -arv_fake_camera_get_genicam_xml -arv_set_fake_camera_genicam_filename - -ARV_FAKE_CAMERA -ARV_IS_FAKE_CAMERA -ARV_TYPE_FAKE_CAMERA -arv_fake_camera_get_type -ARV_FAKE_CAMERA_CLASS -ARV_IS_FAKE_CAMERA_CLASS -ARV_FAKE_CAMERA_GET_CLASS - -ARV_FAKE_CAMERA_MEMORY_SIZE -ARV_FAKE_CAMERA_REGISTER_SENSOR_WIDTH -ARV_FAKE_CAMERA_REGISTER_SENSOR_HEIGHT -ARV_FAKE_CAMERA_REGISTER_WIDTH -ARV_FAKE_CAMERA_REGISTER_HEIGHT -ARV_FAKE_CAMERA_REGISTER_X_OFFSET -ARV_FAKE_CAMERA_REGISTER_Y_OFFSET -ARV_FAKE_CAMERA_REGISTER_BINNING_HORIZONTAL -ARV_FAKE_CAMERA_REGISTER_BINNING_VERTICAL -ARV_FAKE_CAMERA_REGISTER_PIXEL_FORMAT -ARV_FAKE_CAMERA_SENSOR_WIDTH -ARV_FAKE_CAMERA_SENSOR_HEIGHT -ARV_FAKE_CAMERA_WIDTH_DEFAULT -ARV_FAKE_CAMERA_HEIGHT_DEFAULT -ARV_FAKE_CAMERA_BINNING_HORIZONTAL_DEFAULT -ARV_FAKE_CAMERA_BINNING_VERTICAL_DEFAULT -ARV_FAKE_CAMERA_PIXEL_FORMAT_DEFAULT -ARV_FAKE_CAMERA_REGISTER_ACQUISITION_MODE -ARV_FAKE_CAMERA_REGISTER_ACQUISITION_FRAME_PERIOD_US -ARV_FAKE_CAMERA_REGISTER_FRAME_START_OFFSET -ARV_FAKE_CAMERA_REGISTER_ACQUISITION_START_OFFSET -ARV_FAKE_CAMERA_REGISTER_TRIGGER_MODE -ARV_FAKE_CAMERA_REGISTER_TRIGGER_SOURCE -ARV_FAKE_CAMERA_REGISTER_TRIGGER_ACTIVATION -ARV_FAKE_CAMERA_REGISTER_ACQUISITION -ARV_FAKE_CAMERA_REGISTER_EXPOSURE_TIME_US -ARV_FAKE_CAMERA_ACQUISITION_FRAME_RATE_DEFAULT -ARV_FAKE_CAMERA_EXPOSURE_TIME_US_DEFAULT -ARV_FAKE_CAMERA_REGISTER_GAIN_RAW -ARV_FAKE_CAMERA_REGISTER_GAIN_MODE -ARV_FAKE_CAMERA_REGISTER_TEST -ARV_FAKE_CAMERA_TEST_REGISTER_DEFAULT -ArvFakeCameraClass -ArvFakeCameraPrivate -ArvFakeCameraFillPattern -
- -
-arvgcstructentrynode -ArvGcStructEntryNode -ArvGcStructEntryNode -arv_gc_struct_entry_node_new - -ARV_GC_STRUCT_ENTRY_NODE -ARV_GC_STRUCT_ENTRY_NODE_CLASS -ARV_GC_STRUCT_ENTRY_NODE_GET_CLASS -ARV_IS_GC_STRUCT_ENTRY_NODE -ARV_IS_GC_STRUCT_ENTRY_NODE_CLASS -ARV_TYPE_GC_STRUCT_ENTRY_NODE -arv_gc_struct_entry_node_get_type -
- -
-arvgcregisternode -ArvGcRegisterNode -ArvGcRegisterNode -ArvGcIntRegNode -ArvGcMaskedIntRegNode -ArvGcFloatRegNode -ArvGcStringRegNode -ArvGcStructRegNode -arv_gc_register_node_new -arv_gc_int_reg_node_new -arv_gc_masked_int_reg_node_new -arv_gc_float_reg_node_new -arv_gc_string_reg_node_new -arv_gc_struct_reg_node_new - -ARV_GC_REGISTER_NODE -ARV_IS_GC_REGISTER_NODE -ARV_TYPE_GC_FLOAT_REG_NODE -ARV_TYPE_GC_INT_REG_NODE -ARV_TYPE_GC_MASKED_INT_REG_NODE -ARV_TYPE_GC_STRING_REG_NODE -ARV_TYPE_GC_STRUCT_REG_NODE -ARV_TYPE_GC_REGISTER_NODE -arv_gc_register_node_get_type -ARV_GC_REGISTER_NODE_CLASS -ARV_IS_GC_REGISTER_NODE_CLASS -ARV_GC_REGISTER_NODE_GET_CLASS - -ArvGcRegisterNodeClass -ArvGcFloatRegNodeClass -ArvGcIntRegNodeClass -ArvGcStringRegNodeClass -ArvGcStructRegNodeClass -ArvGcMaskedIntRegNodeClass -
- -
-arvgcstringnode -ArvGcStringNode -ArvGcStringNode -arv_gc_string_node_new - -ARV_TYPE_GC_STRING_NODE -
- -
-arvgcstring -ArvGcString -ArvGcString -arv_gc_string_get_value -arv_gc_string_set_value -arv_gc_string_get_max_length - -ARV_GC_STRING -ARV_IS_GC_STRING -ARV_TYPE_GC_STRING -arv_gc_string_get_type -ARV_GC_STRING_GET_INTERFACE - -ArvGcStringInterface -
- -
-arvgvstream -ArvGvStream -ArvGvStreamOption -ArvGvStreamSocketBuffer -ArvGvStreamPacketResend -ArvGvStream -arv_gv_stream_get_port -arv_gv_stream_get_statistics - -ARV_GV_STREAM -ARV_IS_GV_STREAM -ARV_TYPE_GV_STREAM -arv_gv_stream_get_type -ARV_GV_STREAM_CLASS -ARV_IS_GV_STREAM_CLASS -ARV_GV_STREAM_GET_CLASS - -ArvGvStreamClass -ArvGvStreamPrivate -arv_gv_stream_new -
- -
-arvgcfloatnode -ArvGcFloatNode -ArvGcFloatNode -arv_gc_float_node_new - -ARV_GC_FLOAT_NODE -ARV_IS_GC_FLOAT_NODE -ARV_TYPE_GC_FLOAT_NODE -arv_gc_float_node_get_type -ARV_GC_FLOAT_NODE_CLASS -ARV_IS_GC_FLOAT_NODE_CLASS -ARV_GC_FLOAT_NODE_GET_CLASS - -ArvGcFloatNodeClass -
- -
-arvgccommand -ArvGcCommand -ArvGcCommand -arv_gc_command_new -arv_gc_command_execute - -ARV_GC_COMMAND -ARV_IS_GC_COMMAND -ARV_TYPE_GC_COMMAND -arv_gc_command_get_type -ARV_GC_COMMAND_CLASS -ARV_IS_GC_COMMAND_CLASS -ARV_GC_COMMAND_GET_CLASS - -ArvGcCommandClass -
- -
-arvgcselector -ArvGcSelector -ArvGcSelector -arv_gc_selector_get_selected_features -arv_gc_selector_is_selector - -ArvGcSelectorInterface -arv_gc_selector_get_type -ARV_GC_SELECTOR -ARV_TYPE_GC_SELECTOR -ARV_GC_SELECTOR_GET_INTERFACE -ARV_IS_GC_SELECTOR - -
- -
-arvstr -ArvStr -arv_str_strip -arv_str_is_uri -arv_str_to_uri -arv_str_parse_double -arv_str_parse_double_list -arv_str_skip_char -arv_str_skip_colon_and_spaces -arv_str_skip_comma_and_spaces -arv_str_skip_semicolon_and_spaces -arv_str_skip_spaces -
- -
-arvgst -ArvGst -arv_pixel_format_to_gst_caps_string -arv_pixel_format_from_gst_caps -arv_pixel_format_to_gst_0_10_caps_string -arv_pixel_format_from_gst_0_10_caps -
- -
-arvdomtext -ArvDomText -arv_dom_text_new - -ArvDomText -ArvDomTextClass -ARV_DOM_TEXT -ARV_IS_DOM_TEXT -ARV_TYPE_DOM_TEXT -arv_dom_text_get_type -ARV_DOM_TEXT_CLASS -ARV_IS_DOM_TEXT_CLASS -ARV_DOM_TEXT_GET_CLASS -
- -
-arvdomnode -ArvDomNode -ArvDomNode -arv_dom_node_get_node_name -arv_dom_node_get_node_value -arv_dom_node_set_node_value -arv_dom_node_get_node_type -arv_dom_node_get_parent_node -arv_dom_node_get_child_nodes -arv_dom_node_get_first_child -arv_dom_node_get_last_child -arv_dom_node_get_previous_sibling -arv_dom_node_get_next_sibling -arv_dom_node_get_attributes -arv_dom_node_insert_before -arv_dom_node_replace_child -arv_dom_node_append_child -arv_dom_node_remove_child -arv_dom_node_has_child_nodes -arv_dom_node_changed -arv_dom_node_get_owner_document - -ArvDomNodeType -ArvDomNodeClass -ARV_DOM_NODE -ARV_IS_DOM_NODE -ARV_TYPE_DOM_NODE -arv_dom_node_get_type -ARV_DOM_NODE_CLASS -ARV_IS_DOM_NODE_CLASS -ARV_DOM_NODE_GET_CLASS - -arv_dom_node_write_to_stream -
- -
-arvdomnodelist -ArvDomNodeList -arv_dom_node_list_get_item -arv_dom_node_list_get_length - -ArvDomNodeList -ArvDomNodeListClass -ARV_DOM_NODE_LIST -ARV_DOM_NODE_LIST_CLASS -ARV_DOM_NODE_LIST_GET_CLASS -ARV_IS_DOM_NODE_LIST -ARV_IS_DOM_NODE_LIST_CLASS -ARV_TYPE_DOM_NODE_LIST -
- -
-arvdomnodechildlist -ArvDomNodeChildList -ArvDomNodeChildList -arv_dom_node_child_list_new - -ARV_TYPE_DOM_NODE_CHILD_LIST -
- -
-arvdomnamednodemap -ArvDomNamedNodeMap -arv_dom_named_node_map_get_item -arv_dom_named_node_map_get_length -arv_dom_named_node_map_get_named_item -arv_dom_named_node_map_set_named_item -arv_dom_named_node_map_remove_named_item - -ARV_DOM_NAMED_NODE_MAP -ARV_DOM_NAMED_NODE_MAP_CLASS -ARV_DOM_NAMED_NODE_MAP_GET_CLASS -ARV_IS_DOM_NAMED_NODE_MAP -ARV_IS_DOM_NAMED_NODE_MAP_CLASS -ARV_TYPE_DOM_NAMED_NODE_MAP -ArvDomNamedNodeMap -ArvDomNamedNodeMapClass -arv_dom_named_node_map_get_type -
- -
-arvdomdocument -ArvDomDocument -ArvDomDocument -ArvDomDocumentCreateFunction -arv_dom_implementation_create_document -arv_dom_implementation_add_document_type -arv_dom_implementation_cleanup -arv_dom_document_append_from_memory -arv_dom_document_new_from_memory -arv_dom_document_new_from_path -arv_dom_document_new_from_url -arv_dom_document_get_document_element -arv_dom_document_create_element -arv_dom_document_create_text_node -arv_dom_document_get_url -arv_dom_document_set_url -arv_dom_document_set_path -arv_dom_document_get_href_data - -ArvDomDocumentClass -ARV_DOM_DOCUMENT -ARV_IS_DOM_DOCUMENT -ARV_TYPE_DOM_DOCUMENT -arv_dom_document_get_type -ARV_DOM_DOCUMENT_CLASS -ARV_IS_DOM_DOCUMENT_CLASS -ARV_DOM_DOCUMENT_GET_CLASS - -ArvDomDocumentError -
- -
-arvdomdocumentfragment -ArvDomDocumentFragment -arv_dom_document_fragment_new - -ARV_DOM_DOCUMENT_FRAGMENT -ARV_DOM_DOCUMENT_FRAGMENT_CLASS -ARV_DOM_DOCUMENT_FRAGMENT_GET_CLASS -ARV_IS_DOM_DOCUMENT_FRAGMENT -ARV_IS_DOM_DOCUMENT_FRAGMENT_CLASS -ARV_TYPE_DOM_DOCUMENT_FRAGMENT -ArvDomDocumentFragment -ArvDomDocumentFragmentClass -arv_dom_document_fragment_get_type -
- -
-arvdomelement -ArvDomElement -ArvDomElement -arv_dom_element_get_tag_name -arv_dom_element_get_attribute -arv_dom_element_set_attribute - -ArvDomElementClass -ARV_DOM_ELEMENT -ARV_IS_DOM_ELEMENT -ARV_TYPE_DOM_ELEMENT -arv_dom_element_get_type -ARV_DOM_ELEMENT_CLASS -ARV_IS_DOM_ELEMENT_CLASS -ARV_DOM_ELEMENT_GET_CLASS -
- -
-arvdomcharacterdata -ArvDomCharacterData -arv_dom_character_data_get_data -arv_dom_character_data_set_data - -ArvDomCharacterData -ArvDomCharacterDataClass -ARV_DOM_CHARACTER_DATA -ARV_IS_DOM_CHARACTER_DATA -ARV_TYPE_DOM_CHARACTER_DATA -arv_dom_character_data_get_type -ARV_DOM_CHARACTER_DATA_CLASS -ARV_IS_DOM_CHARACTER_DATA_CLASS -ARV_DOM_CHARACTER_DATA_GET_CLASS -
- - -
-arvdebug -ArvDebug -arv_debug_enable - -ArvDebugLevel -arv_verbosely_log -arv_verbosely_log_cp -arv_verbosely_log_sp -arv_log -arv_log_chunk -arv_log_device -arv_log_dom -arv_log_evaluator -arv_log_genicam -arv_log_cp -arv_log_sp -arv_log_interface -arv_log_misc -arv_log_stream -arv_log_stream_thread -arv_log_viewer -arv_debug -arv_debug_chunk -arv_debug_device -arv_debug_dom -arv_debug_evaluator -arv_debug_genicam -arv_debug_cp -arv_debug_sp -arv_debug_interface -arv_debug_misc -arv_debug_stream -arv_debug_stream_thread -arv_debug_viewer -arv_warning -arv_warning_chunk -arv_warning_device -arv_warning_dom -arv_warning_evaluator -arv_warning_genicam -arv_warning_cp -arv_warning_sp -arv_warning_interface -arv_warning_misc -arv_warning_stream -arv_warning_stream_thread -arv_warning_viewer -arv_g_string_append_hex_dump -ArvDebugCategory -arv_debug_category_chunk -arv_debug_category_device -arv_debug_category_dom -arv_debug_category_evaluator -arv_debug_category_genicam -arv_debug_category_cp -arv_debug_category_sp -arv_debug_category_interface -arv_debug_category_misc -arv_debug_category_stream -arv_debug_category_stream_thread -arv_debug_category_viewer -
- -
-arvzip -ArvZip -ArvZip -arv_zip_new -arv_zip_free -arv_zip_get_file -arv_zip_get_file_list -arv_zip_file_get_name -arv_zip_file_get_uncompressed_size -ARV_GUINT16_FROM_LE_PTR -ARV_GUINT32_FROM_LE_PTR -arv_guint16_from_unaligned_le_ptr -arv_guint32_from_unaligned_le_ptr - -ArvZipFile -
- -
-arvxmlschema -ArvXmlSchema -ARV_XML_SCHEMA_ERROR -ArvXmlSchemaError -arv_xml_schema_new_from_memory -arv_xml_schema_new_from_file -arv_xml_schema_new_from_path -arv_xml_schema_validate - -arv_xml_schema_get_type -ArvXmlSchema -ARV_IS_XML_SCHEMA -ARV_IS_XML_SCHEMA_CLASS -ARV_TYPE_XML_SCHEMA -ARV_XML_SCHEMA -ARV_XML_SCHEMA_CLASS -ARV_XML_SCHEMA_GET_CLASS - -ArvXmlSchemaPrivate -arv_xml_schema_error_quark -
diff --git a/docs/reference/aravis/aravis.toml.in b/docs/reference/aravis/aravis.toml.in new file mode 100644 index 000000000..ee0898fcf --- /dev/null +++ b/docs/reference/aravis/aravis.toml.in @@ -0,0 +1,44 @@ +[library] +version = "@version@" +browse_url = "https://github.com/AravisProject/aravis" +repository_url = "https://github.com/AravisProject/aravis.git" +website_url = "https://github.com/AravisProject/aravis" +docs_url = "https://aravisproject.github.io/docs/aravis-0.8/" +authors = "Aravis Project Team" +logo_url = "aravis.svg" +license = "LGPL-2.1-or-later" +description = "The Aravis Vision Library" +dependencies = [ ] +devhelp = true +search_index = true + +[dependencies."GObject-2.0"] +name = "GObject" +description = "The base type system library" +docs_url = "https://docs.gtk.org/gobject/" + +[theme] +name = "basic" +show_index_summary = true +show_class_hierarchy = true + +[source-location] +base_url = "https://github.com/AravisProject/aravis/tree/main" + +[extra] +# The same order will be used when generating the index +content_files = [ + 'introduction.md', + 'building.md', + 'examples.md', + 'utilities.md', + 'ethernet.md', + 'usb.md', + 'thread-safety.md', + 'porting-0.8.md', + 'tests.md' +] +content_images = [ + '../../../viewer/icons/src/aravis.svg' +] +urlmap_file = "urlmap.js" diff --git a/docs/reference/aravis/aravis.types b/docs/reference/aravis/aravis.types deleted file mode 100644 index 78ebf6c6e..000000000 --- a/docs/reference/aravis/aravis.types +++ /dev/null @@ -1,40 +0,0 @@ -arv_buffer_get_type -arv_camera_get_type -arv_device_get_type -arv_chunk_parser_get_type -arv_evaluator_get_type -arv_fake_camera_get_type -arv_fake_device_get_type -arv_fake_interface_get_type -arv_fake_stream_get_type -arv_gc_node_get_type -arv_gc_property_node_get_type -arv_gc_index_node_get_type -arv_gc_invalidator_node_get_type -arv_gc_enum_entry_get_type -arv_gc_feature_node_get_type -arv_gc_register_description_node_get_type -arv_gc_group_node_get_type -arv_gc_boolean_get_type -arv_gc_category_get_type -arv_gc_command_get_type -arv_gc_converter_get_type -arv_gc_enum_entry_get_type -arv_gc_enumeration_get_type -arv_gc_float_get_type -arv_gc_float_node_get_type -arv_gc_get_type -arv_gc_integer_get_type -arv_gc_integer_node_get_type -arv_gc_feature_node_get_type -arv_gc_port_get_type -arv_gc_register_get_type -arv_gc_register_node_get_type -arv_gc_struct_entry_node_get_type -arv_gc_string_get_type -arv_gc_swiss_knife_get_type -arv_gv_device_get_type -arv_gv_interface_get_type -arv_gv_stream_get_type -arv_interface_get_type -arv_stream_get_type diff --git a/docs/reference/aravis/building.md b/docs/reference/aravis/building.md new file mode 100644 index 000000000..77544ce6a --- /dev/null +++ b/docs/reference/aravis/building.md @@ -0,0 +1,128 @@ +Title: Installation and Debug + +# Installing Aravis + +Aravis uses the meson build system ( http://mesonbuild.com/ ). After you have +downloaded the latest release from +[https://github.com/AravisProject/aravis/releases](https://github.com/AravisProject/aravis/releases), +you can build and install Aravis like [any other meson +project](http://mesonbuild.com/Quick-guide.html#compiling-a-meson-project): + +```sh +meson build +cd build +ninja +ninja install +``` + +The build can be configured at any time using `meson configure` in the build +directory. `meson configure` invoked without any other argument will show the +configuration options. + +On some platforms (like Ubuntu), you may have to configure the dynamic linker +(ld) to let it know where the aravis libraries are installed, and run ldconfig +as root in order to update ld cache. + +## Install dependencies on Ubuntu 20.04 + +Prior to running `meson` and `ninja`, dependencies can be installed using the +following(tested on Ubuntu 20.04): + +```sh +sudo apt install libxml2-dev libglib2.0-dev cmake libusb-1.0-0-dev gobject-introspection \ + libgtk-3-dev gtk-doc-tools xsltproc libgstreamer1.0-dev \ + libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \ + libgirepository1.0-dev +``` + +## Building on macOS + +Using the GNU build system on macOS is not directly supported, but can be +mimicked by augmenting the install procedure above with some environment +settings (tested on macOS Catalina): + +```sh +brew install gettext intltool gtk-doc libxml2 meson libusb +meson build +ninja -C build +``` + +If you want to be able to build the viewer, you have to install some additional +packages: + +```sh +brew install gtk+3 gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad libnotify gnome-icon-theme +meson configure -Dviewer=enabled +``` + +## Building on Windows + +[MSYS2](https://msys2.org) provides native [Aravis +packages](https://packages.msys2.org/base/mingw-w64-aravis). The package +includes the DLL, headers and utilities (including the viewer). + +To build Aravis by yourself, install MSYS2 and enter the mingw64 shell. Refer to +the [mingw CI configuration +file](https://github.com/AravisProject/aravis/blob/main/.github/workflows/aravis-mingw.yml) +for list of dependencies (such as `mingw-w64-x86_64-libxml2` and so on) which +must be installed prior to building via `pacman -S ...`. The build process +itself is the same as on other platforms (meson/ninja). + +Alternatively, you can build Aravis using Microsoft Visual C++ (MSVC) and Conan +package manager. Have a look at the [msvc CI configuration +file](https://github.com/AravisProject/aravis/blob/main/.github/workflows/aravis-msvc.yml). + +### Cross-compilation for Windows + +Aravis for Windows can be also cross-compiled on Linux (and used in Wine) using +[crossroad](https://pypi.org/project/crossroad/), provided that cross-compiler +and native build tools (`sudo apt install gcc-mingw-w64-x86-64 meson +ninja=build` on Debian/Ubuntu) are installed: + +```sh +# note: use the git version, not the one from pypi +pip3 install --user git+git://git.tuxfamily.org/gitroot/crossroad/crossroad.git +# create cross-compilation environment with architecture "w64" called "aravis" +crossroad w64 aravis +# install packages required for compilation; crossroad adds the mingw-w64_x86_64- prefix automatically +crossroad install libnotify gstreamer gst-plugins-good gst-plugins-bad gst-plugins-bad gobject-introspection libusb gtk3 libxml2 zlib +# clone aravis sources +git clone https://github.com/AravisProject/aravis +cd aravis +# configure, crossroad adjusts meson for cross-compilation; build directory is created +crossroad meson build +# compile and install +ninja -C build install +``` + +# Debugging Aravis + +The `ARV_DEBUG` environment variable can be set to a comma separated list of +debugging categories, which will make Aravis print out different types of +debugging informations to the console. A debug level can also be specified, +using a number from 0 (none) to 4 (trace) separated from the category name by a +colon. For example, the following command before running an Aravis based +application will make Aravis print out all stream and device related +informations: + +``` +export ARV_DEBUG=stream:3,device:3 +``` +Available categories are: + +* interface : Device lookup for each supported protocol +* device : Device control +* stream : Video stream management +* stream-thread : Video stream thread (likely high volume output) +* cp : Control protocol packets +* sp : Stream protocol packets (likely high volume output) +* genicam : Genicam specialized DOM elements +* policies : Genicam runtime configurable policies +* chunk : Chunk data code +* dom : Genicam DOM document +* evaluator : Expression evaluator +* viewer : Simple viewer application +* misc : Miscellaneous code +* all : Everything + + diff --git a/docs/reference/aravis/ethernet.md b/docs/reference/aravis/ethernet.md new file mode 100644 index 000000000..9658f4826 --- /dev/null +++ b/docs/reference/aravis/ethernet.md @@ -0,0 +1,45 @@ +Title: Ethernet Devices + +# Ethernet Device Performance + +## Stream Packet Size + +One way to increase streaming performance is to increase the stream packet size. +arv_camera_gv_set_packet_size() and arv_camera_gv_auto_packet_size() allow you +to change this parameter. By default, the network adapter of your machine will +probably not let you receive packet bigger than 1500 bytes, which is the default +Maximum Transfer Unit (MTU). It means if you want to use big packets, you also +have to increase the network adapter MTU to a greater walue (8192 bytes being a +recommended value). The exact procedure to change the MTU depends on the +distribution you are using. Please refer to the administrator manual of your +distribution. + +On Fedora, MTU can be changed using the network setting panel. Edit the wired +network settings. MTU parameter is in the Identity page. + +On Debian / Ubuntu you can add a line "mtu 8192" to /etc/network/interfaces +under the correct device. + +``` +iface ethusb0 inet static + address 192.168.45.1 + netmask 255.255.255.0 + broadcast 192.168.45.255 + mtu 8192 +``` + +Please note if your device is not connected directly to the machine, you may +also have to tweak the active devices on your network. + +## Packet Socket Support + +Aravis can use packet sockets for the video receiving thread. But this mode +requires extended capabilities. If you want to allow your application to use +packet socket, you must set the `cap_net_raw` capability using `setcap`. For +example, the following command gives this capability to the Aravis viewer (You +should do this on the installed arv-viewer executable, has the one in the source +tree is just a wrapper shell script): + +``` +sudo setcap cap_net_raw+ep arv-viewer +``` diff --git a/docs/reference/aravis/examples.md b/docs/reference/aravis/examples.md new file mode 100644 index 000000000..17c090ce7 --- /dev/null +++ b/docs/reference/aravis/examples.md @@ -0,0 +1,10 @@ +Title: Examples + +# Examples + +While most of the API is documented, Aravis documentation lacks some good +tutorial about the many features if offers. But a good resource is the `tests` +directory inside Aravis sources, where you will find a set of small samples +showing different key features. + +Additionally, there is [an example repository with C samples](https://github.com/AravisProject/aravis-c-examples). diff --git a/docs/reference/aravis/aravis-gv.xml b/docs/reference/aravis/gv.md similarity index 100% rename from docs/reference/aravis/aravis-gv.xml rename to docs/reference/aravis/gv.md diff --git a/docs/reference/aravis/introduction.md b/docs/reference/aravis/introduction.md new file mode 100644 index 000000000..33ab31179 --- /dev/null +++ b/docs/reference/aravis/introduction.md @@ -0,0 +1,21 @@ +Title: Introduction + +# What is Aravis ? + +Aravis is a GObject based library for the control and the video stream +acquisition of digital cameras. + +While using GenICam xml files for the description of the camera registers, it +does not try to be a complete implementation of the Genicam API as described in +the GenAPI GenICam document. Nevertheless, a good knowledge of the +[GenICam](http" url="http://www.genicam.org) standard should help to understand +how Aravis operates. + +Aravis currently provides an implementation of the gigabit ethernet and USB3 +protocols found in a lot of ethernet industrial cameras. + +[class@Aravis.Camera] is a simple API for easy access of standard camera features. + +[class@Aravis.Device] and [class@Aravis.Gc] are more low level APIs, which +enable the full control of the cameras, allowing the use of the features +specific to each model. diff --git a/docs/reference/aravis/meson.build b/docs/reference/aravis/meson.build index 74c929a10..ea1b470b1 100644 --- a/docs/reference/aravis/meson.build +++ b/docs/reference/aravis/meson.build @@ -1,32 +1,51 @@ -subdir ('xml') +toml_conf = configuration_data() +toml_conf.set('version', meson.project_version()) -doc_ignore_headers = library_private_headers + [ - 'arv.h', - 'arvconfig.h', - 'arvenumtypes.h', - 'arvenumtypesprivate.h' +gidocgen = find_program('gi-docgen') + +gidocgen_common_args = [ + '--quiet', + '--no-namespace-dir', +] + +docs_dir = get_option('datadir') / 'doc' + +expand_content_md_files = [ + 'introduction.md', + 'building.md', + 'examples.md', + 'utilities.md', + 'ethernet.md', + 'usb.md', + 'thread-safety.md', + 'porting-0.8.md', + 'tests.md' ] -if not usb_dep.found() - doc_ignore_headers += [ - 'arvuvinterface.h', - 'arvuvdevice.h', - 'arvuvstream.h', - 'arvuvspprivate.h', - 'arvuvcpprivate.h', - 'arvuvdeviceprivate.h', - 'arvuvinterfaceprivate.h', - 'arvuvstreamprivate.h' - ] -endif +aravis_toml=configure_file( + input: 'aravis.toml.in', + output: 'aravis.toml', + configuration: toml_conf, + install: true, + install_dir: docs_dir / 'aravis-@0@'.format(aravis_api_version) +) -gnome.gtkdoc ('aravis', - main_xml: 'aravis-docs.xml', - src_dir: [meson.project_source_root () / 'src', - meson.project_build_root () / 'src'], - gobject_typesfile: 'aravis.types', - dependencies: [aravis_library_dependencies], - scan_args: ['--ignore-headers=' + ' '.join (doc_ignore_headers), '--rebuild-types', '--ignore-decorator=ARV_API'], - content_files: ['aravis-overview.xml', 'aravis-gv.xml'] + doc_examples, - install_dir: 'aravis-@0@'.format (aravis_api_version), - install: true) +custom_target( + 'aravis-doc', + input: [ aravis_toml, aravis_gir[0] ], + output: 'aravis-@0@'.format(aravis_api_version), + command: [ + gidocgen, + 'generate', + gidocgen_common_args, + '--add-include-path=@0@'.format(meson.current_build_dir() / '../../../src'), + '--config=@INPUT0@', + '--output-dir=@OUTPUT@', + '--content-dir=@0@'.format(meson.current_source_dir()), + '@INPUT1@' + ], + depend_files: [ expand_content_md_files ], + build_by_default: true, + install: true, + install_dir: docs_dir + ) diff --git a/docs/reference/aravis/porting-0.8.md b/docs/reference/aravis/porting-0.8.md new file mode 100644 index 000000000..b722151ac --- /dev/null +++ b/docs/reference/aravis/porting-0.8.md @@ -0,0 +1,34 @@ +Title: Porting to Aravis 0.8 + +### Porting to Aravis 0.8 + +Aravis 0.8 has seen a major rewrite of how communication errors are handled. +Instead of relying on a status API, each function that can fail has an +additional error parameter now. This is the standard way of handling error in +the glib ecosytem. The nice side effect is now errors throw exceptions in +bindings where the language support them (rust, python, javascript). + +A quick port from the older series to 0.8 series is just a matter of adding a +NULL parameter to most of the modified functions. But you are advised to take +this opportunity to correctly handle errors. + +There is a page explaining Glib errors and how to manage them in the [Glib +documentation](https://developer.gnome.org/glib/stable/glib-Error-Reporting.html). + +During the camera configuration, in C language it can be somehow cumbersome to +check for errors at each function call. A convenient way to deal with this issue +is the following construction: + +```c +GError **error = NULL; + +if (!error) arv_camera_... (..., &error); +if (!error) arv_camera_... (..., &error); +if (!error) arv_camera_... (..., &error); +if (!error) arv_camera_... (..., &error); + +if (error) { + handle error here; + g_clear_error (&error); +} +``` diff --git a/docs/reference/aravis/tests.md b/docs/reference/aravis/tests.md new file mode 100644 index 000000000..5d60ab214 --- /dev/null +++ b/docs/reference/aravis/tests.md @@ -0,0 +1,28 @@ +Title: Unit Tests + +# Unit Tests + +Aravis has a set of unit tests that helps to catch regressions and memory leaks +during the development. The test suite is run using the following commands: + +```sh +ninja test +``` + +The is a small helper script that run the same tests under valgrind memmory +checker + +```sh +../tests/valgrind-memcheck +``` + +All the code is not covered yet by the tests. Code coverage can be obtained +using: + +```sh +meson configure -Db_coverage=true +ninja coverage +``` + +The report is published in `build/meson-logs/coveragereport/index.html`. Help on +code coverage improvement is welcome. diff --git a/docs/reference/aravis/thread-safety.md b/docs/reference/aravis/thread-safety.md new file mode 100644 index 000000000..f24565069 --- /dev/null +++ b/docs/reference/aravis/thread-safety.md @@ -0,0 +1,16 @@ +Title: Thread Safety + +# Thread Safety + +Aravis is not thread safe, which means one can not use the same object +simultaneously from different threads, without using mutexes. But it is +perfectly fine to use different aravis objects in different threads, with the +exception of the ArvInterface instances. + +A possible trap is that glib signal callbacks are called from the thread that +emitted the corresponding signal. For example, the "new-buffer" callback is +emitted from the stream packet receiving thread, which is an internal thread +created by ArvGvStream. It is not safe to use ArvDevice and some ArvStream +functions from this callback without using mutexes. The exceptions are +arv_stream_push_buffer(), arv_stream_pop_buffer(), arv_stream_try_pop_buffer() +and arv_stream_timeout_pop_buffer(). diff --git a/docs/reference/aravis/urlmap.js b/docs/reference/aravis/urlmap.js new file mode 100644 index 000000000..156db18bb --- /dev/null +++ b/docs/reference/aravis/urlmap.js @@ -0,0 +1,5 @@ +baseURLs = [ + [ 'GLib', 'https://docs.gtk.org/glib/' ], + [ 'GObject', 'https://docs.gtk.org/gobject/' ], + [ 'Gio', 'https://docs.gtk.org/gio/' ], +] diff --git a/docs/reference/aravis/usb.md b/docs/reference/aravis/usb.md new file mode 100644 index 000000000..603a334b4 --- /dev/null +++ b/docs/reference/aravis/usb.md @@ -0,0 +1,26 @@ +Title: USB Devices + +# USB + +## Permissions + +By default, USB devices permissions may not be sufficient to allow any user to +access the USB3 cameras. These permissions can be changed by using an udev rule +file. There is a file example in [Aravis +sources](https://github.com/AravisProject/aravis/blob/main/src/aravis.rules). +This file must be placed in `/etc/udev/rules.d` directory (The exact location +may depend on the distribution you are using). This file only contains +declarations for a couple of vendors. If you want to add an entry with the +vendor of your camera, the output of `lsusb` command will give you the vendor +id, which is the first 4 digits of the ID field. + +## Performance + +Aravis uses by default the synchronous libusb API. But it can be told to use the +asynchronous API for better performances, especially on embedded platform like +RapsberryPi or Nvidia Jetson boards. The function to use is +[method@Aravis.Camera.uv_set_usb_mode]. + +`arv-viewer` and `arv-camera-test` can use the asynchronous API if `usb-mode` +option is set to `async`. Similarly, the GStreamer plugin is using the +asynchronous API if `usb-mode` property is set to `async`. diff --git a/docs/reference/aravis/utilities.md b/docs/reference/aravis/utilities.md new file mode 100644 index 000000000..80a70a0be --- /dev/null +++ b/docs/reference/aravis/utilities.md @@ -0,0 +1,11 @@ +Title:Utilities + +# Utilities + +The main goal of Aravis is to provide a library that interfaces with industrial +cameras. It also provides a set of utilities that help to debug the library, +namely `arv-viewer-0.8`, `arv-tool-0.8`, `arv-camera-test-0.8` and +`arv-fake-gv-camera-0.8`. The version suffix corresponds to the API version, as +several stable series of Aravis can be installed at the same time. + +The options for each utility is obtained using `--help` argument. diff --git a/docs/reference/aravis/xml/gtkdocentities.ent.in b/docs/reference/aravis/xml/gtkdocentities.ent.in deleted file mode 100644 index f12c9ff74..000000000 --- a/docs/reference/aravis/xml/gtkdocentities.ent.in +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/reference/aravis/xml/meson.build b/docs/reference/aravis/xml/meson.build deleted file mode 100644 index 78f38ae42..000000000 --- a/docs/reference/aravis/xml/meson.build +++ /dev/null @@ -1,11 +0,0 @@ -ent_conf = configuration_data() -ent_conf.set('PACKAGE', 'Aravis') -ent_conf.set('PACKAGE_BUGREPORT', 'https://github.com/AravisProject/aravis/issues') -ent_conf.set('PACKAGE_NAME', 'Aravis') -ent_conf.set('PACKAGE_STRING', 'aravis') -ent_conf.set('PACKAGE_TARNAME', 'aravis-' + meson.project_version()) -ent_conf.set('PACKAGE_URL', 'https://github.com/AravisProject/aravis') -ent_conf.set('PACKAGE_VERSION', meson.project_version()) -ent_conf.set('PACKAGE_API_VERSION', aravis_api_version) - -configure_file(input: 'gtkdocentities.ent.in', output: 'gtkdocentities.ent', configuration: ent_conf) diff --git a/meson.build b/meson.build index dfa133f22..a339f2944 100644 --- a/meson.build +++ b/meson.build @@ -116,8 +116,7 @@ gst_deps = aravis_dependencies + [dependency ('gstreamer-base-1.0', required: gs dependency ('gstreamer-app-1.0', required: gst_option)] subdir('gst', if_found: gst_deps) -doc_option = get_option('documentation') -doc_deps = [find_program('gtkdoc-scan', required: doc_option), find_program('xsltproc', required: doc_option)] +doc_deps = dependency ('gi-docgen', version:'>= 2021.1', fallback: ['gi-docgen', 'dummy_dep'], required:get_option('documentation')) subdir('docs', if_found: doc_deps) meson.override_dependency ('aravis-' + aravis_api_version, aravis_library_dependencies) diff --git a/src/arvcamera.c b/src/arvcamera.c index 310327605..42fa00161 100644 --- a/src/arvcamera.c +++ b/src/arvcamera.c @@ -24,18 +24,9 @@ * SECTION:arvcamera * @short_description: Class for generic camera control * - * #ArvCamera is a class for the generic control of cameras. It hides the - * complexity of the genicam interface by providing a simple API, with the - * drawback of not exposing all the available features. See #ArvDevice and - * #ArvGc for a more advanced use of the Aravis library. - * - * Example use of the ArvCamera API - * - * - * FIXME: MISSING XINCLUDE CONTENT - * - * - * + * [class@Aravis.Camera] is a class for the generic control of cameras. It hides the complexity of the genicam interface + * by providing a simple API, with the drawback of not exposing all the available features. See [class@Aravis.Device] + * and [class@Aravis.Gc] for a more advanced use of the Aravis library. */ #include diff --git a/src/meson.build b/src/meson.build index 9409dcf8e..8a1ba41b1 100644 --- a/src/meson.build +++ b/src/meson.build @@ -303,13 +303,14 @@ if introspection_option.auto() or introspection_option.enabled() gi_dep = dependency('gobject-introspection-1.0', required: introspection_option) if gir_scanner.found() and gi_dep.found() - gnome.generate_gir(aravis_library, + aravis_gir = gnome.generate_gir(aravis_library, sources : [library_sources, library_headers, library_enums], nsversion : aravis_api_version, namespace : 'Aravis', symbol_prefix : 'arv_', identifier_prefix : 'Arv', - export_packages : 'aravis', + header: 'arv.h', + export_packages : 'aravis-@0@'.format(aravis_api_version), includes : ['GObject-2.0', 'Gio-2.0'], extra_args: '-DARAVIS_COMPILATION', install : true) diff --git a/subprojects/.gitignore b/subprojects/.gitignore new file mode 100644 index 000000000..3e838ad1a --- /dev/null +++ b/subprojects/.gitignore @@ -0,0 +1 @@ +gi-docgen/ diff --git a/subprojects/gi-docgen.wrap b/subprojects/gi-docgen.wrap new file mode 100644 index 000000000..98cd92118 --- /dev/null +++ b/subprojects/gi-docgen.wrap @@ -0,0 +1,6 @@ +[wrap-git] +directory=gi-docgen +url=https://gitlab.gnome.org/GNOME/gi-docgen.git +push-url=ssh://git@gitlab.gnome.org:GNOME/gi-docgen.git +revision=main +depth=1