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.

TDA3XEVM: VSDK3.0: Is there a way to switch between parts of chains while other parts keep running?

Part Number: TDA3XEVM


Hi,

is there a way to change parts of a chain while other parts keep running? e.g. I want to to switch smoothly between surroundview and rearview and different combinations of views while the overlay keeps running and is still showing it's actual contents. "smoothly" means without the video output being stopped or without any flickering.

Currently, when using the examples given by the VSDK on my Skateboard (RVP), always the whole chain will be replaced. This is time consuming and shows artefacts and would not be acceptable by our customers.

The problem is, that with restarting the complete chain the capturing as well as the displaying will be restarted (that means interrupted), too.

regards,

Guenter

  • Hi Guenter,

    I have forwarded your question to a VisionSDK expert.

    Regards,
    Yordan
  • Hi Guenter,

    Consider using Gate link, this link could be used to turn-off flow of frame to sections the chain that require go in-active. Can turn-on flow of frame as and when required.

    You could have required number of sub-chains, input's of these are gated by "Gate Link" as and when required the sub-chains to go active.
    Referring VisionSDK 3.0, please refer usecase \vision_sdk\apps\src\rtos\usecases\fast_boot_iss_capture_isp_simcop_pd_display

    Gate link is platform independent and number of gate link instances is a compile time option.

    Regards,
    Sujith
  • Hi Sujith,

    it seems, that this will solve the problem, even I cannot check this currently because I first have to find out, how I can control the gates, that they will switch between the subchains. I have to check the manual now for it and afterwards - if it is really what I was looking for - I will check your green "resolve" button.

    I also wonder, if chains that are only steady to go, consume CPU power or are they totally idle in this state.

    Thanks a lot!

    regirads,
    Guenter
  • Hi Guenter,

    When the section of the chain's idle (i.e. frames are being gated by Gate Link). No CPU is consumed.
    As they wait on a semaphore, for arrival of the frame. No CPU is consumed.

    Regards,
    Sujith
  • Hi Sujith,

    currently i'm trying to use the gatelinks and to be honest: It is making me mad, because the documentaion on how to use it is not usuable and the only things I saw in the documantations did not fit to the given RTOS example. 

    The only example is "fast_boot_iss_capture_isp_simcop_pd_display" and I cannot see, how the usecase implements the gates and how they can be switched. Do I have to analyze the whole sourcecode or is there something simple I didn't see, which makes it automatically?

    I still saw, that there were Linknames starting with "Gate_" and I also saw, that there is a Link called "GateLink" but I did not see how I can use these things. I see also that Linknames starting with "Gate_" must be the gates itselves. But how does it work together and how are the gates controlled (that means how are the switched)?
    Is there a better documentation available anywhere? I do not want my boss the become nervous, because of always having to analyze sourcecodes as consequence of a sparing documentation. This is to much time consuming.

    Thank you in advance for your help! 

    Regards,

    Guenter

  • Hi Guenter,

    You could go through the API guide and development guide to understand Gate link.

    Gate link is very simple link. In normal case, it just forwards incoming buffers to the next link, it does not do any operation or store the frames. 

    When it is enabled for the gate mode, it simply returns incoming frame back to the previous link. It means it blocks the frames going to the next link and complete chain following it. It can be runtime enabled or disabled. 

    Using gate link, you can enable or disable part of the chain. Is this what you are looking for?

    Rgds,

    Brijesh

  • Hi Brijesh,
    sorry for my late reaction to your message, but I'm currently in vacation and I will com back on Jan. 8th 2018 to my office. It seems that the problem may have been solved, but I cannot try it because the windows version of the usecase generator does not work properly. It does not contain the iss resizer even it is implemented insed the source code. I just opend another thread for this problem. I will check the resolve button if I could have tested it next year.
    Thanks a lot!
    Regards,
    Guenter
  • Hi Guenter,

    oh ok, yes, i think windows version does not support iss resizer link, you could use linux version and create the usecase. After usecase is created, you could switch to windows.

    Regards,
    Brijesh
  • Hi Brijesh,

    it is not possible for me doing so, because we currently do not use Linux in our company. Nevertheless I tried it using an Ubuntu 16.04 distribution but I got lots of errors when trying to install the required 32-bit-library for CCS. 

    As the problem seems to be, that the support of the resizer is available inside the sources (I've looked for it) but it just has not been compiled for windows, it would be a great idea, that TI should fix this inconvenience as soon as possible, because I can't imagine being the only windows using customer.

    You should know, that one development iteration using the VSDK takes still very much longer than using other comparable systems, because we have to change between the make-build and the CCS for debugging etc. If we have also to change between different operating systems just to build other components, our development would take additional time. Currently I wonder if it has been a good idea of TI not supporting their own tools when offering the VSDK for the customers and I wonder if it has been a good idea starti using the VSDK at all.

    I think I will discuss these things with my boss on how to continue. Maybe we would have been progressed more, when we would have developed our own framework for our purposes. We are a couple of well experienced developers but using the VSDK makes us all feeling stupid, because we step from one trap to the other one. That's very sad and not that, what we were used to when using TI's products.

    Nevertheless: Thanks for trying to help me!

    Regards,

    Guenter

    PS.: Is there a way to get a version of the usecase tool for windows in advance?

  • Hi Guenter,

    We will definitely look into this issue and fix it in the next VSDK release. But this is not related to CCS and/or build libraries/tools issue.
    It is just that usecase generation tool does not support iss resizer link on the windows. This tool is written in the plain C code and does not depend on any of the CCS or build libraryes. It can be easily rebuild on the Linux or Windows, it is just missed out for this link.

    Also this tool is just helped tool, it helps to create usecase without having to write the complete link connection code. So we can still write manually complete usecase code and build it on the windows. Probably, you could first generate the usecase on windows without resizer link and add this link in the chain manually. I dont think this is difficult.

    Regards,
    Brijesh
  • As written in
    e2e.ti.com/.../651380
    I found a way how to help myself. So now I can go back to the origin problem:

    Currently I'm looking forward how to handle the gates:
    I understood, that every gate, which has the same name-suffix switches aother path and that I can create other gates whith another suffix for switch other parts of the chains. Is this correct?
    And can I bring the outputs of the different parts together to a common chain part by just using a merge link without any further gate?

  • Guennie,

    Gate is a simple link. It supports one input and one output. When the gate is bypassed, it simply forwards input buffers to the output queue without doing any processing. But the gate is enabled, it blocks the path below it and returns all the received frames back to the source without forwarding it to the next link. Gate can be enabled/bypassed at runtime.
    Now you could add multiple gate links in your data flow and by enabling and disabling appropriate gate links, you could switch the data flow.
    Yes, you could merge output of the two links using merge link.

    Regards,
    Brijesh
  • That means I just have to add multiple gate links with different name suffixes and I have to enable / disable them in a way whatever makes sense. Ok, I think that I understood it now. I thought that one gate distributes one input to one of multiple outputs (like a demultiplexer) - that was wrong.
    Thanks a lot for your patience, but it is not always easy to find out how all the things work with that less given documentation.