TIOVX User Guide
vx_tutorial_graph_user_kernel_pytiovx.c
Go to the documentation of this file.
1 /*
2 *
3 * Copyright (c) 2017 Texas Instruments Incorporated
4 *
5 * All rights reserved not granted herein.
6 *
7 * Limited License.
8 *
9 * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
10 * license under copyrights and patents it now or hereafter owns or controls to make,
11 * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
12 * terms herein. With respect to the foregoing patent license, such license is granted
13 * solely to the extent that any such patent is necessary to Utilize the software alone.
14 * The patent license shall not apply to any combinations which include this software,
15 * other than combinations with devices manufactured by or for TI ("TI Devices").
16 * No hardware patent is licensed hereunder.
17 *
18 * Redistributions must preserve existing copyright notices and reproduce this license
19 * (including the above copyright notice and the disclaimer and (if applicable) source
20 * code license limitations below) in the documentation and/or other materials provided
21 * with the distribution
22 *
23 * Redistribution and use in binary form, without modification, are permitted provided
24 * that the following conditions are met:
25 *
26 * * No reverse engineering, decompilation, or disassembly of this software is
27 * permitted with respect to any software provided in binary form.
28 *
29 * * any redistribution and use are licensed by TI for use only with TI Devices.
30 *
31 * * Nothing shall obligate TI to provide you with source code for the software
32 * licensed and provided to you in object code.
33 *
34 * If software source code is provided to you, modification and redistribution of the
35 * source code are permitted provided that the following conditions are met:
36 *
37 * * any redistribution and use of the source code, including any resulting derivative
38 * works, are licensed by TI for use only with TI Devices.
39 *
40 * * any redistribution and use of any object code compiled from the source code
41 * and any resulting derivative works, are licensed by TI for use only with TI Devices.
42 *
43 * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
44 *
45 * may be used to endorse or promote products derived from this software without
46 * specific prior written permission.
47 *
48 * DISCLAIMER.
49 *
50 * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
51 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
52 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
53 * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
54 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
55 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
56 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
57 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
58 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59 * OF THE POSSIBILITY OF SUCH DAMAGE.
60 *
61 */
62 
63 
116 #include <stdio.h>
117 #include <VX/vx.h>
118 #include <TI/tivx.h>
119 #include <utility.h>
120 #include <ch03_graph/vx_tutorial_graph_user_kernel_pytiovx_uc.h>
122 
124 #define IN_FILE_NAME "${VX_TEST_DATA_PATH}/colors.bmp"
125 
127 #define OUT_USER_KERNEL_FILE_NAME "${VX_TEST_DATA_PATH}/vx_tutorial_graph_user_kernel_pytiovx_out.bmp"
128 
130 #define OUT_TARGET_KERNEL_FILE_NAME "${VX_TEST_DATA_PATH}/vx_tutorial_graph_target_kernel_pytiovx_out.bmp"
131 
139 {
140  vx_status status;
148  vx_tutorial_graph_user_kernel_pytiovx_uc_t uc;
156  vx_context context = NULL;
167  char *out_file = OUT_USER_KERNEL_FILE_NAME;
168 
169  if(add_as_target_kernel)
170  {
171  out_file = OUT_TARGET_KERNEL_FILE_NAME;
172  }
175  printf(" vx_tutorial_graph_user_kernel_pytiovx: Tutorial Started !!! \n");
176 
185  context = vxCreateContext();
202  status = phase_rgb_user_kernel_add(context, add_as_target_kernel);
203  if(status!=(vx_status)VX_SUCCESS)
204  {
205  printf(" vx_tutorial_graph_user_kernel_pytiovx: ERROR: unable to add user kernel !!!\n");
206  }
209  if(status==(vx_status)VX_SUCCESS)
210  {
220  vx_tutorial_graph_user_kernel_pytiovx_uc_create(&uc, add_as_target_kernel);
230  printf(" Loading file %s ...\n", IN_FILE_NAME);
238  show_image_attributes(uc.input);
239  show_image_attributes(uc.grad_x);
240  show_image_attributes(uc.grad_y);
241  show_image_attributes(uc.phase);
242  show_image_attributes(uc.phase_rgb);
251  vx_tutorial_graph_user_kernel_pytiovx_uc_verify(&uc);
252  show_graph_attributes(uc.graph_0);
258  tivxExportGraphToDot(uc.graph_0, ".", "vx_tutorial_graph_user_kernel_pytiovx");
261  if(status==(vx_status)VX_SUCCESS)
262  {
263  printf(" Executing graph ...\n");
264 
269  vx_tutorial_graph_user_kernel_pytiovx_uc_run(&uc);
272  printf(" Executing graph ... Done !!!\n");
273 
278  show_graph_attributes(uc.graph_0);
279 
280  printf(" Saving to file %s ...\n", out_file);
281  tivx_utils_save_vximage_to_bmpfile(out_file, uc.phase_rgb);
283  }
284 
291  vx_tutorial_graph_user_kernel_pytiovx_uc_delete(&uc);
302  }
303 
309  vxReleaseContext(&context);
312  printf(" vx_tutorial_graph_user_kernel_pytiovx: Tutorial Done !!! \n");
313  printf(" \n");
314 }
#define OUT_TARGET_KERNEL_FILE_NAME
Output file name when tutorial is run with target kernel.
vx_bool
Interface to TI extension APIs.
vx_status tivx_utils_load_vximage_from_bmpfile(vx_image image, char *filename, vx_bool convert_to_gray_scale)
Load data from BMP file into a previously created vx_image object.
vx_status phase_rgb_user_kernel_remove(vx_context context)
Remove user/target kernel from context.
VX_SUCCESS
void show_graph_attributes(vx_graph graph)
Show attributes of previously created graph.
vx_true_e
vx_status VX_API_CALL vxReleaseContext(vx_context *context)
vx_enum vx_status
struct _vx_context * vx_context
void vx_tutorial_graph_user_kernel_pytiovx(vx_bool add_as_target_kernel)
Tutorial Entry Point.
vx_status phase_rgb_user_kernel_add(vx_context context, vx_bool add_as_target_kernel)
Add user/target kernel to OpenVX context.
#define IN_FILE_NAME
Input file name.
void show_image_attributes(vx_image image)
Show attributes of previously created image.
#define OUT_USER_KERNEL_FILE_NAME
Output file name when tutorial is run with user kernel.
vx_context VX_API_CALL vxCreateContext()
vx_status VX_API_CALL tivxExportGraphToDot(vx_graph graph, const char *output_file_path, const char *output_file_prefix)
Export graph representation as DOT graph file.
vx_status tivx_utils_save_vximage_to_bmpfile(const char *filename, vx_image image)
Save data from image object to PNG file.