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.

TDA2SX: Linux: OpenVX TIDL OD Usecase Modification

Part Number: TDA2SX
Other Parts Discussed in Thread: PGA460

Hi all,

I am using VSDK 0308 and trying to incorporate tidl_openvx into my custom usecase.

My usecase is as follows.  Alg_SoftIsp16 is a custom eve application that implements Bayer->RGB->UYVY->NV12 conversion and is tested as working in my system.



I am trying to figure out the most streamlined way of returning the data to NV12 after the TIDL link which I believe is adding additional OpenVX stages to run the color convert to pass the correctly formatted data to the Encoder but I am having a hard time deciphering how to make changes to the graph after the TIDL plugin has added the TIDL nodes within openvxTidl.c.  I have no prior experience with OpenVX or TIDL so this is definitely a learning experience.  Any guidance would be much appreciated!

Thanks,

Joe

  • Forgot to include my run log.  I also didn't mention that the TIDL node is completely unmodified.  I copied the params over directly from the chains_tidlOpenVx_OC.c though I'll be switching to the OD mode after I get this working.  Below is my params config.

        /* YUV420SP to planar RGB conversion */
        pUcObj->Alg_tidlpreprocPrm.outPad = 4;
        pUcObj->Alg_tidlpreprocPrm.numOutputQueues = 1;
        pUcObj->Alg_tidlpreprocPrm.procMode = TIDLPREPROC_LINK_PROCMODE_Y2R;

        /* OpenVx TIDl Params */
        pUcObj->Alg_OpenvxTidlPrm.eveCoreIndex = 1;
        pUcObj->Alg_OpenvxTidlPrm.operationMode = TIDL_OC;
    //    pUcObj->Alg_OpenvxTidlPrm.grpxSrcLinkID = pUcObj->GrpxSrcLinkID;
        pUcObj->Alg_OpenvxTidlPrm.grpxSrcLinkID = -1;
    //    pUcObj->Alg_OpenvxTidlPrm.nullSrcFramePeriodicity = pUcObj->NullSourcePrm.timerPeriodMilliSecs;
        pUcObj->Alg_OpenvxTidlPrm.nullSrcFramePeriodicity = -1;
        pUcObj->Alg_OpenvxTidlPrm.posX = 50;
        pUcObj->Alg_OpenvxTidlPrm.posY = INPUT_HEIGHT + 200;
        strncpy(pUcObj->Alg_OpenvxTidlPrm.tidl_params_file_path, "/home/root/tidl_param_imagenet_jacintonet11v2.bin", 256);
        strncpy(pUcObj->Alg_OpenvxTidlPrm.tidl_network_file_path, "/home/root/tidl_net_imagenet_jacintonet11v2.bin", 256);

    root@dra7xx-evm:~# ./vsdk_test.sh
    [  380.281287] DMA: Module install successful, device major num = 240
    [  380.287655] DRV: Module install successful
    [  380.318264] CMEMK module: reference Linux version 4.19.73
    [  380.327851] cmemk initialized
    ./disableDssInterruptsOnA15.sh: line 11: COMMANDS: command not found
    ./disableDssInterruptsOnA15.sh: line 12: COMMANDS: command not found
    ./disableDssInterruptsOnA15.sh: line 13: COMMANDS: command not found
    ./disableDssInterruptsOnA15.sh: line 14: COMMANDS: command not found
    ./disableDssInterruptsOnA15.sh: line 15: COMMANDS: command not found
    ./disableDssInterruptsOnA15.sh: line 16: COMMANDS: command not found
    ./disableDssInterruptsOnA15.sh: line 17: COMMANDS: command not found
    ./disableDssInterruptsOnA15.sh: line 18: COMMANDS: command not found
    ./disableDssInterruptsOnA15.sh: line 19: COMMANDS: command not found
    updated  value is


    COMMANDS

            ### WARNING ###: use the following [read | write | set bit | clear bit | dump] commands at your own risk!
            No address check done, may generate:
              - bus error (invalid or not accessible <physical address>,
              - platform crash/hang (bad <value>).

                Read any OMAP memory address (register), given its <physical address> or <name> as listed in TRM.

                Write <value> at any OMAP memory address (register), given its <physical address> or <name> as listed in TRM.

                Set bit at <position> into any OMAP memory address (register), given its <physical address> or <name> as listed in TRM.

                Clear bit at <position> into any OMAP memory address (register), given its <physical address> or <name> as listed in TRM.

                Dump a range of OMAP memory addresses, from <start address> to <end address>.
                Note all addresses within given range must be valid and accessible.

            ### WARNING ###: use the following I2C [read | write] commands at your own risk!
            No address check done, may generate:
              - I2C bus error (invalid or not accessible <physical address>,
              - platform crash/hang (bad <value>).

                Read I2C register at address <addr> from I2C chip at <chip-addr> on I2C <bus>.

                Write <value> in I2C register at address <addr> from I2C chip at <chip-addr> on I2C <bus>.
     [HOST]  OSA: MEM: 0: Mapped 0xa0100000 to 0xb6932000 of size 0x00100000
     [HOST]  OSA: MEM: 1: Mapped 0x84203000 to 0xa3d32000 of size 0x12c00000
     [HOST]  OSA: MEM: 2: Mapped 0xa0200000 to 0xa3c72000 of size 0x00040000
     [HOST]  OSA: MEM: 3: Mapped 0xa02c0000 to 0xa3cb2000 of size 0x00080000
     [HOST]  OSA: MEM: 4: Mapped 0xa04c0000 to 0xa3a72000 of size 0x00200000
     [HOST]  OSA: IPU1-0 Remote Log Shared Memory @ 0xa0200000
     [HOST]  OSA: HOST Remote Log Shared Memory @ 0xa024f140
     [HOST]  OSA: EVE1 Remote Log Shared Memory @ 0xa02c5b20
     [HOST]  OSA: EVE4 Remote Log Shared Memory @ 0xa033c500
     [HOST] [IPU1-0]     95.279631 s:
     [HOST] [IPU1-0]  EVE1 Image Load Completed
     [HOST] [IPU1-0]     95.317940 s:
     [HOST] [IPU1-0]  EVE4 Image Load Completed
     [HOST] [IPU1-0]     95.318062 s:
     [HOST] [IPU1-0]  EVE MMU configuration completed
     [HOST] [IPU1-0]     95.318123 s:
     [HOST] [IPU1-0]  EVE MMU configuration completed
     [HOST] [IPU1-0]     95.318215 s:  ***** IPU1_0 Firmware build time 12:53:43 Sep  8 2020
     [HOST] [IPU1-0]     95.318367 s:  *** SYSTEM: CPU Frequency <ORG = 212800000 Hz>, <NEW = 212800000 Hz>
     [HOST] [IPU1-0]     95.321356 s:  SYSTEM: System Common Init in progress !!!
     [HOST] [IPU1-0]     95.331391 s:  UTILS: CIO: Init Done !!!
     [HOST] [IPU1-0]     95.331482 s:  SYSTEM: IPC init in progress !!!
     [HOST] [IPU1-0]     95.331574 s:  SYSTEM: Attaching to [EVE1] ...
     [HOST] [IPU1-0]     95.348532 s:  SYSTEM: Attaching to [EVE1] ... SUCCESS !!!
     [HOST] [IPU1-0]     95.368480 s:  SYSTEM: Attaching to [EVE4] ... SUCCESS !!!
     [HOST] [IPU1-0]     95.368571 s:  SYSTEM: Notify register to [EVE1] line 0, event 15...
     [HOST] [IPU1-0]     95.368754 s:  SYSTEM: Notify register to [EVE4] line 0, event 15...
     [HOST] [IPU1-0]     95.368876 s:  SYSTEM: Notify init done !!!
     [HOST] [IPU1-0]     95.370585 s:  SYSTEM: MsgQ init done !!!
     [HOST] [IPU1-0]     95.371530 s: RpmsgInit in progress...
     [HOST] [IPU1-0]     95.371622 s: Connection established with HLOS, calling rpmsgInit
     [HOST] [IPU1-0]     95.372323 s:  SYSTEM: IPC init DONE !!!
     [HOST] [IPU1-0]     95.379003 s:  SYSTEM: Initializing TIOVX ...
     [HOST] [IPU1-0]     95.379186 s:  VX_ZONE_INIT:Enabled
     [HOST] [IPU1-0]     95.379308 s:  VX_ZONE_ERROR:Enabled
     [HOST] [IPU1-0]     95.379430 s:  VX_ZONE_WARNING:Enabled
     [HOST] [IPU1-0]     95.383456 s:  VX_ZONE_INIT:[tivxInit:71] Initialization Done !!!
     [HOST] [IPU1-0]     95.383547 s:  SYSTEM: Initializing TIOVX ... Done !!!
     [HOST] [IPU1-0]     95.383639 s:  SYSTEM: System Common Init Done !!!
     [HOST] [IPU1-0]     95.383730 s:  SYSTEM: System Init in progress !!!
     [HOST] [IPU1-0]     95.383791 s:  SYSTEM: BSP Common Init in progress !!!
     [HOST] [IPU1-0]     95.383883 s:  SYSTEM: BSP Common Init Done !!!
     [HOST] [IPU1-0]     95.383944 s:  SYSTEM: BSP Platform Init in progress !!!
     [HOST] [IPU1-0]     95.384035 s:  SYSTEM: BSP Platform Init Done !!!
     [HOST] [IPU1-0]     95.384096 s:  SYSTEM: FVID2 Init in progress !!!
     [HOST] [IPU1-0]     95.384249 s:  SYSTEM: FVID2 Init Done !!!
     [HOST] [IPU1-0]     95.384310 s:  SYSTEM: VPS Init in progress !!!
     [HOST] [IPU1-0]     95.384371 s:  SYSTEM: VPDMA Descriptor Memory Address translation ENABLED [0x80000000 -> 0x80000000]
     [HOST] [IPU1-0]     95.387238 s: *** VPDMA Firmware Loading... ***
     [HOST] [IPU1-0]     95.387360 s: VPDMA Firmware Address = 0xa03ca500
     [HOST] [IPU1-0]     95.387451 s: VPDMA Load Address     = 0x4897d004
     [HOST] [IPU1-0]     95.387573 s: VPDMA Firmware Version = 0x4d0001b8
     [HOST] [IPU1-0]     95.387634 s: VPDMA List Busy Status = 0x00000000
     [HOST] [IPU1-0]     95.387756 s: *** VPDMA Firmware Load Success ***
     [HOST] [IPU1-0]     95.388092 s: *** VPDMA Firmware Loading... ***
     [HOST] [IPU1-0]     95.388183 s: VPDMA Firmware Address = 0xa03ca500
     [HOST] [IPU1-0]     95.388275 s: VPDMA Load Address     = 0x4899d004
     [HOST] [IPU1-0]     95.388397 s: VPDMA Firmware Version = 0x4d0001b8
     [HOST] [IPU1-0]     95.388458 s: VPDMA List Busy Status = 0x00000000
     [HOST] [IPU1-0]     95.388549 s: *** VPDMA Firmware Load Success ***
     [HOST] [IPU1-0]     95.388916 s: *** VPDMA Firmware Loading... ***
     [HOST] [IPU1-0]     95.389007 s: VPDMA Firmware Address = 0xa03ca500
     [HOST] [IPU1-0]     95.389099 s: VPDMA Load Address     = 0x489bd004
     [HOST] [IPU1-0]     95.389190 s: VPDMA Firmware Version = 0x4d0001b8
     [HOST] [IPU1-0]     95.389282 s: VPDMA List Busy Status = 0x00000000
     [HOST] [IPU1-0]     95.389373 s: *** VPDMA Firmware Load Success ***
     [HOST] [IPU1-0]     95.445403 s:  SYSTEM: VPS Init Done !!!
     [HOST] [IPU1-0]     95.446288 s:  UTILS: DMA: HWI Create for INT34 !!!
     [HOST] [IPU1-0]     95.446532 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1024
     VX_ZONE_INIT:Enabled
     VX_ZONE_ERROR:Enabled
     [HOST] [IPU1-0]     95.446654 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 258320 B (252 KB)
     VX_ZONE_WARNING:Enabled
     [HOST] [IPU1-0]     95.446867 s:  SYSTEM: Heap = SR_OCMC              @ 0x00000000, Total size = 0 B (0 KB), Free size = 0 B (0 KB)
     [HOST] [IPU1-0]     95.447020 s:  SYSTEM: Heap = SR_DDR_CACHED        @ 0x84203000, Total size = 314572800 B (300 MB), Free size = 314572800 B (300 MB)
     [HOST] [IPU1-0]     95.447203 s:  SYSTEM: Heap = SR_DDR_NON_CACHED    @ 0xa0100000, Total size = 1046912 B (0 MB), Free size = 1019264 B (0 MB)
     [HOST] [IPU1-0]     95.447386 s:  SYSTEM: Initializing Links !!!
     [HOST] [IPU1-0]     95.695235 s:  SYSTEM: Initializing Links ... DONE !!!
     [HOST] [IPU1-0]     95.737113 s:  CHAINS: Application Started !!!
     [HOST] [IPU1-0]     95.747483 s:  BOARD: Board Init in progress !!!
     [HOST] [IPU1-0]     95.747971 s:  BOARD: Board Init Done !!!
     [HOST] [IPU1-0]     95.756084 s:
     [HOST] [HOST  ]    468.783322 s:  SYSTEM: System A15 Init in progress !!!
     [HOST] [HOST  ]    468.783444 s:  SYSTEM: IPC: Init in progress !!!
     [HOST] [HOST  ]    468.783474 s:  SYSTEM: IPC: Notify init in progress !!!
     [HOST] [HOST  ]    468.783535 s:  SYSTEM: IPC: [IPU1-0] socket bind success !!! (dst vproc = 0, endpt = 81)
     [HOST] [HOST  ]    468.783566 s:  SYSTEM: IPC: [IPU1-0] socket info (family = 45, dst proc id = -1, endpt = 81) !!!
     [HOST] [HOST  ]    468.783566 s:  SYSTEM: IPC: [IPU1-0] socket connect success !!! (dst vproc = 0, endpt = 80)
     [HOST] [HOST  ]    468.783596 s:  SYSTEM: IPC: [IPU1-0] socket info (family = 45, dst proc id = -1, endpt = 1024) !!!
     [HOST] [HOST  ]    468.783718 s:  SYSTEM: IPC: Notify init DONE !!!
     [HOST] [HOST  ]    468.783718 s:  SYSTEM: MSGQ: MsgQ init in progress !!!
     [HOST] [HOST  ]    468.783810 s:  SYSTEM: MSGQ: MsgQ init DONE !!!
     [HOST] [HOST  ]    468.783810 s:  SYSTEM: IPC: Init DONE !!!
     [HOST] [HOST  ]    468.783840 s:  SYSTEM: Initializing A15 Links !!!
     [HOST] [HOST  ]    468.785121 s:  IPC_OUT_0 : Init done - linkid-0x2000000
     [HOST] [HOST  ]    468.785243 s:  IPC_OUT_1 : Init done - linkid-0x2000001
     [HOST] [HOST  ]    468.785335 s:  IPC_OUT_2 : Init done - linkid-0x2000002
     [HOST] [HOST  ]    468.785426 s:  IPC_OUT_3 : Init done - linkid-0x2000003
     [HOST] [HOST  ]    468.785548 s:  IPC_OUT_4 : Init done - linkid-0x2000004
     [HOST] [HOST  ]    468.785670 s:  IPC_IN_0 : Init done - linkid-0x200000a
     [HOST] [HOST  ]    468.785792 s:  IPC_IN_1 : Init done - linkid-0x200000b
     [HOST] [HOST  ]    468.785914 s:  IPC_IN_2 : Init done - linkid-0x200000c
     [HOST] [HOST  ]    468.786006 s:  IPC_IN_3 : Init done - linkid-0x200000d
     [HOST] [HOST  ]    468.786128 s:  IPC_IN_4 : Init done - linkid-0x200000e
     [HOST] [HOST  ]    468.786250 s:  IPC_IN_5 : Init done - linkid-0x200000f
     [HOST] [HOST  ]    468.786341 s:  IPC_IN_6 : Init done - linkid-0x2000010
     [HOST] [HOST  ]    468.786463 s:  NULL_0 : Init done - linkid-0x2000014
     [HOST] [HOST  ]    468.786555 s:  NULL_1 : Init done - linkid-0x2000015
     [HOST] [HOST  ]    468.786707 s:  NULL_SRC_0 : Init done - linkid-0x2000039
     [HOST] [HOST  ]    468.786890 s:  DISP_DIST_SRC_0 : Init done - linkid-0x2000066
     [HOST] [HOST  ]    468.787012 s:  DISP_DIST_SRC_1 : Init done - linkid-0x2000067
     [HOST] [HOST  ]    468.787104 s:  DISP_DIST_SRC_2 : Init done - linkid-0x2000068
     [HOST] [HOST  ]    468.787195 s:  DISP_DIST_SRC_3 : Init done - linkid-0x2000069
     [HOST] [HOST  ]    468.787317 s:  ALGORITHM_0 : Init done - linkid-0x2000031
     [HOST] [HOST  ]    468.787439 s:  ALGORITHM_1 : Init done - linkid-0x2000032
     [HOST] [HOST  ]    468.787561 s:  ALGORITHM_2 : Init done - linkid-0x2000033
     [HOST] [HOST  ]    468.787683 s:  ALGORITHM_3 : Init done - linkid-0x2000034
     [HOST] [HOST  ]    468.787805 s:  ALGORITHM_4 : Init done - linkid-0x2000035
     [HOST] [HOST  ]    468.787927 s:  ALGORITHM_5 : Init done - linkid-0x2000036
     [HOST] [HOST  ]    468.788019 s:  ALGORITHM_6 : Init done - linkid-0x2000037
     [HOST] [HOST  ]    468.788141 s:  ALGORITHM_7 : Init done - linkid-0x2000038
     [HOST] [HOST  ]    468.788446 s:  DUP0 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.788934 s:  DUP1 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.789452 s:  DUP2 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.789605 s:  DUP3 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.789757 s:  DUP4 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.789879 s:  SYNC_0 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.789971 s:  SYNC_1 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.790093 s:  SYNC_2 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.790184 s:  SYNC_3 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.790276 s:  MERGE_0 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.790398 s:  MERGE_1 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.790520 s:  MERGE_2 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.790611 s:  MERGE_3 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.790703 s:  MERGE_4 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.790825 s:  SELECT_0 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.790916 s:  SELECT_1 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.791008 s:  GATE_0 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.791099 s:  GATE_1 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.791160 s:  GATE_2 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.791252 s:  GATE_3 : Init done - linkid-0x0
     [HOST] [HOST  ]    468.791343 s:  SGXFRMCPY_0 : Init done - linkid-0x200004a
     [HOST] [HOST  ]    468.791343 s:  SYSTEM: Initializing A15 Links ... DONE !!!
     [HOST] [HOST  ]    468.791740 s:  OSA: Adjusting global time, timeH by 0 units!!!
     [HOST] [HOST  ]    469.139388 s:  SYSTEM: System A15 Init Done !!!
     [HOST] [HOST  ]    469.139510 s:  NETWORK_CTRL: Starting Server (port=5000) !!!
     [HOST] [HOST  ]    469.139602 s:  NETWORK_CTRL: Starting Server ... DONE (port=5000) !!!
     [HOST] [EVE1  ]     95.332763 s:  ***** EVE Firmware build time 12:52:00 Sep  8 2020
     [HOST] [EVE1  ]     95.334472 s:  *** SYSTEM: CPU Frequency <ORG = 267500000 Hz>, <NEW = 267500000 Hz>
     [HOST] [EVE1  ]     95.337034 s:  SYSTEM: System Common Init in progress !!!
     [HOST] [EVE1  ]     95.339016 s:  UTILS: CIO: Init Done !!!
     [HOST] [EVE1  ]     95.339962 s:  SYSTEM: IPC init in progress !!!
     [HOST] [EVE1  ]     95.340938 s:  SYSTEM: Attaching to [IPU1-0] ...
     [HOST] [EVE1  ]     95.348532 s:  SYSTEM: Attaching to [IPU1-0] ... SUCCESS !!!
     [HOST] [EVE1  ]     95.388214 s:  SYSTEM: Attaching to [EVE4] ... SUCCESS !!!
     [HOST] [EVE1  ]     95.389282 s:  SYSTEM: Notify register to [IPU1-0] line 0, event 15...
     [HOST] [EVE1  ]     95.390624 s:  SYSTEM: Notify register to [EVE4] line 0, event 15...
     [HOST] [EVE1  ]     95.391966 s:  SYSTEM: Notify init done !!!
     [HOST] [EVE1  ]     95.393674 s:  SYSTEM: MsgQ init done !!!
     [HOST] [EVE1  ]     95.394619 s:  SYSTEM: IPC init DONE !!!
     [HOST] [EVE1  ]     95.407704 s:  SYSTEM: Initializing TIOVX ...
     [HOST] [EVE1  ]     95.409199 s:  VX_ZONE_INIT:Enabled
     [HOST] [EVE1  ]     95.410632 s:  VX_ZONE_ERROR:Enabled
     [HOST] [EVE1  ]     95.412127 s:  VX_ZONE_WARNING:Enabled
     [HOST] [EVE1  ]     95.415848 s:  VX_ZONE_INIT:[tivxInit:71] Initialization Done !!!
     [HOST] [EVE1  ]     95.416946 s:  SYSTEM: Initializing TIOVX ... Done !!!
     [HOST] [EVE1  ]     95.418013 s:  SYSTEM: System Common Init Done !!!
     [HOST] [EVE1  ]     95.419020 s:  SYSTEM: System EVE Init in progress !!!
     [HOST] [EVE1  ]     95.420423 s:  UTILS: DMA: HWI Create for INT8 !!!
     [HOST] [EVE1  ]     95.421582 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1024
     [HOST] [EVE1  ]     95.422863 s:  SYSTEM: Heap = LOCAL_L2             @ 0x40020000, Total size = 22528 B (22 KB), Free size = 22528 B (22 KB)
     [HOST] [EVE1  ]     95.425059 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 258752 B (252 KB)
     [HOST] [EVE1  ]     95.427194 s:  SYSTEM: Initializing Links !!!
     [HOST] [EVE1  ]     95.508387 s:  SYSTEM: Initializing Links ... DONE !!!
     [HOST] [EVE1  ]     95.509394 s: softisp16/softIsp16Link_algPlugin.c(106)
     [HOST] [EVE1  ]     95.510492 s:  SYSTEM: System EVE Init Done !!!
     [HOST] [EVE4  ]     95.332763 s:  ***** EVE Firmware build time 12:52:45 Sep  8 2020
     [HOST] [EVE4  ]     95.334472 s:  *** SYSTEM: CPU Frequency <ORG = 267500000 Hz>, <NEW = 267500000 Hz>
     [HOST] [EVE4  ]     95.337034 s:  SYSTEM: System Common Init in progress !!!
     [HOST] [EVE4  ]     95.339016 s:  UTILS: CIO: Init Done !!!
     [HOST] [EVE4  ]     95.339931 s:  SYSTEM: IPC init in progress !!!
     [HOST] [EVE4  ]     95.340907 s:  SYSTEM: Attaching to [IPU1-0] ...
     [HOST] [EVE4  ]     95.368480 s:  SYSTEM: Attaching to [IPU1-0] ... SUCCESS !!!
     [HOST] [EVE4  ]     95.388214 s:  SYSTEM: Attaching to [EVE1] ... SUCCESS !!!
     [HOST] [EVE4  ]     95.389282 s:  SYSTEM: Notify register to [IPU1-0] line 0, event 15...
     [HOST] [EVE4  ]     95.390624 s:  SYSTEM: Notify register to [EVE1] line 0, event 15...
     [HOST] [EVE4  ]     95.391935 s:  SYSTEM: Notify init done !!!
     [HOST] [EVE4  ]     95.393613 s:  SYSTEM: MsgQ init done !!!
     [HOST] [EVE4  ]     95.394558 s:  SYSTEM: IPC init DONE !!!
     [HOST] [EVE4  ]     95.407582 s:  SYSTEM: Initializing TIOVX ...
     [HOST] [EVE4  ]     95.409077 s:  VX_ZONE_INIT:Enabled
     [HOST] [EVE4  ]     95.410510 s:  VX_ZONE_ERROR:Enabled
     [HOST] [EVE4  ]     95.412005 s:  VX_ZONE_WARNING:Enabled
     [HOST] [EVE4  ]     95.415695 s:  VX_ZONE_INIT:[tivxInit:71] Initialization Done !!!
     [HOST] [EVE4  ]     95.416763 s:  SYSTEM: Initializing TIOVX ... Done !!!
     [HOST] [EVE4  ]     95.417861 s:  SYSTEM: System Common Init Done !!!
     [HOST] [EVE4  ]     95.418837 s:  SYSTEM: System EVE Init in progress !!!
     [HOST] [EVE4  ]     95.420209 s:  UTILS: DMA: HWI Create for INT8 !!!
     [HOST] [EVE4  ]     95.421399 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1024
     [HOST] [EVE4  ]     95.422649 s:  SYSTEM: Heap = LOCAL_L2             @ 0x40020000, Total size = 22528 B (22 KB), Free size = 22528 B (22 KB)
     [HOST] [EVE4  ]     95.424815 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 258752 B (252 KB)
     [HOST] [EVE4  ]     95.426859 s:  SYSTEM: Initializing Links !!!
     [HOST] [EVE4  ]     95.507198 s:  SYSTEM: Initializing Links ... DONE !!!
     [HOST] [EVE4  ]     95.508174 s: softisp16/softIsp16Link_algPlugin.c(106)
     [HOST] [EVE4  ]     95.509241 s:  SYSTEM: System EVE Init Done !!!
     [HOST] [HOST  ]    469.642408 s:
     [HOST] [HOST  ]
     [HOST] [HOST  ]  ====================
     [HOST] [HOST  ]  Vision SDK Usecases
     [HOST] [HOST  ]  ====================
     [HOST] [HOST  ]  1: Single Camera Usecases
     [HOST] [HOST  ]  2: Multi-Camera LVDS Usecases
     [HOST] [HOST  ]  3: Open-Compute Usecases
     [HOST] [HOST  ]  6: Radar Usecases
     [HOST] [HOST  ]
     [HOST] [HOST  ]  7: PCIe SSD card Write Test
     [HOST] [HOST  ]  p: CPU Status
     [HOST] [HOST  ]  i: Show IP Addr (IPU + NDK + AVB)
     [HOST] [HOST  ]
     [HOST] [HOST  ]  s: System Settings
     [HOST] [HOST  ]
     [HOST] [HOST  ]  x: Exit
     [HOST] [HOST  ]  z: Exit - AND SHUTDOWN Remote CPUs
     [HOST] [HOST  ]
     [HOST] [HOST  ]  Enter Choice:
     [HOST] [HOST  ]
    s
     [HOST] [HOST  ]    471.457603 s:
     [HOST] [HOST  ]
     [HOST] [HOST  ]  ===============
     [HOST] [HOST  ]  System Settings
     [HOST] [HOST  ]  ===============
     [HOST] [HOST  ]
     [HOST] [HOST  ]  1: Display Settings
     [HOST] [HOST  ]  2: Capture Settings
     [HOST] [HOST  ]  3: Calibration Settings
     [HOST] [HOST  ]  4: ISS Settings
     [HOST] [HOST  ]
     [HOST] [HOST  ]  x: Exit
     [HOST] [HOST  ]
     [HOST] [HOST  ]  Enter Choice:
     [HOST] [HOST  ]
     [HOST] [HOST  ]    471.457603 s:
     [HOST] [HOST  ]    471.457634 s:  Unsupported option '
     [HOST] [HOST  ] '. Please try again
     [HOST] [HOST  ]    471.457634 s:
     [HOST] [HOST  ]
     [HOST] [HOST  ]  ===============
     [HOST] [HOST  ]  System Settings
     [HOST] [HOST  ]  ===============
     [HOST] [HOST  ]
     [HOST] [HOST  ]  1: Display Settings
     [HOST] [HOST  ]  2: Capture Settings
     [HOST] [HOST  ]  3: Calibration Settings
     [HOST] [HOST  ]  4: ISS Settings
     [HOST] [HOST  ]
     [HOST] [HOST  ]  x: Exit
     [HOST] [HOST  ]
     [HOST] [HOST  ]  Enter Choice:
     [HOST] [HOST  ]
     [HOST] [HOST  ]    471.457634 s:
    2
     [HOST] [HOST  ]    472.005825 s:
     [HOST] [HOST  ]
     [HOST] [HOST  ]  ==============
     [HOST] [HOST  ]  Capture Source
     [HOST] [HOST  ]  ==============
     [HOST] [HOST  ]
     [HOST] [HOST  ]  1: OV10635 Sensor 720P30
     [HOST] [HOST  ]  2: HDMI Capture 1080P60
     [HOST] [HOST  ]  3: OV10640 CSI2 Sensor 1280x720 (Only on TDA3xx/TDA2px)
     [HOST] [HOST  ]  4: OV10640 IMI Sennsor 1280x720 (Only on TDA3xx/TDA2px)
     [HOST] [HOST  ]  5: OV2775 CSI2 Sensor (Only on TDA3xx/TDA2px)
     [HOST] [HOST  ]  6: D3 IMX390 CSI2 Sensor on Fusion Platform (Only on TDA2px)
     [HOST] [HOST  ]  7: OV2775 TIDA1130 Sensor on Fusion Platform (Only on TDA2px)
     [HOST] [HOST  ]  8: AR143 MARS Camera (Only on TDA3xx/TDA2px)
     [HOST] [HOST  ]  9: OV490 Capture
     [HOST] [HOST  ]  a: OV2715(gm)
     [HOST] [HOST  ]
     [HOST] [HOST  ]  x: Exit
     [HOST] [HOST  ]
     [HOST] [HOST  ]  Enter Choice:
     [HOST] [HOST  ]
     [HOST] [HOST  ]    472.005825 s:
    a
     [HOST] [HOST  ]    472.461782 s:
     [HOST] [HOST  ]
     [HOST] [HOST  ]  ====================
     [HOST] [HOST  ]  Vision SDK Usecases
     [HOST] [HOST  ]  ====================
     [HOST] [HOST  ]  1: Single Camera Usecases
     [HOST] [HOST  ]  2: Multi-Camera LVDS Usecases
     [HOST] [HOST  ]  3: Open-Compute Usecases
     [HOST] [HOST  ]  6: Radar Usecases
     [HOST] [HOST  ]
     [HOST] [HOST  ]  7: PCIe SSD card Write Test
     [HOST] [HOST  ]  p: CPU Status
     [HOST] [HOST  ]  i: Show IP Addr (IPU + NDK + AVB)
     [HOST] [HOST  ]
     [HOST] [HOST  ]  s: System Settings
     [HOST] [HOST  ]
     [HOST] [HOST  ]  x: Exit
     [HOST] [HOST  ]  z: Exit - AND SHUTDOWN Remote CPUs
     [HOST] [HOST  ]
     [HOST] [HOST  ]  Enter Choice:
     [HOST] [HOST  ]
    1
     [HOST] [HOST  ]    472.901878 s:
     [HOST] [HOST  ]
     [HOST] [HOST  ]  Single Camera Usecases
     [HOST] [HOST  ]  ------------------------
     [HOST] [HOST  ]  a: gm test
     [HOST] [HOST  ]  2: 1CH VIP capture + Encode + Decode + SGX Copy + DISPLAY
     [HOST] [HOST  ]
     [HOST] [HOST  ]  x: Exit
     [HOST] [HOST  ]
     [HOST] [HOST  ]  Enter Choice:
     [HOST] [HOST  ]
     [HOST] [HOST  ]    472.901909 s:
     [HOST] [HOST  ]    472.901909 s:  Unsupported option '
     [HOST] [HOST  ] '. Please try again
     [HOST] [HOST  ]    472.901909 s:
     [HOST] [HOST  ]
     [HOST] [HOST  ]  Single Camera Usecases
     [HOST] [HOST  ]  ------------------------
     [HOST] [HOST  ]  a: gm test
     [HOST] [HOST  ]  2: 1CH VIP capture + Encode + Decode + SGX Copy + DISPLAY
     [HOST] [HOST  ]
     [HOST] [HOST  ]  x: Exit
     [HOST] [HOST  ]
     [HOST] [HOST  ]  Enter Choice:
     [HOST] [HOST  ]
    a
     [HOST] [IPU1-0]    473.366467 s:  VIDEO_SENSOR: VIP 4: DRV ID 121b
     [HOST] [IPU1-0]    473.366589 s: File: /home/joe/PROCESSOR_SDK_VISION_03_08_00_00/vision_sdk/apps/src/rtos/video_sensor/src/ov2715/vid_sensor_ov2715.c | Func: VidSensor_control | Line:292
     [HOST] [IPU1-0]    473.366772 s:  CHAINS: Sensor create ... DONE !!!
     [HOST] [IPU1-0]    473.367351 s:  CAPTURE: Create in progress !!!
     [HOST] [IPU1-0]    473.367717 s:  CAPTURE: VIP2 Slice0 PortA capture mode is [16-bit] !!!
     [HOST] [HOST  ]    473.365918 s:
     [HOST] [HOST  ]    473.367077 s: pOutprms->width=1920, pOutprms->height=1080, pInprms->width=1920, pInprms->height=1080
     [HOST] [HOST  ]    473.367107 s: pOutprms->width=1920, pOutprms->height=1080, pInprms->width=1920, pInprms->height=1080
     [HOST] [HOST  ]    473.367107 s: pOutprms->width=1920, pOutprms->height=1080, pInprms->width=1920, pInprms->height=1080
     [HOST] [HOST  ]    473.367107 s: pOutprms->width=1920, pOutprms->height=1080, pInprms->width=1920, pInprms->height=1080
     [HOST] [HOST  ]    473.367138 s: pOutprms->width=1920, pOutprms->height=1080, pInprms->width=1920, pInprms->height=1080
     [HOST] [HOST  ]    473.367138 s: pOutprms->width=1920, pOutprms->height=1080, pInprms->width=1920, pInprms->height=1080
     [HOST] [HOST  ]    473.367138 s: pOutprms->width=1920, pOutprms->height=1080, pInprms->width=1920, pInprms->height=1080
     [HOST] [HOST  ]    473.367138 s: pOutprms->width=1920, pOutprms->height=1080, pInprms->width=1920, pInprms->height=1080
     [HOST] [HOST  ]    473.367168 s: pOutprms->width=1920, pOutprms->height=1080, pInprms->width=1920, pInprms->height=1080
     [HOST] [HOST  ]    473.367168 s: pOutprms->width=1920, pOutprms->height=1080, pInprms->width=1920, pInprms->height=1080
     [HOST] [IPU1-0]    473.722106 s:  CAPTURE: Create Done !!!
     [HOST] [IPU1-0]    473.722595 s:  IPC_OUT_0   : Create in progress !!!
     [HOST] [IPU1-0]    473.722991 s:  IPC_OUT_0   : Create Done !!!
     [HOST] [EVE4  ]    473.723754 s:  IPC_IN_0   : Create in progress !!!
     [HOST] [EVE4  ]    473.726133 s:  IPC_IN_0   : Create Done !!!
     [HOST] [EVE4  ]    473.727963 s:  ALGORITHM: Create in progress (algId = 15) !!!
     [HOST] [EVE4  ]    473.729091 s: softisp16/softIsp16Link_algPlugin.c(299)
     [HOST] [EVE4  ]    473.730189 s:
     [HOST] [EVE4  ]  inputWidth = 1920, inputHeight = 1080, roiWidth = 1904, roiHeight = 1072, inputXOffset = 8, inputYOffset = 4
     [HOST] [EVE4  ]    473.732202 s: softisp16/softIsp16Link_algPlugin.c(368) pAlgCreateParams->visionParams.algParams.size=24
     [HOST] [EVE4  ]    473.733636 s: softisp16/softIsp16Link_algPlugin.c(370) pAlgCreateParams->imgFrameWidth=1904
     [HOST] [EVE4  ]    473.735039 s: softisp16/softIsp16Link_algPlugin.c(373) ppAlgCreateParams->imgFrameHeight=1072
     [HOST] [EVE4  ]    473.736472 s: softisp16/softIsp16Link_algPlugin.c(375) pAlgCreateParams->bayerPattern=1
     [HOST] [EVE4  ]    473.737845 s: softisp16/softIsp16Link_algPlugin.c(378) pAlgCreateParams->inputBitDepth=10
     [HOST] [EVE4  ]    473.847465 s: softisp16/softIsp16Link_algPlugin.c(149)
     [HOST] [EVE4  ]    473.848563 s:
     [HOST] [EVE4  ]  bufCreation:
     [HOST] [EVE4  ]  IN: frameWidth = 1920, frameHeight = 1080, roiWidth = 1904, roiHeight = 1072
     [HOST] [EVE4  ]
     [HOST] [EVE4  ] OUT:Y frameWidth = 1920, frameHeight = 1080, roiWidth = 1904, roiHeight = 1072,
     [HOST] [EVE4  ] OUT:UV frameWidth = 1920, frameHeight = 540, roiWidth = 1904, roiHeight = 536
     [HOST] [EVE4  ]    473.852223 s:
     [HOST] [EVE4  ] softisp16/softIsp16Link_algPlugin.c(255) | pObj->output_pitch = 1920, pObj->output_height = 1080
     [HOST] [EVE4  ]    473.853901 s:
     [HOST] [EVE4  ] softisp16/softIsp16Link_algPlugin.c(408) blockWidth = 272, blockHeight = 8
     [HOST] [IPU1-0]    473.871286 s:  IPC_IN_0   : Create in progress !!!
     [HOST] [IPU1-0]    473.872537 s:  IPC_IN_0   : Create Done !!!
     [HOST] [EVE4  ]    473.866619 s:  ALGORITHM: Create Done (algId = 15) !!!
     [HOST] [EVE4  ]    473.868327 s:  IPC_OUT_0   : Create in progress !!!
     [HOST] [EVE4  ]    473.869944 s:  IPC_OUT_0   : Create Done !!!
     [HOST] [IPU1-0]    473.874641 s:  ALGORITHM: Create in progress (algId = 11) !!!
     [HOST] [IPU1-0]    474.253400 s:  UTILS: DMA: Allocated CH (TCC) = 32 (32)
     [HOST] [IPU1-0]    474.253522 s:  UTILS: DMA: 0 of 1: Allocated PaRAM = 32 (0x63304800)
     [HOST] [IPU1-0]    474.253644 s:  ALGORITHM: Create Done (algId = 11) !!!
     [HOST] [IPU1-0]    474.254315 s:  IPC_OUT_1   : Create in progress !!!
     [HOST] [IPU1-0]    474.254681 s:  IPC_OUT_1   : Create Done !!!
     [HOST] [HOST  ]    474.254956 s:  IPC_IN_0   : Create in progress !!!
     [HOST] [HOST  ]    474.255352 s:  IPC_IN_0   : Create Done !!!
     [HOST] [HOST  ]    474.255444 s:  ALGORITHM: Create in progress (algId = 14) !!!
     [HOST] [HOST  ]    474.465107 s:  Creating OpenVx graph
     [HOST] [HOST  ]    474.467211 s:  Verifying OpenVx graph
     [HOST] [IPU1-0]    475.952937 s:  IPC_IN_1   : Create in progress !!!
     [HOST] [IPU1-0]    475.954187 s:  IPC_IN_1   : Create Done !!!
     [HOST] [IPU1-0]    475.956048 s:  ENCODE: Create in progress ... !!!
     [HOST] [IPU1-0]    475.956261 s:  Assertion @ Line: 168 in iva_enc/encLink_common.c: (width <= UTILS_ENCDEC_RESOLUTION_CLASS_16MP_WIDTH) && (height <= UTILS_ENCDEC_RESOLUTION_CLASS_16MP_HEIGHT) : failed !!!
     [HOST] [HOST  ]    475.952510 s:  ALGORITHM: Create Done (algId = 14) !!!
     [HOST] [HOST  ]    475.952571 s:  IPC_OUT_0   : Create in progress !!!
     [HOST] [HOST  ]    475.952754 s:  IPC_OUT_0   : Create Done !!!

  • Hi,

    Have you set pLinkChPrm->format params?
    Please take a reference of encoder link params from the below usecase file.
    vision_sdk\apps\src\rtos\usecases\vip_single_cam_view_encdec\chains_vipSingleCam_EncDec_Display.c

    in your use-case, you are trying to encode 2CH of data, one is the output of OpenVXTIDL and another is the output of Softisp16. So do you want to encode both the channel?

    Make sure the input data format to the Encode link is NV12 or not.

    Thanks

    Gaviraju

  • Hi Gaviraju,

    Thanks for the response.  I am looking to pass a single channel of the processed output from the TIDL link with what I assume will be bounding boxes and object classifications/detections.  I'll modify my usecase to remove the channel coming from the isp link.  That leaves the second question of how to return the data back to NV12 from the openvxtidl link.  Can you guide me on modifying the openvx link to return the processed data to NV12?  I am reading through the tutorials and user guides of openvx and am not seeing how to add the extra steps to the graph to convert the data to NV12. 

    I THINK that change should occur in apps/src/hlos/adas/src/alg_plugins/openvxTidl/openvxTidl.c around line 1453 but, as I mentioned, I am new to openvx AND tidl(and deep learning in general) so I am having a hard time figuring out what nodes/kernels are already present in the graph.

    I have made these modifications to the usecase but my output is unchanged.

    Thanks,

    Joe

  • Hi,

    The O/P buffer type of the Alg_OpenvxTidl link is "SYSTEM_BUFFER_TYPE_METADATA", so it's not possible to add an Encode link after the Alg_OpenvxTidl link because the Encode link expecting "SYSTEM_BUFFER_TYPE_VIDEO_FRAME" I/P buffer type.

    We recommend creating the following use-case.

    After creating the above chain, make sure the links parameter settings in the use-case file.

    Thanks

    Gaviraju

  • Thanks Gaviraju,  I seem to be doing a little better now.

     [HOST] [IPU1-0]   1839.620539 s:  IPC_IN_0   : Create in progress !!!
     [HOST] [IPU1-0]   1839.621759 s:  IPC_IN_0   : Create Done !!!
     [HOST] [EVE4  ]   1839.615689 s:  ALGORITHM: Create Done (algId = 15) !!!
     [HOST] [EVE4  ]   1839.617428 s:  IPC_OUT_0   : Create in progress !!!
     [HOST] [EVE4  ]   1839.619136 s:  IPC_OUT_0   : Create Done !!!
     [HOST] [IPU1-0]   1839.623711 s:  IPC_OUT_1   : Create in progress !!!
     [HOST] [IPU1-0]   1839.624107 s:  IPC_OUT_1   : Create Done !!!
     [HOST] [DSP1  ]   1839.624412 s:  IPC_IN_0   : Create in progress !!!
     [HOST] [DSP1  ]   1839.624809 s:  IPC_IN_0   : Create Done !!!
     [HOST] [DSP1  ]   1839.624992 s:  ALGORITHM: Create in progress (algId = 40) !!!
     [HOST] [HOST  ]   1839.667114 s:  IPC_IN_0   : Create in progress !!!
     [HOST] [HOST  ]   1839.667388 s:  IPC_IN_0   : Create Done !!!
     [HOST] [HOST  ]   1839.667449 s:  ALGORITHM: Create in progress (algId = 14) !!!
     [HOST] [DSP1  ]   1839.666656 s:  UTILS: DMA: Allocated CH (TCC) = 56 (56)
     [HOST] [DSP1  ]   1839.666687 s:  UTILS: DMA: 0 of 1: Allocated PaRAM = 56 (0x43305200)
     [HOST] [DSP1  ]   1839.666717 s:  ALGORITHM: Create Done (algId = 40) !!!
     [HOST] [DSP1  ]   1839.666900 s:  IPC_OUT_0   : Create in progress !!!
     [HOST] [DSP1  ]   1839.666961 s:  IPC_OUT_0   : Create Done !!!
     [HOST] [HOST  ]   1839.868480 s:  Creating OpenVx graph
     [HOST] [HOST  ]   1839.879613 s:  Verifying OpenVx graph
     [HOST] [IPU1-0]   1841.724699 s:  IPC_IN_1   : Create in progress !!!
     [HOST] [IPU1-0]   1841.725828 s:  IPC_IN_1   : Create Done !!!
     [HOST] [IPU1-0]   1841.727658 s:  ALGORITHM: Create in progress (algId = 1) !!!
     [HOST] [IPU1-0]   1841.728695 s:  UTILS: DMA: Allocated CH (TCC) = 32 (32)
     [HOST] [IPU1-0]   1841.728817 s:  UTILS: DMA: 0 of 1: Allocated PaRAM = 32 (0x63304800)
     [HOST] [IPU1-0]   1841.729274 s:
     [HOST] [IPU1-0]   1841.729335 s:  ### XDC ASSERT - ERROR CALLBACK START ###
     [HOST] [IPU1-0]   1841.729396 s:
     [HOST] [HOST  ]   1841.724303 s:  ALGORITHM: Create Done (algId = 14) !!!
     [HOST] [HOST  ]   1841.724364 s:  IPC_OUT_0   : Create in progress !!!
     [HOST] [HOST  ]   1841.724516 s:  IPC_OUT_0   : Create Done !!!
     [HOST] [IPU1-0]   1841.729518 s: out of memory: handle=0x9eec83e4, size=4278757376
     [HOST] [IPU1-0]   1841.729640 s:
     [HOST] [IPU1-0]   1841.729671 s:  ### XDC ASSERT - ERROR CALLBACK END ###
     [HOST] [IPU1-0]   1841.729732 s:
     [HOST] [IPU1-0]   1841.730098 s:
     [HOST] [IPU1-0]   1841.730128 s:  ### XDC ASSERT - ERROR CALLBACK START ###
     [HOST] [IPU1-0]   1841.730220 s:
     [HOST] [IPU1-0]   1841.730311 s: out of memory: handle=0x9eec83e4, size=4278757376
     [HOST] [IPU1-0]   1841.730403 s:
     [HOST] [IPU1-0]   1841.730464 s:  ### XDC ASSERT - ERROR CALLBACK END ###
     [HOST] [IPU1-0]   1841.730525 s:
     [HOST] [IPU1-0]   1841.730830 s:
     [HOST] [IPU1-0]   1841.730860 s:  ### XDC ASSERT - ERROR CALLBACK START ###
     [HOST] [IPU1-0]   1841.730952 s:
     [HOST] [IPU1-0]   1841.731074 s: out of memory: handle=0x9eec83e4, size=4278757376
     [HOST] [IPU1-0]   1841.731165 s:
     [HOST] [IPU1-0]   1841.731226 s:  ### XDC ASSERT - ERROR CALLBACK END ###
     [HOST] [IPU1-0]   1841.731287 s:
     [HOST] [IPU1-0]   1841.731714 s:  ALGORITHM: Create Done (algId = 1) !!!
     [HOST] [IPU1-0]   1841.732111 s:  ENCODE: Create in progress ... !!!
     [HOST] [IPU1-0]   1841.910358 s:  ENCODE: Creating CH0 of 1920 x 1080,  pitch = (-167777537, -877405524) [0] [1], bitrate = 10000 Kbps ...
     [HOST] [IPU1-0]   1841.910846 s:  Assertion @ Line: 273 in /home/joe/PROCESSOR_SDK_VISION_03_08_00_00/vision_sdk/links_fw/src/rtos/links_ipu/iva/codec_utils/utils_encdec.h: (chromaFormat == SYSTEM_DF_YUV420SP_UV) || (chromaFormat == SYSTEM_DF_YUV420SP_VU) || (chromaFormat == SYSTEM_DF_YUV422I_YUYV) || (chromaFormat == SYSTEM_DF_YUV422I_UYVY) : failed !!!

    That is my log from the newest run.  I believe I still need to add an OpenVX node to convert the data from BGR to NV12.  Can you guide me in that process?

    Thanks,

    Joe

  • Hi,

    Can I know the O/P data format of the Capture link?

    Can I know the functionality of the Alg_Softisp16 Algorithm?  & what is the O/P data format of this Algorithm?

    Thanks

    Gaviraju

  • The capture link outputs Bayer BGGR.  Soft_ISP16 implements the following kernels:

    gBAM_TI_bayer2rgbKernel

    gBAM_TI_rgb2yuvKernel

    gBAM_TI_yuv422uyvy_to_420nv12Kernel

    The output is NV12.  I am attaching the graph for your review.

    0160.soft_isp16_graph.c
    /*
    *
    * Copyright (c) 2009-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 softIsp16_graph.c
     *
     *  @brief  This file implements an applet for channel generation
     *
     *  @author TI
     *
     *  @date   19 Dec 2013
     *
     *  Description
     *    This file contains code to perform channel generation
     *    Contains implementation of SOFT_ISP16_TI_graphCreate() and  SOFT_ISP16_TI_TI_execute()
     *    at the frame level.
     */
    #pragma CHECK_MISRA ("none")
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdint.h>
    #include <assert.h>
    #pragma RESET_MISRA ("required")
    
    #include "soft_isp16_graph_int.h"
    
    //raw2rgb kernels
    //#include "bam_raw2rgb16.h"
    //#include "bam_natcRaw2rgb16.h"
    
    #include "edma_utils.h"
    
    #include "isoft_isp16_ti.h"
    
    static void assignDMAautoIncrementParams(
            EDMA_UTILS_autoIncrement_transferProperties * param,
            uint16_t    roiWidth,
            uint16_t    roiHeight,
            uint16_t    blkWidth,
            uint16_t    blkHeight,
            uint16_t    extBlkIncrementX,
            uint16_t    extBlkIncrementY,
            uint16_t    intBlkIncrementX,
            uint16_t    intBlkIncrementY,
            uint32_t    roiOffset,
            uint16_t    blkOffset,
            uint8_t     *extMemPtr,
            uint16_t    extMemPtrStride,
            uint8_t     *interMemPtr,
            uint16_t    interMemPtrStride,
            uint8_t     dmaQueNo
    );
    
    #define FIND_BEST_BLOCKDIM
    
    #ifndef NULL
    #define NULL        (void *)0
    #endif
    
    /**
     * Kernel Database - used for graph construction
     */
    static BAM_KernelHostDBdef bamKernelHostDB[] =
    {
        { &gBAM_TI_dmaAutoIncrementReadKernel,  &gBAM_TI_dmaReadAutoIncrementKernelHelperFunc,
        "ti_dma_read_autoincrement", BAM_TI_KERNELID_DMAREAD_AUTOINCREMENT},
        
        { &gBAM_TI_bayer2rgbKernel, &gBAM_TI_bayer2rgbHelperFunc,
        "ti_image_bayer2rgb", BAM_TI_KERNELID_CFA_INTERPOLATION},
    
    #if UYVY_INC_KERNEL
        { &gBAM_TI_rgb2yuvKernel, &gBAM_TI_rgb2yuvHelperFunc,
        "ti_image_rgb2yuv", BAM_TI_KERNELID_RGB_TO_YUV},
    
    #if NV12_INC_KERNEL
        { &gBAM_TI_yuv422uyvy_to_420nv12Kernel, &gBAM_TI_yuv422uyvy_to_420nv12HelperFunc,
        "ti_image_uyvy_to_nv12", BAM_TI_KERNELID_UYVY_TO_NV12},
    #endif
    #endif
    
        { &gBAM_TI_dmaAutoIncrementWriteKernel, &gBAM_TI_dmaWriteAutoIncrementKernelHelperFunc,
        "ti_dma_write_autoincrement", BAM_TI_KERNELID_DMAWRITE_AUTOINCREMENT},
    };
    
    /**
     * Kernel Database - used for graph execution
     */
    static BAM_KernelExecFuncDBdef bamKernelExecFuncDB[] =
    {
        { &gBAM_TI_dmaAutoIncrementReadKernel,  &gBAM_TI_dmaReadAutoIncrementKernelExecFunc,
        "ti_dma_read_autoincrement", BAM_TI_KERNELID_DMAREAD_AUTOINCREMENT},
        
        { &gBAM_TI_bayer2rgbKernel, &gBAM_TI_bayer2rgbExecFunc,
        "ti_image_bayer2rgb", BAM_TI_KERNELID_CFA_INTERPOLATION},
    #if UYVY_INC_KERNEL
        { &gBAM_TI_rgb2yuvKernel, &gBAM_TI_rgb2yuvExecFunc,
        "ti_image_rgb2yuv", BAM_TI_KERNELID_RGB_TO_YUV},
    
    #if NV12_INC_KERNEL
        { &gBAM_TI_yuv422uyvy_to_420nv12Kernel, &gBAM_TI_yuv422uyvy_to_420nv12ExecFunc,
        "ti_image_uyvy_to_nv12", BAM_TI_KERNELID_UYVY_TO_NV12},
    #endif
    #endif
    
        { &gBAM_TI_dmaAutoIncrementWriteKernel, &gBAM_TI_dmaWriteAutoIncrementKernelExecFunc,
        "ti_dma_write_autoincrement", BAM_TI_KERNELID_DMAWRITE_AUTOINCREMENT},
    };
    
    /* CHECK_MISRA("-8.7")  -> Disable rule 8.8 */
    /* Name visibility is too wide */
    /* Deviation is allowed because we use static keyword to make it local to the file */
    static BAM_KernelDBdef gSOFT_ISP16_TI_BAM_kernelDBdef =
    {
            sizeof(bamKernelExecFuncDB) / sizeof(bamKernelExecFuncDB[0]),
            bamKernelHostDB,
            bamKernelExecFuncDB
    };
    /*RESET_MISRA("8.7")  -> Reset rule 8.7 for GOTO */
    
    static int32_t SOFT_ISP16_TI_initArgs(void *initKernelsArgs, BAM_BlockDimParams *blockDimParams);
    
    typedef enum {
        SOURCE_NODE = 0,
        CFA_INTERPOLATION_NODE,
    #if UYVY_INC_KERNEL
        CSC_NODE,
    #if NV12_INC_KERNEL
        NV12_NODE,
    #endif
    #endif
        SINK_NODE
    }nodeList;
    
    //#define SOURCE_NODE 0U
    //#define CFA_INTERPOLATION_NODE  (SOURCE_NODE + 1U)
    //#define CSC_NODE                (CFA_INTERPOLATION_NODE + 1U)
    //#define NV12_NODE               (CSC_NODE + 1)
    //#define SINK_NODE               (NV12_NODE + 1U)
    
    int32_t SOFT_ISP16_TI_getGraphMemReq(BAM_GraphMemReq * memReq)
    {
        memReq->graphObjSize      = SOFT_ISP16_GRAPH_OBJ_SIZE     ;
        memReq->graphScratchSize  = SOFT_ISP16_GRAPH_SCRATCH_SIZE ;
        memReq->graphcontextSize  = SOFT_ISP16_GRAPH_CONTEXT_SIZE ;
        memReq->graphArgsSize     = sizeof(SOFT_ISP16_TI_graphArgs) ;
        return 0;
    }
    
    
    
    int32_t SOFT_ISP16_TI_graphCreate(
            const BAM_GraphMem *graphMem,
            SOFT_ISP16_TI_graphCreateParams * createParams)
    {
        BAM_CreateGraphParams graphCreateParams;
        int32_t status = BAM_S_SUCCESS;
    
        /* initilize the sub-handles inside the main handle */
        SOFT_ISP16_TI_graphArgs * graphArgs = (SOFT_ISP16_TI_graphArgs *)graphMem->graphArgs;
        BAM_GraphHandle graphHandle = (BAM_GraphHandle)graphMem->graphObj;
        /*------------------------------------------------------------------------------*/
        /* Create NODELIST and EDGE LIST. It should be derived from the algorithm graph */
        /*------------------------------------------------------------------------------*/
    
        BAM_NodeParams NODELIST[]={\
                {SOURCE_NODE,               BAM_TI_KERNELID_DMAREAD_AUTOINCREMENT ,      NULL},
                {CFA_INTERPOLATION_NODE,    BAM_TI_KERNELID_CFA_INTERPOLATION,        NULL},
    #if UYVY_INC_KERNEL
            {CSC_NODE,                  BAM_TI_KERNELID_RGB_TO_YUV,        NULL },
    #if NV12_INC_KERNEL    
                {NV12_NODE,                 BAM_TI_KERNELID_UYVY_TO_NV12,        NULL },
    #endif
    #endif
                {SINK_NODE,                 BAM_TI_KERNELID_DMAWRITE_AUTOINCREMENT,      NULL},
                {BAM_END_NODE_MARKER,       0,                                           NULL},\
        };
    
        BAM_EdgeParams EDGELIST[]= {
                {{SOURCE_NODE,              BAM_SOURCE_NODE_PORT1},                     {CFA_INTERPOLATION_NODE, BAM_IMAGE_BAYER2RGB_INPUT_PORT}},
    #if (!UYVY_INC_KERNEL) //RGB only so go straight to sink
                {{CFA_INTERPOLATION_NODE,   BAM_IMAGE_BAYER2RGB_OUTPUT_PORT_R},         {SINK_NODE, BAM_SINK_NODE_PORT1 }},
                {{CFA_INTERPOLATION_NODE,   BAM_IMAGE_BAYER2RGB_OUTPUT_PORT_G},         {SINK_NODE, BAM_SINK_NODE_PORT2 }},
                {{CFA_INTERPOLATION_NODE,   BAM_IMAGE_BAYER2RGB_OUTPUT_PORT_B},         {SINK_NODE, BAM_SINK_NODE_PORT3 }},
    #else //UYVY is included so output the CFA kernel to UYVY
                {{CFA_INTERPOLATION_NODE,   BAM_IMAGE_BAYER2RGB_OUTPUT_PORT_R},         {CSC_NODE, BAM_IMAGE_RGB2YUV_INPUT_PORT_R }},
                {{CFA_INTERPOLATION_NODE,   BAM_IMAGE_BAYER2RGB_OUTPUT_PORT_G},         {CSC_NODE, BAM_IMAGE_RGB2YUV_INPUT_PORT_G }},
                {{CFA_INTERPOLATION_NODE,   BAM_IMAGE_BAYER2RGB_OUTPUT_PORT_B},         {CSC_NODE, BAM_IMAGE_RGB2YUV_INPUT_PORT_B }},
    #if NV12_INC_KERNEL //if outputting as NV12, pass the CSC node to the NV12 node and the NV12 node passes to sink
                {{CSC_NODE,                 BAM_IMAGE_RGB2YUV_OUTPUT_PORT_YUV},         {NV12_NODE, BAM_YUV_422UYVY_TO_420NV12_INPUT_PORT_IMG }}, 
                {{NV12_NODE,                BAM_YUV_422UYVY_TO_420NV12_OUTPUT_PORT},    {SINK_NODE, BAM_SINK_NODE_PORT1 }}, 
                {{NV12_NODE,                BAM_YUV_422UYVY_TO_420NV12_OUTPUT_PORT},    {SINK_NODE, BAM_SINK_NODE_PORT2 }},
    #else //otherwise, pass the UYVY kernel to sink
                {{CSC_NODE, BAM_IMAGE_RGB2YUV_OUTPUT_PORT_YUV}, { SINK_NODE, BAM_SINK_NODE_PORT1 }}, 
    #endif
    #endif
                {{BAM_END_NODE_MARKER,      0},                                         {BAM_END_NODE_MARKER, 0}},
        };
    
        NODELIST[SOURCE_NODE].kernelArgs= &graphArgs->dmaReadKernelArgs;
        NODELIST[CFA_INTERPOLATION_NODE].kernelArgs= &graphArgs->cfaInterpolationArgs;
    #if (UYVY_INC_KERNEL)
        NODELIST[CSC_NODE].kernelArgs = &graphArgs->cscArgs;
    #if NV12_INC_KERNEL
        NODELIST[NV12_NODE].kernelArgs = &graphArgs->nv12Args;
    #endif
    #endif
        NODELIST[SINK_NODE].kernelArgs= &graphArgs->dmaWriteKernelArgs;
    
        /*---------------------------------------------------------------*/
        /* Initialize Graph creation time parameters                     */
        /*---------------------------------------------------------------*/
        graphCreateParams.graphMemConsumed = 0;
        graphCreateParams.onChipScratchMemConsumed = 0;
        graphCreateParams.extMemConsumed = 0;
    
        /*---------------------------------------------------------------*/
        /* Initialize Graph creation time parameters                     */
        /*---------------------------------------------------------------*/
        status= BAM_initKernelDB(&gSOFT_ISP16_TI_BAM_kernelDBdef);
    
        if(status != BAM_S_SUCCESS)
        {
            goto Exit;
        }
    
        /*---------------------------------------------------------------*/
        /* Initialize Graph creation time parameters                     */
        /*---------------------------------------------------------------*/
        graphCreateParams.coreType= BAM_EVE;
        graphCreateParams.kernelDB= &gSOFT_ISP16_TI_BAM_kernelDBdef;
        graphCreateParams.nodeList= (BAM_NodeParams*)NODELIST;
        graphCreateParams.edgeList= (BAM_EdgeParams*)EDGELIST;
        graphCreateParams.graphMem= graphHandle; /* on the stack */
        graphCreateParams.graphMemSize= SOFT_ISP16_GRAPH_OBJ_SIZE;
        graphCreateParams.onChipScratchMem= graphMem->graphScratch;
        graphCreateParams.onChipScratchMemSize= SOFT_ISP16_GRAPH_SCRATCH_SIZE;
        graphCreateParams.extMem= graphMem->graphcontext; /* passed by the caller, usually in external memory */
        graphCreateParams.extMemSize= SOFT_ISP16_GRAPH_CONTEXT_SIZE;
        graphCreateParams.useSmartMemAlloc= 1U;
    #ifdef FIND_BEST_BLOCKDIM
        graphCreateParams.optimizeBlockDim= 1U;
    #else
        graphCreateParams.optimizeBlockDim= 0;
    #endif
        graphArgs->createParams= createParams;
    
        /*---------------------------------------------------------------*/
        /* Initialize the members related to the  kernels init function  */
        /*---------------------------------------------------------------*/
        graphCreateParams.initKernelsArgsFunc= &SOFT_ISP16_TI_initArgs;
        graphCreateParams.initKernelsArgsParams= (void*)graphArgs;
    
        /* Initialize the structure graphCreateParams.blockDimParams that lists the processing block
         * dimensions as well as the step increment sizes used during the block
         * dimension optimization if enabled
         */
        graphCreateParams.blockDimParams.blockWidth= SOFT_ISP16_BLK_WIDTH;
        graphCreateParams.blockDimParams.blockHeight= SOFT_ISP16_BLK_HEIGHT;
    
        graphCreateParams.blockDimParams.blockWidthStep= SOFT_ISP16_BLK_WIDTH_STEP;
        graphCreateParams.blockDimParams.blockHeightStep= SOFT_ISP16_BLK_HEIGHT_STEP;
    
        graphCreateParams.blockDimParams.blockWidthDivisorOf= createParams->imgFrameWidth;
        graphCreateParams.blockDimParams.blockHeightDivisorOf= createParams->imgFrameHeight;
        graphCreateParams.blockDimParams.blockWidthMax = createParams->imgFrameWidth;
        graphCreateParams.blockDimParams.blockHeightMax = createParams->imgFrameHeight;
    
        status = BAM_createGraph(&graphCreateParams, &graphHandle);
        
        createParams->outputBlockWidth= graphCreateParams.blockDimParams.blockWidth;
        createParams->outputBlockHeight= graphCreateParams.blockDimParams.blockHeight;
    
        if(status != BAM_S_SUCCESS) {
            goto Exit;
        }
    
        /*-------------------------------------------------------------------------*/
        /* error message handling and return of error code                         */
        /*-------------------------------------------------------------------------*/
    
        Exit:
        if (status== BAM_E_INVALID_MEM_SIZE) {
            PRINTF("Graph construction failed!!! graphMemSize must be >= %d, onChipScratchMemSize >= %d and extMemSize must be >= %d\n", graphCreateParams.graphMemConsumed, graphCreateParams.onChipScratchMemConsumed, graphCreateParams.extMemConsumed);
        }
        else if (status== BAM_E_BLOCK_DIM_TOO_BIG) {
            PRINTF("Graph construction failed!!! Decrease the value of BLK_WIDTH or BLK_HEIGHT\n");
        } else if (status != BAM_S_SUCCESS)
        {
            PRINTF("Graph construction failed!!!\n");
        }
        else {
            BAM_printMemRec(graphCreateParams.memRec, graphCreateParams.numMemRec);
        }
        return (status);
    }
    
    /*-------------------------------------------------------------------------*/
    /* Function to assign DMA parameters to EDMA utilitiy                      */
    /*-------------------------------------------------------------------------*/
    static void assignDMAautoIncrementParams(
            EDMA_UTILS_autoIncrement_transferProperties * param,
            uint16_t    roiWidth,
            uint16_t    roiHeight,
            uint16_t    blkWidth,
            uint16_t    blkHeight,
            uint16_t    extBlkIncrementX,
            uint16_t    extBlkIncrementY,
            uint16_t    intBlkIncrementX,
            uint16_t    intBlkIncrementY,
            uint32_t    roiOffset,
            uint16_t    blkOffset,
            uint8_t     *extMemPtr,
            uint16_t    extMemPtrStride,
            uint8_t     *interMemPtr,
            uint16_t    interMemPtrStride,
            uint8_t     dmaQueNo
    )
    {
        param->roiWidth             = roiWidth;
        param->roiHeight            = roiHeight;
        param->blkWidth             = blkWidth;
        param->blkHeight            = blkHeight;
        param->extBlkIncrementX     = extBlkIncrementX;
        param->extBlkIncrementY     = extBlkIncrementY;
        param->intBlkIncrementX     = intBlkIncrementX;
        param->intBlkIncrementY     = intBlkIncrementY;
        param->roiOffset            = roiOffset;
        param->blkOffset            = blkOffset;
        param->extMemPtr            = extMemPtr;
        param->extMemPtrStride      = extMemPtrStride ;
        param->interMemPtr          = interMemPtr ;
        param->interMemPtrStride    = interMemPtrStride;
        param->dmaQueNo             = dmaQueNo;
    }
    
    /* SOFT_ISP16_TI_initArgs() is callback function that BAM will call to initialize all the kernes' arguments
     * It will be called several times during the search for the best block dimensions
     * */
    /* CHECK_MISRA("-16.7")  -> Disable rule 16.7 */
    /* Pointer parameter blockDimParams is not used to modify the addressed object but is not declared as a pointer to const */
    /* Deviation is allowed because this function is of type BAM_InitkernelsArgsFunc in order to be passed to structure BAM_CreateGraphParams */
    static int32_t SOFT_ISP16_TI_initArgs(void *initKernelsArgs, BAM_BlockDimParams *blockDimParams) {
        /*RESET_MISRA("16.7")  -> Reset rule 16.7  */
        int16_t srcBlockWidth, srcBlockHeight;
        uint16_t cfaBlkWidth, cfaBlkHeight;
    
    #if UYVY_INC_KERNEL
        uint16_t cscBlkWidth, cscBlkHeight;
    #if NV12_INC_KERNEL
        uint16_t nv12blkWidth, nv12blkHeight;
    #endif
    #endif
    
        uint32_t numBytesPerInput=2;
    
        SOFT_ISP16_TI_graphArgs *graphArgs= (SOFT_ISP16_TI_graphArgs*)initKernelsArgs;
    
        int16_t  blkWidthFinal               = 0;
        int16_t  blkHeightFinal              = 0;
        
        int32_t status = BAM_S_SUCCESS;
    
        blkWidthFinal = (int16_t)blockDimParams->blockWidth;
        blkHeightFinal = (int16_t)blockDimParams->blockHeight;
    
        srcBlockWidth = blkWidthFinal+((int16_t)RGB_TI_HORZ_PAD_SIZE);
        srcBlockHeight = blkHeightFinal+((int16_t)RGB_TI_VERT_PAD_SIZE);
    
        cfaBlkWidth = (uint16_t)blkWidthFinal;
        cfaBlkHeight = (uint16_t)blkHeightFinal;
    
        //raw2rgbArgs
        graphArgs->cfaInterpolationArgs.blk_width= ALIGN_2SIMD(cfaBlkWidth);
        graphArgs->cfaInterpolationArgs.blk_height= cfaBlkHeight;
        graphArgs->cfaInterpolationArgs.input_stride= (uint16_t)srcBlockWidth;
        graphArgs->cfaInterpolationArgs.output_stride= (uint16_t)((uint32_t)cfaBlkWidth + 16U); //this works for the CFA kernel alone
        //graphArgs->cfaInterpolationArgs.output_stride = (uint16_t)((uint32_t)cfaBlkWidth*2U);
        //graphArgs->cfaInterpolationArgs.output_stride = (uint16_t)(2U * (uint32_t)blkWidth);
        graphArgs->cfaInterpolationArgs.bayerFormat= graphArgs->createParams->bayerPattern;
    
    #if UYVY_INC_KERNEL
        //rgb2yuvArgs
    
        cscBlkWidth = (uint16_t)graphArgs->cfaInterpolationArgs.blk_width;
        cscBlkHeight = (uint16_t)((uint32_t)cfaBlkHeight);
    
        graphArgs->cscArgs.rgb2yuv_coefs = (void*) graphArgs->createParams->rgb2yuv_coefs;
        graphArgs->cscArgs.roundingFactor = (CbCr_CONST << (graphArgs->createParams->inputBitDepth));
        graphArgs->cscArgs.shift_val = (graphArgs->createParams->inputBitDepth); //this appears to be correct for the kernelC version but is wrong for srcC
        graphArgs->cscArgs.blk_width = ALIGN_2SIMD(cscBlkWidth);
        graphArgs->cscArgs.blk_height = cscBlkHeight;
        graphArgs->cscArgs.input_stride = cscBlkWidth+(uint16_t)16U;
        graphArgs->cscArgs.output_stride = cscBlkWidth;
        graphArgs->cscArgs.outputFormat = RGB2YUV_OUTPUT_UYVY;
    #endif
    #if NV12_INC_KERNEL
        nv12blkWidth = (uint16_t)(ALIGN_SIMD(blkWidthFinal));
        nv12blkHeight = (uint16_t)blkHeightFinal;
    
        graphArgs->nv12Args.height = nv12blkHeight;
        graphArgs->nv12Args.width = nv12blkWidth;
        graphArgs->nv12Args.in_stride = 2*nv12blkWidth;
        graphArgs->nv12Args.out_stride = nv12blkWidth;
    #endif
    
        graphArgs->createParams->activeImgWidth    = (uint16_t)(numBytesPerInput * ((uint32_t)(graphArgs->createParams->imgFrameWidth) + (uint32_t)RGB_TI_HORZ_PAD_SIZE));
        graphArgs->createParams->activeImgHeight   = (uint16_t)((uint16_t)graphArgs->createParams->imgFrameHeight + (uint16_t)RGB_TI_VERT_PAD_SIZE);
        //imgFrameWidth is the ROI width; activeImgWidth includes the border region required by the CFA kernel
        graphArgs->dmaReadKernelArgs.numInTransfers                                           = 1;
        graphArgs->dmaReadKernelArgs.transferType                                             = EDMA_UTILS_TRANSFER_IN;
    
        assignDMAautoIncrementParams(
                &graphArgs->dmaReadKernelArgs.transferProp[BAM_SOURCE_NODE_PORT1],
                graphArgs->createParams->activeImgWidth,                                     /* roiWidth */
                graphArgs->createParams->activeImgHeight,                                    /* roiHeight */
                (uint16_t)(numBytesPerInput * (uint32_t)srcBlockWidth),                    /* blkWidth */
                (uint16_t)srcBlockHeight,                                                    /* blkHeight */
                (uint16_t)(numBytesPerInput * (uint32_t)blkWidthFinal),                    /* extBlkIncrementX */
                (uint16_t)blkHeightFinal,                                                    /* extBlkIncrementY */
                0U,                                                                          /* intBlkIncrementX */
                0U,                                                                          /* intBlkIncrementY */
                0U,                                                                          /* roiOffset        */
                0U,                                                                          /* blkOffset        */
                (uint8_t*)NULL,                                                              /* extMemPtr        */
                0U,                                                                          /* extMemPtrStride  */
                (uint8_t*)NULL,                                                              /* interMemPtr      */
                (uint16_t)((uint16_t)srcBlockWidth * numBytesPerInput),                      /* interMemPtrStride */
                0U);                                                                         /* dmaQueNo          */
    
    #if (!UYVY_INC_KERNEL)    //RGB output
        graphArgs->dmaWriteKernelArgs.numOutTransfers = 3; //R,G,B
        graphArgs->dmaWriteKernelArgs.transferType = EDMA_UTILS_TRANSFER_OUT;
    
        /* First transfer is for outputting R component of image buffer */
        assignDMAautoIncrementParams(&graphArgs->dmaWriteKernelArgs.transferProp[BAM_SINK_NODE_PORT1],
            2U*graphArgs->createParams->imgFrameWidth,                         /* roiWidth */
            graphArgs->createParams->imgFrameHeight,                        /* roiHeight */
            (uint16_t)(2U * (uint16_t)blkWidthFinal),                            /* blkWidth */
            (uint16_t)(blkHeightFinal),                                     /* blkHeight */
            (uint16_t)(2 * (uint16_t)blkWidthFinal),                            /* extBlkIncrementX */
            (uint16_t)blkHeightFinal,                                       /* extBlkIncrementY */
            0,                                                              /* intBlkIncrementX */
            0,                                                              /* intBlkIncrementY */
            0,                                                              /* roiOffset        */
            0,                                                              /* blkOffset        */
            NULL,                                                           /* extMemPtr        */
            0,                                                              /* extMemPtrStride  */
            NULL,                                                           /* interMemPtr      */
            (uint16_t)(2 * (graphArgs->cfaInterpolationArgs.output_stride)),  /* interMemPtrStride */
            1U);                                                            /* dmaQueNo          */
    
        /* Second transfer is for outputting G component of image buffer */
        assignDMAautoIncrementParams(&graphArgs->dmaWriteKernelArgs.transferProp[BAM_SINK_NODE_PORT2],
            graphArgs->createParams->imgFrameWidth * 2,                         /* roiWidth */
            graphArgs->createParams->imgFrameHeight,                        /* roiHeight */
            (uint16_t)(2 * (uint16_t)blkWidthFinal),                            /* blkWidth */
            (uint16_t)(blkHeightFinal),                                     /* blkHeight */
            (uint16_t)(2 * (uint16_t)blkWidthFinal),                            /* extBlkIncrementX */
            (uint16_t)blkHeightFinal,                                       /* extBlkIncrementY */
            0,                                                              /* intBlkIncrementX */
            0,                                                              /* intBlkIncrementY */
            0,                                                              /* roiOffset        */
            0,                                                              /* blkOffset        */
            NULL,                                                           /* extMemPtr        */
            0,                                                              /* extMemPtrStride  */
            NULL,                                                           /* interMemPtr      */
            (uint16_t)(2 * graphArgs->cfaInterpolationArgs.output_stride),  /* interMemPtrStride */
            1U);                                                            /* dmaQueNo          */
    
            /* Third transfer is for outputting B component of image buffer */
        assignDMAautoIncrementParams(&graphArgs->dmaWriteKernelArgs.transferProp[BAM_SINK_NODE_PORT3],
            graphArgs->createParams->imgFrameWidth * 2,                         /* roiWidth */
            graphArgs->createParams->imgFrameHeight,                        /* roiHeight */
            (uint16_t)(2 * (uint16_t)blkWidthFinal),                            /* blkWidth */
            (uint16_t)(blkHeightFinal),                                     /* blkHeight */
            (uint16_t)(2 * (uint16_t)blkWidthFinal),                            /* extBlkIncrementX */
            (uint16_t)blkHeightFinal,                                       /* extBlkIncrementY */
            0,                                                              /* intBlkIncrementX */
            0,                                                              /* intBlkIncrementY */
            0,                                                              /* roiOffset        */
            0,                                                              /* blkOffset        */
            NULL,                                                           /* extMemPtr        */
            0,                                                              /* extMemPtrStride  */
            NULL,                                                           /* interMemPtr      */
            (uint16_t)(2 * graphArgs->cfaInterpolationArgs.output_stride),  /* interMemPtrStride */
            1U);                                                            /* dmaQueNo          */
    #else
    #if NV12_INC_KERNEL
        graphArgs->dmaWriteKernelArgs.numOutTransfers = 2; //Y plane is one transfer, UV plane is the other
        graphArgs->dmaWriteKernelArgs.transferType    = EDMA_UTILS_TRANSFER_OUT;
    
        /* First transfer is for outputting Y component of image buffer */
        assignDMAautoIncrementParams(&graphArgs->dmaWriteKernelArgs.transferProp[BAM_SINK_NODE_PORT1],
            graphArgs->createParams->imgFrameWidth,                        /* roiWidth */
            graphArgs->createParams->imgFrameHeight,                       /* roiHeight */
            (uint16_t)nv12blkWidth,                                            /* blkWidth */
            (uint16_t)(nv12blkHeight),                                         /* blkHeight */
            (uint16_t)nv12blkWidth,                                            /* extBlkIncrementX */
            (uint16_t)nv12blkHeight,                                           /* extBlkIncrementY */
            0,                                                             /* intBlkIncrementX */
            0,                                                             /* intBlkIncrementY */
            0,                                                             /* roiOffset        */
            0,                                                             /* blkOffset        */
            NULL,                                                          /* extMemPtr        */
            0,                                                             /* extMemPtrStride  */
            NULL,                                                          /* interMemPtr      */
            (uint16_t)(graphArgs->nv12Args.out_stride),                    /* interMemPtrStride */
            1U);                                                           /* dmaQueNo          */
    
        /* Second transfer is for outputting UV component of image buffer */
        assignDMAautoIncrementParams(&graphArgs->dmaWriteKernelArgs.transferProp[BAM_SINK_NODE_PORT2],
            graphArgs->createParams->imgFrameWidth,                                 /* roiWidth */
            (uint16_t)(((uint32_t)graphArgs->createParams->imgFrameHeight)/2U),     /* roiHeight */
            (uint16_t)(nv12blkWidth),                                                   /* blkWidth */
            (uint16_t)((uint32_t)nv12blkHeight / 2U),                                   /* blkHeight */
            (uint16_t)(nv12blkWidth),                                                   /* extBlkIncrementX */
            (uint16_t)((uint32_t)nv12blkHeight / 2U),                                   /* extBlkIncrementY */
            0,                                                                      /* intBlkIncrementX */
            0,                                                                      /* intBlkIncrementY */
            0,                                                                      /* roiOffset */
            nv12blkWidth*nv12blkHeight,                                             /* blkOffset */
            NULL,                                                                   /* extMemPtr : This will come during process call */
            0,                                                                      /* extMemPtrStride : This will be populated during process call using bufDesc */
            NULL,                                                                   /* DMA node will be populating this field */
            (uint16_t)(graphArgs->nv12Args.out_stride),                             /* interMemPtrStride */
            1U                                                                      /* dmaQueNo */
        );
    #else //this is for UYVY output
        graphArgs->dmaWriteKernelArgs.numOutTransfers = 1; //UYVY
        graphArgs->dmaWriteKernelArgs.transferType = EDMA_UTILS_TRANSFER_OUT;
    
        /* UYVY Interlaced Output */
        assignDMAautoIncrementParams(&graphArgs->dmaWriteKernelArgs.transferProp[BAM_SINK_NODE_PORT1],
            //(uint16_t)2 * graphArgs->createParams->imgFrameWidth,                         /* roiWidth */
            //graphArgs->createParams->imgFrameHeight,                        /* roiHeight */
            graphArgs->createParams->activeImgWidth,                                     /* roiWidth */
            graphArgs->createParams->activeImgHeight,                                    /* roiHeight */
            2*cscBlkWidth,                                                    /* blkWidth */
            cscBlkHeight,                                     /* blkHeight */
            2*cscBlkWidth,                            /* extBlkIncrementX */
            cscBlkHeight,                                       /* extBlkIncrementY */
            0,                                                              /* intBlkIncrementX */
            0,                                                              /* intBlkIncrementY */
            0,                                                              /* roiOffset        */
            0,                                                              /* blkOffset        */
            NULL,                                                           /* extMemPtr        */
            0,                                                              /* extMemPtrStride  */
            NULL,                                                           /* interMemPtr      */
            (uint16_t)(2*(uint32_t)graphArgs->cscArgs.output_stride),     /* interMemPtrStride */
            1U);                                                            /* dmaQueNo          */ 
    #endif
    #endif
    
        return status;
    }
    
    /*-------------------------------------------------------------------------*/
    /* Function to perform actual execution                                    */
    /*-------------------------------------------------------------------------*/
    int32_t SOFT_ISP16_TI_execute(
            BAM_GraphMem * graphMem,
            const BAM_InArgs *inArgs,
            BAM_OutArgs *outArgs)
    {
    
        BAM_ProcessHints hints;
        //BAM_Raw2rgb16_CtlArgs raw2RgbCtlArgs;
        BAM_GraphHandle graphHandle = (BAM_GraphHandle)graphMem->graphObj;
        int32_t status = BAM_S_SUCCESS;
    
        /* Specify which processing schedule is the best, unsupported for now */
        hints.priority= BAM_COMPUTE_FIRST;
    
        BAM_process(graphHandle, inArgs, outArgs, &hints);
    
        //raw2RgbCtlArgs.ctlCmdId= BAM_RAW2RGB_CMD_GET_ARGS;
        //status= (int32_t)(BAM_controlNode(graphHandle, (uint8_t)CFA_INTERPOLATION_NODE, &raw2RgbCtlArgs));
    
        return status;
    
    }
    
    int32_t SOFT_ISP16_TI_dmaControl(const BAM_GraphMem *graphMem, const SOFT_ISP16_TI_Handle intAlgHandle, const SOFT_ISP16_TI_InArgs * inArgs, const IVISION_BufDesc *inBufDesc[], const IVISION_BufDesc *outBufDesc[])
    {
        EDMA_UTILS_autoIncrement_updateParams autoIncCtlArgs;
    
        uint32_t numBytesPerInput;
        //uint32_t numBytesPerOutput;
        uint8_t (*buf)[];
    
        const IVISION_BufPlanes * ivisionBufPlane= &inBufDesc[SOFT_ISP16_TI_BUFDESC_IN]->bufPlanes[0];
        int32_t status = BAM_S_SUCCESS;
    
        /* initilize the sub-handles inside the main handle */
        BAM_GraphHandle graphHandle = (BAM_GraphHandle)graphMem->graphObj;
    
        buf= (uint8_t (*)[])ivisionBufPlane->buf;
        numBytesPerInput= 2U;
        //numBytesPerOutput = 1U;
    
        /* Initialize the control parameters for the SOURCE auto-increment DMA node */
        autoIncCtlArgs.updateMask= EDMA_UTILS_AUTOINCREMENT_UPDATE_MASK_EXTMEMPTR | EDMA_UTILS_AUTOINCREMENT_UPDATE_MASK_EXTMEMPTRSTRIDE | EDMA_UTILS_AUTOINCREMENT_UPDATE_MASK_ROIWIDTH | EDMA_UTILS_AUTOINCREMENT_UPDATE_MASK_ROIHEGIHT;
    
        /* We rewind topLeft.x and topLeft.y by the exact border width and height required to include border pixels necessary for the softIsp16 transform.
         * This is to ensure that the pointer for EDMA read points exactly to the upper left corner of the region composed
         * by the ROI augmented by the softIsp16 window border.
         * */
    
        //autoIncCtlArgs.updateParams[0].extMemPtr = &((*buf)[(int32_t)numBytesPerInput * \
        //    ((((int32_t)ivisionBufPlane->frameROI.topLeft.y - (int32_t)(((int32_t)SOFT_ISP16_CFA_BORDER - (int32_t)1) / (int32_t)2)) * \
        //        (int32_t)ivisionBufPlane->width) + ((int32_t)ivisionBufPlane->frameROI.topLeft.x - \
        //            (((int32_t)SOFT_ISP16_CFA_BORDER - (int32_t)1) / (int32_t)2)))]);
        autoIncCtlArgs.updateParams[0].extMemPtr = &((*buf)[(int32_t)2 * \
            ((((int32_t)ivisionBufPlane->frameROI.topLeft.y - (int32_t)RGB_TI_TOP_PAD_SIZE) * (int32_t)ivisionBufPlane->width) \
                + (int32_t)ivisionBufPlane->frameROI.topLeft.x - (int32_t)RGB_TI_LEFT_PAD_SIZE)]);
        autoIncCtlArgs.updateParams[0].extMemPtrStride = numBytesPerInput * ivisionBufPlane->width;
        autoIncCtlArgs.updateParams[0].roiWidth = (uint16_t)(numBytesPerInput * (uint32_t)(((uint32_t)ivisionBufPlane->frameROI.width + (uint32_t)RGB_TI_HORZ_PAD_SIZE)));
        autoIncCtlArgs.updateParams[0].roiHeight = (uint16_t)(ivisionBufPlane->frameROI.height + (uint32_t)RGB_TI_VERT_PAD_SIZE);
    
        status= BAM_controlNode(graphHandle, SOURCE_NODE, &autoIncCtlArgs);
    
        if (status!= BAM_S_SUCCESS) {
            goto Exit;
        }
    
        intAlgHandle->activeImgWidth= autoIncCtlArgs.updateParams[0].roiWidth;
        intAlgHandle->activeImgHeight= autoIncCtlArgs.updateParams[0].roiHeight;
    
        /* Initialize the control parameters for the SINK auto-increment DMA node */
    
        autoIncCtlArgs.updateMask= EDMA_UTILS_AUTOINCREMENT_UPDATE_MASK_EXTMEMPTR | EDMA_UTILS_AUTOINCREMENT_UPDATE_MASK_EXTMEMPTRSTRIDE 
            | EDMA_UTILS_AUTOINCREMENT_UPDATE_MASK_ROIWIDTH | EDMA_UTILS_AUTOINCREMENT_UPDATE_MASK_ROIHEGIHT;
    
    #if NV12_INC_KERNEL
        /* Initialize pointer to the Y buffer */
        ivisionBufPlane= &outBufDesc[SOFT_ISP16_TI_BUFDESC_OUT]->bufPlanes[0];
        buf= (uint8_t (*)[])ivisionBufPlane->buf;
        autoIncCtlArgs.updateParams[0].extMemPtr       = &((*buf)[(ivisionBufPlane->frameROI.topLeft.y * ivisionBufPlane->width + ivisionBufPlane->frameROI.topLeft.x)]);
        //memset((void*)autoIncCtlArgs.updateParams[0].extMemPtr, 105, 1280 * 720);
        autoIncCtlArgs.updateParams[0].extMemPtrStride = ivisionBufPlane->width;
        autoIncCtlArgs.updateParams[0].roiWidth        = ivisionBufPlane->frameROI.width;
        autoIncCtlArgs.updateParams[0].roiHeight       = ivisionBufPlane->frameROI.height;
    
        /* Initialize pointer to the UV buffer */
        ivisionBufPlane = &outBufDesc[SOFT_ISP16_TI_BUFDESC_OUT]->bufPlanes[1];
        buf = (uint8_t(*)[])ivisionBufPlane->buf;
        autoIncCtlArgs.updateParams[1].extMemPtr = &((*buf)[(ivisionBufPlane->frameROI.topLeft.y * ivisionBufPlane->width + ivisionBufPlane->frameROI.topLeft.x)]);
        //memset((void*)autoIncCtlArgs.updateParams[1].extMemPtr, 80, 1280 * 720 / 2);
        /*RESET_MISRA("17.1")  -> Reset rule 17.1 for MISRA.PTR.ARITH */
        autoIncCtlArgs.updateParams[1].extMemPtrStride = ivisionBufPlane->width;
        autoIncCtlArgs.updateParams[1].roiWidth = ivisionBufPlane->frameROI.width;
        autoIncCtlArgs.updateParams[1].roiHeight = ivisionBufPlane->frameROI.height;
    
    #elif UYVY_INC_KERNEL
        /* Initialize pointer to the UYVY buffer */
        ivisionBufPlane = &outBufDesc[SOFT_ISP16_TI_BUFDESC_OUT]->bufPlanes[0];
        buf = (uint8_t(*)[])ivisionBufPlane->buf;
        autoIncCtlArgs.updateParams[0].extMemPtr = &((*buf)[2U*(ivisionBufPlane->frameROI.topLeft.y * ivisionBufPlane->width + ivisionBufPlane->frameROI.topLeft.x)]);
        //memset((void*)autoIncCtlArgs.updateParams[0].extMemPtr, 105, 1280 * 720);
        autoIncCtlArgs.updateParams[0].extMemPtrStride = 2U*ivisionBufPlane->width;
        autoIncCtlArgs.updateParams[0].roiWidth = 2U*ivisionBufPlane->frameROI.width;
        autoIncCtlArgs.updateParams[0].roiHeight = ivisionBufPlane->frameROI.height;
    
    #else
        /* Initialize pointer to the R buffer */
        ivisionBufPlane = &outBufDesc[SOFT_ISP16_TI_BUFDESC_OUT]->bufPlanes[0];
        buf = (uint8_t(*)[])ivisionBufPlane->buf;
        autoIncCtlArgs.updateParams[0].extMemPtr = &((*buf)[(ivisionBufPlane->frameROI.topLeft.y * (2 * ivisionBufPlane->width) + (2*ivisionBufPlane->frameROI.topLeft.x))]);
        memset((void*)buf, 105, 2 * ivisionBufPlane->width * ivisionBufPlane->height);
        autoIncCtlArgs.updateParams[0].extMemPtrStride = 2 * ivisionBufPlane->width;
        autoIncCtlArgs.updateParams[0].roiWidth = 2 * ivisionBufPlane->frameROI.width;
        autoIncCtlArgs.updateParams[0].roiHeight = ivisionBufPlane->frameROI.height;
    
        /* Initialize pointer to the G buffer */
        ivisionBufPlane = &outBufDesc[SOFT_ISP16_TI_BUFDESC_OUT]->bufPlanes[1];
        buf = (uint8_t(*)[])ivisionBufPlane->buf;
        autoIncCtlArgs.updateParams[1].extMemPtr = &((*buf)[(ivisionBufPlane->frameROI.topLeft.y * (2 * ivisionBufPlane->width) + (2*ivisionBufPlane->frameROI.topLeft.x))]);
        memset((void*)buf, 105, 2 * ivisionBufPlane->width * ivisionBufPlane->height);
        autoIncCtlArgs.updateParams[1].extMemPtrStride = 2 * ivisionBufPlane->width;
        autoIncCtlArgs.updateParams[1].roiWidth = 2 * ivisionBufPlane->frameROI.width;
        autoIncCtlArgs.updateParams[1].roiHeight = ivisionBufPlane->frameROI.height;
    
        /* Initialize pointer to the B buffer */
        ivisionBufPlane = &outBufDesc[SOFT_ISP16_TI_BUFDESC_OUT]->bufPlanes[2];
        buf = (uint8_t(*)[])ivisionBufPlane->buf;
        autoIncCtlArgs.updateParams[2].extMemPtr = &((*buf)[(ivisionBufPlane->frameROI.topLeft.y * (2 * ivisionBufPlane->width) + (2 * ivisionBufPlane->frameROI.topLeft.x))]);
        memset((void*)buf, 105, 2 * ivisionBufPlane->width * ivisionBufPlane->height);
        autoIncCtlArgs.updateParams[2].extMemPtrStride = 2 * ivisionBufPlane->width;
        autoIncCtlArgs.updateParams[2].roiWidth = 2 * ivisionBufPlane->frameROI.width;
        autoIncCtlArgs.updateParams[2].roiHeight = ivisionBufPlane->frameROI.height;
    #endif
        status= (int32_t)(BAM_controlNode(graphHandle, (uint8_t)SINK_NODE, (void*)&autoIncCtlArgs));
    
        Exit:
        return status;
    }
    
    
    int32_t SOFT_ISP16_TI_kernelControl(const BAM_GraphMem *graphMem, const SOFT_ISP16_TI_InArgs * inArgs)
    {
        //BAM_Raw2rgb16_CtlArgs raw2RgbCtlArgs;
        int32_t status = BAM_S_SUCCESS;
    
        ///* initilize the sub-handles inside the main handle */
        //BAM_GraphHandle graphHandle = (BAM_GraphHandle)graphMem->graphObj;
    
        //raw2RgbCtlArgs.ctlCmdId= BAM_RAW2RGB_CMD_SET_ARGS;
    
        //status= (int32_t)(BAM_controlNode(graphHandle, (uint8_t)CFA_INTERPOLATION_NODE, &raw2RgbCtlArgs));
    
        return status;
    }
    
    

    Thanks,

    Joe

  • Any updates?

    Thanks,

    Joe

  • Hi,

    I will try to create the same kind of use case & let you know soon

    Thanks

    Gaviraju

  • Hi,

    The below use case is tested at my setup & it's working successfully.

    tidl_od_openvx.zip

    Please use the above attachment as a reference & try to modify according your use case.

    You just need to replace NullSrc & Decode link.

    NullSrc link used to read H264 bitstream buffer from the file.

    decode link used to decode the bitstream buffer to get an NV12 O/P.

    If the above usecase is not working then we recommending to create a simple usecase.

    Ex: Capture -> Alg_SofIsp16 (EVE4) -> Encode -> Null

    Suppose the above simple use case is also not working, seems there will be a some issue in the custom Alg_SofIsp16  algorithm.

    Thanks

    Gaviraju

  • Hi Goviraju,

    Thank you for the response.  I am currently in the processing of testing your changes and I am still not having any luck.

    As a preface, Capture->Alg_SoftIsp16 (EVE4) -> Encode -> Null  works great at 30 FPS.  A few strange things do occur though:  Adding in the Object Detection, SOF, etc will drop the FPS output of Soft_Isp16 to less than 5.  It lists this FPS drop in the performance statistics of Soft_Isp16 despite none of the cores being fully utilized.  I will attach a log.

    I had to make a few changes which I think is because your usecase appears to be RTOS based while mine is Linux based.

    1) Add Alg_ObjectDraw=yes to my usecase cfg.mk

    2) iop_ti.h is not part of this usecase's include path so I commented it out and added #define TIDL_MAX_PAD_SIZE (4) to my chains_gm_test.c.  It doesn't appear any other parts of iop_ti.h are required.

    3) Alg_OpenvxTidl has this output when executed on the ipu:

     [HOST] [IPU1-0]     41.768376 s:  VX_ZONE_ERROR:[tivxMutexLock:74] tivxMutexLock: Mutex is NULL
     [HOST] [IPU1-0]     41.768803 s:  VX_ZONE_ERROR:[ownCreateReference:324] ownCreateReference: Failed to allocate reference object
     [HOST] [IPU1-0]     41.769383 s:  VX_ZONE_ERROR:[vxLoadKernels:213] Kernels can not be loaded since module openvx-core has not yet been regstered.  Call tivxRegisterModule first.
     [HOST] [IPU1-0]     41.769779 s: Network file size is different than sTIDL_Network_t structure size !
     [HOST] [IPU1-0]     41.770054 s:  VX_ZONE_ERROR:[vxGetStatus:603] vxGetStatus: Reference is NULL
     [HOST] [IPU1-0]     41.770328 s:  VX_ZONE_ERROR:[vxGetStatus:603] vxGetStatus: Reference is NULL
     [HOST] [IPU1-0]     41.770847 s:  VX_ZONE_ERROR:[vxGetStatus:603] vxGetStatus: Reference is NULL
     [HOST] [IPU1-0]     41.771121 s:  VX_ZONE_ERROR:[vxGetStatus:603] vxGetStatus: Reference is NULL
     [HOST] [IPU1-0]     41.771396 s:  VX_ZONE_ERROR:[vxGetStatus:603] vxGetStatus: Reference is NULL
     [HOST] [IPU1-0]     41.771701 s:  VX_ZONE_ERROR:[vxGetStatus:603] vxGetStatus: Reference is NULL
     [HOST] [IPU1-0]     41.771975 s:  VX_ZONE_ERROR:[vxGetStatus:603] vxGetStatus: Reference is NULL
     [HOST] [IPU1-0]     41.772219 s:  VX_ZONE_ERROR:[vxGetStatus:603] vxGetStatus: Reference is NULL
     [HOST] [IPU1-0]     41.772494 s:  VX_ZONE_ERROR:[vxGetStatus:603] vxGetStatus: Reference is NULL
     [HOST] [IPU1-0]     41.772799 s:  VX_ZONE_ERROR:[vxGetStatus:603] vxGetStatus: Reference is NULL
     [HOST] [IPU1-0]     41.773043 s:  VX_ZONE_ERROR:[vxGetStatus:603] vxGetStatus: Reference is NULL
     [HOST] [IPU1-0]     41.773317 s:  VX_ZONE_ERROR:[vxGetStatus:603] vxGetStatus: Reference is NULL
     [HOST] [IPU1-0]     41.773592 s:  VX_ZONE_ERROR:[vxGetStatus:603] vxGetStatus: Reference is NULL
     [HOST] [IPU1-0]     41.773866 s:  VX_ZONE_ERROR:[vxGetStatus:603] vxGetStatus: Reference is NULL
     [HOST] [IPU1-0]     41.774141 s:  VX_ZONE_ERROR:[vxGetStatus:603] vxGetStatus: Reference is NULL
     [HOST] [IPU1-0]     41.774476 s:  VX_ZONE_ERROR:[vxUnloadKernels:250] Unable to unload kernels for module openvx-core
     [HOST] [IPU1-0]     41.776001 s:  Assertion @ Line: 178 in openvxTidl/openvxTidlLink_algPlugin.c: SYSTEM_LINK_STATUS_SOK == status : failed !!!

    4) Update the usecase to the following to put Alg_OpenvxTidl on the A15:

    I am also attaching my algorithm plugin for vsdk and the associated EVE library containing the soft_isp16 application.

    Looking through the debug log, it looks like somehow as the data is passed, the pitch at the encoder is being detected incorrectly.  I'm looking through the code to see if I can track down where that issue is occurring.

    Thanks,

    Joe

    For some reason, the system won't let me post a .tar.xz so I am renaming it to .tar.

    softisp16.tar.txt
    �7zXZ�ִF!t/�����]9�����N5}#���:v��
    �$BJ�I�/�ArI�����j<�'��"l�aە� �"��:�+6y�с�.Ay��oׯP2��Z��,ͣK�<�k8�����?�n�;�H��X�q]P����%�9X\%G\��ޑA^fl�P����sP�;v�Sza1���<g��o�[���O|�w��w�}��\=���?�-��{�б�k�����a�v�br�Z�]�C�ښj�(�o�.>�]R�|�8�hE����u��^���o�!*�(X�,���=#.#���îH0��]�$�|��i���(�����(!�E�����
    U)ϙ:!��������M��"��Cl%�ތ��5�j��`��	eh�1r~�b+�?3��RO�k�]�."���4�r�?����g�S.�x�m��F#�Kϊ�oy�1��l���e+�g�߫�Kׇ�w�:�ғ�I�I[(v�v��6ժ�]�&���:mC�	b�Z"Ƚj�(q��u�T�H��ua��U:7zQ��4��a,Œ����ӳ�����˓G�O�|���;����]bx�F�g(q�������Ĝ�j�O[��d����pl��3�U�*�&ʈ������1Uj�v�7w$3�#��^�
    VEd���*vEB�8�3�-�����l�`��*Cy�KO��N0t���rș��G�cJ�|���u�Lw�������)��Ng�	x�)�O�@��I̋�	�T���c��m2z��4��Ly���Yc�ĩ��:�5��k �:o����L�܁}r�a�G��T[�=k�B�q��o�
    1\��"�j��H�9PSQ��4��T�&�F6��4���M{L�&�]��e����d��S����K<t]7f�|-��z���*_G�X�z�s�Pb��ȢiD�� K�����Y���'�8���.��+8b��H:�>�'\��D��,G�����Z
    �%y�w���H�4C�j�8t�dҴ�6��,��1uik�^�C��;�B�W~�����-��o3�&g��zo�(�L��=�y��|��ߢ|?�(z�9�f]�q1&�b���%�W;��4�7ǿ�=���W=�Fw�j3���D�](�t$��F2*�).՟ȼA��~�s�sa�f���Hq>?�S�J�-�
    ̖㗸E�~j�1�t�ݸ��Mc���d�֫i����e�y����\���
    �U�"��2�{z�"[Kh��.�%�o}8�L;�����>���Xi1��~�����߭3=vT���~�w����2�j�S��e'�/����j���e����QdD��qC�O�g�ssDL��+��T�fN�B���1�-s�57Ȭ��`�yXS�|�h�a_�}?p�A��g�_��*���
    9љ�������=������z�=<��/�O94�xG9�e��1�S{\�Iǡ�翂��5q�Y=i3<�ej�űq	7{���pSGHO���ʄ�h�{�ֽ����\9��	�cˉdD�!��p��1����zU�^�������暧jU���z�~R�\j�	;��u�8��w;�&K��۞
    �脃Ն�Z���ûD����.�����g,a�Z��dS>dd^^�]���)�0����!���b5��n�h9�����1�+�a?wO��i>{&5j��$"DAB!����W���Z�gq���S{��Λ(bc�z��${�N~���{��T��ʅ��SB�|�ʭ���Ci�*f�F�< ��@۹]�
    �!������z��i�m�ܝ�;u�On�h=	��D��*���f�Ō�+��4$m6����'h�;�vO8��ɴR�ܬ�hz�g�<+�j��pjI�K����Q��PGj$�������t,J��5�i���KK=����Z���lC�V��tu��\ğs)��-ˎM.-��<ٟ��F��՘�:����-/ϹuT��bP��>6pM�1�������h�X�!�P~3���ϱ���
    �/nD��yۂPY�TC�V��J���㐄���@\=Sk��b!=O`V�4�#>	%z$�`d�@����^��XLp� iU���gP9����{��k�"EK����W)���}�_sjzsA*%g�4��F���1�� He�}>[������:�=�EJ	a�>s�!%�D%�V�pXh_��@�u�;��P�1�l@��L_�~ڛ
    �Q��}\����,q7,z�)�>���/=Ф�>�Y@�_����]���0c�F|{�D����a���B�o��$ߖ��d"�f����&oҢ_ք樢�b�`�кMb�_O������_I��k9�� ��hؖ��*:�?Wlm^1,\L�#�?:���Nv:�5��TLִ����E(+�F�����<��|��.���_�t���B��o��R}v���FO�J��U+��±��������N�vN�l��Rq�8��6J����]�x4�"�d�-?�d���Č
    ߆b/�5����
    �LC	V���S��<F�������v�E�#�T� �/X��*]�G� �d�@@�x癃k�Sۡ�0���^����Gj�@���М���4.Ήʣ_)�p��២����;X�7Η�7;��R�he�ږj�\i`���ɒm����hq���Ӟ��X~P�8>.��l�IW�q;U��v�Uc�fE��e��]c�Ik)E�LIE����cP٠��;�}kOL7�eކ����{�	��:�U����SCc���������w.�#���DQL��i�t���k�%�A<�vЬ�V�
    ����	���j҆:�)�nvY��q�%^��u�L>�,�����2)�--����-�T1ѿ�!��3E-Һ�[�
    ���#��vYVbI����*��AX`�2Lw��v�#�iX�!�{r>���T��;k�M3��pj�M���_���gA����{�2�׸{ѱnO�eancTD���~���Cr�L��J$%�!���w���JD)�5x�U
    ,��Œ]�L� �d�����dK����…�@�^)]�E/�Sߕ�d�q4 3ɭ>sLq���m Mo�B�"*	t�6����:J�My��R�&������زR��.xa�af��R,~HJ�D����`���̳��p�L�b��8��.�Fx�ן��4���-@�^,X6K@f�5P��tCt�s|+���8�z�O��L ��ٌ�	�T3R؝�E^�s�<�i���h�e+�MAB�ƃ��^��L5�2�X��f�
    cc-a��.F��-(��T�cOlk��랬�7����\/I�+:�H��N��jf�g�N(H������~�\P�ڌժ�*�Ik����nQo���0���//2Ħ��ګ�����EB��ݝ(�Cڽ��s�7<m�8�u��p5?p���^Ș�3aW�`�_�ۥ|��OC��QNH��}��^Uם�t��^�_Q�9�
    �J�'�>�^��ț�?���iR��
    v@0X��H����5<H�ul�dBaz��������Y� ~�c���m�]d	��8M���j\@355F2��IĪ���	�P�!��bE��u#"d`o��yi�h.�^wI�Wl�[��u�n��d��G�28���K�]]�8LO�-��+iniC/����`"Q�
    س��@5]��h�
    
    M������;�B�Ɋ���:�;7�~u�(�V�`^�{P*���
    �����h��mY�7������次i���������X���E�.�����ZD黗O�0ӐQ��w���]w<D�H~\�!���V:�h:�H���['�|�ޑ�#��+e��_�/�?2�>m&�Y�(gx��
    ݵ7�z�e��}�@�TlVG��e���Q��@	1�3�$w���?�kY�E��,\$?͡t�c�F�����xv{wM_��WM�+����]�U!�F�F-S?���2��3�a;�yY���93�ߗ$�����^��I=�ʴ{9��o���_ѱ0C~aLR�]����'7[뺩ҋ��
    ��֛�4�%�����7�ق�Xv���×��N9
    l����j3�o������\��W���;�9��_�Ȏ�&��(/#�f(t��d�29[tO�Ղ�;���-0�玥���Hi�3�]�4K�;׺_�9����uhbG�ps���.����h��za�
    X��ك��C%�<g�kϡ�����-��H�S�&��	��"�ݨ�tN:�(p�b��"��d���'��?Ht ��:��M�"ܨ!-�3p��A�+�]�o8�Rܑ�,$�k���#�?����^u���/$Ϯq�m�COԊm�!r���Sw1b'V����r��Y����	J��A���\��S4��'�lxK/���b��`�3��!�^NSf��\���8wLl�f�1'�;�!,0�a�:ph6@���]QC;6 S2�R��-kU%���Of:��b�4�2�K�v��Y�#+Ea�Sٕsq��Izs�1q������2<�����ͤl��Qމ�3-��2�Y?��~�#D�hBy@/��i�u� A�`�e �bE�J�vׁ��vp�>".���X�<��%D��DLM�2�#�$��Cو:�;<w&�O�q
    �ʿ8N��j�.q�k�~v<�>B�8RC؞���%5F�w�9��b�
    �3������
    ��K1Y'q}�\Fc��y8�\J�M�6E;6ҿ�a��`��Fv$�@;]��?]��:ݿ�Q��|#����.�3x��.>���'2��h:6�NBҩ'/'Na%���)���7���RĚ_�z>��� �C���nm��h��&��qP!EO���ӵ����,�jTQ��=����Q���0���|��7s�;v��y��&��0D�O�%?V�2:��_0R�O]bb�@��7c��n[�ڵ�FA���(�oY�' z�n�S���ê�GB0xx�鐽����5�aHيľ��$"�(A'���Q���f�0-	��ž-�[��D>����1s�D./��yw�n��H��Bn&$����s�1k]Aj��j�p]hx����,i��T�Az���F����?6"Q_H��>B�0�M&gH�n�R�7���Q�rS0�g�j�̑�zRRt'�^�E�d�)��0޺tKШz~�q�N��E�M�^*�$K�Y?�ʧ��՚`g
    �pҒ���#Ò�g��e���2�KQ�4s�?q#�@��l�F2|�-Bߦ�p"���>b�
    �Su}��f����U:�k��␗�
    HP���4�=��?���'�R
    ݢ�Tn���P��>���}b��c8H��sw��6C�5]`���EI���>g�
    ܜ�Ez���NL�Ӫ���c�g�hi<{�AI��FH�Q9��Q+b�{�,*{�)	OKiB��O��<a�創�R4TK0�?Up����F8+��Cx��0��b�� �E5�dzO�N�ꋮ�1cf�����i��"�[ >��}WoabP�rq
    봲|�Q��C��}8��h��8X��b$��W.\5Tj�4IMڃšQ�9B�N��v'��8b99�Xln3�Y�v%8HV\96dUȌ�����P��G����>�^rݙ�ڢ��E�O�E
    :�i��rOb�$�6 8sN��6.�$�4�/(I���wպ
    ���֒��Z��
    Fpl>"�?DGU�8�Tp��d�O��B6���8��M���>��2B2h�g�͘1�wE��a�������D0¥#,�2cq�*��MW�T��j���C��c������I�K�su��3.:��D��R=���]"Aq�eN�eH��u�qoN�����/B�{Z.p7��0��n1�K��2d��������+�ГF�&>���bB��$���l��`��=��6S�'���H�:z���d�r�X��!��������貺P��J�[a�����G�u�X���\�'&��8T�E"�s�S���B��
    +��S�r?��;Ep�֗g����e��kh�姉�Ȍ�Sk�7X)��68Q:����T�؞�`�&�#+0jc^�'QH�a��!�c�p��2P�i<#�R��F$u��B�8JP�XY���E	�3������oui:��Yz����c��҆���_d2�r��ʇ���7�NΩ�P�҇-�i��~�8E��L�U�3��~Eٱ�p�Y1�W�Ch�=�[�81����h�;Z��A�5T%�z2iMz7��)J�tsZ�d�(�K# �ت?M�Ui���U��q�8I_R_��º�5�Ҥ<t�!��ϔ���2�@�E��/����'&��b난�;�L����f39�")>���u�Q��*�=w�H����D0N;��z��;adʍH:�ȳ}���8�{&���Ზrm��[�����Q�E���9�|z,o#��<I��h�Lq�r�<5��+M#�Å�#h���LסmF���S�j�@�dP{kMʪO�M��[iG�r��[Q��ʀ?;�*�Υ�C�)�G�g�o��\>/XD���A˓����v�����ڸ��!��`8�#R�H~
    ��
    �~$�bCHN{]�p�
    �l梭OjC�dBW�%�D�o�� �Q�:J�El��F�`�zJJ�:n��"�l�v8�0��n:���@?�C�(9`P�B���1m�eP�f����
    Pu�o��۲��#
    Q��w�Y�����L9���
    q+r�利���L|+�k��iu��
    �N$	·�'�0����#F�N Nv��4R�}�Uכ����Lu�0�
    �P)]�p,�<Q,]xi�wz
    R����+(O�ƢNr�6�T$�E�RS3b]/Q����;G�ת��=�����MtF��L반�uZ	����H��V����\�/C�0��ۥ<CR��eu�̕���!�w�Y�]����T�ؚ՘b�&ك��b�������W���CᎼ,����7B3t�L>�m��Rka�'-��X�:��@��'T9���h���E�*�
    <Ys,Fj%��Y�����ߙ.c��AF��-����|�4�Go_$���a��&��x�
    P
    �����G`ľ�j�މr��i���UQ�T�|�K��QT��p"q�u�S3����g&���J�@����B�݋8�
    S~׹0�y��Pn����ڗu��S�Ym·���C�z�5a6��IJ?'�g�L�
    ��01��8�om��v��];���e�퍦����#�QL (V�	�p�yG�1�h�@���ޭQK��_`s7��$F���8?����r��r}�En�mN��lW�_����^�N���*��{q�qMi�X��Y���;^o��W�:H�H�	۹�A��=9p���x��UuP��,Gؓ�G5��=%�Y/D
    ���Z&
    b�wo�EҾ���U�G8��H�G�O�ɭN$d9���,e�]�z��Sr8�F����mCH����Y�
    �d�Q���s9aC����
    ���4FH9af}�]�,�,��(�:��3]����}VG�?�Uw�\�OWW-Ѯ��[Ÿ 9.R!;��Qe0/Z����˂�!�Ÿ���Z��x�WR�}���T|���~�Id��ԯ+�>6~]5&��Co�l
    2e�&L�ǩL�Yu�L�Ndžw�m��M�R_{̐���׏���H�uQ��R���s��bȫ��}��(����[���\@�_�7B;-���'��M(W�[�V��9���P�c����>|e �d�˟8UД5��G>��Q�[o�)�%Cs��1]���ˏ�95�r�bb�����ʽʼG.�
    EK	녋�uD��Y��/ǬZ��9���Zf�Q�bzW�A�ߪ�=5XCB^�z���`<zL�e�Aò�L3��<-�������8��27��ڽI%�Mp4S��H�$�*���T#$�}����r%GN
    4�oݏ_e���	�.�S��H�A��_l�O��a��f�8�7I���զp��6kOWW�)c�D]C�]
    �g4�ǎ��۟���6���`��n�rx�h���P]�3\�hK�fR�K�	�G3��㰫OP��\[��@_��•�,�����ҧ����>�uf�R�X2#��%J�6�7d��xI�x�-�
    upG��o��Bz L�OZ�#<m�t��`U�I��U�v��yq�<�\��ۡU�Z8)��F����&U��gs*J1̚���t�j�^~�э����:T+Rے_�H�1�@�o�6�����&�bz�Z�۬��f��dq�!׍�5tk���t��I5�����!���g��*oƙ�O+�>[#�	a���a(X��V^�:'g�������cD�	$�$9o #a�-��q���pU�%��ċN���4��%V�t������H�)�n�~+��j��_�.�%�L�;�r`���i�!��hb:7=��%���v��TCI�Z�̤�9R��ѳ��e��������mzĔ�J��L\�&0͚�K���9m$�"�l)��0�&���eB3]g��L�3�~��>����za\��~mZ��­p��<�%Bz�;���8�bgQ��=���a�/]dC��;���^	�B6;:U�����F��6>]9C�ۺ��ꯧ#�dJ`/���;o4�S4=�N��E���S?�p�@2�=E�k����P�.�WM��'T�)8i�҈�=pr|�Q��s�ٗW��U�ҏ�>�?=�Arj�l�8����Xso�����̙%D𛉧U5�6§�X���!�DŘ��ьUL�*�����H����l(�_���Ć�:��où��@�����!B��5/'�Vcz�<œ4�fl�ZIOw��g�t���-��T�ͷ�����o#A��on����QD�| �³0I?��C�ݮZx`_�.�4EIq�#g��)�a����A����p��t���{[�a:/�Z��K���ɟ9c��'N�@dp��p���6�8H�
    �G@��dzP*|ʸ!��~:�R�.���}zx�]Dg2'_’-)4t�r8|�Q�L�2�^��Ω�!^�01�Ϥ"��J�����H���������e]������q�-���Q�y����evւ��u�����5�?� xT\>e� %�ЏD ���gKj�Z��ڕ�����;���$�,��Bs������h�QH���o �����b6�u,/%���Q���e�J�����Q�߸jmt���s	v`��g����ZF+rz����!��/�Ȇ�U0��(6���.�<��S��(�C钲��L���<D����}[c8q(��R5k�Ah��
    (k%�uHN�ETJ�u��0��W��n�K�G�Av9{��ɏt4�	�6z|�NX!?���>��9v
    ��!��݀���ic��t�w�����Y(|��pP��9͠�*��P�;�z��'�Ƹ�`V_�`�p?O*頴@�w���.sih���P�K������3��]܎�/����d!G�c���Ϻ�cQ�G�9�[I�Տ���~�-��C�7��e8�Y�a�7��`�M�j�o����U_��\�����[�<t�:���%��!k�l��o� ri�y�/��z)��hlqn���~�fvg�x���b�$��ׅw�?���}'���o����r�:�'Aˮ5Z��0;�fp�{1-[/W�4�D��o�~�z6��
    �"�r- �'>�i(���Us�4�Bj�kN�*|O�	i��6R��D-���a�=�}w��_X}�e��/����d�O������
    �>��r90���+��>3~���������uҲ H�ZQ��
    ��JQ����S�=�cðvX\!��H_�p�Ճz.����U��ޕ#v��(�m%��Z<G+��i:�P,�؃3�03ː���F0�!�)f7Oz>V�@q�Y�k�|#���:�}���|�L����iՄ�}��{�;#SA����n�Ι�!AjfPwy[��ҲT>�Mc���.	Ea�o�*=�Β/i�q�b%�t��2��'��*�d^��6�
    K�����b�\t����6YD���D�5"�
     �0��1F�=_�")��{���J���H�3����l~��ɯB��p����U��Y0	
    a��ox�W)�K)@�ل��񩒸�j��.�b�qr����<:�P����Ǭ2ZZ�Brx�FP���[��㱩mF������Z�#v�4�/�_��Q6��
    �T
    q蓮0R��S�3�;��o��_��f�G�875Z��Fӄ{[�9iU��0hĖ�8XK��ZwW%���:�����~��6��{��#HD�/%\�7��0	v^
    MGk���E (C�mZ�Dz15�R�Ԑ ��~������[�%�aS����U��a}��ٔN�NI{��r]Q�k��}�N��0X�S��!4:.����1�ca��ց(<8?�D�q��VJ��I*���b�8��
    ��"�”�M#e���Mى
    �r�@̜���VRv��N�5I�^	TdX�f���D�RT�w&\�����Y_sʈI<&�.&1����l�B�?_V�|o#E[߉=�n��/�6��v��En�{}���[��|*W�y�^���|��8��_�Ɣ>$,K�uJ���s%u��@��̰�
    ��R�z\5�F*=��~��K��b��X:43���]m�?bql��8"6�z�n\ևԜ��{���?4)s������Ez'�S�ح0s_��tե�N��0�1��H�\�-q}�ճ?r~��o����2�0d�?�y|�k�fc��r��H�n��A���H��� �a�ڟ}ie�_�#>�5mk�l�A�T/��z!��г��ا�JI��79�$X(��g�#�O��j�C�ȇC8������G�Ӝ�T��W�������ۂ�5��>�<�w�"~k��l%5��U�Ίp)e���"���D.��$aD��Li�=G�l�V�_tc ӷoIJ��`SP�+�Df�U��V�x{t9.�if5U=,π��fF7!�w��̍�gU����A[��-�v��_BD��9w�-�Tn�����+>�S#q1Μ��h:e�O��8H�����>!�*G���p��G=�E"�E��E��S����[��H,ɕH*�هW�&8[�+/������&[�$J����(��ݭVA�8�Ń�/M���k���~��Z��Qs���ˇqȵ�=�u�^�E?�3���ܤȟ�s��1Hݢ���ϲ9$S�5�]TOY��n��G1P�;��_j8�ȩ'�,LU�XǓ ���w�����:9,�����@k>!��u����=����CZ�8�9@��pJ��,fx�OvM���H1K�
    B��8鸻F��G���[��L��k�.����F\���k��ݼ�{⦠Y`	i��П+MnE�&H\��8-��W�n�u3zK\l�]��8zd6F���7p�D�R��`3�y;���W5U�O��r��z��j@E�ܐ�D���i$��AS޾���	 G5B��JN<��dD)U+H�{�&ގ�XR�g�mm���\�ά�����V�]F;3~!ʶ�P���
    
    68km�o#��?�`z��y#$(�+�m�����KZEz�e�� ��Pԟ�'�׍��A��n9�O�����K:	�$�Y~J�-��:�	﷋6�8�Цo=�&hW�?�a�*E�(0�)>1
    �����0._�Y�?ڄ��ψ��z��|�K@E���C����x��/����*��pV���fn����V���6��5�@�$�U���@ ��C�?�%=5�a�7�
    *	�_vp%��ҋ�l#d�����,�I�ީ=+��o6-�
    *u�Ϯ�����ą��k%�S�,���AB.-�ek��y��f������L�ɤ�Nݑ
    �x��b�&Ҩ���{UF�T|��z�R��q	���#=��7���?�jg���FJ�e�������a~"�W��<�Q�7�I�n�z(a��6���a�b`�{�
    ���`���^�	b�)�M)�}���9/搵n�� Q��IԆ"����g�X�L�0ӷ��t{?�+�yȢ?6m�-\df�=3��) z�C��d�*p��b={���맱*
    Yo[o�������k�x�{֪#�]������D):�f��,�Ҹw�k��1���3�W�&�j螊�O�.İ?�y���k�O��>����yt��j�"���ߣԯu:���DĸY��ؼ�5��\R�a>~�$���2ݔz��opE��@4��/�1|S���SJS�#�/����Tm�ct�t��q�]���dbJ��H��υ�����*j�(íG��4�0��=	Ok]�U9A�ŵ�{pU���o�%n!�Ow�� ��y�b��f��8��yM�S|P��n"�)ʧW^�K�>��.ɇ�oG&��_��ғ2j����j9�W�0i(-1{���/�p7ig�r�$FR;�;gn�,�i$����̚1�zp�6��ڣߩ�b��VH���x��
    }��0�U���8<�1\2g�c��� �Wm_=O�_t��O�[���ٍ�gA�ƓzܘA�&β6�l���#��3��;"]��߉i��۲$���ɮ���tu-�#S&���S�?[���Y���A�O��۸2$>�VT������ԫ��;_A@�����3������~S=f�ͮ�I?�G
    �vA�sf���N;�|��@w���I)�
     kV�_�U捞���>��y���_}h`g��nl Z�:�9Z;4�o���6k�:�JMӟ�2�!�,{w%\��7!�dI�Nn�n�>I�) �z웍�-V��zc�/‰
    �$Ԥ��(?(u��P�L$��+�
    eHw*���,�t�a�0�n3�?<�N�`W�ݡ�����R.h��o-�y1�P��!���P�J���
    �w�\@��c�� ��}�K�
    x8>VU{*ٞ_9q��tݏ����N��5�5��X�X�3W/Q��Ux�ǾW4C��2�������43�+&��gu���U�0���d�ʃ�f+�U�%#f-}��u	���/�Neg���'f$�:�(;>�}~�p�*Ҕ���h8"�VJ
    ��"���-{�Mam����03)�E^j<����ʃ��ɓ���e#�₽;�%�!*�BH�]7�;��,���\P����Z
    Qa��?��u�����l�>�|e�@)nm["�
    ��3�yI���*��ݳ֔��/�D�Ӏ�:Du�g���������A`
    �%���=ė&��s=6��(�p���2�pD㼼�h�\{,Or��w^����CVIM�>�a�.:ܱ;��P�w{
    l���h4ԊaY�r�_�]���μ����0�>��g�I�3�Vϔ�M��=1\~���n�.\:+����Y�����c�ˋKZ�u�,����--��]���=��2���Km�6<K�\f��9��j;Vq^�SY�Mw\��X�eB^��ڥ����y*���%���J�q�P����?Fk!�x�[�n��b�LL�	�о%�ڸ�iS.T����IvD�^j�Y7�hV�z���:��]���\/v����7��*�ۉ�-�Vp�-`�d�k��6�V�v��yv�@g�f��!�o$�$���Xq)��x��d/�J*lS���E~��ik5����pbY��5=�C@c�F<�0�Rx�ڗ��`�Jbx�A0��G+5	�6M����&Pb�E�����A���p�n��}�QM"�T���8r��z�y�fQF��\|#D�+�y�^{�A���Pz��<��h��� j���,����̶_i?q���V���b����`�x�Fʂ\}�}aL�Dz�{O0�X-���pӴ��i�����%abc�(�	v{�@�?�
    ��h6��66�G����B~��o�g�'@�n���I
    �"�lP���	���V;jCk�i��h�|z�j���Ơ�N�[u��Ě��D
    �o��a���H4c�P����Te��t|��w�A%��9�$�ݛz�1���V�݌�і����+�2N��7q:�Ƅ����ß���O��{P�@+����4<����G ��Cu:
    ��׽3�Vu�IY&r}(�^��yGZ�Z�y4��7�����d��[��@D?}��w-Kh��=P'��β���#�K���蜽d�w_����c�[uY�XP���]��S���$�u7��D�8�����E�0���4��Em:��2�m㊩Nt��^?1�x�̅�m��u���'���N�ڶ�w����o�To�,�U�O���ݹF!�;�ӄG�����V�����g+�V7����ZU���d�x5�,!H�q~��<t���Gc�,�D��oK�DSc��AM�a�)���"��0s2�U`lz ��,�l>%.=f�.�CJb�bXU}�!�`_�K�I"��c]g�2�6��m(�Z��U�{嶨��Xn��+&=�9���9�0��Z�D��6�xv����	����_���e�Z�g��E�&[j_����eP��4y<;����6t4 ��<eo5�s+�w��^�O�0D��w�
    m{�]xq�kO���B}P[�kNu��@���5�"��-��Z��R��L��4iG��[#�b��	5�5�F�i���s#&~_���ٻF�c-2<N��Q*
    �CC�b��R\����@�i��Qm����y�����@іs�$�UcI�?���A�:�).W�!ЄK�5��
    �V̖(��p�Ť�T�\�~��e���1�9s�[L>'���s�U	i!�x��Y��7�D�j���-�㤌�S���ɺ��y��Wm.
    4r�z��r�F��DC��Ы��H"<��%`�=��=ɫ��+��
    �����r�p]g�)�����EJ!�9�}����qo��F�uH���{�xo�{t�6�D�ζ~e���JT�W�E<&L1h.�Ͼ|��s��c�X�ݸ��+���/����zLCZ�E8��^�Ȭ��RA߼$�W�����:d2A�dp�'��I���d�Ij�ϒ3Wt��r�S��"	�S_ߟI�1�p%	1�W
    �o<��C=�RTE�,�S�׵W��!Q��@	��!e�v�=1<���1T�j��<��w�]HK^��
    	��],p)^��;@�'tr�j��5��n�%jA�%�51���.��=PW�y�Z�[ڟF�Ixr�&���cs��|e�)�+�@��>I��G��I�]�H�RM{�ܙ¯s+������y�e�`�L�&�0��.�+8͢���p� �2�%%y���'=�:Z���u=��M� H	>��-��Q�˅��{��%�us�K;y��K^n��3R
    �K��Pn���Po��aS!Â|(��/�}�/��y2��DzH����5jڟ�{�����K)�ݳ3pþ0�NɷvQ�L7�	�w���6N�ڙ#���¡�K}�S�����]�����m��͖�x�؊1�خ��+5~�M���FW!��0�\2~�p�Q�ѼIQ�O�i�������j_Pv ��@���׷��X��^�ԇ��֊��U�c��fH&'�B�C�;ñ�e��
    ЏB��Fj�(�r#wёΣ�!"�r�x������1��@L������ժU:�zV�c��r�J�V���K�_��ՍEv��d��fR�D�s�H�K`E��t�x���(�9`CW[���8��2"��1]��w����Gx"t������,]ew���6��~��K~Vs�1	l�|�]���+�mX���,��m�|�^
    B�:R�-���+�l��k�=_�2�<A�n�9�5��\�s�~`{/
    p9ҥ!}=f$�M���xO��,�?8��S��P�)�0oǢV�����@7�y[����s 5٭ԭ��R���$ZQX@��a��dž���h�=�൏���K�*
    n0�@�'M$�;���Y=�X�����CQ��D�؛�Qq����#�#��a2lx'2~����M�#�PQ�rΠ��͔r�����O����-b)���u�)S�#�5,�S΅WH�!�<_��5T��{�A�"׵��3�vԿ��xJ��dh�&cͩ��emh9�
    �Ϻ+-���Lhy���!���� ���� 3a�(Fٖ��J������k����ҹۅ7⚼��u+�}/�z�q�"F]�X{e1R�����
    �j�+֦5�Bt!���@"��'8�[`���ҋR�(����.���G�#mUd�V7�{ޖg5ψ�!�xl!`r�25BF���үͩ���!qL�)����
    �g~(D���W�%q��+�5�&�`�Bq��p���	�yz��Յ�]��׋UMXA�rC�z!S�G�qg�ay�W�w�P�����`fo��N�~j 	eJ��'�����h�+���&{�V�c_G^2x���
    �&|'�jhǁ0���[VP_�kt��NN�ms�R�Ȩ+=�]3'�iā�g�D���t��������a��Z�堢���-��c�E�x��S��HUVcf�R�}ʎ�,
    ��z�y˅{j}�y�{lD��/9�ɺl��$�E����D��]��3��*���Z$$��w�E�+>�f]PJ�ln����*���ܶ`?1,�]͛��[�D������Fy�M>��K+���+��J�"�&c�:����:�~��'���cp�+�JդV��"d�?�h(|#S��SzK��s��)�������Ѥ�>�e�i�j�r���z�1O�8�T�3�f��YE��J��f�ޒ�:,��6_�%>�5�FY�L�9._�yA�`��4��ڒJ��09����+����F����2�9���&��7�����k�֕6�~})��1K����_B�/���C�:�s���Ux�����e����N5\0gH���������}��(0�������O�
    :�	W
    �Q`�x����!��9�$;4��Hm�R����,�z�Rh���Y��m�;M�p�f�q.�Y�dK06j��W��4���fI�e�D�Վ�Uu�`�
    Ѓ�c�u�!.l�j��ev;�p�S�IS�wo�uZ����Sco[B7đK����۬T�\��Y=i�[�+�;���N�#?gt����W4{��K���]|v��8'����6��Dw�!J�,������xu,�&v�J��p\�b)Ap�/2V���t�&�@�;����0w��8��1q��&�t���Q~ٻ�
    d��;g�Жr��rX[��Lr�ҹ(�u�ըj��fW�����y@�s��MZ"����5������;�g}�˶^��/S��rď���F��&_Q8YT�s�q#�t<-Q���R�-�ŴwWM�4@f�=[D�4	�ƍq�X� t�H��t>��A^��k�9�]i����&چ�Y����;�9�C��Sr�C�U�H�J:ܠC*w��R���1̻�
    �
    �d�4rrs ?Py��f��6ى���Ds;x3��p��riR	g�64����G�4�H4�����&!E}ބ���{F�!���I�!	��yS�" aʷ'W`?3V�˯9V�&�;�[�Y���J����#��n�' ��A(������wO$q�3m�~�Ǎ8��K�R�,
    G��A��x��s:�����5�k�II�q�M���MS4�}2#���X`K�u_{����ce��M��4�qs�������(��3
    �!O����D��#��A5�Y6����n�}LR\���� :QG�\$�&��)�̘ͮ����'�nh��A��&�u9�f�[�c5#�q6�����o]��$a!�k?�����l�24~��\����R��C�WK��ma��u��fG_��X��{��Ɂ��거��Z��y��$�rl���UlN�����HÞ�q
    �|���
    *e�*|�f��ɧLI�u����^���O���5si�������.��k��R3y��E@|V�B��`;�R�קs�ʛ�"f���.d>���HO��m�
    ��%�ŴJ�ȏ����)>��Amm9� �y�����nN���o\s���޶-ps���<�d�
    `�'�=!ܼh�uréʦ��pT(��)#m�y�Ca�]0)f��MG��dq'I3p�!B�J���}p�=}u5���09h0��SS��V���G+V�Ą=�;!�C�z�h�a�&�&$>c�ĂHl�HQ��yq���kH���=3{�sx�8LAZ��馡�|�䲾5F�T�o�:'ڵUL�ۑEn��R�/�e�iъ~<`;�������Қ(�C���$HJ�3�_�	�X��Lj�y�f�!A���ӥ:��I�rr����^2�S� d�?�r5�.s6�Ɇu���o�\-�[��	o�A�&�T�L�J�0��o����4k	�
    ���D�1O)P/����� O�i��!�`~��������C!4fбƱ�^q�/ܔ�g:�xW�&����H-��y:�����d�����ݓgrW��QVE�Kl4ZQ�jᦚ�F!�85���P@fE�?&����������׍�������8���%��(<5�/1�X2�U~
    �Hw<�?�؍�K4�|�q��+en�K��j}�?�R��ْ`�h�EJ������1�5-
     �1�O����
    b��,y�!'˟Yy�Lo�D|]�g�ic��x��/�h:��
    h�<��
    �ZF��Ik�]��X�hw_^\-�S�0/�h��V�w�M��4��J�5� �N�7�u�kry���&���h�<�U��\P��zO	O�[�������� �$��n׫����(��{�j���򃫰�K[�����;�GqX
    �j�8	��
    ���G m�̈�!3�mJ�;��٬Ii�z�i��KcZ��s�r��X\����iT�2�S����l>1ơ���X��.UO���ױy��f��^���@	��xT��6N��G8����ȑBBn�;<�_Ӓ�?�*�
    ���/�>�N��9\�@��ᚍ1f1<������m�j'��)P<ʃ��BW��:Ohʹ+����6����/ܝ;�L�&AZ^����I�l����U��:��.�a
    dqs/��'����6V��>����7�!���\��Dy+-JD��
    G+�v�1an�C}�˛2���}�u�]ӓ�pw9�fD3m���1M��~�����|-ut:�v3N0jĺPʬ�wR��I�9��|G1��IF�/������-mXT΋�K����pT ��lEV��h>�� �=��(B�����M,�_ȍ;;tCoV6��KC��gdn>a�6M�k�$ȶ���+C�=�1��Q��-�"�y<��C����:��Ad}��i`��Y��������Gr�� ,��\�R)6m� N��9�p��3ߩ���q� ��G0��R��B�kʪ����*��0�?>�>-�
    i�X���>/�v��_>�âR�\��"�Nܼ�f�?������$�w��Kr��ߚ�������]�	�/��U��%j<[�/�oL�׽RP��b|˺��@��$���ۗR���v����*�-ZN�9L�>æAƏ(�������DQc�ށ-��=4���o�7�xi�&oi���\��Ȟ��~N�+� - IhZ�p����!�B��6�@�%�Iέ�~>C%�	��#��E]ͩ<�PI4|a#�#Gu?�:�B����	v�}��u����>/�nKo�0�?t�a�S�$�}
    �~h��Y���O���>Vwbx��Ol��'Q">R#��w��i��29NF?����?���Bc�GU�?joIZ����*�R�f��Vw���hϬ�GX���&6� �	���o��sMõQIo�����,��o�����0b�O.���� �1mM~U����<� ƿi�Idc�nBT$��o��2+�=��]!����Կ[�CBl��xڋɜ��g�kɼ~��A��lӉy��.h�[��sA�a�1Ÿ���k��a�"YI�� E��'��п���DH��@�%k�|�	�T��ϼ�V?�|�`��K@Nk��QPO��x�$��{\���^��dחl3�*�w�O����w[�F'\�}.W�iۺ������ζ$�}�\���	a�gc}
    \s�0�⬊��_�^ek��$^Ԝ�#G�I��s�ԩ~�5���qkn��練boa|��1`�a�`�(���UCf��/�f���>��g���lR���j�}���غ�9���xٹ�-yV:ٶ���t�{��w��i��b�Z�\,c���۽��_̘�)�_�C6\P��|ɐ������!��z�:�eR�o^���8�ie޺]�Ƥ�^��W��p���j�����V�I$����A��p�G|�!�5�ynQD3�J���>���
    �#���ք�|��W�p��w�i�i�����퐽�r�����"�I�`zd��~��b�P��Z��<0A(�6�"�Kx+^�тpʖ�����1x�!ۖkRiSn$9���/�YJ�*�a!z`͒H�\����WM1�ؓGe2��0!�3ȆgB���ǔ�X�*�8��h�g��3��mp]�p#��E��d\�\�J��0�L�SF��"���l�Grt�ĵ�X`�"�fnI���GD�ķqXKZ#�&"�,���/L�+�罏4��a�[�ݵúԁ�F{�c�F6HiG���]��Y=�����;�>MQ^"@K���_A�.��`*.q���)��i,m��9��&��G�˵��w��D�#kPZ�Ao�ĈK�)�+9�>�~�3�
    U%0+j8~�	+,M�0<�Sc�ܝ�fJ��8�"�.x� �L�ϣ�脺����%ڳ��/�~�O���*=X���gh�ȵ�o���/�-�a/�]�‰��b}!�����lCAA=1_�+נ"���it #�8�M۱�8���b�@D�)� ]�1*��.iZ�w��d%̯kyq���nY��3�\7l���W�7�&<��q��Y��rz.�P��h?�VIbRN�tg��1;�*@�^��e F�r�A��َ��
    �0�*�#��)���)$�U�ē��:f^lۉ]Ff�p��(�(@�<�]��I�0~r��XRrI!:%t���4?���yt7c�r7��q��i�z�P�gU�m�0�l.�ATp�t���V�1' �a&XQb�3:oo�G�X]������8��܍'‚�TN/07�/Ul^�1��\����C�j?��
    �oG#��:��6İG�2eM��XȔ#�L	4ك�F%J��Ѥ�ٍe.�o��oif���0f �ⵟ�_c����	�v�r�c���*��lNP�&M��*�h_�DLS��T] ��4�T��0%	
    �uL�f
    #�MaT�ҧ��'���V�"Z�=�j+J6Zt��Ix0���
    �%���C�
    &��g����������!���߈DVx����W�5��H:#�3�~�ά�EΧm+�Ls�GT��!�^������"���)�mKr³�rl�p`��zNj�9\�aU��:��q���7D?Xi����JX׸��3�,;�w;�){'�vz%�9�$	w����ZKꐿ߸iP9_��2����%��փ�o*�'����j�u�)���V4`"�xdT®�n��q_d�ً��A��iV�C�ClK����k�u�ق5`�z*�I��Y���/6�T�E�DM�y��3��
    ��/�/��z�L2��nG:�
    ��x0D	@Y`k9g}�Zr�z?nƠ�'��l� %��9���O���]�Մ��*_�%��E�u�2	�A�>�u�alyyc:�Y�	#R.�5��v\ƈ5�@Ig��h�hm�w�5a��[����g	g���j�ٍAz�\�h�����>�� ���W��И"ee���0%���#�چ{>�)���i�C�����^��^IN{>���5?2�U�.W g�;�4��j�V�!��� ���-�>��7���X�,\��ypU���[}l_E��Y�)�	#��c�$o�c1��o�T��E���]�4�&|����E��?OJ2	솃BXh���Rbq��Pݳ��<�+�
    �)7r����N��/V��I��^�#�Y�1=T�`�A�|��&O�4)��K�޸M�</$�`�7癬B?����[U�!%b�	>_���H��q���.PŽ����Ͼc��.΢O#D��3@~�GL]�^���7�2'F��:p}iɹ��ԋ�a*�
    ���W?���ǣY��W�<�XEN.=�e�a�b�͵?Y�'M��u�'�-{?�&۰F���u��GxWs�n��[�y��
    -:\nYnsI��OPoeĨ�} ����cFP���'RA�S�(�'�_{�_Q꼯9X��o���O&I�W��X���0��^�P�3Q�N݄�f3��t�=�f
    ��P�p��‘M���O(�l��l	OWX�,�m#q@����p�������
    ک�$�f�o.�:�t��?���&�&fwC��/�Ӻ������%����D�N %�:��f�鉹�ۤ�C2�-�@U�!
    �$��.��[5:�zS�	a�}؂ �3�t��f��K����q�z�+�yjg񿪯����j���
    F����r����hFtW���J�W^N�R�����c�k����yxWO�֙�*��H�I��7�q�*��~id}(�&����K�҈kLg���@K�T$���Nv���@@k��Y�m���R���Y]L��6��=��H������=E��D�-���U����6�Hj�����R�KNđ�rpH՘�{2���*�є��P#w�� ��L,(�lrI��&d�d2l��X��㬅?��a�������Z�}9�`�ȏ�q���f=�f�>v�FYn����J�QQl]_UO*7Ė`|�R�Tj�����!�����x�]��-�n[��D�I����`��x9�0�X*��E #e���7\���=@T��Xt���*�V��0t��B�ߐ�Q�)��26�lfY<yH��Yי^Ŋk�m������
    Iّ5CH#M�B�B^�O	��߇dD"�
    �l���Pi
    N"o�><�rt��ꄌ�ep�"��s���ȌԡN{!��"�+�5kz��'b��A^BiE��]�59�bRV(���U�'!�4�Ӿb�iC8��x�U�<��#ĺ]�A�C��,�xni���”��udfv}]^B�|t[�Ev1�G���|}�S��nTrn���	ԋ`���m�0�!��@4��j���;�\nJ�Ҹ��%i�!����5JN8��P���\AI� 	�5��Z��
    X]�;�2Wrn�fSd뼍����0c}J���<�M���s5D�!� �|���UT���g�h���L��F4���W�^������x,��@o�#�6�z\`{_h���K9ky�����(���]0���O��FE����ʦ��������0	
    �q��;t�����m�k��F�=셱z���ٗ\_NT�a�����u��I�6��Sz.6�,Ѡ��b
    �c�A���+�߲a�,�k!�g�h
    �a.I	[�جk0F��~�����#Dx��$�E9�ƺ*�w�p��5����p�n�Ժ��h{���=A��j3�[����Por���>�������g�\�/sd�!"��H�]bN˝�	�O�Z���=Q��u��w��x.���q���۲���r�:�sD�N�U��L"����^2G�u��l��UY�a��(��ъ��]�@U�Nԛ��'�*�7R��ݡ]V�|��G���48��+�~�f�	�$R!�`�?t�ϛs�P�6U�n��1t�h1ՓWHO	�{�q;�zʲ�_T޶�Α��R���33}���H�d6�5=
    �Gt�p �C���TBb��9L�du����y�=��@�K���$ոA/̪�4��֙���˺�
    �O�+��l ���i��^�0�`���S�fx:4�O�ɭ�m*��;S���N��\_��M=k�|��7�G��cVh�-�
    �-�$���R�ˎ�x<�Q`cv1&Xя!<"!̈
    �j�{��*��ya%���:�d|x�g��o���:	.z�hx�Q7�B��d�;$����	�	�P,ه=��h�d@.U�����L�`8h��˪`��'>��e0Q�ASi����X�%�OJ����	ŧ��s;����4}�%��9�HV�11	�:�WSj��ץ��ˈվ�!R��������]�O�61���N�j����a.똬lv���T���̵��b�C��v?(/w2����Ys&��p�<Z�U<U[�Ԧ���$��]�Y(7U�7dA��1�^/>]u���"��e��c�o��D��jg��]���s�T���T�h!"D0�Ccp�VǤ�l�5+K�	,��ضr��v�z'9TX-�����Rb{y}qơ�;�K���\m�䶤�Û��Dr�[��w\\��*�O��ص&.ѴcsرjJ�j���ò��]��o/+�7;)%,�d�@�3iN 
    �����x�g�*��f�R���&p�)�좸H�	k֏r�O����A�C��tso�G��lv�Xd9��vV�����8�7v�=R�>�.�r���k��m�O��5;i�jZ�2FvF��E_;1��lA&4��m�;���NŃ��eG���q)P#���bKE�xȋ���h��Q�X2`��u���nfl��$vW��0���e1��TRxf������JR�!�-H��J�P�z�	�R�ῧX:WxOnj�2�R1H�QYBM����pLK�5�k �&�hG�2m\l0�P���Ly�u�
    NJ��&�za�y���+��
    o�����qܱG�f;E��0)��_��R}d�p���`#;�h���0A�a��I�5��کv̀Q�l����?���$dO
    ̘2�l��!��D`RZ\��m|s���˫d�?�A"\,�*���:ɞ�p�V���BR�;�%�&�~�q���*$M���x���<�O@�೗Qv�O�CU�9,����#�ʹ�U�e<��r/�����4A�{�pU^��|0�T�Wi %m���EO�(�GD��\90ٖ��l�\�����X<
    ��
    �,X-� ���m�nS-4�R����W�iwba|:@���"����7()��c��.��?��`"J�ʮ�t�#<G�D���Ka�����vB0�F��`��5�@{�[��<7r�"�˫UdKS��$_E�g-��?�l]�#[��pfH�n�����D�`Du�C؏����p?}�Ā]{o�x��->9_RS����\��
    �nKPwx֗�4�مB��#uBN2br���N����8��%o��j��p�pl��|����G誑�������q�	���_�
    �j�����d��x��<�#����,�IZh��O�~���X��W�T�������s�W��f�z������+��`�Qx�a��&\%�Y�o����K����D;FD^����
    iN,t	c��4Q^8�_�f�7p���I���3DE�d��E�g���~�#d��`L&]��b�E���h`Xm6�;Ⓔc����a�u\�>0�E�e\�`�*�e�r|Qs��C�J��s�Ap��+�һ�Z�W���X8%�QF�$CT�u�{��c�
    ��wx���������
    
    �%�F!��LߩIv1KXؘ�7�����(Bp �A����q���du\W���92��%Vր<���	�o��mlm���.���풀��J�q'�y�LG��sG�O�h�|��:s�a5_ꝋ�m�DW�]��\���v��;�
    ;u�Eo.[	4a���Gg��9�wa�	��J�y
    �:��� �;�dE/FD���u�t�����`(؇ļJR���i��g�/�gK4�o0u�2.�o[)Q���.�s]d�E�p58�q��\SQTj�{Z�'= �„I�P{�qCY�e�Ȁ���UBމl�v��H>	����������/���[�t�MVT�V�X��
    ,��%kyވQ����̱�?��>��wʤc�x>�+�]b=��i�]zg�����f�~�����=���;>�K���y�:��PN��g��y���Y�u3h��G5X�:"6}�X3�ʋ�K��Х1�=��j��0��x����q��D����I�i���}��;�j�8xVn�3���۵����v|�*���3�AEț�q\�����ˁ
    &vG�<�)� L��=��x�D�������m�d�Ǔe�����ʍ�JZw��6߽m������~+¢�$bh�����2��(P��-��)U�V֘;`7��܁w믆bQ�duk�����zb�Ii�NpUt��V�(����=P"�<H!ܘ��s��j�"!%���g�1b��x$�c\�im�?�Y�&E4�;���b�5�̌����y5��D�
    �gɄ��p��*bd���x�!U�����H�G�iЭ#��k�V�YLM�LeE����zC��^���	�	�\�4����1�t]��܆�̞�h���I���!�\�RU��hv�.�����=��}��dz���R�2��
    u�\"��1^Z\������<Y�X��0oХ��W?��A��N��Vѵ��&���蘟Ϫ�����17{+���l@l�]�,R���?>Gw�̪�l؃�S���4|d�����h`��em�MH �?�ب�Ɠt��<�~�I"�F�k꫊���Q���뿃mOX纗cOiIhe�m�λ���WO��@�{&�x
    �*}.�^�/�S~�=jn�4���8�	6�+N���Ae'M�
    )l�I)���X����(/�K� �8��iOE����W�ɣrJZ�0B��]juA�6�!	
    ����H­~�AnD�d��\>:3?��\SPd��2��*�mB�mt�� �Ͱ�J��ꪈ��&�[ƚ�lK��B�de�9�w{Ώ)�M��ǩ��+`V�F���])e�RL�@�^>�eC�;�@~��I�yG/e$�i�B��ܲ�(R-��d^R��Bpw)#�f�)l1�2%]P��<���H�J!�Z���]73�-�Q�_�s&Dn�2��r�DΒ� S�ەz�ք�P�ht�5�m�R���!�<\���;�X�X�န�͋���	E�;���x1J1���@&�(�
    �N�h��vVl�����.�@���n��
    ��>T�w#g�)��%g����c��zC|��
    ��
    AE�����d6��l>h��eU��Cm��-����B�ha)t{�Ι�B:Ӵd�\4��6��{������@B�!Is6�Yz���^�B�\L���������]��a\>r]�-�\o!m64OPd
    3�c��]�r?-�e�Q��<��ɢ*�i`[�+���l�8{��#(��Qnf^AӱBD>�lz�I�*�WyQ���1K�kx�l�YnU�2�j�F����ގݥ̥�AQ�Z�/tP�<�欬⻚\�8��K�R�W�y3�Q̇X��0�vԥ�s�ԁ�!�ŁWs��?�qB;�\��z��;���k8~�2@8�[MdNe�JB]���-�	�o���,��	�,��_�^8�Cv/�~:�ɠQ�{�+�]}���<�G���'�l�g��Qt׆x�HfYV��
    MI�;����%����F�o�9���%ΎPpԘ��O�9eѓ�����z�_$�"�cLX������.����Tz!Mɿ��<49��Z*o,F ��q�N�}+L'�5�⏽?�/AXYr�Ȏ�bc
    �0	yv�%��&A;��\�%~�&�@��Oy�����A{�ڷ�}�e��P,�n� \\Z=��U��M��b����ï�MY+��&��?w�]�5�54�v��{#�i�ۧ�L���3�c%_t'���O�]c��Mis�CSb#'�DY�J��ǔ�{q���&�yظ,
    @ҩJhb�0������Vd<.��PRX��$�T���+.B�0P�m>�������\�L����v>"m�*ݵN?ll �h���l���>Z�)@�d��rq{������0i�J���2�}�ѭ��8e��<.�!����w"�O�ܯ珋�o��U��4���$��)�>zI'u����^y��M��u~-�z_4������jQsRT���p�>auՋXv�)<6�ά7^�@�n�h�5���Χ��+ �=��b-�e����SD��¢���}BM}M����|�]�����
    ��
    7G�"���[�Le�\Y�=J�)���~W)k���U����]�9��X1��PO���GI‚�.�GZ YE��hW��W�F�q�;9�� ��/V]̚���*�z��TP��� *���k��Qw�E�an��z�������x���rп��52�r3����[�T�~v���|?լ��]��=W3~"D���5;�̲`�>���|�ݛy݂�=��eE��߈aU�o�\�vr��q�R�%�9��M��6��,��q�ȺJ���|�׌fytL�QtZ�]�7�#Z?�+&��F��K��Zɫ'�o���Y�aY������B��u��hR�P*d��:~�mOo�e�F��l�Pz?�B��!x9@m�7�	l�p	/����ug�7��Nv�3��<��=��N�Gԯ[q)��r�k%U-�������j�+w��!��Ïn
    ܴ��yG�
    �e�����X�[D�c��-��GF%5JSF˽�֭�<C�6� n��qr$�V첮��N;7�(q�L����a�FZ�}�G��ޥE��=��\P���V�c��g�EH��P9ݾ��%��:��z�MA��X���`�RbC!3
    )�*�%X���x�xR���Wv�gK�WE�R3(T��O�?U�!W� ����A�;�uyp��owo��>� ������q*go,BnJ���D�������y�)�ϋ��_�Š���	?��T(��(��/�:�3�.�|@�Z�(v����9���®#Z�+g���C#Wy�����e�wJF�5f���	��O�U��7lȡ�����uz0^ۡQ	��sQ�Ϻ��-�ր:���a�%�#��@��q�y����[=v]!x#�2��s���W�d�
    w�2.!���V;���駨Z��
    MX$�~'�@���6(
    ������m�s��T�Qp�����f{�n���
    K�W���\�I;i+IM��̇��}�0Hj����G�@I�$���X���kZ�f���b^+��m�%�}��NT[I~��n����_w��e�,<�w��V�Ⅰ�5�
    \w�6����`&m�ar��6�v�=!�P�6U+���#���ꎈ,o�($
    �jx�4ͻ�J����ou�zRB�J�i˃k<	�Q������@Te��#��&R�}>�	�?.��s?5�A	�pe��h�8����Q�z/�Ђm�L7nFkę��W�aNج�,�6<`
    �k���,�ϣx���L�9xX��u!�R_�o{rR?����Sh�\����Z~�rh�'@�$��,��i����&j_���pf5y�/�\r��ec�N�Y<-ߒ�C*4�O/��G'k�N���w"��n�p�y���O²H�iտ���mv����$�������7,Es�׌�",��?�}�M��VR@`;jW���G�ky���jC�xx%α�i��j*�d��(�A�o|8iaZŸ/�cɃ5�J�
    ��j&�-XF�h�Q��r.`�\]�I�ؘ�r�!���ے������1���,�����z{��!߰B�;�P9h۴��n�,����2I�FR$a�=��{�d0��4�8�&+3�V�J3��Le\hĜt�X��}��\dg��Q~�ݠ��l}�O��5z[ɱ��b��|
    %sS�*�nl����Q�q�Bx^�Wܐ��G}�!Qd�"�`��]��K��;��
    �uȾ���0-��ê�L6U�@+���0�ٞ.�����'.�F]�l:5�SZ�����v��.��$,��L�kow��+Ig�+{�)s�P�VNFH�����&R4G��К �����(�5�Sx�cW��RV�}E�햐!I��0M?�{5F�g@�'4k�-��B:��~k�q��Y���|-�����vӋ�$J��b��ʮ#������u��>B���2�K�	�vt�W ���g�O��(��kԠ�8I��QT;�'���;�-�-�(�y��X
    �p�:Nz��W��"6�r�XP�_�]��|ǔ�Ǡ�T��I.�N��n�o���HQ��Z��-�S+��5kf��ND��ueJ���,��}��Ƈ��PГ�`�E^O<�	(�b��
    �9���^�������2�#\i�=96ֿ�:��X�o�ơ�)��|�]"]9<�|TFn-|oh|���!�Rj����;O
    E����T�K��|$�0 �S&u9U�N�q�2�5��}���Z�fd���ct~��P�N=���lk%�@������z�m�rJ}��whm��=�Yq*(_!Z�J�s�G��>'�۟Q�t5(M���<
    :
    K�D�$?ͭ���F��{ ����f���xh7|h�-�����3]�_*��Nc33�^c{v̵M�XD�8�b!��l
    �
    i\V�k�&Ȭ�5�V���$�*S�w�Q�o��Z?��:o]w�w�t���m.sw��𾧧?�g����p2���a.�������1T3�J3��%6��������A�)Ӥ���R�~7�����)�R�g����#LB���e����yq�xqT
    �q�ERW��lw��-%����r��؂�S����k=ؓV7K3��mү�ߥ%\�
    �W�–�r,����\w!f�n�~7��S l�S[U���㯙�T�{ls�6�"��_~�hQ���E�������7�U�_M"&�X{kK�)�F��d�"����&X*O�pM��$�)����}�J������ �qu:2����u�����y�婳D��)�G��F>(��,�va^���>6x�Gm�[��	;
    ڈ����boFvں�[zʾn��#9�7��N��,�36�U�����9��b����WF���.�TN8
    �Ѩd��қjTF�?1j�z�L�-�O�ҕ�/x���:�{v�����B�]`Y���}1�5Z�ʤ�s�u�̀�A�q�F���W`�"�{:�	�o�`T<��O�u��^��=�+�מ��`	oA�2��7h��)F����O?�,[u-
    6�]<Pi<���K�\��Y[�̲c%6KW��Ά��duF�.�������`���v��I��ȁ(����ܲ��P�n�h���n�8pha�M��0�r}�J���=��A|���s�M�+<���X�R�%��Ѩ�ؒ�܎/d�O+C>ZF,�Ѩ��oM�4�Fz��Y��$�ǏvޗQܫ�-D�V��Lܿ��SW3�}�W�|�l�}3��zSm���Y݅�o ��&\�L�����,;��L:�Zs)=��
    ��b4�$�n9��u�kr&���&���/��-��j�fbII՜��J����v��NN9��{v�s�ߧ�B
    ���`y��}��wC�ИMW;��/��E9Ѣ��e�^�ٱ��O'�7�'X�R��%�`m%'��D��91�V�N��
    ��!����6H�B�Z��A>1�~5����t ݴvH�W�q�|��ד�4���)Y�m[�eRې�ۮ�RmK��)�/_�٥$�
    ���m{���<
    �5"'�D�����U�&�d�KXS����:F��/�By2АP԰�XaL�%�*��aHon�Y�
    ��J��;ͷ����g}���S,�k^
    A�z~�)�w;,̰�������	} rx���������p���fͳ�P��������*4�o���깧�H¾zT�K�8���ܶה�F����^�ۨ'B�+�>��d9e�7�˘M��cp�'~a²�:���M���.+��\����ȧ�3�ť�+t$r�0�2�'�F �_1�mE)U������
    ,��_��%'�P�l�$VJ�u��I—���]�R�}�.���~�Y
    �{6*wڭR���輻�BԶऌ��p#sBudOYI����,OV9����+H
    ������zq��5��R�&���s��IpC�*����-@;#�+�N4�9u�ސ��e*��v��+C��Ĕ�Y�I&݌,3�Y��4�G�8*�U~xm�o�/1E�S��ϟg8�a!�5���f�.#�/I�Tv�JK�W����沭U���N�g��^�^�B<�l�YFۛ�E�R�8�d���C��Q��~)��(�Ӓ81{�oQ�g�P�߲��D���-QlYBv����V��#���S���a��I��
    �"'X�O�H��;������/3�v�[�&i����*c�_ͼ��W���,6�d�;�M�y{�j� �Oź�عV\Fg�>OOx7��6J�=�Y��k��r�%�ԭe�������j��&�@��VG����t)�h;����k��-^�yȯP*A�������9�#����'J�zE�i�l��Ѽ��7�$ه��,kb"�����rT>"�ա��>��%�!�ǰ!k-=�Ce�U�����1����(��?�g$ H��w�i�f��	!���S;��J��d�U�Z��Çц����˺�%VV��OO��40���x�<w�8�»���E�4q��ԅo���S�R��)qv�y����z���'�ś���F�s/���|v�
    5+\S�x�H�:\������q�^ ��z�o�!})X��<g�3:��;
    Ho�J,��w�p�7n�z1�tc�����Bj̇i�a@XT��/E>	b|w36���Y^-#3���Y,]�v�
    ��
    9�}oyU�s"��ZW��,��M��ol
    �����g��
    ~G�+jʹ��+��x���\�̧{[�N�{�ה���i�AjQ���A�J�3���V��k7׌�1�k�A�S8��"�Յ�s���+ `»?��V�!�֊���s�\�Н$�@꬀ťm���*�`�7-�聾f��� �� [��i�U�Pi_�+����E�ž�- <w
    ߋ������#L�ѕ]��*T�y$��a>�����)�!�=B�̒,E���O�q�e�<vMc���3F-�>&�5ep\��,ՙҿ
    @�M>Z[Bf���'���x͍�������".���]�
    '1)O������.O�;����Cd���f�P6��cy��q��,���Xs9�w���٩O���˩ē�?��\l���"~��o�Oe�fd�!�i�3n	 <�}�;UvB�h�n�P_W���6n�`�Aʔ9�h�rBV��G�z$_�͚���3Z����l��[��l�,#��JYу(��f0p��t�H1�T%�=����T+K�X��ED������Z�,jOq���
    �nm̍s���uyΊ:
    �fFr�y�Qoo�Jc����E� e�z{�݇�CY�-�#%+M��a�}�<�
    ��]G��u�d-��T��1%
    E����tv��S	l�ޱ>���c+$�}����D?��hh�lN�H߫�Fm^4�&����]i)�U}�����f`-�� �N���cg���	�6��\ƍp��P˘�>���yPy[��3��r�2���0w��z$I�`)�������y�AwEE���	k���w� �:ؐI�vU��y�ޥ�}��.�_��](�t��q?0<�w���8+egh�ש�7H����!Κ8���ф?@�y[��o�kD��\��`.u,[���ɇPF�He3�
    ��.?����(���Q��Y��P?H,�*��n�O ��@,�M�Q���2�Z�����y��T���XX���bZ0;�HT�p�E�7:�H�&̬�φ���"5�H<gX,�Ҽ�i�Z��@ɍiBB1�	��9Y�I䌱�!�]���"�N-^pt��63��&2t0������� $:��o��H+(0���|����lH�1g�oȚq���]O�Vʥ�_Uղ�p��"���h�>Qx[���n����]҉�����&k��9J��ݡ���>T�~�����%�;�ԩ\�*�д�}i�r�R�	-�KI�4��[qװFs:�h��$��]�^9��W���S�a�Ԃpm�ޡ�^��	Z���OF<B��䣉k��t�w�-Xl8���t3���ʁ�<���|�
    R����������ݏ� l/3�G�We�tG��(^)�	u�ٿ�&V}MfX�@�ф�L��V{�/l��&<uF����k�w7\G�j"�7����c
    ��2_�O�z�0��i�9Ȫ�Y��
    ��:ړN]IJI�9�kL[�0`��7<2�/U����;�V)���>X���ng�71�����+9�R���:�,H����h�Q(�LE�V���w,���n_F�$3uԳ6�q,�c�G�zS��j^��2��rfޮRޱ#"F�b�#�KD-/�5���`r�@��.���N��^�����o��~�����e�̒Óܻ���n[�5�	NJ�)�3�Œ��@�HwU�ˎ+�Űb�G��x�^қ���V2�Wf��{R1��t�1�L�(�"�O;�� �a:V��6US��pH���$ܾ�s*.�4�I'�
    
    ۼ/���ݺ�-���^�!	��@��y����)E��pf�T���0�JD��%�n�0�Mw������X�D��5؂�cB���dG�E����H��hrM�[���]��^X\c�a3W����:
    ��:��@-��ف����C��b�i�ݵ���ĺS�WF�k�ϡj*6� �$2tM$��5�)*k#��֮��H���^�)��.
    ���9D�T��PIԜ, p;�}��~lP��z�86
    ���������i���h3�~1����iԄ�H���O�j�_���;�rN�KJ*m�-\3ϭ�O��E������D�2;�H�q\5։5ԡ�=G��7Fq�j��ׁޯe='
    U��i�+�Y9(���b�/���B�ƒk�mq+L�����p#S�Q�y/J1S3P��q���X�ʠ��^��˻#W?D;�N�iq�����8zs|I>ܣ�w��q�	v���Ps��޺�n.��&�������1��J���N��
    ��+,?���*��K:�]�}����NZ��n�r���Z�����6��R+�.!G���6u�v��$���y���0�Z�7�
    ��&�[���$���Xu*E��D����I�$�n���Ϗ�0oAGTdX=�-�]F�v-Q�r`��:*�G���SDK�~lVs<��$m��p�N�L5}�*�'P�k0q%���nN�Pu�4�&χ]����_Y}���b��5+ 6��n�=F(g�&#2۵筘-�	Rt{��W�\@�Ջ����"W�(��	Y�'�T��qJ�6!FN��c��YT��xU��9�
    �fn}�=���`��[�� ���e)�K��
     2����Ŵ�0�ƞ����W�Z�:�=N�3Q�t��B�Y�8pw�F�y�JǮ�:�ދ~�����A_�?�m�N�[G���ޚ����OH�}����!^�	m_����v[T�������'����¦��q�)�`���~������.��1�_���L3�f�_��gSAVe{>��nT���\�䇟6��)uo�̒ٸ���×z���(dV���K�魴�5eq�ң<ɝ�\	=[u`�yl�k����P���ݔXҨ�o��Gi%� 9/R5=�A�wmJ�YjA�l7-� v'B���b�}�g�PK�d�>-,��銐?Z�L�^l~��6\�'���Tp~�눋��xd��~�S���v����E��,t됉����]~+�A�Z�=EjH%}���$�T�dV�e�����1B�I����m$o^�å}��[��V'�Bi��k���7
    _vp�̂���	����"��U���\s]��R@�	�����x�z����*%�9���W9�C����5\;W[By�Iš��F}y4ڠ��b�
    �p������D�J��N�]�e�L�N���*�&5/���b�������<�AKx�f���
    *�1�}��o3����,$^
    ����ґ�q�5Ia2J�s��m*H[�R"6)ľ&�
    r��I�s
    
    Yyҷz����׫@���4��Ata"�>	�W�0���Q�N�F�}3�����J�w5R)�����#���zP��wDn@mtի�G�A���� >I��Qa�Bq�2�㡒G��x1�3r2j�d�+�
    �^%��)Q�՜��K��߾�J���*n�X�Ƞ7Vl�Bi�F�Ш�
    ��aL��n��`Շ\�JFc�����^��\]vܴ�0eNAnI�0�)�d\��	z�޶*aTX�ij
     
    �!�X�n��$���G���� áZ�r��0410���+�Gl��-��(5�#\��O@���*0��Z�X�(S�"���Ccu����ء`�����(K�V
    g0?:��H
    ��df�a��%�(͎�dn��*xHJ1��Ż^&�X�[�����A��l�˗\ժ�#qg�����	O-�N���'-�8v�G�2�-�v��]�E"�r�(�<w��6���
    ��b��*,�\������ķ�����c��:Dk�z��LnfɅ���Bu���>�N��[��t�b�����4���f��:���S�l���<��f!"F��fG�C<�%�{��'���8�u1\!D�
    �`�ߒ��8�Q�1��,e�+���S��#\_���B�`��+^h0d��bB֫ە4�՗]"u6��x��kM�5�`s"	���A�-��W�8^s��.x�*��%{���=Kع��F�(��/ �2��]�⦝P���ɫ���c��^��(
    r�@�ݞD���‚3�&�@L�()Z���a�.����N�[�eq�bʈ���Dq�_�����Ph�D_�2kw
    C�—	D1��m
    �s2��<�&\����n���IV��s��_��%T}g��X���j�a���k$ӽ��U��	�qF�N"�^@�a��qx�i��H�����K�aHc��k$Y6 �oz�AZ�J(X�����\S~�X�����y�e�Aw=̃�,Bq�h�v Àf�k��y��XF��F������eJy�)M�LQ��R2�eA >������޺��
    �rf�
    C�n��l��E3;+	J=��5�6���N�}�H*_M�);o�_^��Z���8�+����(�zԅ<,>OT�L�S�z�#w��۔+�^��B�d���])����H���nw�S��@�" ��t	Og�#������_p�? �F���SH����n�N��(;P{oݭj��5�x^Z@�拠����4��78o[Q󼾧���r���Oˁ�9�>�
    ��Yr�2�g�n.8cB�D����M�c�-i�?����Jg��T��2E\���P{�����Ƈ{�Ϟ��0�٥�i��j��-c�w���!�[�Bf
    �짨��H��3��^�2��?�
    �c�ױ�&�0y�
    4�<�TjQ��E&鱐�)UЀ<]׺B��.��$���,� �Np}� �}L��@ȏQ�&���`��
    p���3��}��J5�.7k���`�O!X�1e�w���v�Hb�ǽ����o;xΟ��W�"���-�َ�"��"�IF�>�ѹ����[����IK�eC��j�"R.K�0��c���n�-o��kog�&�w��%��(�$�F�'=��z��	A0`،*DD��1���AŨG+Zw�aD��/�E(ʌ.S�|���;Y�!.�wb��6P����N��=y?I�����P+�!jB��<��ӳ	O~��%z2�v���X��N,E��c�d�!r�Z��ܫ2�j��B�-��JE�̋	����B��lID,0/��ݜ�V���KƵ�V��f�Gĉ�����R�qT$dk�d|�if~_Ӯ^?�T�;k�&�;��u��]&��t�v��|���r���ZȈ��_���0�f�cZC*�p�)�m��k5��Q��W�23��4�ˤ%�DŽ��5�Th��`G)�1F,��_��1P��n7����>eaW�r�-�� Ш������5/�cU��N�����
    ��v�l�Mv9�&/|�M��l3AҰ��d���}��s��nOj�?�>T�t颇&1=9���Q��^k<�f_3ɭ褛�ԛ{k�LĞ7��71�����3"�g#�C�.�Z��?�'������.&�_N�3���
    �ݴX����f���b��{�=�5�۽I��*�0x93rA<�T��+Z6zM���o�9JD���B��gK*�4�fŔK���T?%���[)��m���|�}�&״#X���X7��X�?֝��Ou�~GGV�ߡ���Z�Cn����C@�?�.�=�,�"u�^h�$e�a`a�9@4�\��,(�%t��Mh�T֢���ۮ��V]�{\]��և3����zĮ�8گ�Zi\�wO�!��3t��h9����c�U���-b�W�8���Ӟ���G��fZ�Yf*� 6C����r�;�fR��%D����@'��YW2�%��7�y̴�� .�&S����P����-�6c��zX˲$���lጳ��5�6r��
    �\3d��wkḶ'��a$Y��+�v���	����OjV���<'�k��&����p���
    O ���ˑ�u��a�`��m�Y����\wQ�x��ԕ�gC+��Cm�{�ޤ���*o��
    z��ʓdV��\�S6���s�ۦ�ҟ8э������h-����(��@|�&EǶsa_���Q{`^P�+%�5��ҫ0͛Qgy�3z�)�A�.��걹�
    �Q�����*��u4b�H���uyZ_L�&&Wؼ�(����[)�N��%��~{r�jx-o#ֆ0cp����(��fo�K�4�#�Dh�i�Ƶ����6,��g�YZ
    txt. 

    8231.vsdk_log_2020_09_23_1600.txt

  • Hi,

    >> As you mentioned The chain : Capture->Alg_SoftIsp16 (EVE4) -> Encode -> Null works great at 30 FPS
    This indicates there is no issue in the Alg_SoftIsp16 Algorithm.

    >> Adding in the Object Detection, SOF, etc will drop the FPS output of Soft_Isp16 to less than 5
    This is the expected O/P because The Alg_OpenVX algorithm will take around 230ms to process one frame. So the total FPS is supported in a chain is
    FPS = (1000 ms) / (Maximum Time is taken by the link in the chain)
    FPS = 1000ms/ 230ms
    FPS = 4

    >> [HOST] [IPU1-0] 41.769779 s: Network file size is different than sTIDL_Network_t structure size !
    Can you share the network file used in the use case? need to check the size of the file.

    Please share the O/P of make -s showconfig
    I will try to implement the same in HLOS & let you know.

    The attached files are not in the readable format so please share it again.

    Thanks
    Gaviraju

  • Hi Gaviraju,

    My comment regarding the FPS drop was both with and without the Alg_OpenVX in the chain.  I didn't test SOF on its own but Object_Detection on the DSP, without Alg_OpenVX, also has a big hit on FPS.  Is there a document somewhere that lays out the processing duration of the different algorithms?

    Here is the network binary:

    tidl_net_jdetNet_ssd.zip

    make -s showconfig output:

    joe@ubuntu:~/PROCESSOR_SDK_VISION_03_08_00_00/vision_sdk/build$ make -s showconfig
    #
    # Build Config is [ tda2xx_evm_linux_all ]
    # Build Config file is @ /home/joe/PROCESSOR_SDK_VISION_03_08_00_00/vision_sdk/configs/tda2xx_evm_linux_all/cfg.mk
    # Build Config .h file is @ /home/joe/PROCESSOR_SDK_VISION_03_08_00_00/vision_sdk/links_fw/include/config/apps/tda2xx_evm_linux_all/system_cfg.h
    # Build CPUs is @ ipu1_0 a15_0 dsp1 eve1 eve4
    #
    # CPUs included in application,
    # PROC_IPU1_0_INCLUDE=yes
    # PROC_IPU1_1_INCLUDE=no
    # PROC_IPU2_INCLUDE=no
    # PROC_DSP1_INCLUDE=yes
    # PROC_DSP2_INCLUDE=no
    # PROC_EVE1_INCLUDE=yes
    # PROC_EVE2_INCLUDE=no
    # PROC_EVE3_INCLUDE=no
    # PROC_EVE4_INCLUDE=yes
    # PROC_A15_0_INCLUDE=yes
    #
    # Platform config,
    # VSDK_BOARD_TYPE=TDA2XX_EVM [options: TDA2XX_EVM TDA2EX_EVM TDA3XX_EVM TDA3XX_RVP TDA2XX_RVP]
    # PLATFORM=tda2xx-evm
    # DUAL_A15_SMP_BIOS=no
    # IPU1_SMP_BIOS=no
    # DDR_MEM=DDR_MEM_1024M [options: DDR_MEM_128M DDR_MEM_512M DDR_MEM_1024M]
    # EMIFMODE=SINGLE_EMIF_512MB [options: SINGLE_EMIF_512MB SINGLE_EMIF_1GB ref build_pdk.mk]
    # NDK_PROC_TO_USE=none [options: a15_0 ipu1_0 ipu1_1 ipu2 none]
    # NSP_TFDTP_INCLUDE=no [options: yes no]
    # TDA2EX_ETHSRV_BOARD=no [options: yes no]
    # FATFS_PROC_TO_USE=none [options: ipu1_0 none]
    # RADAR_BOARD=none [options: TDA3XX_AR12_ALPS TDA3XX_AR12_VIB_DAB_BOOSTER TDA3XX_RADAR_RVP none]
    #
    # Build config,
    # BUILD_OS=Linux [options: Windows_NT Linux]
    # BUILD_DEPENDENCY_ALWAYS=no
    # BUILD_ALGORITHMS=no
    # BUILD_INFOADAS=no
    # PROFILE=release [options: debug release]
    # KW_BUILD=no
    # CPLUSPLUS_BUILD=no
    # IPU_PRIMARY_CORE=ipu1_0 [options: ipu1_0 ipu2]
    # IPU_SECONDARY_CORE=ipu2 [options: ipu1_0 ipu2]
    # A15_TARGET_OS=Linux [options: Bios Linux Qnx]
    # BSP_STW_PACKAGE_SELECT=all [options: all vps-iss-dss-only vps-vip-vpe]
    #
    # Safety Module config,
    # RTI_INCLUDE=no
    # ECC_FFI_INCLUDE=no
    # DCC_ESM_INCLUDE=no
    #
    # Video Module config,
    # IVAHD_INCLUDE=yes
    # VPE_INCLUDE=yes
    # CAL_INCLUDE=no
    # ISS_INCLUDE=no
    # ISS_ENABLE_DEBUG_TAPS=no
    # WDR_LDC_INCLUDE=no
    # DSS_INCLUDE=no
    #
    # Open Compute config,
    # OPENCL_INCLUDE=no
    # TARGET_ROOTDIR=/home/joe/PROCESSOR_SDK_VISION_03_08_00_00/vision_sdk/../ti_components/os_tools/linux/targetfs
    # ENABLE_OPENCV=no
    # ENABLE_OPENCV_TESTS=no
    # OPENVX_INCLUDE=yes
    #
    # Log config,
    # ENABLE_UART_LOG=yes
    # ENABLE_NETWORK_LOG=no
    # ENABLE_CCS_LOG=no
    # CIO_REDIRECT=yes
    #
    # IPC config,
    # WORKQ_INCLUDE=no
    # IPC_LIB_INCLUDE=no
    #
    # AUTOSAR_APP=no
    #
    # Surround View config,
    # SRV_FAST_BOOT_INCLUDE=no
    #
    # Other Module config,
    # AVB_INCLUDE=no
    # DCAN_INCLUDE=no
    # RADAR_ONLY=no
    # RADAR_STUDIO=no
    # CPU_IDLE_ENABLED=yes
    # FAST_BOOT_INCLUDE=no
    # DATA_VIS_INCLUDE=no
    # HS_DEVICE=no
    # ULTRASONIC_INCLUDE=no
    # PGA450=
    # PGA460=
    # ENABLE_ALL_DEPTH=
    #
    # Linux config,
    # DEFAULT_UBOOT_CONFIG=dra7xx_evm_vision_config
    # DEFAULT_KERNEL_CONFIG=ti_sdk_dra7x_release_defconfig
    # DEFAULT_DTB=gm_isn_g7-0_boson.dtb gm_isn_g7-0_og.dtb gm_lesa-m.dtb
    # CMEM_INCLUDE=yes
    # IPUMM_INCLUDE=no
    # IPU1_EVELOADER_INCLUDE=yes
    # ROBUST_RVC_INCLUDE=no
    # BUILD_ADAM_CAR=no
    #
    # Alg plugins included in build,
    # ALG_objectdetection ALG_softisp16 ALG_openvxTidl ALG_tidl ALG_tiop
    #
    # Use-cases included in build,
    # UC_vip_single_cam_enc_dec_sgx_display UC_gm_test
    #
    #
    # CPUs that are NOT required but included in config [ tda2xx_evm_linux_all ],
    #
    #
    # CPUs that are required but not included in config [ tda2xx_evm_linux_all ],
    #
    #
    # Edit /home/joe/PROCESSOR_SDK_VISION_03_08_00_00/vision_sdk/apps/configs/tda2xx_evm_linux_all/cfg.mk to include or exclude CPUs in an application

    Thanks for your help!

    Joe

  • Hi,

    The attached usecase chain image is not visible in the last post. So can you share it again asap ?

    Thanks

    Gaviraju

  • Hi Gaviraju,

    In my last post, I hadn't posted a new usecase.  I have tested a few different tweaks to the usecase in an effort to see what is and isn't working but, with regards to our discussion, I have been keeping it functionally close as I can to your RTOS usecase with the exception of moving any required components to different cores for Linux.

    Anyway, here is my current usecase.

    Thanks!

  • Hi,

    I ported the use-case from RTOS to HLOS, use this as reference & modify according to your use-case.

    tidl_od_openvx_linux.zip

    I/P files: Copy this file into the /opt/vision_sdk/ folder 

    Inputfile.zip

    Thanks

    Gaviraju

  • Hi Gaviraju,

    I am attaching my usecase files and a log of five runs of the usecase.  I seem to be running into a recurring issue with TI OD similar to this thread:

    I realized partway through testing that I hadn't copied the files into /opt/openvx/test_data but I don't think those are actually used in the usecase.

    Here is my usecase:

    gm_test.zip

    and the log from running the UC.

    vsdk_tidl_log_2020_09_28.txt

    On some of the runs, I am getting several frames (less than a second's worth) correctly encoded which I can run with VLC but I haven't actually bothered seeing if any of the object detection is actually working since the system just isn't running long enough to be worth that test.

    Thanks,

    Joe

  • Hi,

    From the log, the below error is noticed.

    [HOST] [IPU1-0] 163.871256 s: ### XDC ASSERT - ERROR CALLBACK START ###
    [HOST] [IPU1-0] 163.871317 s:
    [HOST] [IPU1-0] 163.871439 s: E_hardFault: FORCED
    [HOST] [IPU1-0] 163.871500 s:
    [HOST] [IPU1-0] 163.871561 s: ### XDC ASSERT - ERROR CALLBACK END ###
    [HOST] [IPU1-0] 163.871622 s:
    [HOST] [IPU1-0] 163.871835 s:
    [HOST] [IPU1-0] 163.871866 s: ### XDC ASSERT - ERROR CALLBACK START ###
    [HOST] [IPU1-0] 163.871957 s:
    [HOST] [IPU1-0] 163.872049 s: E_busFault: PRECISERR: Immediate Bus Fault, exact addr known, address: 37a49dc0
    [HOST] [IPU1-0] 163.872171 s:
    [HOST] [IPU1-0] 163.872201 s: ### XDC ASSERT - ERROR CALLBACK END ###

    To resolve the above issue follow the below instructions.

    • Run the "OpenVX TIDL Object Classification" use-case (Choose the option 3)

    [HOST] [HOST ] OPENVX Usecases
    [HOST] [HOST ] ----------------------------
    [HOST] [HOST ] 1: OpenVX v1.1 Conformance Test
    [HOST] [HOST ] 2: OpenVX Tutorials
    [HOST] [HOST ] 3: OpenVX TIDL Object Classification
    [HOST] [HOST ] 4: OpenVX TIDL Object Detection
    [HOST] [HOST ]
    [HOST] [HOST ] x: Exit
    [HOST] [HOST ]
    [HOST] [HOST ] Enter Choice:
    [HOST] [HOST ]

    • Stop the demo (by press "0")
    • Run the "OpenVX TIDL Object Detection" use-case (Choose the option 4)

    • Skip the above step if you want to run the custom "OpenVX TIDL Object Detection" use-case.

    Thanks

    Gaviraju

  • Hi Gaviraju,

    I created my own inData.yuv so I was able to tweak the OC usecase a little bit to get that running and incorporate your recommendations to get my usecase running at a basic level.

    Several questions:

    1) Can this usecase be readily parallelized, using the tidl_OD RTOS usecase as an example, to use multiple EVE & DSP cores to improve performance?

    2) The accuracy seems to be pretty poor.  It is catching a lot of objects that aren't actually objects and fails to pick me up walking through the frame from any distance.  I tested from approximately 10 feet up through 30 feet and it didn't capture me in a single frame.

    3) My camera is outputting at 30 FPS and the tidl algorithm is outputting at around 3 FPS.  This creates a good video when the CV algorithm is excluded but it creates a very jumpy recording that looks like it is skipping a lot of frames.  How do I adjust the settings so that it encodes correctly?  Functionally, it looks like it is recording at 30 FPS but is encoding at 3 FPS so the playback rate looks like it is 33ms per frame rather than 300+ms per frame.

    Thanks for your help! I have made a lot of progress with your guidance.

    Joe

  • Hi,

    1) This will not be supported for tidl_od_openvx use-case & you can port tidl_OD use-case from RTOS to HLOS if needed.

    2) Can you share the O/p snapshot?

    3) This is expected O/P because the default tidl_od_openvx use-case is supporting only 5FPS for 768x320 resolution & in your case, the resolution 1080P so 3FPS is expected.

    Your chain can only support 3FPS only & recording also running at 3FPS only. Because the TIDL_OD openvx is taking more time to process one frame & this is already explained in my previous post.

    >>> This creates a good video when the CV algorithm is excluded but it creates a very jumpy recording that looks like it is skipping a lot of frames.  How do I adjust the settings so that it encodes correctly? 

    Can you share the chain you have created with excluding the CV algorithm? & also share the logs with statistics.

    Thanks

    Gaviraju

  • Hi Goviraju,

    1) I have been working on porting the usecase over and this seems to be a not-trivial task as it is with a lot of other usecase ports.  I don't particularly NEED to be on Linux for my purposes (and ultimately would be porting this whole system to RTOS down the road anyway but wanted to take advantage of some Linux tools during development--mostly things like ssh, python, and scp which have been enormously helpful in developing the soft_isp16 algorithm and, eventually, I plan to do more tweaks on that front.  In your opinion, what would be your course of action for my system at this crossroad?  It is looking like a lot of work to port the tidl usecase to Linux but also a lot of work to port the rest of it over to RTOS.

    2a)  this one performs Capture -> Alg_SoftIsp16 (EVE4) -> Encode -> Null (A15) 

    2b) This one is performing the recommended OpenVX usecase:

    3) I don't have the stats immediately available.  I can re-create the usecase without a huge amount of hassle but the logs were pretty boring--I was getting no FPS drops at any stage.  Still, I CAN do it if it will help the process along.

    Thanks,

    Joe

  • Hi,

    1) The porting or creating new TIDL OD use-case in HLOS will not take much time & here we are running the use-case from HLOS & the actual TIDL OD link is running on the Bios core

    2b) I playback the video & it's not detecting the car. so I will check with the expert regarding this issue & let you know.

    3) Stats not required.

    Thanks

    Gaviraju

  • Hi,

    2. Can you first check import tool output is correct before running in the usecase?

    Import tool also outputs the detected objects in "stats_tool_out.bin" file, please refer to below e2e thread on how to read this output file for visualization ..

    https://e2e.ti.com/support/processors/f/791/p/679186/2502331#2502331

     

    Thanks, 

    Praveen

  • Hi Praveen,

    Thanks for the response.  I'll give this a try soon.  Will this still be necessary given I am using the files provided by Gaviraju?

    Thanks,

    Joe