diff --git a/docs/api/computer-vision-sdk-apis.md b/docs/api/computer-vision-sdk-apis.md index 7847350..097f913 100644 --- a/docs/api/computer-vision-sdk-apis.md +++ b/docs/api/computer-vision-sdk-apis.md @@ -51,7 +51,7 @@ For practical examples of applications using the Computer Vision APIs, refer to To find compatibility between the ACAP Computer Vision solution and AXIS OS version, refer to [Find the right SDK for software compatibility](../axis-devices-and-compatibility/#find-the-right-sdk-for-software-compatibility). -# Axis APIs +## Axis APIs The ACAP Runtime service provides the Axis APIs: @@ -74,7 +74,7 @@ By utilizing these wrappers, you can avoid building the gRPC client-side code fo --- -## Video capture API +### Video capture API The Video capture API is one of the services of ACAP Runtime. @@ -82,7 +82,7 @@ The ACAP Computer Vision solution offers a mechanism for capturing frames using The Python client is accessible within the ACAP Runtime proto image at `/build/vdo/proto_utils` and is imported into Python as `VideoCaptureClient`, located within the `vdo_proto_utils` module. This client exposes the `get_frame` function, facilitating frame retrieval and parsing. -### The VideoCapture object +#### The VideoCapture object To instantiate a VideoCaptureClient object, you need to provide the ACAP runtime communication socket, along with the desired stream dimensions and framerate. In some cases, this call could take up to two minutes, if the ACAP runtime is busy doing other tasks like loading a machine learning model on start up. @@ -98,13 +98,13 @@ An image frame can be read with the following line of code frame = capture_client.get_frame() ``` -### VideoCapture requirements +#### VideoCapture requirements For the video capture client to work, it is required that the ACAP runtime is installed and running. The application and the ACAP runtime need to share a socket file to allow the gRPC communication. To achieve this, a volume needs to be mounted between the application and the ACAP runtime container. -### Code Examples +#### Code Examples - [opencv-qr-decoder-python](https://github.com/AxisCommunications/acap-computer-vision-sdk-examples-staging/blob/main/opencv-qr-decoder-python/docker-compose.yml) - A minimal example of a QR code detector and decoder application written in Python. - [minimal-ml-inference](https://github.com/AxisCommunications/acap-computer-vision-sdk-examples/tree/main/minimal-ml-inference) - A minimal, but complete, example of how a Python client and a model server running on the same camera. @@ -115,7 +115,7 @@ To achieve this, a volume needs to be mounted between the application and the AC --- -## Machine learning API +### Machine learning API The Machine learning API is one of the services of ACAP Runtime. @@ -123,7 +123,7 @@ The ACAP Computer Vision solution provides a flexible way of allowing machine le The Python client is available in the ACAP runtime proto image under `/build/tf/proto_utils` and imported in Python as `InferenceClient`, which is available in the `tf_proto_utils` module. The client exposes a single `infer(inputs, model_name)` function that enables an easy inference from the main application that will also be connected to the model server. -### Code Examples +#### Code Examples - [minimal-ml-inference](https://github.com/AxisCommunications/acap-computer-vision-sdk-examples/tree/main/minimal-ml-inference) - A minimal, but complete, example of how a Python client and a model server running on the same camera. - [object-detector-python](https://github.com/AxisCommunications/acap-computer-vision-sdk-examples/tree/main/object-detector-python) - An example written in Python that implements the following object detection scenarios: @@ -133,7 +133,7 @@ The Python client is available in the ACAP runtime proto image under `/build/tf/ --- -## BETA - Parameter API +### BETA - Parameter API **This API is a [Beta version](./beta-api) and developers are encouraged to test and leave feedback.** @@ -151,13 +151,13 @@ root.Brand.ProdFullName root.Brand.ProdNbr ``` -### Code Examples +#### Code Examples - [parameter-api-python](https://github.com/AxisCommunications/acap-computer-vision-sdk-examples/tree/main/parameter-api-python) - A Python example which reads device parameters using the Parameter API. --- -# Python packages +## Python packages The ACAP Computer Vision solution allows for the installation and use of Python packages that support the ACAP architecture `aarch64`. This includes, but is not limited to: diff --git a/docs/api/native-sdk-api.md b/docs/api/native-sdk-api.md index 7cb7205..bb42f52 100644 --- a/docs/api/native-sdk-api.md +++ b/docs/api/native-sdk-api.md @@ -42,16 +42,16 @@ The ACAP Native SDK provides the following APIs: To find compatibility between ACAP Native SDK and AXIS OS version, refer to [Find the right SDK for software compatibility](../axis-devices-and-compatibility/#find-the-right-sdk-for-software-compatibility). -# Axis APIs +## Axis APIs -## Edge storage API +### Edge storage API Go to the [ACAP API Documentation](src/api/axstorage/html/index.html) for detailed functional descriptions of this API. The Edge storage API allows the application to save and retrieve data on mounted storage devices such as SD cards and NAS (Network Attached Storage) units. An application can only modify its own files on the storage device. An application can both send and receive events. -### Compatibility +#### Compatibility The API is supported on products with the following chips: @@ -62,11 +62,11 @@ The API is supported on products with the following chips: - Ambarella CV25 - i.MX 6SoloX -### Version history +#### Version history The Edge storage API was introduced in Native SDK 1.11. -### Code Examples +#### Code Examples - [axstorage](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/axstorage) - This application demonstrates the usage of axstorage APIs, offering the following functionality: @@ -78,7 +78,7 @@ The Edge storage API was introduced in Native SDK 1.11. --- -## Event API +### Event API Go to the [ACAP API Documentation](src/api/axevent/html/index.html) for detailed functional descriptions of this API. @@ -89,7 +89,7 @@ The Axevent API provides: An application can both send and receive events. -### Event types +#### Event types **Stateless (Pulse)** – An event that indicates that something has occurred. Typically used to trigger some action rule. @@ -97,7 +97,7 @@ An application can both send and receive events. **Data (Application Data)** – An event that includes data that needs to be processed by the consuming application such as transaction data, license plate or other dynamic data. A data event is normally not used to trigger generic action rules. -### Supported namespaces +#### Supported namespaces When declaring events it is required to set a namespace. Following are the supported namespaces: @@ -105,7 +105,7 @@ When declaring events it is required to set a namespace. Following are the suppo **tns1** – ONVIF namespace to use with ONVIF events -### Compatibility +#### Compatibility The API is supported on products with the following chips: @@ -116,11 +116,11 @@ The API is supported on products with the following chips: - Ambarella CV25 - i.MX 6SoloX -### Version history +#### Version history The Axevent API was introduced in Native SDK 1.0. -### Code Examples +#### Code Examples - [send_event](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/axevent/send_event) - The example code is written in C which sends an ONVIF event periodically. @@ -131,7 +131,7 @@ The Axevent API was introduced in Native SDK 1.0. --- -## License Key API +### License Key API Go to the [ACAP API Documentation](src/api/licensekey/html/index.html) for detailed functional descriptions of this API. @@ -139,7 +139,7 @@ Use the License Key API to validate an application license key. A license key is a signed file, generated for a specific device ID and application ID. The ACAP Service Portal maintains both license keys and application IDs. -### Compatibility +#### Compatibility The API is supported on products with the following chips: @@ -150,24 +150,24 @@ The API is supported on products with the following chips: - Ambarella CV25 - i.MX 6SoloX -### Version history +#### Version history This API was introduced in Native SDK 1.0. -### Code Examples +#### Code Examples - [licensekey](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/licensekey/) - The example code is written in C which illustrates how to check the licensekey status. --- -## Machine learning API (Larod) +### Machine learning API (Larod) Go to the [ACAP API Documentation](src/api/larod/html/index.html) for detailed functional descriptions of this API. Larod is a service provides a simple unified C API for running machine learning and image preprocessing efficiently. The purpose of Larod is to provide a unified API for all hardware platforms with very little overhead and to arbitrate between different processes (apps) requesting access to the same hardware. -### Compatibility +#### Compatibility The Larod API is supported on products with the following chips: @@ -178,11 +178,11 @@ The Larod API is supported on products with the following chips: For products with a DLPU (Deep Learning Processing Unit), inference runs on the DLPU otherwise it runs on the CPU. -### Version history +#### Version history The Machine learning API was introduced in Native SDK 1.0. All larod API versions are available. -### Code Examples +#### Code Examples - [vdo-larod](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/vdo-larod/) - The example code is written in C and loads an image classification model to the [Machine learning API (Larod)](#machine-learning-api-larod) and then uses the [Video capture API (VDO)](#video-capture-api-vdo) to fetch frames of size WIDTH x HEIGHT in YUV format which are converted to interleaved RGB format and then sent to larod for inference on MODEL. @@ -192,7 +192,7 @@ The Machine learning API was introduced in Native SDK 1.0. All larod API version --- -## Message Broker API +### Message Broker API > This API is a [Beta version](./beta-api) and developers are encouraged to test and leave feedback. @@ -206,7 +206,7 @@ a producer in AXIS OS by subscribing to a `topic`. The API implements the Publish/Subscribe messaging paradigm. -### Compatibility +#### Compatibility The Message Broker API is supported on products with the following chips: @@ -215,7 +215,7 @@ The Message Broker API is supported on products with the following chips: - ARTPEC-7 - Ambarella CV25 -### Version history +#### Version history The Message Broker API was introduced in Native SDK 1.13. @@ -224,7 +224,7 @@ AXIS OS version | Message Broker API version | New functions added 11.9 | 0.23.2 | New topic `com.axis.analytics_scene_description.v0.beta` 11.11 | 0.26.5 | New topic `com.axis.consolidated_track.v1.beta` -### Code Examples +#### Code Examples - [consume-scene-metadata](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/message-broker/consume-scene-metadata) - The example is written in C and shows how to consume metadata stream @@ -232,15 +232,15 @@ AXIS OS version | Message Broker API version | New functions added --- -## Overlay APIs +### Overlay APIs -### Axoverlay API +#### Axoverlay API Go to the [ACAP API Documentation](src/api/axoverlay/html/index.html) for detailed functional descriptions of this API. The Axoverlay API is a helper library that enables an ACAP to draw overlays in selected video streams. It has built-in support for Cairo as rendering API, as well as an open backend for any other custom rendering. -#### Compatibility +##### Compatibility The API is supported on products with the following chips: @@ -249,23 +249,23 @@ The API is supported on products with the following chips: - ARTPEC-7 - ARTPEC-6 -#### Version history +##### Version history The Axoverlay API was introduced in Native SDK 1.0. -#### Code Examples +##### Code Examples - [axoverlay](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/axoverlay/) - The example code is written in C which illustrates how to draw plain boxes and text as overlays in a stream. -### Bounding Box API +#### Bounding Box API Go to the [ACAP API Documentation](src/api/bbox/html/index.html) for detailed functional descriptions of this API. The Bounding Box API allows for the simple drawing of boxes on a scene. It supports all new chips and utilizes the most optimized drawing mechanisms available for each chip. This API is recommended for adding basic box overlays. For more advanced features, refer to the Axoverlay API. -#### Compatibility +##### Compatibility The API is supported on products with the following chips: @@ -274,18 +274,18 @@ The API is supported on products with the following chips: - ARTPEC-7 - Ambarella CV25 -#### Version history +##### Version history The Bounding Box API was introduced in Native SDK 1.15. -#### Code Examples +##### Code Examples - [bounding-box](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/bounding-box) - An example in C that demonstrates how to portably draw burnt-in bounding boxes on selected video sources or channels. --- -## Parameter API +### Parameter API Go to the [ACAP API Documentation](src/api/axparameter/html/index.html) for detailed functional descriptions of this API. @@ -317,7 +317,7 @@ The AXParameter C library provides the following functionality: > - *read* and *modified* by another application if the application users belongs > to the same group. -### Application settings web page +#### Application settings web page The application settings web page can be used to modify **application parameters**. @@ -331,7 +331,7 @@ In the Axis device web page: Note that a reload of the web page is required to display values set from C code or VAPIX. -### Compatibility +#### Compatibility The Parameter API is supported on products with the following chips: @@ -342,24 +342,24 @@ The Parameter API is supported on products with the following chips: - Ambarella CV25 - i.MX 6SoloX -### Version history +#### Version history The Parameter API was introduced in Native SDK 1.13. -### Code Examples +#### Code Examples - [axparameter](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/axparameter) - An example in C that demonstrates how to manage application-defined parameters, allowing you to add, remove, set, get, and register callback functions for parameter value updates. --- -## Serial port API +### Serial port API Go to the [ACAP API Documentation](src/api/axserialport/html/index.html) for detailed functional descriptions of this API. The Serial port API allows the application to configure and control the external serial port on selected Axis products. -### Compatibility +#### Compatibility - The API supports the following standards: - RS-232 @@ -371,11 +371,11 @@ The Serial port API allows the application to configure and control the external - ARTPEC-8 - ARTPEC-7 -### Version history +#### Version history The Serial port API was introduced in Native SDK 1.11. -### Code Examples +#### Code Examples - [axserialport](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/axserialport) - This example details the creation of an ACAP application utilizing the axserialport API, showcasing the following actions: @@ -385,7 +385,7 @@ The Serial port API was introduced in Native SDK 1.11. --- -## Video capture API (VDO) +### Video capture API (VDO) Go to the [ACAP API Documentation](src/api/vdostream/html/index.html) for detailed functional descriptions of this API. @@ -395,7 +395,7 @@ The VdoStream API provides: - video and image capture - video and image configuration -### Available video compression formats through VDO +#### Available video compression formats through VDO The table below shows available subformats for corresponding YUV format. @@ -406,7 +406,7 @@ y800 | YUV An application to start a vdo stream can be found at [vdostream](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/vdostream/), where the first argument is a string describing the video compression format. It takes `h264` (default), `h265`, `jpeg`, `nv12`, and `y800` as inputs. Both `nv12` and `y800` correspond to YUV format of VDO. -### Compatibility +#### Compatibility The API is supported on products with the following chips: @@ -416,11 +416,11 @@ The API is supported on products with the following chips: - ARTPEC-6 - Ambarella CV25 -#### Compatibility limitations +##### Compatibility limitations - **Global rotation** - All platforms except ARTPEC-6 support global image source rotation, this feature is designed to utilize the hardware more efficiently. When designing applications for multiple platforms this needs to be taken into consideration. The Video capture API on ARTPEC-6 allows specifying the desired rotation per stream in contrast to other chips where this is a global option chosen at camera installation time and any attempt to specify capture rotation will be ignored. -### Version history +#### Version history The Video capture API was introduced in Native SDK 1.0. @@ -440,11 +440,11 @@ AXIS OS version | VdoStream API version | New functions added 11.5 | 9.59.0 | - 11.6 | 9.78.12 | `vdo_stream_set_gop_length`, `vdo_error_is_resource_limitation` -### Known issues +#### Known issues - A memory leak in VDO was found in firmware versions from 10.10 for ARTPEC chips, later fixed in 10.11.65. The issue affects function `vdo_buffer_get_data`. -### Code Examples +#### Code Examples - [vdostream](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/vdostream/) - The example code is written in C which starts a vdo stream and then illustrates how to continuously capture frames from the vdo service, access the received buffer contents as well as the frame metadata. @@ -455,13 +455,13 @@ AXIS OS version | VdoStream API version | New functions added --- -# Open Source APIs +## Open Source APIs -## Cairo +### Cairo Open-source rendering library for 2D vector graphics. See [Cairo documentation](https://www.cairographics.org/documentation/). -### Compatibility +#### Compatibility The Cairo API is supported on products with the following chips: @@ -470,22 +470,22 @@ The Cairo API is supported on products with the following chips: - ARTPEC-7 - ARTPEC-6 -### Version history +#### Version history The Cairo API was introduced in Native SDK 1.0. -### Code Examples +#### Code Examples - [axoverlay](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/axoverlay/) - The example code is written in C which illustrates how to draw plain boxes and text as overlays in a stream. --- -## OpenCL +### OpenCL Accelerate parallel compute with GPU. See [OpenCL documentation](https://www.khronos.org/opencl/). -### Compatibility +#### Compatibility The OpenCL API is supported on products with the following chips: @@ -493,22 +493,22 @@ The OpenCL API is supported on products with the following chips: - ARTPEC-8 - ARTPEC-7 -### Version history +#### Version history The OpenCL 1.2 was introduced in Native SDK 1.0. -### Code Examples +#### Code Examples - [vdo-opencl-filtering](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/vdo-opencl-filtering/) - This example illustrates how to capture frames from the vdo service, access the received buffer, and finally perform a GPU accelerated Sobel filtering with OpenCL. --- -## FastCGI +### FastCGI [FastCGI](https://wikipedia.org/wiki/FastCGI) is a protocol for interfacing interactive programs with a web server. -### Compatibility +#### Compatibility The FastCGI API is supported on products with the following chips: @@ -519,22 +519,22 @@ The FastCGI API is supported on products with the following chips: - Ambarella CV25 - i.MX 6SoloX -### Version history +#### Version history The FastCGI API was introduced in Native SDK 1.6. -### Code Examples +#### Code Examples - [web-server-using-fastcgi](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/web-server-using-fastcgi) - This example is written in C and explains how to build an ACAP application that can handle HTTP requests sent to the Axis device, using the device's own web server and FastCGI. --- -## OpenSSL +### OpenSSL Open-source library for general-purpose cryptography and secure communication. See [OpenSSL documentation](https://www.openssl.org/docs/). -### Compatibility +#### Compatibility The OpenSSL API is supported on products with the following chips: @@ -545,22 +545,22 @@ The OpenSSL API is supported on products with the following chips: - Ambarella CV25 - i.MX 6SoloX -### Version history +#### Version history The OpenSSL API was introduced in Native SDK 1.14. -### Code Examples +#### Code Examples - [curl-openssl](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/curl-openssl/) - The example code is written in C which illustrates how to use curl and OpenSSL to retrieve a file securely from an external server for e.g. [example.com]() --- -## Jansson +### Jansson Open-source library for for encoding, decoding and manipulating JSON data. See [Jansson documentation](https://jansson.readthedocs.io/en/latest/). -### Compatibility +#### Compatibility The Jansson API is supported on products with the following chips: @@ -571,22 +571,22 @@ The Jansson API is supported on products with the following chips: - Ambarella CV25 - i.MX 6SoloX -### Version history +#### Version history The Jansson API was introduced in Native SDK 1.14. -### Code Examples +#### Code Examples - [`vapix`](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/vapix/) - The example code is written in C which illustrates calling VAPIX API with JSON request and response from within an ACAP application. --- -## Curl +### Curl Open-source library for transferring data with URLs. See [curl documentation](https://curl.se/docs/). For proxy configuration see [Global device proxy](../develop/proxy). -### Compatibility +#### Compatibility The curl API is supported on products with the following chips: @@ -597,11 +597,11 @@ The curl API is supported on products with the following chips: - Ambarella CV25 - i.MX 6SoloX -### Version history +#### Version history The curl API was introduced in Native SDK 1.14. -### Code Examples +#### Code Examples - [curl-openssl](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/curl-openssl/) - The example code is written in C which illustrates how to use curl and OpenSSL to retrieve a file securely from an external server for e.g. [example.com]() @@ -610,13 +610,13 @@ The curl API was introduced in Native SDK 1.14. --- -# Supplementary APIs +## Supplementary APIs -## VAPIX access for ACAP +### VAPIX access for ACAP ACAP applications can request for VAPIX service account credentials with "admin" access level in runtime. With these credentials, the ACAP application can call a local virtual host to make VAPIX requests on the device. See [VAPIX access for ACAP](../develop/VAPIX-access-for-ACAP-applications). -### Code Examples +#### Code Examples - [`vapix`](https://github.com/AxisCommunications/acap-native-sdk-examples/tree/main/vapix/) - The example code is written in C which illustrates how an ACAP application can call [VAPIX APIs](https://www.axis.com/vapix-library/).