TIM-VX/prebuilt-sdk/x86_64_linux/include/VX/vx_lib_xyz.h

110 lines
3.0 KiB
C

/*
* Copyright (c) 2012-2017 The Khronos Group Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#ifndef _OPENVX_EXT_XYZ_H_
#define _OPENVX_EXT_XYZ_H_
/*!
* \file
* \brief An example of how to wrap a User Extension Kernel.
*
* \defgroup group_xyz_ext The Example User Kernel Extension
*
*/
#include <VX/vx.h>
/*!
* \file vx_ext_xyz.h
* \brief The example header for how to write a user mode extension to OpenVX.
*/
/*! \brief The XYZ Data area in bytes
* \ingroup group_xyz_ext
*/
#define XYZ_DATA_AREA (1024)
/*! \brief The required number of items in the temp array
* \ingroup group_xyz_ext
*/
#define XYZ_TEMP_NUMITEMS (374)
/*! \brief The minimum value of the scalar for the XYZ Kernel.
* \ingroup group_xyz_ext
*/
#define XYZ_VALUE_MIN (-10)
/*! \brief The maximum value of the scalar for the XYZ Kernel.
* \ingroup group_xyz_ext
*/
#define XYZ_VALUE_MAX (10)
//! [KERNEL ENUM]
#define VX_KERNEL_NAME_KHR_XYZ "org.khronos.example.xyz"
/*! \brief The XYZ Example Library Set
* \ingroup group_xyz_ext
*/
#define VX_LIBRARY_XYZ (0x3) // assigned from Khronos, vendors control their own
/*! \brief The list of XYZ Kernels.
* \ingroup group_xyz_ext
*/
enum vx_kernel_xyz_ext_e {
/*! \brief The Example User Defined Kernel */
VX_KERNEL_KHR_XYZ = VX_KERNEL_BASE(VX_ID_DEFAULT, VX_LIBRARY_XYZ) + 0x0,
// up to 0xFFF kernel enums can be created.
};
//! [KERNEL ENUM]
#ifdef __cplusplus
extern "C" {
#endif
//! [node]
/*! \brief [Graph] This is an example ISV or OEM provided node which executes
* in the Graph to call the XYZ kernel.
* \param [in] graph The handle to the graph in which to instantiate the node.
* \param [in] input The input image.
* \param [in] value The input scalar value
* \param [out] output The output image.
* \param [in,out] temp A temp array for some data which is needed for
* every iteration.
* \ingroup group_example_kernel
*/
vx_node vxXYZNode(vx_graph graph, vx_image input, vx_uint32 value, vx_image output, vx_array temp);
//! [node]
//! [vxu]
/*! \brief [Immediate] This is an example of an immediate mode version of the XYZ node.
* \param [in] context The overall context of the implementation.
* \param [in] input The input image.
* \param [in] value The input scalar value
* \param [out] output The output image.
* \param [in,out] temp A temp array for some data which is needed for
* every iteration.
* \ingroup group_example_kernel
*/
vx_status vxuXYZ(vx_context context, vx_image input, vx_uint32 value, vx_image output, vx_array temp);
//! [vxu]
#ifdef __cplusplus
}
#endif
#endif