• 04/03/2020
  • Public Content
Contents

Wrapping User Code as OpenVX* User Kernels

OpenVX* allows adding your own algorithms to processing pipelines.
To become a true OpenVX kernel, your user code must implement certain APIs, like the validation function (that is called during
vxVerifyGraph
, refer to the OpenVINO™ toolkit Sample Applications section for code examples). A few other callbacks, like kernel initialization/de-initialization, are optional. All these callbacks along with the kernel function itself are provided to the
vxAddKernel
:
VX_API vx_kernel vxAddUserKernel(vx_context context, const vx_char name[VX_MAX_KERNEL_NAME], vx_enum enumeration, vx_kernel_f func_ptr, vx_uint32 numParams, vx_kernel_validate_f validate, vx_kernel_initialize_f init, vx_kernel_deinitialize_f deinit);
Then, every parameter that kernel accepts is specified via
vxAddParameterToKernel
, for example:
vx_kernel kernel = vxAddKernel(context,…); vxAddParameterToKernel(kernel, 0, VX_INPUT, VX_TYPE_IMAGE…); vxAddParameterToKernel(kernel, 1, VX_OUTPUT, VX_TYPE_IMAGE…);
Certain run-time behavior tweaks for the kernel are possible via
vxSetKernelAttribute
.
Finally, kernel publication is completed with
vxFinalizeKernel
call.
Refer to the Video Stabilization OpenVX sample (<SDK_SAMPLES_ROOT>
/samples
) for the detailed example of implementation of the user kernels.
See Also

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804