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.

Multiple resizing in DM368

Hi All,

I'm looking for a way to resize 1920*1080 source to several resolutions,e.g. 1920*1080 YUV420 + D1 YUV420 + CIF YUV420, with minimum DDR bandwidth in DM368.

 

In DM6467, i called Resize_execute() several times to generate multiple streams from D1 source.

It seems like that the way i'm using in DM6467 will require a huge DDR bandwidth to handle1920*1080 source.

In my guess, four times of DDR access is required for one frame, considering only 1920*1080 source buffer.

One time is to store 1920*1080 UYVY in capturing and three times is to read it as a resizer source for triple streams.

And, it requires almost 4000Mbps for 30fps if i calculated it correctly.

 

I found that DM365 & DM368 has IPIPE. It can reduce DDR BW requirement in continuous mode and resize 2 different resolutions at a time.

But, the maximum resolution of RSZ-B is VGA in DM365.

( Actually, I'm testing with DM365 since DM368 EVM is not delivered yet. )

 

How can i get three different resolutions with lower DDR BW requirement?

Assuming two conditions:

1. one of them is less or equal to VGA.

2. two of them are less or equal to VGA.

And, i'm wondering if i can switch resizer mode between continuous and one-shot without frame loss.

 

Any suggestions will be helpful.
Thanks

  • Hi,

    1. I believe you are using DVSDK 2.10.xx for DM36x. Isn't it? In that case, it is not possible to switch between continuous and one-shot mode. The LSP driver checks the mode set in the bootargs and does not change it again.

    2. The flow to get three different resolutions has to be ISIF-->DDR-->IPIPEIF-->IPIPE (RSZA) --> DDR_Res1 and (RSZB)-->DDR_Res2

    This way you can get two resolutions simulataneously.

    After this take one of the two resolutions and

    DDR_Res1 --> IPIPEIF -->IPIPE(RSZA)-->DDR_Res3

    This way you can get three resolutions in DDR (DDR_Res1, DDR_Res2, DDR_Res3). There will be no limitation of the output resolution size, except that the maximum width supported by RSZB is 1088 pixels per line.

     

    Regards,

    Anshuman

  • I understand that it's not possible to switch the mode in this case and RSZB can make another resolution.

    But, DDR bandwidth requirement in ISIF --> DDR --> IPIPEIF is still a lot to me.

    BTW, TI FAE helps me to solve this now. I think there is some possibility to handle it.

     

    Thank you for your reply.

     

    Best Regards,

    Jinkyu Park

  • Do you mean you are changing the dataflow and eliminating ISIF-->DDR-->IPIPEIF? Can you please provide some details on how you are avoiding this data flow and generating the three resolutions?

     

    Regards,

    Anshuman

  • Yes, I got the following suggestions from TI FAE.

    It uses the continuous mode and the third resolution can be generated in two ways.

    1. IMX based resize

    2. RSZB generates two resolutions. e.g. D1 @ 15fps & CIF @ 15fps

     

    I understand that each approach has its own consideration such as encoding performance degradation and  frame-rate drop.

    But, now I need to check every possible way to handle this.

     

    Best Regards,

    Jinkyu Park

  • hi Jinkyu,

    The resizer limitation in DM365 is given below

    RSZ-A - Max output width < 2176 pixels
    RSZ-B - Max output width < 1088 pixels

    Max input width for RSZ < 2176 pixels
    Max input/output height < 4K lines

    Now in DM36x following data flows are possible. Width, height shown below are only example

    Case-A - IPIPE in "ISIF input" mode (continous mode)
    ISIF -> IPIPE -> RSZ-A -> DDR 1920x1080
                    |------>RSZ-B -> DDR 640x360

    Case-B - IPIPE in "DDR input" mode (single shot mode)
    ISIF -> DDR-> IPIPE -> RSZ-A -> DDR 1280x720
                                   |------>RSZ-B -> DDR  640x360
                                                                   |---> RSZ-B -> DDR 320x180

     In order to get more than 2 resized resolutions for a given input, you have to be in "DDR input" mode.

    Its not possible to switch between "ISIF input" and "DDR input" on a frame-by-frame basis.

    Its not recommended to be in "DDR input" mode for modes > 1280x720x30fps.

    So basically for 1080P mode, it would DDR BW prohibitive to use resizer HW to make 3 output resolutions.

    One option is to use a VICP based HW accelerated resizing for the 3rd resize. However TI does not have a ready made solution for this.
    Also this option feasibility depends on the exact end application that you are targeting and it cannot be generalized for all applications.
    We recommend to work thru your local TI FAE to check if this option can be used for your application.

    regards
    Kedar

     

  • Moved to main page

    ......

  • hi, Kedar

    I got a question and ask you for advice.

    If I use the DM36x and select the "DDR input" to create 1080P resolution,

    and compresse 1080P frames by DVSDK h264 CODEC Engine ,

    Could it achieve the same performance like  "ISIF input(1080p)"+ "DVSDK h264 CODEC Engine" ?

    if not, Is DDR BW prohibitive the bottleneck or others?

    regards

    Hung 

  • I have met the same problem with you, but i don't kown why...

  • hi,

    When doing 1080p30 H264 encode, DDR BW is a bottle neck.

    Hence we have to make sure other parts of the system do not load the DDR more that what is needed.

    We have verified that the following data flow gives1080p30

    Input Source 1080p30 -> ISIF -> IPIPE+RSZ -> DDR (1080p30 YUV420) -> H264 encode -> DDR (bitstream) -> network stream (RTSP)

    Any additional DDR BW other than above will make the H264 encode frame rate drop below 30fps

    ISIF -> DDR -> IPIPE+RSZ -> DDR will definitely not give 1080p 30 performance for H264 encode, due to DDR BW

    regards
    Kedar

     

     

  • hi, Kedar

    thank you for your clearly and kindly reply to let me figure out the bottleneck :)

    regards
    Hung

  • Hi Kedar,

    You mentioned  that triple resizing is not possible with out loss of frames at 1080P in single shot mode.

    Is it possible to have 3 resolutions in continus mode at half the frame rates as shown below?

    1080@30, VGA@15,CIF@15

    i.e, changing the resizer B params on the fly to achive this.

     

     

     

     

     

     

     

  • hi Ganesan,

     

    Yes, its possible to operate in 1080p30 continous mode and switch resizer B to output VGA 15, CIF15.

    The fps you get here will definitely be lot better than when operating in single shot mode.

    However you may still not be able to achieve system fps of 30fps including encode.

    We have seen that slight increase in DDR BW, example, enabling VGA size display for example drops the frame rate by 1fps, from 30fps to 29fps.

     

    What do you intend to do with the VGA and CIF resolution is it for display and encode respectively ?

    regards
    Kedar

     

     

  • Hi kedar,
       I am interested in resoluton of 1080@30,CiF@15 and QCIF@15. I am using IPNC 2.0 IMX036 design.  These resolution will not  increase DDR BW much compared to 1080@30 and CIF@30.


    Is it possible to do 1080P30 ?

    If yes, Can you please provide some hints to do it in the IPNC 2.0 ?

    I think changes should be made in drv_ipipe.c. 

    Regards,
    mahendra kumar

  • Hi,

     

    On DM368-432 Mhz part, you cannot run any other resolution apart from 1080P@30fps.

     

    However, if you run 1080P at lower fps like 28, then this combo is possible.

     

    Also, for the resolution you mentioned above, you need to switch resolution CIF and QCIF every alternate frames.

    Like frame 0 CIF, 1 QCIF, 2 CIF, 3 QCIF and so on

     

    Regards,

     

    Raghu

     

  • Which DVSDK can support  switch between continuous and one-shot mode?