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.

TDA2PXEVM: How to increase image capture rate of network control tool?

Part Number: TDA2PXEVM

Hi, 

I am attempting to implement 30 fps video capture based on the Vision SDK network tools, via an SDI OV2775 camera module and fusion application board. 

Right now I have a batch script that loops sending the iss_raw_save command to the EVM. However, this method is only able to achieve ~2 fps. 

The OV2775 supports 30 fps output, and all of my networking hardware is gigabit-capable, so I doubt there is a bandwidth limitation issue. 

How can I optimize the network tools and/or minimize the data transfer overheard to achieve higher rate image capture? 

Thanks,

Richard  

  • Hi Richard,

    It is difficult as it first sends command to the command handler, then command handler sends command to iss capture link and once the capture link save the frame, it sends ack to the command handler and then command handler transfer it over the network.
    Why do you want to save all 30 frames?
    The other way you could do is, you could dup capture output and connected dupped output to null link. I think null link can send over ethernet.

    Rgds,
    Brijesh
  • Hi Brijesh, 

    I want to be able to perform video capture at 30 fps, with the eventual goal of having the video feed from the OV2775 stream through the TDA2PX, over the ethernet to be displayed on my PC. 

    Would connecting the dupped output to the null link increase the framerate that can be sent over the ethernet? 

    Thanks,

    Richard 

  • Hello Richard,

    On which core you are running NDK in your use-case?

  • Hi Prasad, 

    I am running NDK on the a15_0. I retract what I said earlier about there probably not being a networking hardware limitation, turns out the network switch my PC and the EVM are connected to only supports up to 100 Mbps speeds. Would switching to a gigabit network switch allow for faster data transfer between the EVM and PC, despite the protocol/API overhead? 

    Thanks,

    Richard  

  • Hello Richard,

    Richard Lee19 said:
    Would switching to a gigabit network switch allow for faster data transfer between the EVM and PC, despite the protocol/API overhead? 

    With iss_cmd_save enabled, you would still get limited by the file write speed. Please use null link to transfer data via network to achieve desired throughput.

    You can refer to existing "network_rx_tx" use-cases for reference to add null link. Make sure null is added immediately after the capture so file write doesn't throttle it.

  • Hi Prasad, 

    I am trying to generate a usecase that does ISSCapture, then dups the image data and sends it both to a display for visualization and to the network for saving. Would this configuration be able to achieve the maximum throughput, or would I need to connect the capture link directly to the network TX link, without any duping? 

    If so, would the attached configuration file be able to generate the corresponding link network for this usecase? If not, can you let me know what the configuration should look like? 

    UseCase: iss_Capture_NetworkTx
    
    IssCapture -> Dup -> Display_Video
    
    Dup -> NetworkTx
    
    GrpxSrc -> Display_Grpx

    Also I'm not sure why I would need the null link to transfer data over the network, since there is a dedicated network tx link? 

    Thanks,

    Richard 

  • Hello Richard,

    The use-case you have created is correct for the functionality you are looking for. 

    Richard Lee19 said:

    Also I'm not sure why I would need the null link to transfer data over the network, since there is a dedicated network tx link? 

    Sorry for confusion, you should be using networkTx link and not null links.

    Is there any issues with new use-case created?

     

  • Hi Prasad, 

    I generated the corresponding c and h "priv" files with the use case generation tool, wrote the main c file based on the chains_networkTxCapture and chains_issIspSimcop_Display usecases, and debugged the compile errors. However, now I am stuck on a linker error I can't seem to figure out. 

    Here is the command prompt output: 

    It complains that my function can't be found. However, in the chains.h header file included in the chains_main_bios_iss.c file, my function is declared: 

    My function is defined in my main c file: 

    And I have also added the c files for my usecase to their corresponding make file: 

    Is there something I've missed for the linker to be able to resolve my function? 

    Thanks,

    Richard 

  • Hi Prasad, 

    I realized I forgot to include the auto-generated h file in my main c file, so I did that and also renamed my usecase files, functions, and variables to have the "chains_" prefix to keep the same convention as the standard usecases. However, I still get the same unresolved symbols error. 

    Thanks,

    Richard 

  • Hello Richard,

    Did you confirm if your new use-case is getting buit?
    1. Please add some error in the use-case main file and see if it is caught by the compiler.
    2. Check if use-case is shown in the enabled use-cases in the "gmake -s -j showconfig"
  • Hi Prasad, 

    I can now build and run my use case. However, I am now facing runtime issues. Since those are pretty far removed from the original topic of this thread, I have started a new thread here: 

    Thanks,

    Richard 

  • Thanks Richard for starting new thread. I will close this thread.