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.

How to resize two display resolution (IPIPE)

Hi,

How to resize two resolution use IPIPE?

the display resolution is 320x240 and 160x120, capture size is 720x480 D1 format.

 

  • If you are using the latest DVSDK (dvsdk_1_30_00_41), the best place to get started is the 'PSP_01_20_00_014' directory.  Under there, you will find two other directories, the 'docs' directory has documentation on the resizer driver; additionally, the 'examples/dm355/ipipe' directory has an example (including source code) on how to use the resizer.

    Let me know if this helps.

  • yes, I known this directory, but this sample code can not real-time resize two resolution.

    capture D1 size and output 320x240 to vid0 160x120 to vid1. 

  • The IPIPE hardware consists of a single one-shot resizer; therefore, if you want to resize two images at the same time you have two options

    1) You can load both D1 frames in memory such that resizer can treat them as a single frame (say 720x960 = 2 x 720x 480 or 2 D1 frames).  I am not sure exactly what you expect performance wise when you say "real-time", but remember resizer is one-shot.  This means that you will need to request new resizer request for every frame.

    2) VPBE hardware has limited resizing capabilities (more like zoom-in and zoom-out) which you may be able to use for display purposes only (not if you need to store the smaller resolution images in memory).

     

  • VPBE can do resize video frame to output for display?

    my application is LCD display 320x240, so vid0 display 320x240, vid1 pop display 160x120.

  • It has limited zoom-in and zoom-out capabilities.  After thinking this a bit more, I don't think this approach will work becuase the VPBE cannot resize each window independently, it is an all or none deal.  Please see the VPBE UG for more details.

  • Why I tried IPIPE to resize video frame, but the display look like delay frame (maybe 300m sec.)

    and low spped frame rate (40~50fps), the spec. is can do 120fps...

  • What spec are you referring to when you say "120fps"?   In my humble opinion, the frame rate is highly dependant on the resolution being resized and the overall system (competes for DDR2 bandwidth with whatever else is going on in the syste, such as capture, display...).  I am wondering what are the assumptions made when citing 120fps, if you can point me to the right document that suggests this, I can look into it.

  • Though I am not sure where the 120fps spec is coming from either, I can say that if this was specified it is probably in an optimum set of conditions, with minimal other load in the rest of the system. To reach the theoretical maximum performance of the IPIPE you would need to be running in a system with nothing but the IPIPE running (no other DDR accesses, or even better operate out of internal memory), anything else going on in the system can slow down the IPIPE, primarily in the case of contention for the DDR bandwidth. There are actually some good performance approximations given within section 5 of SPRUFG1 found in dvsdk_1_30_00_40\PSP_01_20_00_014\docs\dm355, though even these should be considered approximations because the performance can be effected significantly by other system activity.

  • Sorry~ I can`t understand section 5 of resizers (resizer-0, resizer-1),

    the meaning is two resizer can use?

  • Y.C.

    I was looking over the data-sheet again after your last post and it appears there are two resizers in DM355 that can be used in parallel.

    1 input image -> 2 output images of different sizes in parallel

    I apologize for the confusion.

  • Hi Juan, never mind~

    so, two resizer can use different sizes in parallel.

    resize-0 -> 720x480 to 320x240

    resizer-1 -> 720x480 to 160x120

    on the real time it is can works?

    and how to enable two resizer ? my /dev just only /dev/dm355_ipipe.

  • By looking at the IPIPE Driver User Guide (SPRUFG1 included in DVSDK), you should see that the param structure has two instances of resizer; for example

    g_param->rsz_en[0] = ENABLE

    g_param->rsz_en[ 1] = DISABLE

     

    Similarly for other resizer parameters.

  • The User Guide (SPRUFG1) section
    4.5 Enable RSZ0 for Resize Operation and
    4.6 Enable RSZ1 for Resize Operation,
    this is the same driver code

    g_param->rsz_en[0] = ENABLE
    g_param->rsz_en[ 1] = DISABLE
    it is wrong code ?

    the param structure has two instances,
    but in_buf and out_buf only for one process to resize(RSZ-0)...
    second process of resizer(RSZ-1), how to set in_buf & out_buf? any example?

  • Please note that ipipe_covert data structure is actually a array of buffers; for the ipipe examples we provide we only define one output buffer, but multiple output buffers can be defined. 

    I just perused the source code a bit and can see that if you enable both resizer (see ipipe_config.c file in the example), you should get an error if you do not pass the appropriate number of output buffers.  The driver support is all there as best as I can tell, but you will need to write your own application which sends the correct number of buffers.