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.

Development of alg_plugin on DSP using VisionSDK(2.10) Linux

Hi everyone,

I am trying to develop a algorithm plugin which uses DSP core. However Iam getting assert  from algorithmLink_algPluginSupport.c at line OSA_assert(algId < ALGORITHM_LINK_ALG_MAXNUM) because ALGORITHM_LINK_ALG_MAXNUM is 9 here as algorithmLink_cfg.h has link only for A15.

To develop algorithm plugin for DSP, what steps must me followed,please guide me.

Hardware used :TDA2x

As I am working on VisionSDK on linux platform,I may have been missing some steps.

Thanks in advance.

Regards,

Neha

  • Hi Neha,

    You will have to update file \vision_sdk\include\link_api\algorithmLink.h & enum AlgorithmLink_DspAlgorithmId.
    Please refer VisionSDK_DevelopmentGuide.pdf section 4 for steps to add a Algo Link.

    Regards,
    Sujith
  • Hi Sujith,

    Thanks for quick response.

    I  have updated the enum AlgorithmLink_DspAlgorithmId used in "algorithmLink.h" .

    Also I have referred  VisionSDK_DevelopmentGuide.pdf and have already created algorithm plugins on windows part of vision SDK which successfully build and compiled for me on TDA2x.


    But on linux part of vision SDK when I am creating new plugin on DSP which is not working .

    It would be good if you can share the example plugin (Which will run on DSP/EVE) on linux part of Vision SDK .


    Regards,

    Neha

  • Vision SDK 2.11 has algorithm link ported to Linux and many other connector links (dup, merge,sync, select, gate). There are some alg plugin examples e.g. vision_sdk\linux\examples\tda2xx\src\alg_plugins\framecopy\frameCopyAlgoCpu.c which you  can refer.

  • Hi Yogesh,

    Thank you for the response.
    I have referred the framecopy alg_plugin from VisionSDK 2.11 ,but this alg_plugin runs on A15.
    I am trying to develop alg_plugin which runs on DSP. I have updated the enum AlgorithmLink_DspAlgorithmId used in "algorithmLink.h" .

    But it throws assert from algorithmLink_algPluginSupport.c at line OSA_assert(algId < ALGORITHM_LINK_ALG_MAXNUM) .

    The ALGORITHM_LINK_ALG_MAXNUM is mapped to ALGORITHM_LINK_A15_ALG_MAXNUM in algorithmLink_cfg.h,therefore the value of ALGORITHM_LINK_ALG_MAXNUM I am getting is '9'. How to map ALGORITHM_LINK_ALG_MAXNUM to ALGORITHM_LINK_DSP_ALG_MAXNUM i.e '26'.

    Regards,
    Neha
  • oh ok . Then you dont need to use A15 side AlgLink at all. I think we are confusing this, Alg link that runs on DSP / EVE will be added to vision_sdk\examples\tda2xx\src\alg_plugins only. Please see how this usecase is implemented vision_sdk\linux\examples\tda2xx\src\usecases\vip_single_cam_framecopyEve_sgx_display

    It uses Alg plugin on EVE and also works with Linux on A15. You dont have to map MAXNUMs they are separate for each core.
  • Hi Yogesh,

    I created a new use case using alg_plugin from vision_sdk\examples\tda2xx\src\alg_plugins\framecopy.

    Usecase is as follows:

    Capture -> Alg_FrameCopy (DSP1) -> SgxFrmcpy (A15)

    SgxFrmcpy -> Display_M4 (IPU1_0)

    GrpxSrc -> Display_Grpx

    The usecase is created at vision_sdk/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyDsp_sgx_display. The usecase is compiled with no errors.

    I have added Vps_printfs inside alg_plugin to see if the same alg_plugin executes, but at runtime not a single printf from alg_plugin executes.Iam not understanding if the alg_plugin from vision_sdk\examples\tda2xx\src\alg_plugins\framecopy is executing or not.

    Please help me,as I am stuck.

    Thanks,
    Neha
  • Hi Neha,

    I presume that you have modified usecase at V:\user\sujith\VSDK\vision_sdk\linux\examples\tda2xx\src\usecases\vip_single_cam_framecopyEve_sgx_display\chains_vipSingleCamFrmcpyEve_SgxDisplay.c to use frameCopy in DSP 1.

    If not, it's recommended to use the above, to start with at least.

    Also, ensure in file vision_sdk\linux\examples\tda2xx\src\usecases\vip_single_cam_framecopyEve_sgx_display\chains_vipSingleCamFrmcpyEve_SgxDisplay.c and in function chains_vipSingleCamFrmcpyEve_SgxDisplay_SetFrameCopyAlgPrms ()

    set pPrm->baseClassCreate.algId to ALGORITHM_LINK_DSP_ALG_FRAMECOPY

    Regards,
    Sujith
  • Hello Neha,

    Before checking in the alg link, please check if the capture itself is running file.
    Press 'p' on the UART console, to print the stats. From these stats, we can figure out if capture is running fine or not and also probable issue.

    Regards,
    Brijesh
  • Hi Sujith,

    Thank you for the response.
    I have ensured in file vision_sdk\linux\examples\tda2xx\src\usecases\vip_single_cam_framecopyEve_sgx_display\chains_vipSingleCamFrmcpyEve_SgxDisplay.c and in function chains_vipSingleCamFrmcpyEve_SgxDisplay_SetFrameCopyAlgPrms ()

    set pPrm->baseClassCreate.algId to ALGORITHM_LINK_DSP_ALG_FRAMECOPY.

    The Id is set to ALGORITHM_LINK_DSP_ALG_FRAMECOPY.

    The usecase runs well,but I want to ensure if it uses the alg_plugin from vision_sdk\examples\tda2xx\src\alg_plugins\framecopy.
    To ensure this I have added Vps_printfs in the same inbuilt alg_plugin from vision_sdk\examples\tda2xx\src\alg_plugins\framecopy.
    But when I run the usecase I cant see a single printf.

    As stated by Yogesh: Then you dont need to use A15 side AlgLink at all. I think we are confusing this, Alg link that runs on DSP / EVE will be added to vision_sdk\examples\tda2xx\src\alg_plugins only. Please see how this usecase is implemented vision_sdk\linux\examples\tda2xx\src\usecases\vip_single_cam_framecopyEve_sgx_display

    It uses Alg plugin on EVE and also works with Linux on A15.

    I want to ensure if alg_plugin from vision_sdk\examples\tda2xx\src\alg_plugins\framecopy is used by my usecase or not.

    If I write my own alg_plugin which runs on DSP , where should I add it ,at which path. Also the usescase will be created at vision_sdk\linux\examples\tda2xx\src\usecases.

    Regards,
    Neha
  • Hi Neha,

    I hope you have updated file vision_sdk\linux\examples\tda2xx\src\common\chains_main.c and main function for case '3'
    The usecase is instructed to use EVE based FrameCopy plugin, if not, the frameCopy function is being executed in EVE and hence none of your prints are seen...
    #ifdef UC_vip_single_cam_framecopyEve_sgx_display
    case '3':
    gChains_usecaseCfg.algProcId = SYSTEM_PROC_EVE1;
    chains_vipSingleCamFrmcpyEve_SgxDisplay(&gChains_usecaseCfg);
    break;
    #endif

    To implement an algPlugin in DSP, request you to refer the userguide and any linux usecase that uses DSP based algPlugin's. OR please refer 3D SRV usecase implemented in vision_sdk\linux\examples\tda2xx\src\usecases\lvds_vip_multi_cam_3d_srv\

    This usecase uses couple of algPlugin written for DSP. Please refer the plug in implementation of "Alg_Synthesis" Its implemented in vision_sdk\examples\tda2xx\src\alg_plugins\surroundview\synthesisLink_algPlugin.c

    Hope this clarifies.

    Regards,
    Sujith
  • Hi Sujith,

    Thanks for the quick response.

    I have updated file vision_sdk\linux\examples\tda2xx\src\common\chains_main.c , created a new case 'n'.

               case 'n':

               case 'N':

                    gChains_usecaseCfg.algProcId = SYSTEM_PROC_DSP1;

                   chains_vipSingleCamFrmcpyDsp_SgxDisplay(&gChains_usecaseCfg);

                   break;

    I have referred the userguide document and created the usecase.

    I have also referred 3D SRV usecase implemented in vision_sdk\linux\examples\tda2xx\src\usecases\lvds_vip_multi_cam_3d_srv\

    Inside the alg-Plugin vision_sdk\examples\tda2xx\src\alg_plugins\surroundview\synthesisLink_algPlugin.c ,I have added Vps_printfs.

    But when a run this usecase of c: 4CH VIP LVDS capture + 3D SRV + 4CH SfM (3D perception demo - EVE1-4/DSP1&2) + DISPLAY - Only on TDA2xx with HDMI 1080p display" ,not a single printf is executed.

    Can you please tell me,where should I add my new alg_plugin which runs on DSP and usecase is created for linux.

    Regards,

    Neha

  • Hi Sujith,

    Thank you for the quick response.
    I have updated file vision_sdk\linux\examples\tda2xx\src\common\chains_main.c,created a new case 'n' as follows:
    case 'n':
    case 'N':
    gChains_usecaseCfg.algProcId = SYSTEM_PROC_DSP1;
    chains_vipSingleCamFrmcpyDsp_SgxDisplay(&gChains_usecaseCfg);
    break;
    I have followed the steps to generate the new usecase from userguide.Made all the required updates in chains.h and chains_main.c.
    I have tried adding printfs in file /home/nehab/VisionSDK2.10/vision_sdk/src/links_ipu/vip_capture/captureLink_drv.c to see if the usecase uses the same file to capture,but unable to see the printfs at runtime.

    I also referred 3D SRV usecase implemented in vision_sdk\linux\examples\tda2xx\src\usecases\lvds_vip_multi_cam_3d_srv\
    and added printfs inside vision_sdk\examples\tda2xx\src\alg_plugins\surroundview\synthesisLink_algPlugin.c, to verify if the alg_plugin runs when I run the usecase in vision_sdk\linux\examples\tda2xx\src\usecases\lvds_vip_multi_cam_3d_srv\.

    Can you please tell me the steps that should be followed ,for a new alg_plugin developed on DSP and the usecase created for the same alg_plugin at /vision_sdk/linux/examples/tda2xx/src/usecases.Also where one should add the alg_plugin.

    Regards,
    Neha
  • Hi Neha,

    Let me check and get back to you on Frame copy in DSP when running usecase in Linux.

    Regards,
    Sujith
  • [HOST  ]  =========
    [HOST  ]  Test Menu
    [HOST  ]  =========
    [HOST  ]
    [HOST  ]  Single Camera Use-cases,
    [HOST  ]  ------------------------
    [HOST  ]  1: 1CH VIP capture + SGX Copy + DISPLAY
    [HOST  ]  2: 1CH VIP capture + Encode + Decode + SGX Copy + DISPLAY
    [HOST  ]  3: 1CH VIP capture + Alg FrameCopy (EVE1) + SGX Copy + DISPLAY - (TDA2xx ONLY)
    [HOST  ]  5: NullSrc + Decode + Display (Only 1920x1080 H264/MJPEG Video Input Bit-Stream Supported)
    [HOST  ]  6: 1CH VIP capture + Alg Frame Copy (A15) + SGX Copy + DISPLAY
    [HOST  ]  7: 1CH VIP + Alg Frame Copy (A15) + Connetor Links (Dup, Merge, Select, Gate on A15) + SGX Copy + DISPLAY
    [HOST  ]
    [HOST  ]  Multi-Camera LVDS Use-cases,
    [HOST  ]  ----------------------------
    [HOST  ]  a: 4CH VIP LVDS capture + SGX MOSAIC + DISPLAY
    [HOST  ]  b: 4CH VIP LVDS capture + 3D SRV (SGX/A15) + DISPLAY - Only HDMI 1080p display supported
    [HOST  ]  c: 4CH VIP LVDS capture + 3D SRV + 4CH SfM (3D perception demo - EVE1-4/DSP1&2) + DISPLAY - Only on TDA2xx with HDMI 1080p display
    [HOST  ]  e: Surround View Calibration
    [HOST  ]
    [HOST  ]  AVB RX Use-cases, (TDA2x ONLY)
    [HOST  ]  ------------------------------
    [HOST  ]
    [HOST  ]  p: CPU Status
    [HOST  ]  i: Show IP Addr (IPU + NDK + AVB)
    [HOST  ]
    [HOST  ]  s: System Settings
    [HOST  ]
    [HOST  ]  x: Exit
    [HOST  ]  z: Exit - AND SHUTDOWN Remote CPUs
    [HOST  ]
    [HOST  ]  Enter Choice:
    [HOST  ]
    3
    [IPU2  ]     61.753370 s:  CAPTURE: Create in progress !!!
    [IPU2  ]     61.753919 s:  CAPTURE: VIP1 Slice0 PortA capture mode is [ 8-bit] !!!
    [IPU2  ]     61.866375 s:  CAPTURE: Create Done !!!
    [IPU2  ]     61.866955 s:  IPC_OUT_0   : Create in progress !!!
    [DSP1  ]     61.867870 s:  IPC_IN_0   : Create in progress !!!
    [DSP1  ]     61.868510 s:  IPC_IN_0   : Create Done !!!
    [DSP1  ]     61.868754 s:  ALGORITHM: Create in progress (algId = 0) !!!
    [DSP1  ]     61.868937 s:  ALG_FRAMECOPY: DMA: Allocated CH (TCC) = 0 (0)
    [IPU2  ]     61.867412 s:  IPC_OUT_0   : Create Done !!!
    [HOST  ]     61.884432 s:  IPC_IN_0   : Create in progress !!!
    [HOST  ]     61.885194 s:  IPC_IN_0   : Create Done !!!
    [HOST  ]     61.885255 s:  SGXFRMCPY: Create in progress for resolution: 1920x1080 !!!
    [DSP1  ]     61.883822 s:  ALGORITHM: Create Done (algId = 0) !!!
    [DSP1  ]     61.884096 s:  IPC_OUT_0   : Create in progress !!!
    [DSP1  ]     61.884218 s:  IPC_OUT_0   : Create Done !!!
    failed to load module: /usr/lib/gbm/gbm_dri.so: cannot open shared object file: No such file or directory
    failed to load module: /usr/lib/gbm/gbm_gallium_drm.so: cannot open shared object file: No such file or directory
    [HOST  ]     61.890654 s:  SYSTEM_PVRSCOPE: FIFO /opt/vision_sdk/gpufifo opened successfully
    loaded module: gbm_pvr.so
    PVR: Hint: Setting ParamBufferSize to 146800640
    
    PVR: Hint: Setting MaxParamBufferSize to 146800640
    
    PVR:(Warning): PVRSRVOpenDCDevice: Warning - 138 returned [80, /bridged_pvr_dc_glue.c]
    [HOST  ]     62.045019 s:  EGL: version 1.4
    [HOST  ]     62.079424 s:  EGL: GL Version = OpenGL ES 2.0 build 1.9@2253347
    [HOST  ]     62.079454 s:  EGL: GL Vendor = Imagination Technologies
    [HOST  ]     62.079454 s:  EGL: GL Renderer = PowerVR SGX 544MP
    [HOST  ]     62.079454 s:  EGL: GL Extensions = GL_OES_rgb8_rgba8 GL_OES_depth24 GL_OES_vertex_half_float GL_OES_texture_float GL_OES_texture_half_float GL_OES_element_index_uint GL_OES_mapbuffer GL_OES_fragment_precision_high GL_OES_compressed_ETC1_RGB8_texture GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_required_internalformat GL_OES_depth_texture GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_standard_derivatives GL_OES_vertex_array_object GL_OES_egl_sync GL_OES_texture_npot GL_EXT_multi_draw_arrays GL_EXT_texture_format_BGRA8888 GL_EXT_discard_framebuffer GL_EXT_shader_texture_lod GL_IMG_shader_binary GL_IMG_texture_compression_pvrtc GL_IMG_texture_compression_pvrtc2 GL_IMG_texture_npot GL_IMG_texture_format_BGRA8888 GL_IMG_read_format GL_IMG_program_binary GL_IMG_uniform_buffer_object GL_IMG_multisampled_render_to_texture GL_TI_image_external_raw_video
    [HOST  ]     62.079851 s:  OSA: MEM: ALLOC, addr = 0x84f32000, size = 8294400 bytes, heapId = 1
    [HOST  ]     62.083816 s:  OSA: MEM: ALLOC, addr = 0x8571b000, size = 8294400 bytes, heapId = 1
    [HOST  ]     62.087537 s:  OSA: MEM: ALLOC, addr = 0x85f04000, size = 8294400 bytes, heapId = 1
    [HOST  ]     62.091502 s:  OSA: MEM: ALLOC, addr = 0x866ed000, size = 8294400 bytes, heapId = 1
    PVR:(Error): PrepareToDraw: Invalid drawable [1058, /sgxif.c]
    PVR:(Error): glClear: Can't prepare to draw [1080, /clear.c]
    [HOST  ]     62.185628 s:  SGXFRMCPY: Create Done for resolution: 1920x1080 !!!
    [HOST  ]     62.185689 s:  IPC_OUT_0   : Create in progress !!!
    [HOST  ]     62.185780 s:  IPC_OUT_0   : Create Done !!!
    [IPU2  ]     62.185933 s:  IPC_IN_0   : Create in progress !!!
    [IPU2  ]     62.187153 s:  IPC_IN_0   : Create Done !!!
    [IPU2  ]     62.187702 s:  DISPLAY: Create in progress !!!
    [IPU2  ]     62.188312 s:  DISPLAY: Create Done !!!
    [IPU2  ]     62.188983 s:  GRPXSRC: Create in progress !!!
    [IPU2  ]     63.695967 s:  GRPXSRC: Create Done !!!
    [IPU2  ]     63.696516 s:  DISPLAY: Create in progress !!!
    [IPU2  ]     63.697187 s:  DISPLAY: Create Done !!!
    [IPU2  ]     63.701945 s:  *** UTILS: CPU KHz = 20000 Khz ***
    [IPU1-0]     63.798054 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [IPU1-0]     63.798359 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 251112 B (245 KB)
    [DSP1  ]     63.798999 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [DSP1  ]     63.799091 s:  SYSTEM: Heap = LOCAL_L2             @ 0x00800000, Total size = 227264 B (221 KB), Free size = 227264 B (221 KB)
    [DSP1  ]     63.799213 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 524288 B (512 KB), Free size = 501552 B (489 KB)
    [DSP2  ]     63.799518 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [DSP2  ]     63.799609 s:  SYSTEM: Heap = LOCAL_L2             @ 0x00800000, Total size = 227264 B (221 KB), Free size = 227264 B (221 KB)
    [DSP2  ]     63.799731 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 524288 B (512 KB), Free size = 515328 B (503 KB)
    [EVE1  ]     63.800372 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [EVE1  ]     63.801683 s:  SYSTEM: Heap = LOCAL_L2             @ 0x40020000, Total size = 24576 B (24 KB), Free size = 24576 B (24 KB)
    [EVE1  ]     63.803940 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 253240 B (247 KB)
    [EVE2  ]     63.806746 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [EVE2  ]     63.808088 s:  SYSTEM: Heap = LOCAL_L2             @ 0x40020000, Total size = 24576 B (24 KB), Free size = 24576 B (24 KB)
    [EVE2  ]     63.810498 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 253240 B (247 KB)
    [EVE3  ]     63.813304 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [EVE3  ]     63.814615 s:  SYSTEM: Heap = LOCAL_L2             @ 0x40020000, Total size = 24576 B (24 KB), Free size = 24576 B (24 KB)
    [EVE3  ]     63.816873 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 253240 B (247 KB)
    [EVE4  ]     63.819709 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [EVE4  ]     63.821051 s:  SYSTEM: Heap = LOCAL_L2             @ 0x40020000, Total size = 24576 B (24 KB), Free size = 24576 B (24 KB)
    [EVE4  ]     63.823308 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 253240 B (247 KB)
    [HOST  ]     63.832855 s:  SGXFRMCPY: Start in progress !!!
    [HOST  ]     63.832855 s:  SGXFRMCPY: Start Done !!!
    [IPU2  ]     63.825870 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023
    [IPU2  ]     63.826175 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 248032 B (242 KB)
    [IPU2  ]     63.826572 s:  SYSTEM: Heap = SR_OCMC              @ 0x00000000, Total size = 0 B (0 KB), Free size = 0 B (0 KB)
    [IPU2  ]     63.826968 s:  SYSTEM: Heap = SR_DDR_CACHED        @ 0x84203000, Total size = 262144000 B (250 MB), Free size = 210995200 B (201 MB)
    [IPU2  ]     63.827395 s:  SYSTEM: Heap = SR_DDR_NON_CACHED    @ 0xa0100000, Total size = 1045120 B (0 MB), Free size = 787072 B (0 MB)
    [IPU2  ]     63.828066 s:  DISPLAY: Start in progress !!!
    [IPU2  ]     63.828280 s:  DISPLAY: Start Done !!!
    [IPU2  ]     63.832031 s:  DISPLAY: Start in progress !!!
    [IPU2  ]     63.832245 s:  DISPLAY: Start Done !!!
    [IPU2  ]     63.833709 s:  CAPTURE: Start in progress !!!
    [HOST  ]     63.839138 s:
    [HOST  ]
    [HOST  ]  ====================
    [HOST  ]  Chains Run-time Menu
    [HOST  ]  ====================
    [HOST  ]
    [HOST  ]  0: Stop Chain
    [HOST  ]
    [HOST  ]  p: Print Performance Statistics
    [HOST  ]
    [HOST  ]  Enter Choice:
    [HOST  ]
    [HOST  ]     63.839169 s:
    [HOST  ] Unsupported option '
    [HOST  ] '. Please try again
    [HOST  ]     63.839169 s:
    [HOST  ]
    [HOST  ]  ====================
    [HOST  ]  Chains Run-time Menu
    [HOST  ]  ====================
    [HOST  ]
    [HOST  ]  0: Stop Chain
    [HOST  ]
    [HOST  ]  p: Print Performance Statistics
    [HOST  ]
    [HOST  ]  Enter Choice:
    [HOST  ]
    [IPU2  ]     63.835905 s:  CAPTURE: Start Done !!!
    [DSP1  ]     64.857866 s:  Processed 30 frames in DMA mode
    [DSP1  ]     65.855822 s:  Processed 60 frames in DMA mode
    [DSP1  ]     66.853809 s:  Processed 90 frames in DMA mode
    [DSP1  ]     67.851765 s:  Processed 120 frames in DMA mode
    [DSP1  ]     68.849722 s:  Processed 150 frames in DMA mode
    [DSP1  ]     69.847678 s:  Processed 180 frames in DMA mode
    [DSP1  ]     70.845635 s:  Processed 210 frames in DMA mode
    [DSP1  ]     71.843561 s:  Processed 240 frames in DMA mode
    [DSP1  ]     72.841517 s:  Processed 270 frames in DMA mode
    [DSP1  ]     73.839443 s:  Processed 300 frames in DMA mode
    [DSP1  ]     74.837400 s:  Processed 330 frames in DMA mode
    [DSP1  ]     75.835356 s:  Processed 360 frames in DMA mode
    [DSP1  ]     76.833312 s:  Processed 390 frames in DMA mode
    [DSP1  ]     77.831330 s:  Processed 420 frames in DMA mode
    [DSP1  ]     78.829195 s:  Processed 450 frames in DMA mode
    [DSP1  ]     79.827182 s:  Processed 480 frames in DMA mode
    [DSP1  ]     80.825108 s:  Processed 510 frames in DMA mode
    [DSP1  ]     81.823064 s:  Processed 540 frames in DMA mode
    [DSP1  ]     82.821143 s:  Processed 570 frames in DMA mode
    [DSP1  ]     83.819008 s:  Processed 600 frames in DMA mode
    [DSP1  ]     84.816934 s:  Processed 630 frames in DMA mode
    [DSP1  ]     85.814860 s:  Processed 660 frames in DMA mode
    [DSP1  ]     86.812816 s:  Processed 690 frames in DMA mode
    [DSP1  ]     87.810833 s:  Processed 720 frames in DMA mode
    [DSP1  ]     88.808729 s:  Processed 750 frames in DMA mode
    [DSP1  ]     89.806685 s:  Processed 780 frames in DMA mode
    [DSP1  ]     90.804642 s:  Processed 810 frames in DMA mode
    [DSP1  ]     91.802598 s:  Processed 840 frames in DMA mode
    [DSP1  ]     92.800585 s:  Processed 870 frames in DMA mode
    [DSP1  ]     93.798542 s:  Processed 900 frames in DMA mode
    [DSP1  ]     94.796498 s:  Processed 930 frames in DMA mode
    
    Hi Neha,

    I made the changes that i had suggested to you and with those, i could get it working.

    Attached is the log and the changes that i have made. The patch may not apply directly, as I am not sure about the version of VisionSDK that you are using.

    In the log, i print once every 30 frames of Frame copy in DSP1.

    If you query is addressed, please mark the thread as answered.

    Regards, Sujith

  • diff --git a/examples/tda2xx/src/alg_plugins/framecopy/frameCopyLink_algPlugin.c b/examples/tda2xx/src/alg_plugins/framecopy/frameCopyLink_algPlugin.c
    index e079d8d..50b51f1 100755
    --- a/examples/tda2xx/src/alg_plugins/framecopy/frameCopyLink_algPlugin.c
    +++ b/examples/tda2xx/src/alg_plugins/framecopy/frameCopyLink_algPlugin.c
    @@ -641,6 +641,14 @@ Int32 AlgorithmLink_frameCopyProcess(void * pObj)
               linkStatsInfo->linkStats.chStats
                         [pSysBufferInput->chNum].outBufCount[0]++;
     
    +        {
    +            if (0U == (linkStatsInfo->linkStats.chStats
    +                    [pSysBufferInput->chNum].inBufProcessCount % 30))
    +            {
    +                Vps_printf( " Processed %d frames in DMA mode\n",
    +                        linkStatsInfo->linkStats.chStats [pSysBufferInput->chNum].inBufProcessCount);
    +            }
    +        }
               /*
                * Putting filled buffer into output full buffer Q
                * Note that this does not mean algorithm has freed the output buffer
    diff --git a/linux/examples/tda2xx/src/common/chains_main.c b/linux/examples/tda2xx/src/common/chains_main.c
    index 77759b3..767e0a4 100755
    --- a/linux/examples/tda2xx/src/common/chains_main.c
    +++ b/linux/examples/tda2xx/src/common/chains_main.c
    @@ -405,7 +405,7 @@ Int32 main (Int32 argc, Char ** argv)
                 #endif
                 #ifdef UC_vip_single_cam_framecopyEve_sgx_display
                 case '3':
    -                gChains_usecaseCfg.algProcId = SYSTEM_PROC_EVE1;
    +                gChains_usecaseCfg.algProcId = SYSTEM_PROC_DSP1;
                     chains_vipSingleCamFrmcpyEve_SgxDisplay(&gChains_usecaseCfg);
                     break;
                 #endif
    diff --git a/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay.c b/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay.c
    index 67c7cc2..0d171b8 100755
    --- a/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay.c
    +++ b/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay.c
    @@ -88,6 +88,10 @@ Void chains_vipSingleCamFrmcpyEve_SgxDisplay_SetFrameCopyAlgPrms(
         {
             pPrm->baseClassCreate.algId = ALGORITHM_LINK_EVE_ALG_FRAMECOPY;
         }
    +    else if (SYSTEM_PROC_DSP1 == chainsCfg->algProcId)
    +    {
    +        pPrm->baseClassCreate.algId = ALGORITHM_LINK_DSP_ALG_FRAMECOPY;
    +    }
         else
         {
             Vps_printf ("Frame copy on EVE is only supported in this UC \n");
    diff --git a/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay.jpg b/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay.jpg
    index bbed94c..a11a85c 100644
    Binary files a/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay.jpg and b/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay.jpg differ
    diff --git a/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay.txt b/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay.txt
    index ceef3ee..9cb9c1f 100755
    --- a/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay.txt
    +++ b/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay.txt
    @@ -4,7 +4,7 @@ UseCase: chains_vipSingleCamFrmcpyEve_SgxDisplay
     // Single channel Capture + Framecopy on EVE + SRX copy and Display
     //
     
    -Capture -> Alg_FrameCopy (EVE1) -> SgxFrmcpy (A15)
    +Capture -> Alg_FrameCopy (DSP1) -> SgxFrmcpy (A15)
     
     // display on m4
     SgxFrmcpy -> Display_M4 (IPU1_0)
    diff --git a/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay_img.txt b/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay_img.txt
    index 9814408..e36f477 100644
    --- a/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay_img.txt
    +++ b/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay_img.txt
    @@ -3,17 +3,17 @@ digraph chains_vipSingleCamFrmcpyEve_SgxDisplay {
            ColorScheme [shape=none, margin=0, label=<
            <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
            <TR><TD bgcolor="lightblue">IPU1_0</TD></TR>
    -       <TR><TD bgcolor="yellow">EVE1</TD></TR>
    +       <TR><TD bgcolor="palegreen">DSP1</TD></TR>
            <TR><TD bgcolor="lightsalmon">A15</TD></TR>
            </TABLE>>];
     
            /************** LINKS ************************/
            Capture [color=lightblue, style=filled]
    -       IPCOut_IPU1_0_EVE1_0 [color=lightblue, style=filled]
    -       IPCIn_EVE1_IPU1_0_0 [color=yellow, style=filled]
    -       Alg_FrameCopy [color=yellow, style=filled]
    -       IPCOut_EVE1_A15_0_0 [color=yellow, style=filled]
    -       IPCIn_A15_0_EVE1_0 [color=lightsalmon, style=filled]
    +       IPCOut_IPU1_0_DSP1_0 [color=lightblue, style=filled]
    +       IPCIn_DSP1_IPU1_0_0 [color=palegreen, style=filled]
    +       Alg_FrameCopy [color=palegreen, style=filled]
    +       IPCOut_DSP1_A15_0_0 [color=palegreen, style=filled]
    +       IPCIn_A15_0_DSP1_0 [color=lightsalmon, style=filled]
            SgxFrmcpy [color=lightsalmon, style=filled]
            IPCOut_A15_0_IPU1_0_0 [color=lightsalmon, style=filled]
            IPCIn_IPU1_0_A15_0_0 [color=lightblue, style=filled]
    @@ -23,13 +23,13 @@ digraph chains_vipSingleCamFrmcpyEve_SgxDisplay {
     
            /************** CONNECTIONS ************************/
            SgxFrmcpy -> IPCOut_A15_0_IPU1_0_0
    -       Alg_FrameCopy -> IPCOut_EVE1_A15_0_0
    -       Capture -> IPCOut_IPU1_0_EVE1_0
    +       Alg_FrameCopy -> IPCOut_DSP1_A15_0_0
    +       Capture -> IPCOut_IPU1_0_DSP1_0
            GrpxSrc -> Display_Grpx
    -       IPCOut_IPU1_0_EVE1_0 -> IPCIn_EVE1_IPU1_0_0
    -       IPCIn_EVE1_IPU1_0_0 -> Alg_FrameCopy
    -       IPCOut_EVE1_A15_0_0 -> IPCIn_A15_0_EVE1_0
    -       IPCIn_A15_0_EVE1_0 -> SgxFrmcpy
    +       IPCOut_IPU1_0_DSP1_0 -> IPCIn_DSP1_IPU1_0_0
    +       IPCIn_DSP1_IPU1_0_0 -> Alg_FrameCopy
    +       IPCOut_DSP1_A15_0_0 -> IPCIn_A15_0_DSP1_0
    +       IPCIn_A15_0_DSP1_0 -> SgxFrmcpy
            IPCOut_A15_0_IPU1_0_0 -> IPCIn_IPU1_0_A15_0_0
            IPCIn_IPU1_0_A15_0_0 -> Display_M4
     }
    diff --git a/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay_priv.c b/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay_priv.c
    index 8679667..6366936 100644
    --- a/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay_priv.c
    +++ b/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay_priv.c
    @@ -18,11 +18,11 @@
     #include "chains_vipSingleCamFrmcpyEve_SgxDisplay_priv.h"
     Void chains_vipSingleCamFrmcpyEve_SgxDisplay_SetLinkId(chains_vipSingleCamFrmcpyEve_SgxDisplayObj *pObj){
            pObj->CaptureLinkID                  = SYSTEM_LINK_ID_CAPTURE_0;
    -       pObj->IPCOut_IPU1_0_EVE1_0LinkID     = IPU1_0_LINK (SYSTEM_LINK_ID_IPC_OUT_0);
    -       pObj->IPCIn_EVE1_IPU1_0_0LinkID      = EVE1_LINK (SYSTEM_LINK_ID_IPC_IN_0);
    -       pObj->Alg_FrameCopyLinkID            = EVE1_LINK (SYSTEM_LINK_ID_ALG_0);
    -       pObj->IPCOut_EVE1_A15_0_0LinkID      = EVE1_LINK (SYSTEM_LINK_ID_IPC_OUT_0);
    -       pObj->IPCIn_A15_0_EVE1_0LinkID       = A15_0_LINK (SYSTEM_LINK_ID_IPC_IN_0);
    +       pObj->IPCOut_IPU1_0_DSP1_0LinkID     = IPU1_0_LINK (SYSTEM_LINK_ID_IPC_OUT_0);
    +       pObj->IPCIn_DSP1_IPU1_0_0LinkID      = DSP1_LINK (SYSTEM_LINK_ID_IPC_IN_0);
    +       pObj->Alg_FrameCopyLinkID            = DSP1_LINK (SYSTEM_LINK_ID_ALG_0);
    +       pObj->IPCOut_DSP1_A15_0_0LinkID      = DSP1_LINK (SYSTEM_LINK_ID_IPC_OUT_0);
    +       pObj->IPCIn_A15_0_DSP1_0LinkID       = A15_0_LINK (SYSTEM_LINK_ID_IPC_IN_0);
            pObj->SgxFrmcpyLinkID                = SYSTEM_LINK_ID_SGXFRMCPY_0;
            pObj->IPCOut_A15_0_IPU1_0_0LinkID    = A15_0_LINK (SYSTEM_LINK_ID_IPC_OUT_0);
            pObj->IPCIn_IPU1_0_A15_0_0LinkID     = IPU1_0_LINK (SYSTEM_LINK_ID_IPC_IN_0);
    @@ -33,10 +33,10 @@ Void chains_vipSingleCamFrmcpyEve_SgxDisplay_SetLinkId(chains_vipSingleCamFrmcpy
     
     Void chains_vipSingleCamFrmcpyEve_SgxDisplay_ResetLinkPrms(chains_vipSingleCamFrmcpyEve_SgxDisplayObj *pObj){
            CaptureLink_CreateParams_Init(&pObj->CapturePrm);
    -       IpcLink_CreateParams_Init(&pObj->IPCOut_IPU1_0_EVE1_0Prm);
    -       IpcLink_CreateParams_Init(&pObj->IPCIn_EVE1_IPU1_0_0Prm);
    -       IpcLink_CreateParams_Init(&pObj->IPCOut_EVE1_A15_0_0Prm);
    -       IpcLink_CreateParams_Init(&pObj->IPCIn_A15_0_EVE1_0Prm);
    +       IpcLink_CreateParams_Init(&pObj->IPCOut_IPU1_0_DSP1_0Prm);
    +       IpcLink_CreateParams_Init(&pObj->IPCIn_DSP1_IPU1_0_0Prm);
    +       IpcLink_CreateParams_Init(&pObj->IPCOut_DSP1_A15_0_0Prm);
    +       IpcLink_CreateParams_Init(&pObj->IPCIn_A15_0_DSP1_0Prm);
            SgxFrmcpyLink_CreateParams_Init(&pObj->SgxFrmcpyPrm);
            IpcLink_CreateParams_Init(&pObj->IPCOut_A15_0_IPU1_0_0Prm);
            IpcLink_CreateParams_Init(&pObj->IPCIn_IPU1_0_A15_0_0Prm);
    @@ -47,39 +47,39 @@ Void chains_vipSingleCamFrmcpyEve_SgxDisplay_ResetLinkPrms(chains_vipSingleCamFr
     
     Void chains_vipSingleCamFrmcpyEve_SgxDisplay_SetPrms(chains_vipSingleCamFrmcpyEve_SgxDisplayObj *pObj){
            (pObj->Alg_FrameCopyPrm).baseClassCreate.size  = sizeof(AlgorithmLink_FrameCopyCreateParams);
    -       (pObj->Alg_FrameCopyPrm).baseClassCreate.algId  = ALGORITHM_LINK_EVE_ALG_FRAMECOPY;
    +       (pObj->Alg_FrameCopyPrm).baseClassCreate.algId  = ALGORITHM_LINK_DSP_ALG_FRAMECOPY;
     }
     
     Void chains_vipSingleCamFrmcpyEve_SgxDisplay_ConnectLinks(chains_vipSingleCamFrmcpyEve_SgxDisplayObj *pObj){
     
    -       //Capture -> IPCOut_IPU1_0_EVE1_0
    -       pObj->CapturePrm.outQueParams.nextLink = pObj->IPCOut_IPU1_0_EVE1_0LinkID;
    -       pObj->IPCOut_IPU1_0_EVE1_0Prm.inQueParams.prevLinkId = pObj->CaptureLinkID;
    -       pObj->IPCOut_IPU1_0_EVE1_0Prm.inQueParams.prevLinkQueId = 0;
    +       //Capture -> IPCOut_IPU1_0_DSP1_0
    +       pObj->CapturePrm.outQueParams.nextLink = pObj->IPCOut_IPU1_0_DSP1_0LinkID;
    +       pObj->IPCOut_IPU1_0_DSP1_0Prm.inQueParams.prevLinkId = pObj->CaptureLinkID;
    +       pObj->IPCOut_IPU1_0_DSP1_0Prm.inQueParams.prevLinkQueId = 0;
     
    -       //IPCOut_IPU1_0_EVE1_0 -> IPCIn_EVE1_IPU1_0_0
    -       pObj->IPCOut_IPU1_0_EVE1_0Prm.outQueParams.nextLink = pObj->IPCIn_EVE1_IPU1_0_0LinkID;
    -       pObj->IPCIn_EVE1_IPU1_0_0Prm.inQueParams.prevLinkId = pObj->IPCOut_IPU1_0_EVE1_0LinkID;
    -       pObj->IPCIn_EVE1_IPU1_0_0Prm.inQueParams.prevLinkQueId = 0;
    +       //IPCOut_IPU1_0_DSP1_0 -> IPCIn_DSP1_IPU1_0_0
    +       pObj->IPCOut_IPU1_0_DSP1_0Prm.outQueParams.nextLink = pObj->IPCIn_DSP1_IPU1_0_0LinkID;
    +       pObj->IPCIn_DSP1_IPU1_0_0Prm.inQueParams.prevLinkId = pObj->IPCOut_IPU1_0_DSP1_0LinkID;
    +       pObj->IPCIn_DSP1_IPU1_0_0Prm.inQueParams.prevLinkQueId = 0;
     
    -       //IPCIn_EVE1_IPU1_0_0 -> Alg_FrameCopy
    -       pObj->IPCIn_EVE1_IPU1_0_0Prm.outQueParams.nextLink = pObj->Alg_FrameCopyLinkID;
    -       pObj->Alg_FrameCopyPrm.inQueParams.prevLinkId = pObj->IPCIn_EVE1_IPU1_0_0LinkID;
    +       //IPCIn_DSP1_IPU1_0_0 -> Alg_FrameCopy
    +       pObj->IPCIn_DSP1_IPU1_0_0Prm.outQueParams.nextLink = pObj->Alg_FrameCopyLinkID;
    +       pObj->Alg_FrameCopyPrm.inQueParams.prevLinkId = pObj->IPCIn_DSP1_IPU1_0_0LinkID;
            pObj->Alg_FrameCopyPrm.inQueParams.prevLinkQueId = 0;
     
    -       //Alg_FrameCopy -> IPCOut_EVE1_A15_0_0
    -       pObj->Alg_FrameCopyPrm.outQueParams.nextLink = pObj->IPCOut_EVE1_A15_0_0LinkID;
    -       pObj->IPCOut_EVE1_A15_0_0Prm.inQueParams.prevLinkId = pObj->Alg_FrameCopyLinkID;
    -       pObj->IPCOut_EVE1_A15_0_0Prm.inQueParams.prevLinkQueId = 0;
    +       //Alg_FrameCopy -> IPCOut_DSP1_A15_0_0
    +       pObj->Alg_FrameCopyPrm.outQueParams.nextLink = pObj->IPCOut_DSP1_A15_0_0LinkID;
    +       pObj->IPCOut_DSP1_A15_0_0Prm.inQueParams.prevLinkId = pObj->Alg_FrameCopyLinkID;
    +       pObj->IPCOut_DSP1_A15_0_0Prm.inQueParams.prevLinkQueId = 0;
     
    -       //IPCOut_EVE1_A15_0_0 -> IPCIn_A15_0_EVE1_0
    -       pObj->IPCOut_EVE1_A15_0_0Prm.outQueParams.nextLink = pObj->IPCIn_A15_0_EVE1_0LinkID;
    -       pObj->IPCIn_A15_0_EVE1_0Prm.inQueParams.prevLinkId = pObj->IPCOut_EVE1_A15_0_0LinkID;
    -       pObj->IPCIn_A15_0_EVE1_0Prm.inQueParams.prevLinkQueId = 0;
    +       //IPCOut_DSP1_A15_0_0 -> IPCIn_A15_0_DSP1_0
    +       pObj->IPCOut_DSP1_A15_0_0Prm.outQueParams.nextLink = pObj->IPCIn_A15_0_DSP1_0LinkID;
    +       pObj->IPCIn_A15_0_DSP1_0Prm.inQueParams.prevLinkId = pObj->IPCOut_DSP1_A15_0_0LinkID;
    +       pObj->IPCIn_A15_0_DSP1_0Prm.inQueParams.prevLinkQueId = 0;
     
    -       //IPCIn_A15_0_EVE1_0 -> SgxFrmcpy
    -       pObj->IPCIn_A15_0_EVE1_0Prm.outQueParams.nextLink = pObj->SgxFrmcpyLinkID;
    -       pObj->SgxFrmcpyPrm.inQueParams.prevLinkId = pObj->IPCIn_A15_0_EVE1_0LinkID;
    +       //IPCIn_A15_0_DSP1_0 -> SgxFrmcpy
    +       pObj->IPCIn_A15_0_DSP1_0Prm.outQueParams.nextLink = pObj->SgxFrmcpyLinkID;
    +       pObj->SgxFrmcpyPrm.inQueParams.prevLinkId = pObj->IPCIn_A15_0_DSP1_0LinkID;
            pObj->SgxFrmcpyPrm.inQueParams.prevLinkQueId = 0;
     
            //SgxFrmcpy -> IPCOut_A15_0_IPU1_0_0
    @@ -118,19 +118,19 @@ Int32 chains_vipSingleCamFrmcpyEve_SgxDisplay_Create(chains_vipSingleCamFrmcpyEv
            status = System_linkCreate(pObj->CaptureLinkID, &pObj->CapturePrm, sizeof(pObj->CapturePrm));
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkCreate(pObj->IPCOut_IPU1_0_EVE1_0LinkID, &pObj->IPCOut_IPU1_0_EVE1_0Prm, sizeof(pObj->IPCOut_IPU1_0_EVE1_0Prm));
    +       status = System_linkCreate(pObj->IPCOut_IPU1_0_DSP1_0LinkID, &pObj->IPCOut_IPU1_0_DSP1_0Prm, sizeof(pObj->IPCOut_IPU1_0_DSP1_0Prm));
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkCreate(pObj->IPCIn_EVE1_IPU1_0_0LinkID, &pObj->IPCIn_EVE1_IPU1_0_0Prm, sizeof(pObj->IPCIn_EVE1_IPU1_0_0Prm));
    +       status = System_linkCreate(pObj->IPCIn_DSP1_IPU1_0_0LinkID, &pObj->IPCIn_DSP1_IPU1_0_0Prm, sizeof(pObj->IPCIn_DSP1_IPU1_0_0Prm));
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
            status = System_linkCreate(pObj->Alg_FrameCopyLinkID, &pObj->Alg_FrameCopyPrm, sizeof(pObj->Alg_FrameCopyPrm));
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkCreate(pObj->IPCOut_EVE1_A15_0_0LinkID, &pObj->IPCOut_EVE1_A15_0_0Prm, sizeof(pObj->IPCOut_EVE1_A15_0_0Prm));
    +       status = System_linkCreate(pObj->IPCOut_DSP1_A15_0_0LinkID, &pObj->IPCOut_DSP1_A15_0_0Prm, sizeof(pObj->IPCOut_DSP1_A15_0_0Prm));
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkCreate(pObj->IPCIn_A15_0_EVE1_0LinkID, &pObj->IPCIn_A15_0_EVE1_0Prm, sizeof(pObj->IPCIn_A15_0_EVE1_0Prm));
    +       status = System_linkCreate(pObj->IPCIn_A15_0_DSP1_0LinkID, &pObj->IPCIn_A15_0_DSP1_0Prm, sizeof(pObj->IPCIn_A15_0_DSP1_0Prm));
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
            status = System_linkCreate(pObj->SgxFrmcpyLinkID, &pObj->SgxFrmcpyPrm, sizeof(pObj->SgxFrmcpyPrm));
    @@ -176,19 +176,19 @@ Int32 chains_vipSingleCamFrmcpyEve_SgxDisplay_Start(chains_vipSingleCamFrmcpyEve
            status = System_linkStart(pObj->SgxFrmcpyLinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkStart(pObj->IPCIn_A15_0_EVE1_0LinkID);
    +       status = System_linkStart(pObj->IPCIn_A15_0_DSP1_0LinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkStart(pObj->IPCOut_EVE1_A15_0_0LinkID);
    +       status = System_linkStart(pObj->IPCOut_DSP1_A15_0_0LinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
            status = System_linkStart(pObj->Alg_FrameCopyLinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkStart(pObj->IPCIn_EVE1_IPU1_0_0LinkID);
    +       status = System_linkStart(pObj->IPCIn_DSP1_IPU1_0_0LinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkStart(pObj->IPCOut_IPU1_0_EVE1_0LinkID);
    +       status = System_linkStart(pObj->IPCOut_IPU1_0_DSP1_0LinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
            status = System_linkStart(pObj->CaptureLinkID);
    @@ -219,19 +219,19 @@ Int32 chains_vipSingleCamFrmcpyEve_SgxDisplay_Stop(chains_vipSingleCamFrmcpyEve_
            status = System_linkStop(pObj->SgxFrmcpyLinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkStop(pObj->IPCIn_A15_0_EVE1_0LinkID);
    +       status = System_linkStop(pObj->IPCIn_A15_0_DSP1_0LinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkStop(pObj->IPCOut_EVE1_A15_0_0LinkID);
    +       status = System_linkStop(pObj->IPCOut_DSP1_A15_0_0LinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
            status = System_linkStop(pObj->Alg_FrameCopyLinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkStop(pObj->IPCIn_EVE1_IPU1_0_0LinkID);
    +       status = System_linkStop(pObj->IPCIn_DSP1_IPU1_0_0LinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkStop(pObj->IPCOut_IPU1_0_EVE1_0LinkID);
    +       status = System_linkStop(pObj->IPCOut_IPU1_0_DSP1_0LinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
            status = System_linkStop(pObj->CaptureLinkID);
    @@ -262,19 +262,19 @@ Int32 chains_vipSingleCamFrmcpyEve_SgxDisplay_Delete(chains_vipSingleCamFrmcpyEv
            status = System_linkDelete(pObj->SgxFrmcpyLinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkDelete(pObj->IPCIn_A15_0_EVE1_0LinkID);
    +       status = System_linkDelete(pObj->IPCIn_A15_0_DSP1_0LinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkDelete(pObj->IPCOut_EVE1_A15_0_0LinkID);
    +       status = System_linkDelete(pObj->IPCOut_DSP1_A15_0_0LinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
            status = System_linkDelete(pObj->Alg_FrameCopyLinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkDelete(pObj->IPCIn_EVE1_IPU1_0_0LinkID);
    +       status = System_linkDelete(pObj->IPCIn_DSP1_IPU1_0_0LinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
    -       status = System_linkDelete(pObj->IPCOut_IPU1_0_EVE1_0LinkID);
    +       status = System_linkDelete(pObj->IPCOut_IPU1_0_DSP1_0LinkID);
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
     
            status = System_linkDelete(pObj->CaptureLinkID);
    @@ -285,13 +285,13 @@ Int32 chains_vipSingleCamFrmcpyEve_SgxDisplay_Delete(chains_vipSingleCamFrmcpyEv
     
     Void chains_vipSingleCamFrmcpyEve_SgxDisplay_printBufferStatistics(chains_vipSingleCamFrmcpyEve_SgxDisplayObj *pObj){
            System_linkPrintBufferStatistics(pObj->CaptureLinkID);
    -       System_linkPrintBufferStatistics(pObj->IPCOut_IPU1_0_EVE1_0LinkID);
    +       System_linkPrintBufferStatistics(pObj->IPCOut_IPU1_0_DSP1_0LinkID);
            Task_sleep(500);
    -       System_linkPrintBufferStatistics(pObj->IPCIn_EVE1_IPU1_0_0LinkID);
    +       System_linkPrintBufferStatistics(pObj->IPCIn_DSP1_IPU1_0_0LinkID);
            System_linkPrintBufferStatistics(pObj->Alg_FrameCopyLinkID);
    -       System_linkPrintBufferStatistics(pObj->IPCOut_EVE1_A15_0_0LinkID);
    +       System_linkPrintBufferStatistics(pObj->IPCOut_DSP1_A15_0_0LinkID);
            Task_sleep(500);
    -       System_linkPrintBufferStatistics(pObj->IPCIn_A15_0_EVE1_0LinkID);
    +       System_linkPrintBufferStatistics(pObj->IPCIn_A15_0_DSP1_0LinkID);
            System_linkPrintBufferStatistics(pObj->SgxFrmcpyLinkID);
            System_linkPrintBufferStatistics(pObj->IPCOut_A15_0_IPU1_0_0LinkID);
            Task_sleep(500);
    @@ -304,13 +304,13 @@ Void chains_vipSingleCamFrmcpyEve_SgxDisplay_printBufferStatistics(chains_vipSin
     
     Void chains_vipSingleCamFrmcpyEve_SgxDisplay_printStatistics(chains_vipSingleCamFrmcpyEve_SgxDisplayObj *pObj){
            System_linkPrintStatistics(pObj->CaptureLinkID);
    -       System_linkPrintStatistics(pObj->IPCOut_IPU1_0_EVE1_0LinkID);
    +       System_linkPrintStatistics(pObj->IPCOut_IPU1_0_DSP1_0LinkID);
            Task_sleep(500);
    -       System_linkPrintStatistics(pObj->IPCIn_EVE1_IPU1_0_0LinkID);
    +       System_linkPrintStatistics(pObj->IPCIn_DSP1_IPU1_0_0LinkID);
            System_linkPrintStatistics(pObj->Alg_FrameCopyLinkID);
    -       System_linkPrintStatistics(pObj->IPCOut_EVE1_A15_0_0LinkID);
    +       System_linkPrintStatistics(pObj->IPCOut_DSP1_A15_0_0LinkID);
            Task_sleep(500);
    -       System_linkPrintStatistics(pObj->IPCIn_A15_0_EVE1_0LinkID);
    +       System_linkPrintStatistics(pObj->IPCIn_A15_0_DSP1_0LinkID);
            System_linkPrintStatistics(pObj->SgxFrmcpyLinkID);
            System_linkPrintStatistics(pObj->IPCOut_A15_0_IPU1_0_0LinkID);
            Task_sleep(500);
    diff --git a/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay_priv.h b/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay_priv.h
    index 4093f40..4dcf976 100644
    --- a/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay_priv.h
    +++ b/linux/examples/tda2xx/src/usecases/vip_single_cam_framecopyEve_sgx_display/chains_vipSingleCamFrmcpyEve_SgxDisplay_priv.h
    @@ -29,11 +29,11 @@
     
     typedef struct {
            UInt32    CaptureLinkID;
    -       UInt32    IPCOut_IPU1_0_EVE1_0LinkID;
    -       UInt32    IPCIn_EVE1_IPU1_0_0LinkID;
    +       UInt32    IPCOut_IPU1_0_DSP1_0LinkID;
    +       UInt32    IPCIn_DSP1_IPU1_0_0LinkID;
            UInt32    Alg_FrameCopyLinkID;
    -       UInt32    IPCOut_EVE1_A15_0_0LinkID;
    -       UInt32    IPCIn_A15_0_EVE1_0LinkID;
    +       UInt32    IPCOut_DSP1_A15_0_0LinkID;
    +       UInt32    IPCIn_A15_0_DSP1_0LinkID;
            UInt32    SgxFrmcpyLinkID;
            UInt32    IPCOut_A15_0_IPU1_0_0LinkID;
            UInt32    IPCIn_IPU1_0_A15_0_0LinkID;
    @@ -42,11 +42,11 @@ typedef struct {
            UInt32    Display_GrpxLinkID;
     
            CaptureLink_CreateParams                CapturePrm;
    -       IpcLink_CreateParams                    IPCOut_IPU1_0_EVE1_0Prm;
    -       IpcLink_CreateParams                    IPCIn_EVE1_IPU1_0_0Prm;
    +       IpcLink_CreateParams                    IPCOut_IPU1_0_DSP1_0Prm;
    +       IpcLink_CreateParams                    IPCIn_DSP1_IPU1_0_0Prm;
            AlgorithmLink_FrameCopyCreateParams     Alg_FrameCopyPrm;
    -       IpcLink_CreateParams                    IPCOut_EVE1_A15_0_0Prm;
    -       IpcLink_CreateParams                    IPCIn_A15_0_EVE1_0Prm;
    +       IpcLink_CreateParams                    IPCOut_DSP1_A15_0_0Prm;
    +       IpcLink_CreateParams                    IPCIn_A15_0_DSP1_0Prm;
            SgxFrmcpyLink_CreateParams              SgxFrmcpyPrm;
            IpcLink_CreateParams                    IPCOut_A15_0_IPU1_0_0Prm;
            IpcLink_CreateParams                    IPCIn_IPU1_0_A15_0_0Prm;
    
    Attach of patch failed, i have renamed it as .txt, please rename it as .patch and use it.

    Regards,Sujith

  • 295410 s: 
    [HOST  ] ***********chains_vipSingleCamFrmcpyDsp_SgxDisplay ******************
    [HOST  ]     70.295440 s: Configuring frame Copy on DSP
    [HOST  ]     70.295440 s: *************************in the usecase of linux on DSP framecopy****************************************************
    *********
    [IPU2  ]     70.262581 s:  CAPTURE: Create in progress !!!
    [IPU2  ]     70.263161 s:  CAPTURE: VIP1 Slice0 PortA capture mode is [ 8-bit] !!! 
    [DSP1  ]     70.384493 s:  IPC_IN_0   : Create in progress !!!
    [DSP1  ]     70.384981 s:  IPC_IN_0   : Create Done !!!
    [DSP1  ]     70.385225 s:  ALGORITHM: Create in progress (algId = 0) !!!
    [DSP1  ]     70.385408 s:  ALG_FRAMECOPY: DMA: Allocated CH (TCC) = 0 (0)
    [IPU2  ]     70.383029 s:  CAPTURE: Create Done !!!
    [IPU2  ]     70.383578 s:  IPC_OUT_0   : Create in progress !!!
    [IPU2  ]     70.384096 s:  IPC_OUT_0   : Create Done !!!
    failed to load module: /usr/lib/gbm/gbm_dri.so: cannot open shared object file: No such file or directory
    failed to load module: /usr/lib/gbm/gbm_gallium_drm.so: cannot open shared object file: No such file or directory
    [HOST  ]     70.440643 s:  IPC_IN_0   : Create in progress !!!
    [HOST  ]     70.441070 s:  IPC_IN_0   : Create Done !!!
    [HOST  ]     70.441162 s:  SGXFRMCPY: Create in progress for resolution: 1920x1080 !!!
    [HOST  ]     70.441223 s:  SYSTEM_PVRSCOPE: FIFO /opt/vision_sdk/gpufifo opened successfully 
    [DSP1  ]     70.401390 s:  ALGORITHM: Create Done (algId = 0) !!!
    [DSP1  ]     70.401634 s:  IPC_OUT_0   : Create in progress !!!
    [DSP1  ]     70.401756 s:  IPC_OUT_0   : Create Done !!!
    loaded module: gbm_pvr.so
    PVR: Hint: Setting ParamBufferSize to 146800640
    
    PVR: Hint: Setting MaxParamBufferSize to 146800640
    
    PVR:(Warning): PVRSRVOpenDCDevice: Warning - 138 returned [80, /bridged_pvr_dc_glue.c]
    [HOST  ]     70.560028 s:  EGL: version 1.4
    [HOST  ]     70.573730 s:  EGL: GL Version = OpenGL ES 2.0 build 1.9@2253347
    [HOST  ]     70.573760 s:  EGL: GL Vendor = Imagination Technologies
    [HOST  ]     70.573760 s:  EGL: GL Renderer = PowerVR SGX 544MP
    [HOST  ]     70.573760 s:  EGL: GL Extensions = GL_OES_rgb8_rgba8 GL_OES_depth24 GL_OES_vertex_half_float GL_OES_texture_float GL_OES_texture_h
    alf_float GL_OES_element_index_uint GL_OES_mapbuffer GL_OES_fragment_precision_high GL_OES_compressed_ETC1_RGB8_texture GL_OES_EGL_image GL_OES
    _EGL_image_external GL_OES_required_internalformat GL_OES_depth_texture GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_standard_d
    erivatives GL_OES_vertex_array_object GL_OES_egl_sync GL_OES_texture_npot GL_EXT_multi_draw_arrays GL_EXT_texture_format_BGRA8888 GL_EXT_discar
    d_framebuffer GL_EXT_shader_texture_lod GL_IMG_shader_binary GL_IMG_texture_compression_pvrtc GL_IMG_texture_compression_pvrtc2 GL_IMG_texture_
    npot GL_IMG_texture_format_BGRA8888 GL_IMG_read_format GL_IMG_program_binary GL_IMG_uniform_buffer_object GL_IMG_multisampled_render_to_texture
     GL_TI_image_external_raw_video 
    [HOST  ]     70.574127 s:  OSA: MEM: ALLOC, addr = 0x84f32000, size = 8294400 bytes, heapId = 1 
    [HOST  ]     70.577667 s:  OSA: MEM: ALLOC, addr = 0x8571b000, size = 8294400 bytes, heapId = 1 
    [HOST  ]     70.581024 s:  OSA: MEM: ALLOC, addr = 0x85f04000, size = 8294400 bytes, heapId = 1 
    [HOST  ]     70.584472 s:  OSA: MEM: ALLOC, addr = 0x866ed000, size = 8294400 bytes, heapId = 1 
    PVR:(Error): PrepareToDraw: Invalid drawable [1058, /sgxif.c]
    PVR:(Error): glClear: Can't prepare to draw [1080, /clear.c]
    [HOST  ]     70.617218 s: ************************1X1 single***************************
    [HOST  ]     70.617248 s:  SGXFRMCPY: Create Done for resolution: 1920x1080 !!!
    [HOST  ]     70.617309 s:  IPC_OUT_0   : Create in progress !!!
    [HOST  ]     70.617401 s:  IPC_OUT_0   : Create Done !!!
    [IPU2  ]     70.578783 s:  IPC_IN_0   : Create in progress !!!
    [IPU2  ]     70.580156 s:  IPC_IN_0   : Create Done !!!
    [IPU2  ]     70.580674 s:  DISPLAY: Create in progress !!!
    [IPU2  ]     70.581345 s:  DISPLAY: Create Done !!!
    [IPU2  ]     70.581833 s:  GRPXSRC: Create in progress !!!
    [IPU2  ]     72.098700 s:  GRPXSRC: Create Done !!!
    [IPU2  ]     72.099310 s:  DISPLAY: Create in progress !!!
    [IPU2  ]     72.100042 s:  DISPLAY: Create Done !!!
    [IPU2  ]     72.105227 s:  *** UTILS: CPU KHz = 20000 Khz ***
    [IPU1-0]     72.201122 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023 
    [IPU1-0]     72.201427 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 251056 B (245 KB)
    [DSP1  ]     72.202037 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023 
    [DSP1  ]     72.202128 s:  SYSTEM: Heap = LOCAL_L2             @ 0x00800000, Total size = 227264 B (221 KB), Free size = 227264 B (221 KB)
    [DSP1  ]     72.202220 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 524288 B (512 KB), Free size = 501552 B (489 KB)
    [DSP2  ]     72.202494 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023 
    [DSP2  ]     72.202586 s:  SYSTEM: Heap = LOCAL_L2             @ 0x00800000, Total size = 227264 B (221 KB), Free size = 227264 B (221 KB)
    [DSP2  ]     72.202677 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 524288 B (512 KB), Free size = 515328 B (503 KB)
    [EVE1  ]     72.203257 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023 
    [EVE1  ]     72.204599 s:  SYSTEM: Heap = LOCAL_L2             @ 0x40020000, Total size = 24576 B (24 KB), Free size = 24576 B (24 KB)
    [EVE1  ]     72.206887 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 253240 B (247 KB)
    [EVE2  ]     72.209998 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023 
    [EVE2  ]     72.211340 s:  SYSTEM: Heap = LOCAL_L2             @ 0x40020000, Total size = 24576 B (24 KB), Free size = 24576 B (24 KB)
    [EVE2  ]     72.213566 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 253240 B (247 KB)
    [EVE3  ]     72.216372 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023 
    [EVE3  ]     72.217684 s:  SYSTEM: Heap = LOCAL_L2             @ 0x40020000, Total size = 24576 B (24 KB), Free size = 24576 B (24 KB)
    [EVE3  ]     72.220032 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 253240 B (247 KB)
    [EVE4  ]     72.222839 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023 
    [EVE4  ]     72.224150 s:  SYSTEM: Heap = LOCAL_L2             @ 0x40020000, Total size = 24576 B (24 KB), Free size = 24576 B (24 KB)
    [EVE4  ]     72.226438 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 253240 B (247 KB)
    [IPU2  ]     72.229061 s:  SYSTEM: SW Message Box Msg Pool, Free Msg Count = 1023 
    [IPU2  ]     72.229366 s:  SYSTEM: Heap = LOCAL_DDR            @ 0x00000000, Total size = 262144 B (256 KB), Free size = 249632 B (243 KB)
    [IPU2  ]     72.229762 s:  SYSTEM: Heap = SR_OCMC              @ 0x00000000, Total size = 0 B (0 KB), Free size = 0 B (0 KB)
    [IPU2  ]     72.230342 s:  SYSTEM: Heap = SR_DDR_CACHED        @ 0x84203000, Total size = 262144000 B (250 MB), Free size = 210995200 B (201 MB
    )
    [IPU2  ]     72.230799 s:  SYSTEM: Heap = SR_DDR_NON_CACHED    @ 0xa0100000, Total size = 1045120 B (0 MB), Free size = 787072 B (0 MB)
    [IPU2  ]     72.231531 s:  DISPLAY: Start in progress !!!
    [IPU2  ]     72.231714 s:  DISPLAY: Start Done !!!
    [HOST  ]     72.276123 s:  SGXFRMCPY: Start in progress !!!
    [HOST  ]     72.276123 s:  SGXFRMCPY: Start Done !!!
    [HOST  ]     72.282165 s: 
    [HOST  ]  
    [HOST  ]  ====================
    [HOST  ]  Chains Run-time Menu
    [HOST  ]  ====================
    [HOST  ]  
    [HOST  ]  0: Stop Chain
    [HOST  ]  
    [HOST  ]  p: Print Performance Statistics 
    [HOST  ]  
    [HOST  ]  Enter Choice: 
    [HOST  ]  
    [HOST  ]     72.282196 s: 
    [HOST  ] Unsupported option '
    [HOST  ] '. Please try again
    [HOST  ]     72.282196 s: 
    [HOST  ]  
    [HOST  ]  ====================
    [HOST  ]  Chains Run-time Menu
    
    
    Hi Sujith,

    I have followed and verified all the steps given by you,but still unable to see the printfs.

    Below is the log generated after the usecase is excecuted.

    Thanks,

    Neha

  • Hi Neha,

    That's very strange, can you please
    1. Prints stat's using 'p' option after the usecase has started?
    2. Can you get hold of fresh VisionSDK installation apply the patch that i had sent earlier
    3. Delete all binaries
    4. Make a clean build and check
    5. Also please share the log (press 'p' after the usecase has started)

    Regards,
    Sujith
  • Hi Sujith,

    Attached is the print statics file.

    I have tried deleting the binaries and compiling ,but still the issue of printfs not solved.

    Are there any ways to debug the code in linux?

    Thanks,

    Neha

    [HOST  ]  Enter Choice: 
    [HOST  ]  
    [IPU2  ]     85.355517 s:  CAPTURE: Start in progress !!!
    [IPU2  ]     85.357713 s:  CAPTURE: Start Done !!!
    p
    [DSP1  ]    107.243427 s:  
    [DSP1  ]    107.243488 s:  LOAD: CPU: 2.9% HWI: 0.2%, SWI:0.1% 
    [DSP1  ]    107.243549 s:  
    [DSP1  ]    107.243579 s:  LOAD: TSK: SYSTEM_TSK_MULTI_MBX: 2.5% 
    [DSP1  ]    107.243640 s:  LOAD: TSK: MISC                : 0.1% 
    [DSP1  ]    107.243671 s:  
    [DSP2  ]    107.343927 s:  
    [DSP2  ]    107.343957 s:  LOAD: CPU: 0.2% HWI: 0.1%, SWI:0.0% 
    [DSP2  ]    107.344018 s:  
    [DSP2  ]    107.344049 s:  LOAD: TSK: MISC                : 0.1% 
    [DSP2  ]    107.344110 s:  
    [EVE1  ]    107.444702 s:  
    [EVE1  ]    107.445190 s:  LOAD: CPU: 0.7% HWI: 0.2%, SWI:0.1% 
    [EVE1  ]    107.446257 s:  
    [EVE1  ]    107.446745 s:  LOAD: TSK: MISC                : 0.4% 
    [EVE1  ]    107.447843 s:  
    [EVE2  ]    107.549258 s:  
    [EVE2  ]    107.549746 s:  LOAD: CPU: 0.6% HWI: 0.2%, SWI:0.1% 
    [EVE2  ]    107.550905 s:  
    [EVE2  ]    107.551424 s:  LOAD: TSK: MISC                : 0.3% 
    [EVE2  ]    107.552613 s:  
    [EVE3  ]    107.653876 s:  
    [EVE3  ]    107.654395 s:  LOAD: CPU: 0.6% HWI: 0.2%, SWI:0.1% 
    [EVE3  ]    107.655554 s:  
    [EVE3  ]    107.656042 s:  LOAD: TSK: MISC                : 0.3% 
    [EVE3  ]    107.657109 s:  
    [EVE4  ]    107.758372 s:  
    [EVE4  ]    107.758921 s:  LOAD: CPU: 0.6% HWI: 0.2%, SWI:0.1% 
    [EVE4  ]    107.759989 s:  
    [EVE4  ]    107.760477 s:  LOAD: TSK: MISC                : 0.3% 
    [EVE4  ]    107.761544 s:  
    [IPU2  ]    107.862441 s:  
    [IPU2  ]    107.862685 s:  #### EVE CLK =  535.0      Mhz 
    [IPU2  ]    107.862898 s:  #### DSP CLK =  700.0      Mhz 
    [IPU2  ]    107.863203 s:  #### IPU CLK =  212.800000 Mhz 
    [IPU2  ]    107.863417 s:  #### A15 CLK = 1000.0      Mhz 
    [IPU2  ]    107.863600 s:  
    [IPU2  ]    107.863691 s:  
    [IPU2  ]    107.863783 s:  LOAD: CPU: 14.9% HWI: 1.9%, SWI:0.9% 
    [IPU2  ]    107.864057 s:  
    [IPU2  ]    107.864179 s:  LOAD: TSK: IPC_OUT_0           : 0.6% 
    [IPU2  ]    107.864393 s:  LOAD: TSK: IPC_IN_0            : 0.3% 
    [IPU2  ]    107.864606 s:  LOAD: TSK: DISPLAY0            : 0.6% 
    [IPU2  ]    107.864820 s:  LOAD: TSK: CAPTURE             : 0.2% 
    [IPU2  ]    107.865094 s:  LOAD: TSK: GrpxSrc0            : 7.0% 
    [IPU2  ]    107.865308 s:  LOAD: TSK: STAT_COLL           : 2.9% 
    [IPU2  ]    107.865521 s:  LOAD: TSK: MISC                : 0.5% 
    [IPU2  ]    107.865704 s:  
    [IPU2  ]    107.966327 s:  
    [IPU2  ]    107.966479 s:  Statistics Collector,
    [IPU2  ]    107.966632 s:  
    [IPU2  ]    107.966723 s:        STATISTIC          Avg Data        Peak Data 
    [IPU2  ]    107.966937 s:        COLLECTOR          MB/s            MB/s      
    [IPU2  ]    107.967211 s:  -------------------------------------------------- 
    [IPU2  ]    107.967425 s:  SCI_EMIF1 RD+WR      |    620.618417   1362.899050
    [IPU2  ]    107.967699 s:  SCI_EMIF2 RD+WR      |    602.608847   1303.530629
    [IPU2  ]    107.967943 s:  SCI_EMIF1 RD ONLY    |    437.993234    692.151855
    [IPU2  ]    107.968218 s:  SCI_EMIF1 WR ONLY    |    182.810041    744.617860
    [IPU2  ]    107.968462 s:  SCI_EMIF2 RD ONLY    |    429.896357    653.801553
    [IPU2  ]    107.968736 s:  SCI_EMIF2 WR ONLY    |    172.992390    725.171359
    [IPU2  ]    107.968980 s:  SCI_MA_MPU_P1        |      0.551389      9.954418
    [IPU2  ]    107.969255 s:  SCI_MA_MPU_P2        |      0.222086      9.775289
    [IPU2  ]    107.969529 s:  SCI_DSS              |    744.863420    805.010508
    [IPU2  ]    107.969773 s:  SCI_IPU1             |      1.212963      5.939224
    [IPU2  ]    107.970017 s:  SCI_VIP1_P1          |     12.444266     16.646113
    [IPU2  ]    107.970292 s:  SCI_VIP1_P2          |     29.030076     38.989144
    [IPU2  ]    107.970536 s:  SCI_VPE_P1           |      0.000000      0.000000
    [IPU2  ]    107.970780 s:  SCI_VPE_P2           |      0.000000      0.000000
    [IPU2  ]    107.971207 s:  SCI_DSP1_MDMA        |      1.851755     10.684681
    [IPU2  ]    107.971481 s:  SCI_DSP1_EDMA        |     82.987404    600.260529
    [IPU2  ]    107.971725 s:  SCI_DSP2_MDMA        |      0.044063      3.294682
    [IPU2  ]    107.971969 s:  SCI_DSP2_EDMA        |      0.000000      0.000000
    [IPU2  ]    107.972274 s:  SCI_EVE1_TC0         |      3.018808     22.532586
    [IPU2  ]    107.972518 s:  SCI_EVE1_TC1         |      0.000000      0.000000
    [IPU2  ]    107.972762 s:  SCI_EVE2_TC0         |      2.479250     18.894042
    [IPU2  ]    107.973006 s:  SCI_EVE2_TC1         |      0.000000      0.000000
    [IPU2  ]    107.973281 s:  SCI_EDMA_TC0_RD      |      0.000000      0.000000
    [IPU2  ]    107.973525 s:  SCI_EDMA_TC0_WR      |      0.000000      0.000000
    [IPU2  ]    107.974013 s:  SCI_EDMA_TC1_RD      |      0.000000      0.000000
    [IPU2  ]    107.974318 s:  SCI_EDMA_TC1_WR      |      0.000000      0.000000
    [IPU2  ]    107.974562 s:  SCI_VIP2_P1          |      0.000000      0.000000
    [IPU2  ]    107.974806 s:  SCI_VIP2_P2          |      0.000000      0.000000
    [IPU2  ]    107.975080 s:  SCI_VIP3_P1          |      0.000000      0.000000
    [IPU2  ]    107.975324 s:  SCI_VIP3_P2          |      0.000000      0.000000
    [IPU2  ]    107.975599 s:  SCI_EVE3_TC0         |      3.057066     50.400000
    [IPU2  ]    107.975843 s:  SCI_EVE3_TC1         |      0.000000      0.000000
    [IPU2  ]    107.976270 s:  SCI_EVE4_TC0         |      3.059365     49.990403
    [IPU2  ]    107.976544 s:  SCI_EVE4_TC1         |      0.000000      0.000000
    [IPU2  ]    107.976788 s:  SCI_IVA              |      0.000000      0.000000
    [IPU2  ]    107.977063 s:  SCI_GPU_P1           |    154.532226    878.296701
    [IPU2  ]    107.977307 s:  SCI_GPU_P2           |    153.186092    866.959724
    [IPU2  ]    107.977551 s:  SCI_GMAC_SW          |      0.000000      0.000000
    [IPU2  ]    108.078204 s:  CAPTURE: VIP1 Slice0 PortA FRAME MODE
    [IPU2  ]    108.078448 s:  
    [IPU2  ]    108.078539 s:  [ CAPTURE ] Link Statistics,
    [IPU2  ]    108.078722 s:  ******************************
    [IPU2  ]    108.078875 s:  
    [IPU2  ]    108.078966 s:  Elapsed time       = 22686 msec
    [IPU2  ]    108.079210 s:  
    [IPU2  ]    108.079302 s:  New data Recv      =  30.1 fps
    [IPU2  ]    108.079485 s:  Get Full Buf Cb    =  30.6 fps
    [IPU2  ]    108.079668 s:  Put Empty Buf Cb   =  30.6 fps
    [IPU2  ]    108.080003 s:  Driver/Notify Cb   =  30.6 fps
    [IPU2  ]    108.080247 s:  
    [IPU2  ]    108.080339 s:  Input Statistics,
    [IPU2  ]    108.080461 s:  
    [IPU2  ]    108.080552 s:  CH | In Recv | In Drop | In User Drop | In Process 
    [IPU2  ]    108.080796 s:     | FPS     | FPS     | FPS          | FPS        
    [IPU2  ]    108.081010 s:  -------------------------------------------------- 
    [IPU2  ]    108.081284 s:   0 |  30. 6      0. 0      0. 0          30. 6 
    [IPU2  ]    108.081559 s:  
    [IPU2  ]    108.081650 s:  Output Statistics,
    [IPU2  ]    108.081803 s:  
    [IPU2  ]    108.081894 s:  CH | Out | Out     | Out Drop | Out User Drop 
    [IPU2  ]    108.082108 s:     | ID  | FPS     | FPS      | FPS           
    [IPU2  ]    108.082321 s:  --------------------------------------------- 
    [IPU2  ]    108.082535 s:   0 |  0     30. 6     0. 0      0. 0 
    [IPU2  ]    108.082809 s:  
    [IPU2  ]    108.082931 s:  [VIP1 Slice0 PortA] Statistics
    [IPU2  ]    108.083114 s:  ==============================
    [IPU2  ]    108.083297 s:  Number of request queued  : 683
    [IPU2  ]    108.083480 s:  Number of request dequeued: 682
    [IPU2  ]    108.083663 s:  Overflow Count            : 0
    [IPU2  ]    108.083816 s:  
    [IPU2  ]    108.083907 s:     CH    |     Q      DQ     Total   Top     Bot    Total  Top    Bot   Min/Max     Min/Max   Dropped  Repeat   Fid 
      Desc 
    [IPU2  ]    108.084334 s:  (I/S/CH) |   Count   Count  Fields  Fields  Fields   FPS   FPS    FPS    Width       Height   Frames   Frames  Repea
    t Error
    [IPU2  ]    108.084761 s:  --------------------------------------------------------------------------------------------------------------------
    -------
    [IPU2  ]    108.085371 s:   00.0.00 |     688     682     683     683       0     30    30     0  1280/1280    720/720         0       0       
    0     0
    [IPU2  ]    108.085768 s:  
    [IPU2  ]    108.086317 s:  
    [IPU2  ]    108.086469 s:  [ IPC_OUT_0 ] Link Statistics,
    [IPU2  ]    108.086713 s:  ******************************
    [IPU2  ]    108.086927 s:  
    [IPU2  ]    108.087110 s:  Elapsed time       = 22694 msec
    [IPU2  ]    108.087354 s:  
    [IPU2  ]    108.087476 s:  New data Recv      =  30.9 fps
    [IPU2  ]    108.087659 s:  Release data Recv  =  30.44 fps
    [IPU2  ]    108.087842 s:  Driver/Notify Cb   = 130.7 fps
    [IPU2  ]    108.088025 s:  
    [IPU2  ]    108.088147 s:  Input Statistics,
    [IPU2  ]    108.088299 s:  
    [IPU2  ]    108.088391 s:  CH | In Recv | In Drop | In User Drop | In Process 
    [IPU2  ]    108.088635 s:     | FPS     | FPS     | FPS          | FPS        
    [IPU2  ]    108.088848 s:  -------------------------------------------------- 
    [IPU2  ]    108.089123 s:   0 |  30. 9      0. 0      0. 0          30. 9 
    [IPU2  ]    108.089428 s:  
    [IPU2  ]    108.089519 s:  Output Statistics,
    [IPU2  ]    108.089672 s:  
    [IPU2  ]    108.089763 s:  CH | Out | Out     | Out Drop | Out User Drop 
    [IPU2  ]    108.089977 s:     | ID  | FPS     | FPS      | FPS           
    [IPU2  ]    108.090221 s:  --------------------------------------------- 
    [IPU2  ]    108.090556 s:   0 |  0     30. 9     0. 0      0. 0 
    [IPU2  ]    108.090831 s:  
    [IPU2  ]    108.090922 s:  [ IPC_OUT_0 ] LATENCY,
    [IPU2  ]    108.091105 s:  ********************
    [IPU2  ]    108.091258 s:  Local Link Latency     : Avg =      7 us, Min =      0 us, Max =     61 us, 
    [IPU2  ]    108.091563 s:  Source to Link Latency : Avg =     91 us, Min =     61 us, Max =    213 us, 
    [IPU2  ]    108.091868 s:  
    [IPU2  ]    108.099341 s:  
    [IPU2  ]    108.099463 s:  [ IPC_IN_0 ] Link Statistics,
    [IPU2  ]    108.099646 s:  ******************************
    [IPU2  ]    108.099798 s:  
    [IPU2  ]    108.099890 s:  Elapsed time       = 22698 msec
    [IPU2  ]    108.100103 s:  
    [IPU2  ]    108.100225 s:  Get Full Buf Cb    =  30.9 fps
    [IPU2  ]    108.100408 s:  Put Empty Buf Cb   =  30.0 fps
    [IPU2  ]    108.100591 s:  Driver/Notify Cb   =  30.4 fps
    [IPU2  ]    108.100774 s:  
    [IPU2  ]    108.100866 s:  Input Statistics,
    [IPU2  ]    108.100988 s:  
    [IPU2  ]    108.101110 s:  CH | In Recv | In Drop | In User Drop | In Process 
    [IPU2  ]    108.101323 s:     | FPS     | FPS     | FPS          | FPS        
    [IPU2  ]    108.101567 s:  -------------------------------------------------- 
    [IPU2  ]    108.101781 s:   0 |  30. 9      0. 0      0. 0          30. 9 
    [IPU2  ]    108.102086 s:  
    [IPU2  ]    108.102177 s:  Output Statistics,
    [IPU2  ]    108.102330 s:  
    [IPU2  ]    108.102421 s:  CH | Out | Out     | Out Drop | Out User Drop 
    [IPU2  ]    108.102635 s:     | ID  | FPS     | FPS      | FPS           
    [IPU2  ]    108.102848 s:  --------------------------------------------- 
    [IPU2  ]    108.103092 s:   0 |  0     30. 9     0. 0      0. 0 
    [IPU2  ]    108.103336 s:  
    [IPU2  ]    108.103428 s:  [ IPC_IN_0 ] LATENCY,
    [IPU2  ]    108.103580 s:  ********************
    [IPU2  ]    108.103733 s:  Local Link Latency     : Avg =     18 us, Min =      0 us, Max =     61 us, 
    [IPU2  ]    108.104068 s:  Source to Link Latency : Avg =   7993 us, Min =   7808 us, Max =  12108 us, 
    [IPU2  ]    108.104373 s:  
    [IPU2  ]    108.104465 s:  [ IPC_IN_0 ] Detailed IPC Latency Statistics [ HOST -> IPU2 ] ,
    [IPU2  ]    108.104709 s:  ***************************************************************
    [IPU2  ]    108.105288 s:  
    [IPU2  ]    108.105410 s:  [ DISPLAY ] Link Statistics,
    [IPU2  ]    108.105593 s:  ******************************
    [IPU2  ]    108.105746 s:  
    [IPU2  ]    108.105837 s:  Elapsed time       = 22704 msec
    [IPU2  ]    108.106051 s:  
    [IPU2  ]    108.106173 s:  New data Recv      =  30.3 fps
    [IPU2  ]    108.106356 s:  Driver/Notify Cb   =  59.98 fps
    [IPU2  ]    108.106539 s:  
    [IPU2  ]    108.106630 s:  Input Statistics,
    [IPU2  ]    108.106752 s:  
    [IPU2  ]    108.106874 s:  CH | In Recv | In Drop | In User Drop | In Process 
    [IPU2  ]    108.107210 s:     | FPS     | FPS     | FPS          | FPS        
    [IPU2  ]    108.107423 s:  -------------------------------------------------- 
    [IPU2  ]    108.107637 s:   0 |  30. 8      0. 0      0. 0          30. 8 
    [IPU2  ]    108.107942 s:  
    [IPU2  ]    108.108064 s:  [ DISPLAY ] LATENCY,
    [IPU2  ]    108.108216 s:  ********************
    [IPU2  ]    108.108338 s:  Local Link Latency     : Avg =     44 us, Min =     30 us, Max =    122 us, 
    [IPU2  ]    108.108643 s:  Source to Link Latency : Avg =   8141 us, Min =   7961 us, Max =  12261 us, 
    [IPU2  ]    108.108948 s:  
    [IPU2  ]    108.109101 s:  
    [IPU2  ]    108.109192 s:  [ DISPLAY  VID1 ] Additional Statistics,
    [IPU2  ]    108.109406 s:  ************************************
    [IPU2  ]    108.109589 s:  Driver Queued    =    683 frames 
    [IPU2  ]    108.109772 s:  Driver De-Queued =    681 frames 
    [IPU2  ]    108.109955 s:  Driver Displayed =   1363 frames 
    [IPU2  ]    108.110138 s:  Driver Repeated  =    682 frames 
    [IPU2  ]    108.110321 s:  
    [IPU2  ]    108.110412 s:  ##### DSS DISPC Underflow Count  =      0 #####
    [IPU2  ]    108.110656 s:  
    [IPU2  ]    108.111358 s:  
    [IPU2  ]    108.111480 s:  [ DISPLAY ] Link Statistics,
    [IPU2  ]    108.111663 s:  ******************************
    [IPU2  ]    108.111816 s:  
    [IPU2  ]    108.111907 s:  Elapsed time       = 22758 msec
    [IPU2  ]    108.112121 s:  
    [IPU2  ]    108.112243 s:  Driver/Notify Cb   =  59.97 fps
    [IPU2  ]    108.112426 s:  
    [IPU2  ]    108.112517 s:  Input Statistics,
    [IPU2  ]    108.112639 s:  
    [IPU2  ]    108.112761 s:  CH | In Recv | In Drop | In User Drop | In Process 
    [IPU2  ]    108.112975 s:     | FPS     | FPS     | FPS          | FPS        
    [IPU2  ]    108.113707 s:  -------------------------------------------------- 
    [IPU2  ]    108.114103 s:   0 |   0. 4      0. 0      0. 0           0. 4 
    [IPU2  ]    108.114591 s:  
    [IPU2  ]    108.114683 s:  [ DISPLAY ] LATENCY,
    [IPU2  ]    108.114835 s:  ********************
    [IPU2  ]    108.114957 s:  Local Link Latency     : Avg =     30 us, Min =     30 us, Max =     30 us, 
    [IPU2  ]    108.115323 s:  Source to Link Latency : Avg = 136125 us, Min = 136125 us, Max = 136125 us, 
    [IPU2  ]    108.115659 s:  
    [IPU2  ]    108.115781 s:  
    [IPU2  ]    108.115872 s:  [ DISPLAY GRPX1 ] Additional Statistics,
    [IPU2  ]    108.116116 s:  ************************************
    [IPU2  ]    108.116299 s:  Driver Queued    =      1 frames 
    [IPU2  ]    108.116482 s:  Driver De-Queued =      0 frames 
    [IPU2  ]    108.116665 s:  Driver Displayed =   1365 frames 
    [IPU2  ]    108.116848 s:  Driver Repeated  =   1365 frames 
    [IPU2  ]    108.117062 s:  
    [IPU2  ]    108.117153 s:  ##### DSS DISPC Underflow Count  =      0 #####
    [IPU2  ]    108.117397 s:  
    [IPU2  ]    108.118373 s:  [CAPTURE] Buffer Q Status,
    [IPU2  ]    108.118587 s:  Empty Q : Elements in Q =   0, Write Idx =   0, Read Idx =   0
    [IPU2  ]    108.118861 s:  Full  Q : Elements in Q =   0, Write Idx = 300, Read Idx = 300
    [HOST  ]    108.157409 s:  
    [HOST  ]    108.157440 s:  [ IPC_IN_0 ] Link Statistics,
    [HOST  ]    108.157440 s:  ******************************
    [HOST  ]    108.157440 s:  
    [HOST  ]    108.157440 s:  Elapsed time       = 22717 msec
    [HOST  ]    108.157440 s:  
    [HOST  ]    108.157440 s:  Get Full Buf Cb    =  30.6 fps
    [HOST  ]    108.157470 s:  Put Empty Buf Cb   =  30.6 fps
    [HOST  ]    108.157470 s:  Driver/Notify Cb   =  30.2 fps
    [HOST  ]    108.157470 s:  
    [HOST  ]    108.157470 s:  Input Statistics,
    [HOST  ]    108.157470 s:  
    [HOST  ]    108.157470 s:  CH | In Recv | In Drop | In User Drop | In Process 
    [HOST  ]    108.157501 s:     | FPS     | FPS     | FPS          | FPS        
    [HOST  ]    108.157501 s:  -------------------------------------------------- 
    [HOST  ]    108.157501 s:   0 |  30. 6      0. 0      0. 0          30. 6 
    [HOST  ]    108.157501 s:  
    [HOST  ]    108.157501 s:  Output Statistics,
    [HOST  ]    108.157501 s:  
    [HOST  ]    108.157531 s:  CH | Out | Out     | Out Drop | Out User Drop 
    [HOST  ]    108.157531 s:     | ID  | FPS     | FPS      | FPS           
    [HOST  ]    108.157531 s:  --------------------------------------------- 
    [HOST  ]    108.157531 s:   0 |  0     30. 6     0. 0      0. 0 
    [HOST  ]    108.157531 s:  
    [HOST  ]    108.157562 s:  [ IPC_IN_0 ] LATENCY,
    [HOST  ]    108.157562 s:  ********************
    [HOST  ]    108.157562 s:  Local Link Latency     : Avg =      3 us, Min =      0 us, Max =     31 us, 
    [HOST  ]    108.157562 s:  Source to Link Latency : Avg =  54237 us, Min =  47975 us, Max =  60747 us, 
    [HOST  ]    108.157562 s:  
    [HOST  ]    108.157562 s:  [ IPC_IN_0 ] Detailed IPC Latency Statistics [ DSP1 -> HOST ] ,
    [HOST  ]    108.157592 s:  ***************************************************************
    [HOST  ]    108.157592 s:  IPC One-way Buffer Passing Latency   (usecs) : Avg =  53274, Min =  47060, Max =  59649
    [HOST  ]    108.157623 s:  IPC One-way Notify Interrupt Latency (usecs) : Avg =  53252, Min =  47000, Max =  59619
    [HOST  ]    108.157653 s:  
    [HOST  ]    108.157653 s:  [ SGXFRMCPY ] Link Statistics,
    [HOST  ]    108.157653 s:  ******************************
    [HOST  ]    108.157684 s:  
    [HOST  ]    108.157684 s:  Elapsed time       = 22717 msec
    [HOST  ]    108.157684 s:  
    [HOST  ]    108.157684 s:  New data Recv      =  30.2 fps
    [HOST  ]    108.157684 s:  
    [HOST  ]    108.157684 s:  Input Statistics,
    [HOST  ]    108.157684 s:  
    [HOST  ]    108.157714 s:  CH | In Recv | In Drop | In User Drop | In Process 
    [HOST  ]    108.157714 s:     | FPS     | FPS     | FPS          | FPS        
    [HOST  ]    108.157714 s:  -------------------------------------------------- 
    [HOST  ]    108.157714 s:   0 |  30. 6      0. 0      0. 0          30. 6 
    [HOST  ]    108.157714 s:  
    [HOST  ]    108.157745 s:  [ SGXFRMCPY ] LATENCY,
    [HOST  ]    108.157745 s:  ********************
    [HOST  ]    108.157745 s:  Local Link Latency     : Avg =   6639 us, Min =   6561 us, Max =   7538 us, 
    [HOST  ]    108.157745 s:  Source to Link Latency : Avg =  60926 us, Min =  54781 us, Max =  67460 us, 
    [HOST  ]    108.157745 s:  
    [HOST  ]    108.157806 s: 
    [HOST  ]    108.157806 s:  
    [HOST  ]    108.157806 s:  [  ] Link Statistics,
    [HOST  ]    108.157806 s:  ******************************
    [HOST  ]    108.157806 s:  
    [HOST  ]    108.157836 s:  Elapsed time       = 22709 msec
    [HOST  ]    108.157836 s:  
    [HOST  ]    108.157836 s:  New data Recv      =  30.7 fps
    [HOST  ]    108.157836 s:  Release data Recv  =  29.98 fps
    [HOST  ]    108.157836 s:  Driver/Notify Cb   =  29.98 fps
    [HOST  ]    108.157836 s:  
    [HOST  ]    108.157836 s:  Input Statistics,
    [HOST  ]    108.157867 s:  
    [HOST  ]    108.157867 s:  CH | In Recv | In Drop | In User Drop | In Process 
    [HOST  ]    108.157867 s:     | FPS     | FPS     | FPS          | FPS        
    [HOST  ]    108.157867 s:  -------------------------------------------------- 
    [HOST  ]    108.157867 s:   0 |  30. 7      0. 0      0. 0          30. 7 
    [HOST  ]    108.157867 s:  
    [HOST  ]    108.157897 s:  Output Statistics,
    [HOST  ]    108.157897 s:  
    [HOST  ]    108.157897 s:  CH | Out | Out     | Out Drop | Out User Drop 
    [HOST  ]    108.157897 s:     | ID  | FPS     | FPS      | FPS           
    [HOST  ]    108.157897 s:  --------------------------------------------- 
    [HOST  ]    108.157897 s:   0 |  0     30. 7     0. 0      0. 0 
    [HOST  ]    108.157928 s:  
    [HOST  ]    108.157928 s:  [  ] LATENCY,
    [HOST  ]    108.157928 s:  ********************
    [HOST  ]    108.157928 s:  Local Link Latency     : Avg =      0 us, Min =      0 us, Max =     31 us, 
    [HOST  ]    108.157928 s:  Source to Link Latency : Avg =  60954 us, Min =  54812 us, Max =  67491 us, 
    [HOST  ]    108.157928 s:  
    [HOST  ]    108.191406 s: 
    [HOST  ]  
    [HOST  ]  ====================
    [HOST  ]  Chains Run-time Menu
    [HOST  ]  ====================
    [HOST  ]  
    [HOST  ]  0: Stop Chain
    [HOST  ]  
    [HOST  ]  p: Print Performance Statistics 
    [HOST  ]  
    [HOST  ]  Enter Choice: 
    [HOST  ]  
    [DSP1  ]    108.092844 s:  
    [DSP1  ]    108.092905 s:  [ IPC_IN_0 ] Link Statistics,
    [DSP1  ]    108.092936 s:  ******************************
    [DSP1  ]    108.092997 s:  
    [DSP1  ]    108.092997 s:  Elapsed time       = 22700 msec
    [DSP1  ]    108.093058 s:  
    [DSP1  ]    108.093088 s:  Get Full Buf Cb    =  30.8 fps
    [DSP1  ]    108.093149 s:  Put Empty Buf Cb   =  30.8 fps
    [DSP1  ]    108.093180 s:  Driver/Notify Cb   =  30.4 fps
    [DSP1  ]    108.093241 s:  
    [DSP1  ]    108.093241 s:  Input Statistics,
    [DSP1  ]    108.093302 s:  
    [DSP1  ]    108.093302 s:  CH | In Recv | In Drop | In User Drop | In Process 
    [DSP1  ]    108.093393 s:     | FPS     | FPS     | FPS          | FPS        
    [DSP1  ]    108.093454 s:  -------------------------------------------------- 
    [DSP1  ]    108.093515 s:   0 |  30. 8      0. 0      0. 0          30. 8 
    [DSP1  ]    108.093576 s:  
    [DSP1  ]    108.093607 s:  Output Statistics,
    [DSP1  ]    108.093637 s:  
    [DSP1  ]    108.093668 s:  CH | Out | Out     | Out Drop | Out User Drop 
    [DSP1  ]    108.093698 s:     | ID  | FPS     | FPS      | FPS           
    [DSP1  ]    108.093759 s:  --------------------------------------------- 
    [DSP1  ]    108.093820 s:   0 |  0     30. 8     0. 0      0. 0 
    [DSP1  ]    108.093881 s:  
    [DSP1  ]    108.093912 s:  [ IPC_IN_0 ] LATENCY,
    [DSP1  ]    108.093942 s:  ********************
    [DSP1  ]    108.094003 s:  Local Link Latency     : Avg =      5 us, Min =      0 us, Max =     31 us, 
    [DSP1  ]    108.094064 s:  Source to Link Latency : Avg =    206 us, Min =    183 us, Max =    366 us, 
    [DSP1  ]    108.094186 s:  
    [DSP1  ]    108.094217 s:  [ IPC_IN_0 ] Detailed IPC Latency Statistics [ IPU2 -> DSP1 ] ,
    [DSP1  ]    108.094278 s:  ***************************************************************
    [DSP1  ]    108.094339 s:  IPC One-way Buffer Passing Latency   (usecs) : Avg =    142, Min =    122, Max =    305
    [DSP1  ]    108.094430 s:  IPC One-way Notify Interrupt Latency (usecs) : Avg =     78, Min =     61, Max =    244
    [DSP1  ]    108.094674 s:  
    [DSP1  ]    108.094705 s:  [ ALG_FRAMECOPY ] Link Statistics,
    [DSP1  ]    108.094766 s:  ******************************
    [DSP1  ]    108.094796 s:  
    [DSP1  ]    108.094827 s:  Elapsed time       = 22702 msec
    [DSP1  ]    108.094857 s:  
    [DSP1  ]    108.094888 s:  New data Recv      =  30.4 fps
    [DSP1  ]    108.094949 s:  
    [DSP1  ]    108.094979 s:  Input Statistics,
    [DSP1  ]    108.095010 s:  
    [DSP1  ]    108.095040 s:  CH | In Recv | In Drop | In User Drop | In Process 
    [DSP1  ]    108.095101 s:     | FPS     | FPS     | FPS          | FPS        
    [DSP1  ]    108.095132 s:  -------------------------------------------------- 
    [DSP1  ]    108.095193 s:   0 |  30. 8      0. 0      0. 0          30. 8 
    [DSP1  ]    108.095284 s:  
    [DSP1  ]    108.095284 s:  Output Statistics,
    [DSP1  ]    108.095345 s:  
    [DSP1  ]    108.095376 s:  CH | Out | Out     | Out Drop | Out User Drop 
    [DSP1  ]    108.095406 s:     | ID  | FPS     | FPS      | FPS           
    [DSP1  ]    108.095467 s:  --------------------------------------------- 
    [DSP1  ]    108.095528 s:   0 |  0     30. 8     0. 0      0. 0 
    [DSP1  ]    108.095589 s:  
    [DSP1  ]    108.095620 s:  [ ALG_FRAMECOPY ] LATENCY,
    [DSP1  ]    108.095650 s:  ********************
    [DSP1  ]    108.095711 s:  Local Link Latency     : Avg =    682 us, Min =    549 us, Max =    762 us, 
    [DSP1  ]    108.095772 s:  Source to Link Latency : Avg =    920 us, Min =    763 us, Max =   1067 us, 
    [DSP1  ]    108.095864 s:  
    [DSP1  ]    108.096047 s:  
    [DSP1  ]    108.096077 s:  [ IPC_OUT_0 ] Link Statistics,
    [DSP1  ]    108.096108 s:  ******************************
    [DSP1  ]    108.096169 s:  
    [DSP1  ]    108.096169 s:  Elapsed time       = 22703 msec
    [DSP1  ]    108.096230 s:  
    [DSP1  ]    108.096260 s:  New data Recv      =  30.8 fps
    [DSP1  ]    108.096291 s:  Release data Recv  =  30.21 fps
    [DSP1  ]    108.096352 s:  Driver/Notify Cb   = 130.11 fps
    [DSP1  ]    108.096413 s:  
    [DSP1  ]    108.096443 s:  Input Statistics,
    [DSP1  ]    108.096474 s:  
    [DSP1  ]    108.096504 s:  CH | In Recv | In Drop | In User Drop | In Process 
    [DSP1  ]    108.096535 s:     | FPS     | FPS     | FPS          | FPS        
    [DSP1  ]    108.096596 s:  -------------------------------------------------- 
    [DSP1  ]    108.096657 s:   0 |  30. 8      0. 0      0. 0          30. 8 
    [DSP1  ]    108.096718 s:  
    [DSP1  ]    108.096748 s:  Output Statistics,
    [DSP1  ]    108.096779 s:  
    [DSP1  ]    108.096809 s:  CH | Out | Out     | Out Drop | Out User Drop 
    [DSP1  ]    108.096870 s:     | ID  | FPS     | FPS      | FPS           
    [DSP1  ]    108.096931 s:  --------------------------------------------- 
    [DSP1  ]    108.096992 s:   0 |  0     30. 8     0. 0      0. 0 
    [DSP1  ]    108.097053 s:  
    [DSP1  ]    108.097084 s:  [ IPC_OUT_0 ] LATENCY,
    [DSP1  ]    108.097114 s:  ********************
    [DSP1  ]    108.097145 s:  Local Link Latency     : Avg =      2 us, Min =      0 us, Max =     31 us, 
    [DSP1  ]    108.097236 s:  Source to Link Latency : Avg =    973 us, Min =    824 us, Max =   1128 us, 
    

  • Hi Neha,

    From your logs, Frame Copy is running on DSP1
    "[DSP1 ] 108.094705 s: [ ALG_FRAMECOPY ] Link Statistics,
    [DSP1 ] 108.094766 s: ******************************
    [DSP1 ] 108.094796 s:
    [DSP1 ] 108.094827 s: Elapsed time = 22702 msec
    [DSP1 ] 108.094857 s:
    [DSP1 ] 108.094888 s: New data Recv = 30.4 fps
    [DSP1 ] 108.094949 s:
    [DSP1 ] 108.094979 s: Input Statistics,
    [DSP1 ] 108.095010 s:
    [DSP1 ] 108.095040 s: CH | In Recv | In Drop | In User Drop | In Process
    [DSP1 ] 108.095101 s: | FPS | FPS | FPS | FPS
    [DSP1 ] 108.095132 s: --------------------------------------------------
    [DSP1 ] 108.095193 s: 0 | 30. 8 0. 0 0. 0 30. 8
    [DSP1 ] 108.095284 s:
    [DSP1 ] 108.095284 s: Output Statistics,
    [DSP1 ] 108.095345 s:
    [DSP1 ] 108.095376 s: CH | Out | Out | Out Drop | Out User Drop
    [DSP1 ] 108.095406 s: | ID | FPS | FPS | FPS
    [DSP1 ] 108.095467 s: ---------------------------------------------
    [DSP1 ] 108.095528 s: 0 | 0 30. 8 0. 0 0. 0
    [DSP1 ] 108.095589 s:
    [DSP1 ] 108.095620 s: [ ALG_FRAMECOPY ] LATENCY,
    [DSP1 ] 108.095650 s: ********************
    [DSP1 ] 108.095711 s: Local Link Latency : Avg = 682 us, Min = 549 us, Max = 762 us,
    [DSP1 ] 108.095772 s: Source to Link Latency : Avg = 920 us, Min = 763 us, Max = 1067 us, "


    1. Can you please send you changes, where in you have added Vps_Printf ()
    2. Please send vision_sdk\src\main_app\tda2xx\dsp1\src\main_c6xdsp1.c
    3. Please send your boot up log with print stats output.

    Regards,
    Sujith
  • 6116.bootlog.txt

    /*
     *******************************************************************************
     *
     * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
     * ALL RIGHTS RESERVED
     *
     *******************************************************************************
     */
    
    /**
     *******************************************************************************
     *
     * \file main_c6xdsp1.c
     *
     * \brief  This file implements the DSP1 main()
     *
     *         This file has the DSP1 main(), the entry point to the core.
     *         Set the DSP1 clock and call System_start() & BIOS_start()
     *
     * \version 0.0 (Jul 2013) : [SS] First version
     *
     *******************************************************************************
    */
    
    #ifdef A15_TARGET_OS_LINUX
    /* This define must precede inclusion of any xdc header file */
    #define Registry_CURDESC Test__Desc
    #define MODULE_NAME "Server"
    #endif
    
    /*******************************************************************************
     *  INCLUDE FILES
     *******************************************************************************
     */
    #ifdef A15_TARGET_OS_LINUX
    /* xdctools header files */
    #include <xdc/std.h>
    #include <xdc/runtime/Assert.h>
    #include <xdc/runtime/Diags.h>
    #include <xdc/runtime/Log.h>
    #include <xdc/runtime/Registry.h>
    #endif
    #include <src/utils_common/include/utils_idle.h>
    #include <src/utils_common/include/utils.h>
    #include <include/link_api/system_common.h>
    #include <src/utils_common/include/utils_timer_reconfig.h>
    
    #ifdef A15_TARGET_OS_LINUX
    #include <src/links_common/system/system_priv_common.h>
    #include <src/links_common/system/system_rsc_table_dsp.h>
    
    /* private data */
    Registry_Desc               Registry_CURDESC;
    #endif
    #include <xdc/cfg/global.h>
    #include "src/utils_common/include/utils_xmc_mpu.h"
    
    
    /*******************************************************************************
     *  Function prototypes
     *******************************************************************************
     */
    Int32 System_start(Task_FuncPtr chainsMainFunc);
    Int32 StartupEmulatorWaitFxn (void);
    Void Utils_dspCacheInit(void);
    Void C6XDSP_main(UArg arg0, UArg arg1);
    void mainDsp1TimerTick(UArg arg);
    
    /**
     *******************************************************************************
     *
     * \brief This function implements the wait loop of DSP1.
     *
     *        This function would get called if the DSP1 doesn't run the demo
     *        or application. It is not used if DSP1 runs the app.  Do not
     *        remove this function, required when App is moved out of DSP1
     *
     * \param  arg0 [IN]
     * \param  arg1 [IN]
     *
     * \return  void
     *
     *******************************************************************************
     */
    Void C6XDSP_main(UArg arg0, UArg arg1)
    {
        UInt32 state;
        UInt32 coreId = System_getSelfProcId();
    
        Utils_dspCacheInit();
    
        while (1)
        {
            BspOsal_sleep(100U);
            Utils_getAppInitState(coreId, &state);
            if (state == CORE_APP_INITSTATUS_DO_EXIT)
            {
                break;
            }
        }
    }
    
    /**
     *******************************************************************************
     *
     * \brief This is the main() implementation of DSP1.
     *
     *        This is the first function  and entry point to DSP1, does
     *         - Set the correct/required CPU frequency
     *         - Call the System_start with C6XDSP_main() and loops there
     *
     * \return  SYSTEM_LINK_STATUS_SOK
     *
     *******************************************************************************
     */
    Int32 main(void)
    {
    #ifdef A15_TARGET_OS_LINUX
        Registry_Result result;
    
        /* register with xdc.runtime to get a diags mask */
        result = Registry_addModule(&Registry_CURDESC, MODULE_NAME);
        Assert_isTrue(result == Registry_SUCCESS, (Assert_Id)NULL);
    
        /* enable some log events */
        Diags_setMask(MODULE_NAME"+EXF");
    #endif
    
        /* This should the first call for initializing the remote debug server
         */
        RemoteLog_init();
        Vps_printf(" ***** DSP1 Firmware build time %s %s\n",
                   __TIME__,__DATE__);
        /* This is for debug purpose- see the description of function header */
        StartupEmulatorWaitFxn();
    #ifdef ECC_FFI_INCLUDE
        Utils_xmcMpuSetLinkStatsSectInfo(gXdcLinkStatsAddr, gXdcLinkStatsSize);
    #endif
        {
            UInt32 clkHz;
    
            clkHz = Utils_getClkHz(UTILS_CLK_ID_DSP);
    
            if(clkHz==0U)
            {
                clkHz = SYSTEM_DSP_FREQ;
            }
    
            Utils_setCpuFrequency(clkHz);
        }
        /* Timer i767 Silicon Issue workaround */
        Utils_TimerSetTsicrReadMode();
    
        Utils_idlePrepare();
    
        System_start(C6XDSP_main);
        BIOS_start();
    
        return (SYSTEM_LINK_STATUS_SOK);
    }
    
    /**
     *******************************************************************************
     *
     * \brief This function enables the DSP1 debug option
     *
     *        This function enables the DSP1 debug option from main() onwards
     *         - Set the volatile variable enableDebug = 1 to enable debug
     *         - rebuild the code with enableDebug = 1
     *         - Once enableDebug is set to 1, the control waits in this
     *           function even after the free-run
     *         - Can connect to core DSP via CCS and J-Tag to debug
     *         - Once CCS is connected, reset enableDebug = 0 to come out of
     *           this function and proceeds with further debug
     *
     * \return  SYSTEM_LINK_STATUS_SOK
     *
     *******************************************************************************
     */
    Int32 StartupEmulatorWaitFxn (void)
    {
        volatile Int32 enableDebug = 0;
        do
        {
        }while (enableDebug);
        return SYSTEM_LINK_STATUS_SOK;
    }
    
    /**
     *******************************************************************************
     *
     * \brief This function enables the DSP Timer Ticks
     *
     *        Enables the DSP Timer Ticks is required for C66 DSP, remove this
     *        once BIOS support auto enable of this
     *
     * \param  arg [IN]
     *
     *******************************************************************************
     */
    void mainDsp1TimerTick(UArg arg)
    {
        Clock_tick();
    }
    
    /* Nothing beyond this point */
    
    
    /*
     *******************************************************************************
     *
     * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
     * ALL RIGHTS RESERVED
     *
     *******************************************************************************
     */
    
    /**
     *******************************************************************************
     * \file frameCopyLink_algPlugin.c
     *
     * \brief  This file contains plug in functions for frame copy Link
     *
     * \version 0.0 (Aug 2013) : [PS] First version
     * \version 0.1 (Aug 2013) : [PS] Changes to make plug in functions not rely
     *                                on the elements of Algorithm link object.
     *                                Necessary functionality is accomplished via
     *                                API call backs to link skeletal implementation
     * \version 0.2 (Sept 2013) : [PS] Added code for multi channel support
     * \version 0.3 (Sept 2013) : [PS] Added code for stats collector
     *
     *******************************************************************************
    */
    
    /*******************************************************************************
     *  INCLUDE FILES
     *******************************************************************************
     */
    #include "frameCopyLink_priv.h"
    #include <include/link_api/system_common.h>
    #include <src/utils_common/include/utils_mem.h>
    
    
    /**
     *******************************************************************************
     *
     * \brief Implementation of function to init plugins()
     *
     *        This function will be called by AlgorithmLink_initAlgPlugins, so as
     *        register plugins of frame copy algorithm
     *
     * \return  SYSTEM_LINK_STATUS_SOK on success
     *
     *******************************************************************************
     */
    Int32 AlgorithmLink_FrameCopy_initPlugin()
    {
        AlgorithmLink_FuncTable pluginFunctions;
        UInt32 algId = (UInt32)-1;
    
        pluginFunctions.AlgorithmLink_AlgPluginCreate =
            AlgorithmLink_frameCopyCreate;
        pluginFunctions.AlgorithmLink_AlgPluginProcess =
            AlgorithmLink_frameCopyProcess;
        pluginFunctions.AlgorithmLink_AlgPluginControl =
            AlgorithmLink_frameCopyControl;
        pluginFunctions.AlgorithmLink_AlgPluginStop =
            AlgorithmLink_frameCopyStop;
        pluginFunctions.AlgorithmLink_AlgPluginDelete =
            AlgorithmLink_frameCopyDelete;
    
    #ifdef BUILD_DSP
        algId = ALGORITHM_LINK_DSP_ALG_FRAMECOPY;
    #endif
    
    #ifdef BUILD_ARP32
        algId = ALGORITHM_LINK_EVE_ALG_FRAMECOPY;
    #endif
    
    #ifdef BUILD_A15
        algId = ALGORITHM_LINK_A15_ALG_FRAMECOPY;
    #endif
    
        AlgorithmLink_registerPlugin(algId, &pluginFunctions);
    
        return SYSTEM_LINK_STATUS_SOK;
    }
    
    /**
     *******************************************************************************
     *
     * \brief Implementation of Create Plugin for frame copy algorithm link
     *
     *
     * \param  pObj              [IN] Algorithm link object handle
     * \param  pCreateParams     [IN] Pointer to create time parameters
     *
     * \return  SYSTEM_LINK_STATUS_SOK on success
     *
     *******************************************************************************
     */
    Int32 AlgorithmLink_frameCopyCreate(void * pObj, void * pCreateParams)
    {
        Vps_printf("************************** DSP FrameCopy Create ******************************");
        Alg_FrameCopy_Obj          * algHandle;
        Int32                        frameIdx;
        Int32                        status    = SYSTEM_LINK_STATUS_SOK;
        UInt32                       maxHeight;
        UInt32                       maxWidth;
        System_Buffer              * pSystemBuffer;
        System_VideoFrameBuffer    * pSystemVideoFrameBuffer;
        System_LinkInfo              prevLinkInfo;
        Int32                        outputQId;
        Int32                        channelId;
        Int32                        numChannelsUsed;
        Int32                        numInputQUsed;
        Int32                        numOutputQUsed;
        UInt32                       prevLinkQueId;
        UInt32                       dataFormat;
        System_LinkChInfo          * pOutChInfo;
        System_LinkChInfo          * pPrevChInfo;
        UInt32                       prevChInfoFlags;
    
        AlgorithmLink_FrameCopyObj          * pFrameCopyObj;
        AlgorithmLink_FrameCopyCreateParams * pFrameCopyCreateParams;
        AlgorithmLink_OutputQueueInfo       * pOutputQInfo;
        AlgorithmLink_InputQueueInfo        * pInputQInfo;
    
    
        pFrameCopyCreateParams =
            (AlgorithmLink_FrameCopyCreateParams *)pCreateParams;
    
        /*
         * Space for Algorithm specific object gets allocated here.
         * Pointer gets recorded in algorithmParams
         */
        pFrameCopyObj = (AlgorithmLink_FrameCopyObj *)
                            Utils_memAlloc(UTILS_HEAPID_DDR_CACHED_LOCAL,
                                           sizeof(AlgorithmLink_FrameCopyObj), 32);
    
        UTILS_assert(pFrameCopyObj!=NULL);
    
        pOutputQInfo = &pFrameCopyObj->outputQInfo;
        pInputQInfo  = &pFrameCopyObj->inputQInfo;
    
        AlgorithmLink_setAlgorithmParamsObj(pObj, pFrameCopyObj);
    
        /*
         * Taking copy of needed create time parameters in local object for future
         * reference.
         */
        pFrameCopyObj->algLinkCreateParams.maxHeight =
            pFrameCopyCreateParams->maxHeight;
        pFrameCopyObj->algLinkCreateParams.maxWidth  =
            pFrameCopyCreateParams->maxWidth;
        pFrameCopyObj->algLinkCreateParams.numOutputFrames =
            pFrameCopyCreateParams->numOutputFrames;
    
        memcpy((void*)(&pFrameCopyObj->outQueParams),
               (void*)(&pFrameCopyCreateParams->outQueParams),
               sizeof(System_LinkOutQueParams));
        memcpy((void*)(&pFrameCopyObj->inQueParams),
               (void*)(&pFrameCopyCreateParams->inQueParams),
               sizeof(System_LinkInQueParams));
    
        /*
         * Populating parameters corresponding to Q usage of frame copy
         * algorithm link
         */
        numInputQUsed     = 1;
        numOutputQUsed    = 1;
        numChannelsUsed   = 1;
        pInputQInfo->qMode  = ALGORITHM_LINK_QUEUEMODE_NOTINPLACE;
        pOutputQInfo->qMode = ALGORITHM_LINK_QUEUEMODE_NOTINPLACE;
    
        outputQId                 = 0;
        pOutputQInfo->queInfo.numCh = numChannelsUsed;
    
        /*
         * Channel info of current link will be obtained from previous link.
         * If any of the properties get changed in the current link, then those
         * values need to be updated accordingly in
         * pOutputQInfo->queInfo.chInfo[channelId]
         * In frame copy example, only pitch changes. Hence only it is
         * updated. Other parameters are copied from prev link.
         */
        status = System_linkGetInfo(pFrameCopyCreateParams->inQueParams.prevLinkId,
                                    &prevLinkInfo);
    
        prevLinkQueId = pFrameCopyCreateParams->inQueParams.prevLinkQueId;
    
        pFrameCopyObj->numInputChannels = prevLinkInfo.queInfo[prevLinkQueId].numCh;
    
        maxHeight = pFrameCopyObj->algLinkCreateParams.maxHeight;
        maxWidth  = pFrameCopyObj->algLinkCreateParams.maxWidth;
    
        /*
         * Make pitch a multiple of ALGORITHMLINK_FRAME_ALIGN, so that if the frame
         * origin is aligned, then individual lines are also aligned
         * Also note that the pitch is kept same independent of width of
         * individual channels
         */
        pFrameCopyObj->pitch = maxWidth;
        if(maxWidth % ALGORITHMLINK_FRAME_ALIGN)
        {
            pFrameCopyObj->pitch += (ALGORITHMLINK_FRAME_ALIGN -
                                    (maxWidth % ALGORITHMLINK_FRAME_ALIGN));
        }
    
        /*
         * Channel Info Population
         */
        for(channelId =0 ; channelId < pFrameCopyObj->numInputChannels; channelId++)
        {
    
          pOutChInfo      = &(pOutputQInfo->queInfo.chInfo[channelId]);
          pPrevChInfo     = &(prevLinkInfo.queInfo[prevLinkQueId].chInfo[channelId]);
          prevChInfoFlags = pPrevChInfo->flags;
    
          /*
           * Certain channel info parameters simply get defined by previous link
           * channel info. Hence copying them to output channel info
           */
          pOutChInfo->startX = pPrevChInfo->startX;
          pOutChInfo->startY = pPrevChInfo->startY;
          pOutChInfo->width  = pPrevChInfo->width;
          pOutChInfo->height = pPrevChInfo->height;
          pOutChInfo->flags  = prevChInfoFlags;
    
          dataFormat = System_Link_Ch_Info_Get_Flag_Data_Format(prevChInfoFlags);
    
          if((dataFormat != SYSTEM_DF_YUV422I_YUYV)
             &&
             (dataFormat != SYSTEM_DF_YUV420SP_UV)
            )
          {
            return SYSTEM_LINK_STATUS_EFAIL;
          }
    
          if(pPrevChInfo->width > maxWidth || pPrevChInfo->height > maxHeight)
          {
            return SYSTEM_LINK_STATUS_EFAIL;
          }
    
          /*
           * Certain channel info parameters are properties of the current link,
           * They are set here.
           */
          pOutChInfo->pitch[0] = pFrameCopyObj->pitch;
          pOutChInfo->pitch[1] = pFrameCopyObj->pitch;
          pOutChInfo->pitch[2] = pFrameCopyObj->pitch;
    
          if(dataFormat == SYSTEM_DF_YUV422I_YUYV)
          {
            pOutChInfo->pitch[0] = pFrameCopyObj->pitch * 2;
          }
    
          /*
           * Taking a copy of input channel info in the link object for any future
           * use
           */
          memcpy((void *)&(pFrameCopyObj->inputChInfo[channelId]),
                 (void *)&(prevLinkInfo.queInfo[prevLinkQueId].chInfo[channelId]),
                 sizeof(System_LinkChInfo)
                );
        }
    
        /*
         * If any output buffer Q gets used in INPLACE manner, then
         * pOutputQInfo->inQueParams and
         * pOutputQInfo->inputQId need to be populated appropriately.
         */
    
        /*
         * Initializations needed for book keeping of buffer handling.
         * Note that this needs to be called only after setting inputQMode and
         * outputQMode.
         */
        AlgorithmLink_queueInfoInit(pObj,
                                    numInputQUsed,
                                    pInputQInfo,
                                    numOutputQUsed,
                                    pOutputQInfo
                                    );
    
        /*
         * Algorithm creation happens here
         * - Population of create time parameters
         * - Create call for algorithm
         * - Algorithm handle gets recorded inside link object
         */
    
        pFrameCopyObj->createParams.maxHeight    = maxHeight;
        pFrameCopyObj->createParams.maxWidth     = maxWidth;
        pFrameCopyObj->frameDropCounter          = 0;
    
        algHandle = Alg_FrameCopyCreate(&pFrameCopyObj->createParams);
        UTILS_assert(algHandle != NULL);
    
        pFrameCopyObj->algHandle = algHandle;
    
        /*
         * Creation of output buffers for output buffer Q = 0 (Used)
         *  - Connecting video frame buffer to system buffer payload
         *  - Memory allocation for Luma and Chroma buffers (Assume 420 format)
         *  - Put the buffer into empty queue
         */
        outputQId = 0;
    
        for(channelId =0 ; channelId < pFrameCopyObj->numInputChannels; channelId++)
        {
          for(frameIdx = 0;
              frameIdx < pFrameCopyObj->algLinkCreateParams.numOutputFrames;
              frameIdx++)
          {
            pSystemBuffer           =
                                 &(pFrameCopyObj->buffers[channelId][frameIdx]);
            pSystemVideoFrameBuffer =
                                 &(pFrameCopyObj->videoFrames[channelId][frameIdx]);
    
            /*
             * Properties of pSystemBuffer, which do not get altered during
             * run time (frame exchanges) are initialized here
             */
            pSystemBuffer->payload     = pSystemVideoFrameBuffer;
            pSystemBuffer->payloadSize = sizeof(System_VideoFrameBuffer);
            pSystemBuffer->bufType     = SYSTEM_BUFFER_TYPE_VIDEO_FRAME;
            pSystemBuffer->chNum       = channelId;
    
            memcpy((void *)&pSystemVideoFrameBuffer->chInfo,
                   (void *)&pOutputQInfo->queInfo.chInfo[channelId],
                   sizeof(System_LinkChInfo));
    
            /*
             * Buffer allocation done for maxHeight, maxWidth and also assuming
             * worst case num planes = 2, for data Format SYSTEM_DF_YUV422I_YUYV
             * run time (frame exchanges) are initialized here
             */
            pSystemVideoFrameBuffer->bufAddr[0] = Utils_memAlloc(
                                               UTILS_HEAPID_DDR_CACHED_SR,
                                               (maxHeight*(pFrameCopyObj->pitch)*2),
                                               ALGORITHMLINK_FRAME_ALIGN);
    
            /*
             * Carving out memory pointer for chroma which will get used in case of
             * SYSTEM_DF_YUV422SP_UV
             */
            pSystemVideoFrameBuffer->bufAddr[1] = (void*)(
                (UInt32) pSystemVideoFrameBuffer->bufAddr[0] +
                (UInt32)(maxHeight*(pFrameCopyObj->pitch))
                );
    
            UTILS_assert(pSystemVideoFrameBuffer->bufAddr[0] != NULL);
    
            AlgorithmLink_putEmptyOutputBuffer(pObj, outputQId, pSystemBuffer);
          }
        }
    
        pFrameCopyObj->linkStatsInfo = Utils_linkStatsCollectorAllocInst(
            AlgorithmLink_getLinkId(pObj), "ALG_FRAME_COPY");
        UTILS_assert(NULL != pFrameCopyObj->linkStatsInfo);
    
        pFrameCopyObj->isFirstFrameRecv = FALSE;
    
        return status;
    }
    
    /**
     *******************************************************************************
     *
     * \brief Implementation of Process Plugin for frame copy algorithm link
     *
     *        This function executes on the DSP or EVE or A15 processor.
     *        Hence processor gets
     *        locked with execution of the function, until completion. Only a
     *        link with higher priority can pre-empt this function execution.
     *
     * \param  pObj              [IN] Algorithm link object handle
     *
     * \return  SYSTEM_LINK_STATUS_SOK on success
     *
     *******************************************************************************
     */
    Int32 AlgorithmLink_frameCopyProcess(void * pObj)
    {
     Vps_printf("************************** DSP FrameCopy Process ******************************");
        AlgorithmLink_FrameCopyObj * pFrameCopyObj;
        Alg_FrameCopy_Obj          * algHandle;
        Int32                        inputQId;
        Int32                        outputQId;
        UInt32                       channelId;
        Int32                        status    = SYSTEM_LINK_STATUS_SOK;
        UInt32                       bufId;
        System_BufferList            inputBufList;
        System_BufferList            inputBufListReturn;
        System_BufferList            outputBufListReturn;
        System_Buffer              * pSysBufferInput;
        System_VideoFrameBuffer    * pSysVideoFrameBufferInput;
        System_Buffer              * pSysBufferOutput;
        System_VideoFrameBuffer    * pSysVideoFrameBufferOutput;
        UInt32                       dataFormat;
        UInt32                       outPitch[SYSTEM_MAX_PLANES];
        UInt32                       bufSize[SYSTEM_MAX_PLANES];
        UInt32                       bufCntr;
        UInt32                       numBuffs;
        System_LinkChInfo          * pInputChInfo;
        System_LinkChInfo          * pOutputChInfo;
        Bool                         bufDropFlag;
        AlgorithmLink_CopyMode       copyMode;
        System_LinkStatistics      * linkStatsInfo;
    
    
        pFrameCopyObj = (AlgorithmLink_FrameCopyObj *)
                            AlgorithmLink_getAlgorithmParamsObj(pObj);
    
        linkStatsInfo = pFrameCopyObj->linkStatsInfo;
        UTILS_assert(NULL != linkStatsInfo);
    
        algHandle     = pFrameCopyObj->algHandle;
    
        Utils_linkStatsCollectorProcessCmd(linkStatsInfo);
    
        linkStatsInfo->linkStats.newDataCmdCount++;
    
        /*
         * Getting input buffers from previous link
         */
        System_getLinksFullBuffers(pFrameCopyObj->inQueParams.prevLinkId,
                                   pFrameCopyObj->inQueParams.prevLinkQueId,
                                   &inputBufList);
    
        if(inputBufList.numBuf)
        {
            if(pFrameCopyObj->isFirstFrameRecv==FALSE)
            {
                pFrameCopyObj->isFirstFrameRecv = TRUE;
    
                Utils_resetLinkStatistics(
                        &linkStatsInfo->linkStats,
                        pFrameCopyObj->numInputChannels,
                        1);
    
                Utils_resetLatency(&linkStatsInfo->linkLatency);
                Utils_resetLatency(&linkStatsInfo->srcToLinkLatency);
            }
    
            for (bufId = 0; bufId < inputBufList.numBuf; bufId++)
            {
    
              pSysBufferInput           = inputBufList.buffers[bufId];
              pSysVideoFrameBufferInput = pSysBufferInput->payload;
    
              channelId = pSysBufferInput->chNum;
    
              if(channelId < pFrameCopyObj->numInputChannels)
              {
                linkStatsInfo->linkStats.chStats[channelId].inBufRecvCount++;
              }
    
              /*
               * Error checks can be done on the input buffer and only later,
               * it can be picked for processing
               */
              if((pSysBufferInput->bufType != SYSTEM_BUFFER_TYPE_VIDEO_FRAME)
                 ||
                 (channelId >= pFrameCopyObj->numInputChannels)
                )
              {
                bufDropFlag = TRUE;
                linkStatsInfo->linkStats.inBufErrorCount++;
              }
              else
              {
    
              /*
               * Getting free (empty) buffers from pool of output buffers
               */
              outputQId = 0;
    
    
              status = AlgorithmLink_getEmptyOutputBuffer(pObj,
                                                          outputQId,
                                                          channelId,
                                                          &pSysBufferOutput);
    
              /*
               * Get into algorithm processing only if an output frame is available.
               * Else input buffer will be returned back to sender and its a case
               * of frame drop.
               */
              if(status == SYSTEM_LINK_STATUS_SOK)
              {
    
              pSysVideoFrameBufferOutput = pSysBufferOutput->payload;
              pOutputChInfo = &(pFrameCopyObj->outputQInfo.queInfo.chInfo[channelId]);
              pInputChInfo  = &(pFrameCopyObj->inputChInfo[channelId]);
    
              /*
               * If there is any parameter change on the input channel,
               * then, channel info needs to be read from pSysVideoFrameBufferInput.
               * And then,
               *  - Update the local copies present in OutputQInfo and inputChInfo
               *  - Also update channel info in pSysVideoFrameBufferOutput to
               *    pass on new parameters to next link
               */
    
              if(System_Link_Ch_Info_Get_Flag_Is_Rt_Prm_Update(
                            pSysVideoFrameBufferInput->chInfo.flags))
              {
                pInputChInfo = &(pSysVideoFrameBufferInput->chInfo);
    
                memcpy(&(pFrameCopyObj->inputChInfo[channelId]),
                       pInputChInfo,
                       sizeof(System_LinkChInfo));
    
                memcpy(pOutputChInfo,
                       pInputChInfo,
                       sizeof(System_LinkChInfo));
    
                dataFormat =
                      System_Link_Ch_Info_Get_Flag_Data_Format(pInputChInfo->flags);
    
                /*
                 * Upon dataFormat change pitch for plane 0 needs to be updated
                 * Plane 1 is used only for 420 SP case and it need not be altered
                 */
                pOutputChInfo->pitch[0] = pFrameCopyObj->pitch;
                if(dataFormat == SYSTEM_DF_YUV422I_YUYV)
                {
                    pOutputChInfo->pitch[0] = pFrameCopyObj->pitch * 2;
                }
    
                /*
                 * Also update the Channel info in Output System Buffer to pass it
                 * on to next link
                 */
                memcpy(&(pSysVideoFrameBufferOutput->chInfo),
                      pOutputChInfo,
                      sizeof(System_LinkChInfo));
              }
              else
              {
                /*
                 * Indicating to next link that there has been no parameter update
                 */
                pSysVideoFrameBufferOutput->chInfo.flags =
                    System_Link_Ch_Info_Set_Flag_Is_Rt_Prm_Update(
                            pSysVideoFrameBufferOutput->chInfo.flags,
                            0);
              }
    
              /*
               * Call to the algorithm
               */
              outPitch[0] = pOutputChInfo->pitch[0];
              outPitch[1] = pOutputChInfo->pitch[1];
    
              dataFormat = System_Link_Ch_Info_Get_Flag_Data_Format(
                            pOutputChInfo->flags);
    
              /*
               * Default
               */
              copyMode = ALGORITHM_LINK_ALG_CPUFRAMECOPY;
    
              switch(System_getSelfProcId())
              {
                case SYSTEM_PROC_A15_0:
                    copyMode = ALGORITHM_LINK_ALG_CPUFRAMECOPY;
                    break;
                case SYSTEM_PROC_DSP1:
                case SYSTEM_PROC_DSP2:
                case SYSTEM_PROC_EVE1:
                case SYSTEM_PROC_EVE2:
                case SYSTEM_PROC_EVE3:
                case SYSTEM_PROC_EVE4:
                    copyMode = ALGORITHM_LINK_ALG_DMAFRAMECOPY;
                    break;
              }
    
              switch (dataFormat)
              {
                  case SYSTEM_DF_YUV422I_YUYV:
                      numBuffs = 1;
                      break;
                  case SYSTEM_DF_YUV420SP_UV:
                      numBuffs = 2;
                      break;
                  default:
                      numBuffs = 1;
                      UTILS_assert (0);
                      break;
              }
    
              pSysBufferOutput->srcTimestamp = pSysBufferInput->srcTimestamp;
              pSysBufferOutput->frameId = pSysBufferInput->frameId;
              pSysBufferOutput->linkLocalTimestamp = Utils_getCurGlobalTimeInUsec();
    
              /*
               * Cache Invalidate of input buffer
               */
              if(copyMode == ALGORITHM_LINK_ALG_CPUFRAMECOPY)
              {
                bufSize[0]  = ((pInputChInfo->height)*(pInputChInfo->pitch[0]));
                bufSize[1]  = ((pInputChInfo->height)*(pInputChInfo->pitch[1]));
    
                for(bufCntr = 0; bufCntr < numBuffs; bufCntr++)
                {
                    Cache_inv(pSysVideoFrameBufferInput->bufAddr[bufCntr],
                              bufSize[bufCntr],
                              Cache_Type_ALLD,
                              TRUE
                             );
                }
              }
    Vps_printf("****************************************in process windows of framecopy*******************************\n");
    
    
    	
              Alg_FrameCopyProcess(algHandle,
                                   (UInt32 **)pSysVideoFrameBufferInput->bufAddr,
                                   (UInt32 **)pSysVideoFrameBufferOutput->bufAddr,
                                   pInputChInfo->width,
                                   pInputChInfo->height,
                                   pInputChInfo->pitch,
                                   outPitch,
                                   dataFormat,
                                   copyMode
                                  );
    
              /*
               * Cache Write back of output buffer to DDR
               */
              if(copyMode == ALGORITHM_LINK_ALG_CPUFRAMECOPY)
              {
                bufSize[0]  = ((pOutputChInfo->height)*(outPitch[0]));
                bufSize[1]  = ((pOutputChInfo->height)*(outPitch[1]));
                for(bufCntr = 0; bufCntr < numBuffs; bufCntr++)
                {
                  Cache_wb(pSysVideoFrameBufferOutput->bufAddr[bufCntr],
                           bufSize[bufCntr],
                           Cache_Type_ALLD,
                           TRUE
                          );
                }
              }
    
              Utils_updateLatency(&linkStatsInfo->linkLatency,
                                  pSysBufferOutput->linkLocalTimestamp);
              Utils_updateLatency(&linkStatsInfo->srcToLinkLatency,
                                  pSysBufferOutput->srcTimestamp);
    
              linkStatsInfo->linkStats.chStats
                        [pSysBufferInput->chNum].inBufProcessCount++;
              linkStatsInfo->linkStats.chStats
                        [pSysBufferInput->chNum].outBufCount[0]++;
    Vps_printf( " Processed %d frames in DMA mode\n",
                            linkStatsInfo->linkStats.chStats [pSysBufferInput->chNum].inBufProcessCount);
    	   {
                if (0U == (linkStatsInfo->linkStats.chStats
                        [pSysBufferInput->chNum].inBufProcessCount % 30))
                {
                   Vps_printf( " Processed %d frames in DMA mode\n",
                           linkStatsInfo->linkStats.chStats [pSysBufferInput->chNum].inBufProcessCount);
                }
            }
              /*
               * Putting filled buffer into output full buffer Q
               * Note that this does not mean algorithm has freed the output buffer
               */
              status = AlgorithmLink_putFullOutputBuffer(pObj,
                                                         outputQId,
                                                         pSysBufferOutput);
    
              UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
    
              /*
               * Informing next link that a new data has peen put for its
               * processing
               */
              System_sendLinkCmd(pFrameCopyObj->outQueParams.nextLink,
                                 SYSTEM_CMD_NEW_DATA,
                                 NULL);
    
              /*
               * Releasing (Free'ing) output buffer, since algorithm does not need
               * it for any future usage.
               * In case of INPLACE computation, there is no need to free output
               * buffer, since it will be freed as input buffer.
               */
              outputQId                      = 0;
              outputBufListReturn.numBuf     = 1;
              outputBufListReturn.buffers[0] = pSysBufferOutput;
    
              AlgorithmLink_releaseOutputBuffer(pObj,
                                                outputQId,
                                                &outputBufListReturn);
    
              bufDropFlag = FALSE;
    
              }
              else
              {
                bufDropFlag = TRUE;
    
                linkStatsInfo->linkStats.outBufErrorCount++;
                linkStatsInfo->linkStats.chStats
                                [pSysBufferInput->chNum].inBufDropCount++;
                linkStatsInfo->linkStats.chStats
                                [pSysBufferInput->chNum].outBufDropCount[0]++;
    
              } /* Output Buffer availability */
    
              } /* Input Buffer validity */
    
              /*
               * Releasing (Free'ing) input buffer, since algorithm does not need
               * it for any future usage.
               */
              inputQId                      = 0;
              inputBufListReturn.numBuf     = 1;
              inputBufListReturn.buffers[0] = pSysBufferInput;
              AlgorithmLink_releaseInputBuffer(
                                          pObj,
                                          inputQId,
                                          pFrameCopyObj->inQueParams.prevLinkId,
                                          pFrameCopyObj->inQueParams.prevLinkQueId,
                                          &inputBufListReturn,
                                          &bufDropFlag);
    
            }
    
        }
    
        return status;
    }
    
    /**
     *******************************************************************************
     *
     * \brief Implementation of Control Plugin for frame copy algorithm link
     *
     *
     * \param  pObj              [IN] Algorithm link object handle
     * \param  pCreateParams     [IN] Pointer to control parameters
     *
     * \return  SYSTEM_LINK_STATUS_SOK on success
     *
     *******************************************************************************
     */
    
    Int32 AlgorithmLink_frameCopyControl(void * pObj, void * pControlParams)
    {
        AlgorithmLink_FrameCopyObj     * pFrameCopyObj;
        AlgorithmLink_ControlParams    * pAlgLinkControlPrm;
        Alg_FrameCopy_Obj              * algHandle;
        Int32                        status    = SYSTEM_LINK_STATUS_SOK;
    
        pFrameCopyObj = (AlgorithmLink_FrameCopyObj *)
                            AlgorithmLink_getAlgorithmParamsObj(pObj);
        algHandle     = pFrameCopyObj->algHandle;
    
        pAlgLinkControlPrm = (AlgorithmLink_ControlParams *)pControlParams;
    
        /*
         * There can be other commands to alter the properties of the alg link
         * or properties of the core algorithm.
         * In this simple example, there is just a control command to print
         * statistics and a default call to algorithm control.
         */
        switch(pAlgLinkControlPrm->controlCmd)
        {
    
            case SYSTEM_CMD_PRINT_STATISTICS:
                AlgorithmLink_frameCopyPrintStatistics(pObj, pFrameCopyObj);
                break;
    
            default:
                status = Alg_FrameCopyControl(algHandle,
                                              &(pFrameCopyObj->controlParams)
                                              );
                break;
        }
    
        return status;
    }
    
    /**
     *******************************************************************************
     *
     * \brief Implementation of Stop Plugin for frame copy algorithm link
     *
     *        For this algorithm there is no locking of frames and hence no
     *        flushing of frames. Also there are no any other functionality to be
     *        done at the end of execution of this algorithm. Hence this function
     *        is an empty function for this algorithm.
     *
     * \param  pObj              [IN] Algorithm link object handle
     *
     * \return  SYSTEM_LINK_STATUS_SOK on success
     *
     *******************************************************************************
     */
    Int32 AlgorithmLink_frameCopyStop(void * pObj)
    {
        return SYSTEM_LINK_STATUS_SOK;
    }
    
    /**
     *******************************************************************************
     *
     * \brief Implementation of Delete Plugin for frame copy algorithm link
     *
     * \param  pObj              [IN] Algorithm link object handle
     *
     * \return  SYSTEM_LINK_STATUS_SOK on success
     *
     *******************************************************************************
     */
    Int32 AlgorithmLink_frameCopyDelete(void * pObj)
    {
        Alg_FrameCopy_Obj          * algHandle;
        Int32                        frameIdx;
        Int32                        status    = SYSTEM_LINK_STATUS_SOK;
        UInt32                       maxHeight;
        UInt32                       channelId;
    
        System_VideoFrameBuffer    * pSystemVideoFrameBuffer;
        AlgorithmLink_FrameCopyObj * pFrameCopyObj;
    
        pFrameCopyObj = (AlgorithmLink_FrameCopyObj *)
                            AlgorithmLink_getAlgorithmParamsObj(pObj);
        algHandle     = pFrameCopyObj->algHandle;
    
        status = Utils_linkStatsCollectorDeAllocInst(pFrameCopyObj->linkStatsInfo);
        UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
    
        status = Alg_FrameCopyDelete(algHandle);
        UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
    
        maxHeight = pFrameCopyObj->algLinkCreateParams.maxHeight;
    
        for(channelId =0 ; channelId < pFrameCopyObj->numInputChannels; channelId++)
        {
          for(frameIdx = 0;
              frameIdx < (pFrameCopyObj->algLinkCreateParams.numOutputFrames);
              frameIdx++)
          {
            pSystemVideoFrameBuffer =
                                 &(pFrameCopyObj->videoFrames[channelId][frameIdx]);
    
            /*
             * Free'ing up of allocated buffers
             */
            status = Utils_memFree(UTILS_HEAPID_DDR_CACHED_SR,
                                   pSystemVideoFrameBuffer->bufAddr[0],
                                   (maxHeight*pFrameCopyObj->pitch*2)
                                   );
            UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
          }
        }
    
        status = Utils_memFree(UTILS_HEAPID_DDR_CACHED_LOCAL,
                               pFrameCopyObj, sizeof(AlgorithmLink_FrameCopyObj));
        UTILS_assert(status == SYSTEM_LINK_STATUS_SOK);
    
        return SYSTEM_LINK_STATUS_SOK;
    }
    
    /**
     *******************************************************************************
     *
     * \brief Print link statistics
     *
     * \param  pObj                [IN] Algorithm link object handle
     * \param  pFrameCopyObj       [IN] Frame copy link Object handle
     *
     * \return  SYSTEM_LINK_STATUS_SOK on success
     *
     *******************************************************************************
     */
    Int32 AlgorithmLink_frameCopyPrintStatistics(void *pObj,
                           AlgorithmLink_FrameCopyObj *pFrameCopyObj)
    {
    
        UTILS_assert(NULL != pFrameCopyObj->linkStatsInfo);
    
        Utils_printLinkStatistics(&pFrameCopyObj->linkStatsInfo->linkStats, "ALG_FRAMECOPY", TRUE);
    
        Utils_printLatency("ALG_FRAMECOPY",
                           &pFrameCopyObj->linkStatsInfo->linkLatency,
                           &pFrameCopyObj->linkStatsInfo->srcToLinkLatency,
                            TRUE
                           );
    
        return SYSTEM_LINK_STATUS_SOK;
    }
    
    /* Nothing beyond this point */
    

    Hi Sujith,

    Below are the files attached.

    Regards,

    Neha

  • Hi Neha,

    I don't see anything wrong, can you please check on the following

    1. Ensure latest DSP, EVE images being used
    1.1. In you file system that you using to boot this device
    1.2. Delete DSP, EVE and IPU firmware from \vision_sdk\linux\targetfs\lib\firmware

    2. I am not sure about the version of VisionSDK that you are using
    2.1. Please let me know
    2.2. Refer the linux user guide
    2.3. Build
    2.4. Ensure that your file system has the currently built images
    2.5. Follow user guide to boot the device

    Regards,
    Sujith
  • Hi Sujith,

    Thank you for the feedback.

    I will ensure the points given by you.

    The version of VisionSDK I am using is 2.10.

    Regards,

    Neha

  • Hi Sujith,

    I verified above points.
    One thing i want to know is do i need to copy AppImage anywhere on SD card while using Linux on A15 ?
  • Hi Neha,

    The required steps are documented in the Linux user guide, please refer section "Build" & "Preparing SD card & Boot"

    Regards,
    Sujith
  • Hi Sujith,

    Thank you for the guidance.

    The issue of printf is resolved.

    I want to confirm some doubts:
    1.To resolve the above issue ,I have added built images from vision_sdk/linux/targetfs/lib/firmware/dra7-dsp1-fw.xe66 to media/rootfs/lib/firmware/
    Also did the same for dra7-dsp2-fw.xe66, dra7-ipu1-fw.xem4, dra7-ipu2-fw.xem4.
    Is this the right thing to do, or there is some other way also.

    Regards,
    Neha
  • Hi Neha,

    Thanks for the confirmation, Please mark the thread as closed.
    The make -depend should have taken care of copying the required binaries, if this is not being done by the this command, what you have done is correct.

    Please ensure the path for the targetfs is set correctly.
    In file tools_path.mk ensure LINUX_TARGETFS points to the targetfs that you are using.
    By default it's LINUX_TARGETFS ?=$(vision_sdk_PATH)/linux/targetfs

    Regards,
    Sujith
  • Hi Sujith,

    Need some more clarifications on this topic.

    Does make -depend internally take care of copying binaries to /vision_sdk/binaries/vision_sdk/bin/tda2xx-evm/vision_sdk_linux_demo.out, as I copy this out file to SD card.

    Do we need not copy the binaries explicitly from visionsdk to SD card?

    Also the binaries for EVE are not generated at VisionSDK2.10/vision_sdk/linux/targetfs/lib/firmware. I can see binaries only for DSP and IPU.

    Regards,
    Neha
  • Hi Neha,

    No you will have to manually copy it from targetfs to sd card. Would suggest to re-create the booteable SD card.

    Regards,
    Sujith