This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Custom Application using OpenVX, Node kernel Validate failed

Hi,

I am using SDK VISION_03_03_00_00. I used your example of vip_single_cam_openvx where I modified your openvx.c  to run vxColorConvertNode,vxChannelExtractNode and vxCannyEdgeDetectorNode. Also I am using Windows OS.

Here is my code.

7571.openvx.c
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/******************************************************************************
Copyright (c) [2012 - 2017] Texas Instruments Incorporated
All rights reserved not granted herein.
Limited License.
Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
license under copyrights and patents it now or hereafter owns or controls to
make, have made, use, import, offer to sell and sell ("Utilize") this software
subject to the terms herein. With respect to the foregoing patent license,
such license is granted solely to the extent that any such patent is necessary
to Utilize the software alone. The patent license shall not apply to any
combinations which include this software, other than combinations with devices
manufactured by or for TI ("TI Devices"). No hardware patent is licensed
hereunder.
Redistributions must preserve existing copyright notices and reproduce this
license (including the above copyright notice and the disclaimer and
(if applicable) source code license limitations below) in the documentation
and/or other materials provided with the distribution
Redistribution and use in binary form, without modification, are permitted
provided that the following conditions are met:
* No reverse engineering, decompilation, or disassembly of this software
is permitted with respect to any software provided in binary form.
* Any redistribution and use are licensed by TI for use only with TI Devices.
* Nothing shall obligate TI to provide you with source code for the software
licensed and provided to you in object code.
If software source code is provided to you, modification and redistribution of
the source code are permitted provided that the following conditions are met:
* Any redistribution and use of the source code, including any resulting
derivative works, are licensed by TI for use only with TI Devices.
* Any redistribution and use of any object code compiled from the source code
and any resulting derivative works, are licensed by TI for use only with TI
Devices.
Neither the name of Texas Instruments Incorporated nor the names of its
suppliers may be used to endorse or promote products derived from this software
without specific prior written permission.
DISCLAIMER.
THIS SOFTWARE IS PROVIDED BY TI AND TI’S LICENSORS "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL TI AND TI’S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
******************************************************************************/
/**
*******************************************************************************
* \file openvx.c
*
* \brief This file implements Actual OpenVX graph processing.
* It creates the graph with the single Harris Corners node and
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

When i  i execute this code  i got message 

 VX_ZONE_ERROR:[vxVerifyGraph:682] Node kernel Validate failed
 VX_ZONE_ERROR:[vxVerifyGraph:766] Graph verify failed
 Assertion @ Line: 275 in openvx/openvx.c: VX_SUCCESS == vxStatus : failed !!!
 Assertion @ Line: 275 in openvx/openvx.c: VX_SUCCESS == vxStatus : failed !!!

Can you help me to find what is causing this problem?

Regards,
Luka
  • Hello,

    From your previous question, it looks like the color convert and channel extract node were not giving any further errors, so it appears that the error is now coming from the canny edge node.  Do you mind adding a few logging statements to the canny edge node as described below?  Note, in newer versions of the SDK, we have greatly improved these logging statements, so I would recommend downloading this and at least taking the latest tiovx component.

    In ti_components/open_compute/tiovx_01_07_01_00/kernels/openvx-core/host/vx_canny_host.c, can you add print statements everywhere the status is being updated in the tivxAddKernelCannyValidate function?  You will then need to rebuild tiovx then rebuild your application to take effect.

    Regards,

    Lucas

  • Hi,

    I did what You suggested me, but i did not found error there, actually it change status before it gets to vx_CannyEdgeDetectorNode.

    I looked where it change status to not successful and I found that it happens in vx_graph_verify.c 

    static vx_status ownGraphNodeKernelValidate( vx_graph graph, vx_meta_format meta[])
    {
        vx_node node;
        vx_status status = VX_SUCCESS;
        uint32_t i, j;
        for(i=0; i<graph->num_nodes; i++)
        {
            node = graph->nodes[i];
            status = ownNodeKernelValidate(node, meta);  <<<<--------------- here status changes value
            if(status == VX_SUCCESS)
            {
                status = ownGraphInitVirtualNode(graph, node, meta);
                if(status == VX_SUCCESS)
                { 
                    status = ownGraphValidRectCallback(graph, node, meta);
                }
            }
            if(status != VX_SUCCESS)
            {    
                break;
            }
            for (j = 0; j < TIVX_KERNEL_MAX_PARAMS; j ++)
            {
                meta[j]->valid_rect_callback = NULL;
            }
        }
        return status;
    }
    

    To be more precise in vx_node.c 

    vx_status ownNodeKernelValidate(vx_node node, vx_meta_format meta[])
    {
        vx_status status = VX_SUCCESS;
        uint32_t i;
        uint32_t num_params;
        if((NULL != node) && (NULL != node->kernel))
        {
            if(node->kernel->validate)
            {
                num_params = node->kernel->signature.num_parameters;
                for (i = 0; i < num_params; i ++)
                {
                    meta[i]->type = node->kernel->signature.types[i];
                }
                status = node->kernel->validate(node, node->parameters, num_params, meta);  <<<------------- here status changes value
        }
        else
        {
            status = VX_ERROR_INVALID_PARAMETERS;
    
        }
        return status;
    }

    Regards,

    Luka

  • Hello Luka,

    To clarify, the line you are pointing to is called within a loop that calls the "validate" callback for every node within the graph.  If the error is coming before it hits the canny validate callback then it must be failing within one of the previous nodes' validate callback.

    Can you add similar debug print statements to the tiovx_01_07_01_00/kernels/openvx-core/host/vx_color_convert_host.c and tiovx_01_07_01_00/kernels/openvx-core/host/vx_channel_extract_host.c to help isolate the issue?

    Regards,

    Lucas

  • Hello Lucas,

    I did what You recomended, I printed all statements in vx_color_convert_host.c and vx_channel_extract_host.c but the vx_status has never changed.

    If it helps here is what I get when I  execute code after printing statements:

    CHAINS: Sensor create in progress !!!
    VIDEO_SENSOR: INST0 : I2C0 : I2C Addr = 0x30
    Pred IOCTL_BSP_VID_SENSOR_GET_FEATURES, chanNum: 0
    Pred IOCTL_BSP_VID_SENSOR_GET_CHIP_ID
    VIDEO_SENSOR: VIP 0: DRV ID 1203 (I2C ADDR 0x30): a635:0000:7fa2
    CHAINS: Sensor create ... DONE !!!
    CAPTURE: Create in progress !!!
    CAPTURE: VIP1 Slice1 PortA capture mode is [ 8-bit] !!!
    CAPTURE: Create Done !!!
    ALGORITHM: Create in progress (algId = 10) !!!
    VX_ZONE_ERROR:[vxVerifyGraph:682] Node kernel Validate failed
    VX_ZONE_ERROR:[vxVerifyGraph:766] Graph verify failed
    ###########STATUS CHANGED openvx.c    f: openvxDelete: if (vxGetStatus((vx_reference)gObj->yuv_image) == VX_SUCCESS)
    ##################### called vxStatus = vxSwapImageHandle
    ###########STATUS CHANGED vx_image.c  f: vxSwapImageHandle :  if (ownIsValidImage(image) == vx_true_e)
    Assertion @ Line: 282 in openvx/openvx.c: VX_SUCCESS == vxStatus : failed !!!
    Assertion @ Line: 282 in openvx/openvx.c: VX_SUCCESS == vxStatus : failed !!!
    NETWORK_CTRL: Starting Server (port=5000) !!!
    NETWORK_CTRL: Starting Server ... DONE (port=5000) !!!

    Assertion @ Line: 282  in openvx/openvx.c is : 

       if (vxGetStatus((vx_reference)gObj->yuv_image) == VX_SUCCESS)
            {
                vxStatus = vxSwapImageHandle(
                                            gObj->yuv_image, 
                                            NULL, 
                                            &old_ptr, 
                                            1u);
    /*282*/     UTILS_assert(VX_SUCCESS == vxStatus);          
            }

    Regards,


    Luka

  • Hello Luka,

    If the vxVerifyGraph call fails, then subsequent calls, such as the vxSwapImageHandle call, will fail too.  Let us first determine what is failing in the vxVerifyGraph call.

    Can you add the following print statement in the ownNodeKernelValidate function before the line listed below?  As you mentioned in your inital query, this is where the first failure occurred, so this print statement will allow us to determine the kernel that is failing.

                printf("kernel name = %s\n", node->kernel->name);

         status = node->kernel->validate(node, node->parameters, num_params, meta);

    Regards,

    Lucas

  • Hello Lucas,

    Here is what I get after printing kernel name:

    .................
    kernel name = org.khronos.openvx.color_convert
    kernel name = org.khronos.openvx.channel_extract
    kernel name = org.khronos.openvx.canny_edge_detector
    kernel name = org.khronos.openvx.color_convert
    kernel name = org.khronos.openvx.channel_extract
    kernel name = org.khronos.openvx.canny_edge_detector
    VX_ZONE_ERROR:[vxVerifyGraph:682] Node kernel Validate failed
    VX_ZONE_ERROR:[vxVerifyGraph:766] Graph verify failed
    .................


    Regards,

    Luka

  • Hello Luka,

    Based on this, It appears to be failing in the canny edge detector kernel validate callback.  Could you send me the ti_components/open_compute/tiovx_01_07_01_00/kernels/openvx-core/host/vx_canny_host.c file so I can see what print statements you have added previously?

    Can you also print the status immediately after the below call and send me the results?

    status = node->kernel->validate(node, node->parameters, num_params, meta);

    Regards,

    Lucas

  • Hello Lucas,

    I am sorry that I missed to print all sattus in vx_canny_host.c. After I corrected my mistake i found that status changed when it " Check for frame sizes". Here is my code and the status is changes at line 286

    8117.vx_canny_host.c
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    /*
    *
    * Copyright (c) 2017 Texas Instruments Incorporated
    *
    * All rights reserved not granted herein.
    *
    * Limited License.
    *
    * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
    * license under copyrights and patents it now or hereafter owns or controls to make,
    * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
    * terms herein. With respect to the foregoing patent license, such license is granted
    * solely to the extent that any such patent is necessary to Utilize the software alone.
    * The patent license shall not apply to any combinations which include this software,
    * other than combinations with devices manufactured by or for TI ("TI Devices").
    * No hardware patent is licensed hereunder.
    *
    * Redistributions must preserve existing copyright notices and reproduce this license
    * (including the above copyright notice and the disclaimer and (if applicable) source
    * code license limitations below) in the documentation and/or other materials provided
    * with the distribution
    *
    * Redistribution and use in binary form, without modification, are permitted provided
    * that the following conditions are met:
    *
    * * No reverse engineering, decompilation, or disassembly of this software is
    * permitted with respect to any software provided in binary form.
    *
    * * any redistribution and use are licensed by TI for use only with TI Devices.
    *
    * * Nothing shall obligate TI to provide you with source code for the software
    * licensed and provided to you in object code.
    *
    * If software source code is provided to you, modification and redistribution of the
    * source code are permitted provided that the following conditions are met:
    *
    * * any redistribution and use of the source code, including any resulting derivative
    * works, are licensed by TI for use only with TI Devices.
    *
    * * any redistribution and use of any object code compiled from the source code
    * and any resulting derivative works, are licensed by TI for use only with TI Devices.
    *
    * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
    *
    * may be used to endorse or promote products derived from this software without
    * specific prior written permission.
    *
    * DISCLAIMER.
    *
    * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
    * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
    * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
    * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
    * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
    * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
    * OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */
    #include <TI/tivx.h>
    #include <tivx_openvx_core_kernels.h>
    #include <tivx_kernel_canny.h>
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Also I printed  status as You asked me and here is result:

    kernel name = org.khronos.openvx.color_convert
    kernel name = org.khronos.openvx.channel_extract
    kernel name = org.khronos.openvx.canny_edge_detector
    kernel name = org.khronos.openvx.color_convert
    kernel name = org.khronos.openvx.channel_extract
    kernel name = org.khronos.openvx.canny_edge_detector
    vx_canny_host.c line 289
    STATUS CHANGED AFTER status = node->kernel->validate(node, node->parameters, num_params, meta);
    VX_ZONE_ERROR:[vxVerifyGraph:682] Node kernel Validate failed
    VX_ZONE_ERROR:[vxVerifyGraph:766] Graph verify failed

    Regards,

    Luk

  • Hello Luka,

    In the vx_canny_host.c, can you print out the w[0u], w[1u], h[0], and h[1u] values on line 289 to see which ones are mismatching?

    Regards,

    Lucas

  • Hello Lucas,

    Here are results:

    kernel name = org.khronos.openvx.color_convert
    kernel name = org.khronos.openvx.channel_extract
    kernel name = org.khronos.openvx.canny_edge_detector
    w[0U] = 1280
    w[1U] = 1280
    h[0U] = 720
    h[1U] = 720
    kernel name = org.khronos.openvx.color_convert
    kernel name = org.khronos.openvx.channel_extract
    kernel name = org.khronos.openvx.canny_edge_detector
    w[0U] = 1
    w[1U] = 1280
    h[0U] = 1
    h[1U] = 720
    vx_canny_host.c line 289
    STATUS CHANGED AFTER status = node->kernel->validate(node, node->parameters, num_params, meta);
    VX_ZONE_ERROR:[vxVerifyGraph:682] Node kernel Validate failed
    VX_ZONE_ERROR:[vxVerifyGraph:766] Graph verify failed

    Regards,

    Luka

  • Hello Luka,

    Can you try modifying the two virtual images in your application to normal images?  You will need to change the API from vxCreateVirtualImage to vxCreateImage.  Given that this is an older release, the virtual image with canny may not have been tested sufficiently and is therefore causing the failure.

    Note: you will receive the same performance with virtual image as with the normal image.

    Regards,

    Lucas

  • Hello  Lucas,

    After I changed vxCreateVirtualImage  to  vxCreateImage i got other errors in vx_color_convert_host.c 

    Here is my code 

    vx_color_convert_host.c
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    /*
    *
    * Copyright (c) 2017 Texas Instruments Incorporated
    *
    * All rights reserved not granted herein.
    *
    * Limited License.
    *
    * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
    * license under copyrights and patents it now or hereafter owns or controls to make,
    * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
    * terms herein. With respect to the foregoing patent license, such license is granted
    * solely to the extent that any such patent is necessary to Utilize the software alone.
    * The patent license shall not apply to any combinations which include this software,
    * other than combinations with devices manufactured by or for TI ("TI Devices").
    * No hardware patent is licensed hereunder.
    *
    * Redistributions must preserve existing copyright notices and reproduce this license
    * (including the above copyright notice and the disclaimer and (if applicable) source
    * code license limitations below) in the documentation and/or other materials provided
    * with the distribution
    *
    * Redistribution and use in binary form, without modification, are permitted provided
    * that the following conditions are met:
    *
    * * No reverse engineering, decompilation, or disassembly of this software is
    * permitted with respect to any software provided in binary form.
    *
    * * any redistribution and use are licensed by TI for use only with TI Devices.
    *
    * * Nothing shall obligate TI to provide you with source code for the software
    * licensed and provided to you in object code.
    *
    * If software source code is provided to you, modification and redistribution of the
    * source code are permitted provided that the following conditions are met:
    *
    * * any redistribution and use of the source code, including any resulting derivative
    * works, are licensed by TI for use only with TI Devices.
    *
    * * any redistribution and use of any object code compiled from the source code
    * and any resulting derivative works, are licensed by TI for use only with TI Devices.
    *
    * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
    *
    * may be used to endorse or promote products derived from this software without
    * specific prior written permission.
    *
    * DISCLAIMER.
    *
    * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
    * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
    * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
    * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
    * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
    * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
    * OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */
    #include <TI/tivx.h>
    #include <tivx_openvx_core_kernels.h>
    #include <tivx_kernel_color_convert.h>
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    And here is what I got when I execute it:

    ...........................................
    kernel name = org.khronos.openvx.color_convert
    kernel name = org.khronos.openvx.channel_extract
    kernel name = org.khronos.openvx.canny_edge_detector
    w[0U] = 1280
    w[1U] = 1280
    h[0U] = 720
    h[1U] = 720
    kernel name = org.khronos.openvx.color_convert
    vx_color_convert_host STATUS 16
    vx_color_convert_host STATUS 19
    STATUS IS CHANGED AFTER status = node->kernel->validate(node, node->parameters, num_params, meta);
    VX_ZONE_ERROR:[vxVerifyGraph:682] Node kernel Validate failed
    VX_ZONE_ERROR:[vxVerifyGraph:766] Graph verify failed
    Assertion @ Line: 285 in openvx/openvx.c: VX_SUCCESS == vxStatus : failed !!!
    Assertion @ Line: 285 in openvx/openvx.c: VX_SUCCESS == vxStatus : failed !!!

    Regards,

    Luka

  • Hello Luka,

    Could you please send me your updated application code?

    Also, could you please print the w[0], h[0], w[1] and h[1] where you have status 16 in the color convert host and send the results?

    Regards,

    Lucas

  • Hello Lucas,

    Here is my application code: 

    1586.openvx.c
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    /******************************************************************************
    Copyright (c) [2012 - 2017] Texas Instruments Incorporated
    All rights reserved not granted herein.
    Limited License.
    Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
    license under copyrights and patents it now or hereafter owns or controls to
    make, have made, use, import, offer to sell and sell ("Utilize") this software
    subject to the terms herein. With respect to the foregoing patent license,
    such license is granted solely to the extent that any such patent is necessary
    to Utilize the software alone. The patent license shall not apply to any
    combinations which include this software, other than combinations with devices
    manufactured by or for TI ("TI Devices"). No hardware patent is licensed
    hereunder.
    Redistributions must preserve existing copyright notices and reproduce this
    license (including the above copyright notice and the disclaimer and
    (if applicable) source code license limitations below) in the documentation
    and/or other materials provided with the distribution
    Redistribution and use in binary form, without modification, are permitted
    provided that the following conditions are met:
    * No reverse engineering, decompilation, or disassembly of this software
    is permitted with respect to any software provided in binary form.
    * Any redistribution and use are licensed by TI for use only with TI Devices.
    * Nothing shall obligate TI to provide you with source code for the software
    licensed and provided to you in object code.
    If software source code is provided to you, modification and redistribution of
    the source code are permitted provided that the following conditions are met:
    * Any redistribution and use of the source code, including any resulting
    derivative works, are licensed by TI for use only with TI Devices.
    * Any redistribution and use of any object code compiled from the source code
    and any resulting derivative works, are licensed by TI for use only with TI
    Devices.
    Neither the name of Texas Instruments Incorporated nor the names of its
    suppliers may be used to endorse or promote products derived from this software
    without specific prior written permission.
    DISCLAIMER.
    THIS SOFTWARE IS PROVIDED BY TI AND TI’S LICENSORS "AS IS" AND ANY EXPRESS OR
    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    IN NO EVENT SHALL TI AND TI’S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
    OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
    ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    ******************************************************************************/
    /**
    *******************************************************************************
    * \file openvx.c
    *
    * \brief This file implements Actual OpenVX graph processing.
    * It creates the graph with the single Harris Corners node and
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    After printing w and h in vx_color_convert_host my output is:

    ..................................................
    [IPU1-0]     10.381565 s: kernel name = org.khronos.openvx.color_convert
    [IPU1-0]     10.381717 s: vx_color_convert_host w[0U] = 1280
    [IPU1-0]     10.381778 s: vx_color_convert_host w[1U] = 1280
    [IPU1-0]     10.381870 s: vx_color_convert_host h[0U] = 720
    [IPU1-0]     10.381931 s: vx_color_convert_host h[1U] = 720
    [IPU1-0]     10.382022 s: kernel name = org.khronos.openvx.channel_extract
    [IPU1-0]     10.382175 s: kernel name = org.khronos.openvx.canny_edge_detector
    [IPU1-0]     10.382297 s: vx_canny_host w[0U] = 1280
    [IPU1-0]     10.382358 s: vx_canny_host w[1U] = 1280
    [IPU1-0]     10.382419 s: vx_canny_host h[0U] = 720
    [IPU1-0]     10.382510 s: vx_canny_host h[1U] = 720
    [IPU1-0]     10.476514 s: kernel name = org.khronos.openvx.color_convert
    [IPU1-0]     10.476636 s: vx_color_convert_host w[0U] = 1
    [IPU1-0]     10.476727 s: vx_color_convert_host w[1U] = 1280
    [IPU1-0]     10.476788 s: vx_color_convert_host h[0U] = 1
    [IPU1-0]     10.476849 s: vx_color_convert_host h[1U] = 720
    [IPU1-0]     10.476941 s: vx_color_convert_host STATUS16
    [IPU1-0]     10.477002 s: vx_color_convert_host STATUS19
    [IPU1-0]     10.477063 s: STATUS IS CHANGED AFTER status = node->kernel->validate(node, node->parameters, num_params, meta);
    [IPU1-0]     10.477459 s:  VX_ZONE_ERROR:[vxVerifyGraph:682] Node kernel Validate failed
    [IPU1-0]     10.477703 s:  VX_ZONE_ERROR:[vxVerifyGraph:766] Graph verify failed

    Regards,

    Luka

  • Hello Luka,

    Where are the values inChInfo->width and inChInfo->height coming from?  Can you print these values?  It looks like the input image to the color convert (gObj->input_rgb_image) is using these values to create the image.  Depending on what these inChInfo values are supposed to be, you may need to use 1280 and 720 to create gObj->input_rgb_image.

    Regards,

    Lucas

  • Hello Lucas,

    inChInfo->width and inChInfo->height are 1280 and 720. When I put 1280 and 720 instead of inChInfo->width and inChInfo->height my code runs but my output is now a black screen. 

    Regards,

    Luka

  • Hello Luka,

    Could you provide more information about your entire use case?  Which image are you trying to display?  Can you write any of the intermediate images to a file to help debug what the issue could be?

    Regards,
    Lucas

  • Hello Lucas,

    I am using ALPHA AMV board. I am trying to recognize specific shape (for example rectangle) using openvx. My input image comes from camera.
    Here are my alg_plugin and usecase

    openvx_project.zip

    Regards,
    Luka

  • Hello Luka,

    I compared the openvx.c and openvx_algPlugin.c to the original files included within the 3.03 VSDK release.  These have had several changes, so it is difficult to tell what should be occurring in the new use case.

    You may already be aware, but the OpenVX alg plugin in the original use case took in the input image from the camera and performed a corner detection algorithm.  It then extracted the corners and drew these corners onto the camera image before sending it to display.  Are you trying to do some similar?

    Also, I did notice that the input image to your OpenVX graph is now an RGB image rather than a U8 image as before.  Depending on what sensor you are using, this could potentially be an issue.

    Is there a way that you can incrementally add the nodes back in to the graph and see which node is the cause of the issue you are seeing?  In addition, you could potentially write the intermediate images to file to see if the intermediate outputs are what you expect.

    Regards,

    Lucas