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 enable the two resizer on DM365?



Hi,

we don't use the IPIPE on the fly mode,  and the frist resizer is OK, but when want to use the second:

davinci_resizer davinci_resizer.2: mode doesn't allow multiple instances

Does just use the dm365_imp.en_serializer=1 is OK?

Thanks

  • Hi,

    Please provide details of DVSDK, LSP versions that you are using.

    Ideally, in both continuous as well as single shot mode, both resizers can be used. I am not sure what are the code changes you have done to switch on the two resizers. With default settings, if you just do the following, resizer 2 would be enabled.

     

    (struct rsz_single_shot_config) . output2 . enable = 1;

    Set rest of the parameters in (struct rsz_single_shot_config . output2)

    zack said:
    davinci_resizer davinci_resizer.2: mode doesn't allow multiple instances

    BTW, are you trying to open multiple instances of /dev/davinci_resizer? If yes, that will not work. You can have one instance and can use both resizers from that same driver instance.

    Regards,

    Anshuman

    PS: Please mark this post as verified, if you think it has answered your question. Thanks.

  • The same issue is being tracked and answered in Linux Forum at http://e2e.ti.com/support/embedded/f/354/p/54397/193109.aspx#193109. So marking the current post as verified.

    Regards,

    Anshuman

  • In the DMAI Resize_config,

            rsz_ss_config.output1.pix_fmt = pixFormatConversion(BufferGfx_getColorSpace(hDstBuf));
            rsz_ss_config.output1.enable = 1;
            rsz_ss_config.output1.width = dstDim.width;
            rsz_ss_config.output1.height = dstDim.height;
            rsz_ss_config.output2.enable = 0;

    There can be two output, what's relation of this and RzA RzB?

    Thanks

  • zack said:
    rsz_ss_config.output2.enable = 0;

    The output2 is basically output of RSZB. Output1 is for the output from RSZA.

    There are two resizers in DM365 but input source to both of them is same. Please refer to the VPFE Programmer's Guide to have a look at the IPIPE and RSZ block diagram and data flow.

    Regards,

    Anshuman

    PS: Please mark this post as verified, if you think it has answered your question. Thanks.

  • Thanks,

    Yes, I open the resizer two times. This question came from the below:

    DEI (D1) -- > resize  --> h264enc (D1)    --> network

                  |

                  -- > resize  --> jpegenc (D1)      --> network

    There have two resizer in the media pipeline, the two resizer share a same resize object(open the davinci_resizer one time) by a lock, Does there have enough performance only by using the

    rsz_ss_config.output1.enable = 1 when don't use the  output2.enable ?

    Zack

  • zack said:

    There have two resizer in the media pipeline, the two resizer share a same resize object(open the davinci_resizer one time) by a lock, Does there have enough performance only by using the

    rsz_ss_config.output1.enable = 1 when don't use the  output2.enable ?

     

    I am not sure what you mean by above statement. But the data flow you have mentioned would work perfectly fine with the rsz_ss_config.output1.enable = 1 and rsz_ss_config.output2.enable = 1.

    Regards,

    Anshuman

    PS: Please mark this post as verified, if you think it has answered your question. Thanks.

  • Thanks,

    Reisze configure

            rsz_ss_config.output1.pix_fmt = pixFormatConversion(BufferGfx_getColorSpace(hDstBuf));
            rsz_ss_config.output1.enable = 1;
            rsz_ss_config.output1.width = dstDim.width;
            rsz_ss_config.output1.height = dstDim.height;
            rsz_ss_config.output2.enable = 0;

     

    Thread A  frist Video Pipeline

    while(true)

    {

    1.Get one Image buffer.

    2.Lock(Resize_Lock)

    3. Resize_execute

    4.Unlock(Resize_Lock)

    ...

    }

     

    Thread B  second Video Pipeline

    while(true)

    {

    1.Get one Image buffer.

    2.Lock(Resize_Lock)

    3. Resize_execute

    4.Unlock(Resize_Lock)

    ...

    }

     

    Zack

     

  • Your pseudo code should work. Although, i still dont understand why you would want to do two threads and two resize operations separately for the data flow that you mentioned. If you would enable output2 and just call one resize operation, you can save some DDR bandwidth too.

     

    Regards,

    Anshuman

  • Thanks,

    Yes, the two thread can work by sharing one resize object. And my concern is thar only one resize can meet two live video perfotmance requirement or not. Just as i metioned, we use deinterlacer, H264, MJPEG. If the two live streame(H264, MJPEG) work simultaneously, the video viewed by VLC is not smooth. but one live (H264 or MJPEG) is OK.

    For why use reisze in two  thread: If use the gstreamer-ti plugin, this is the most easy way. By the way, if use the output2, the resizer must be a demuxer element.

    Zack

  • Hi Anshuman,

    I am working on DM365 custom hardware. Using the DVSDK 4.02 with kernel 2.6.32.17.
    I have the following requirement:
    1. I have a camera connected to dm365 (YUV422 data). I need 2 resize outputs.
    2. I want one resizer to only color convert from YUV422 to NV12 so that I can feed it to the encoder.
    3. There is an LCD connected to the dm365. I want the other resizer to resize the camera output to required size and display it on the LCD.

    To check the working of both resizers, I have written an application using the capture_prev_rsz_ss_raw_yuv.c (present in DVSDK under the psp/linux-driver-examples).
    This application does the following:
    capture ----> RSZA --> VID0
    |--> RSZB --> VID1
    I've used what you have suggested:

    rsz_ss_config.output2.enable = 1;
    rsz_ss_config.output2.width = OUT1_WIDTH;
    rsz_ss_config.output2.height = OUT1_HEIGHT;
    rsz_ss_config.output2.pix_fmt = IPIPE_UYVY;

    I am running the resize for 500 frames.
    The problem is that the application gets stuck sometimes.
    It completes 500 frames very rarely.

    Any kind of help would be appreciated. Thanks in advance.

    Regards,
    Vibha