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.

capture speed in AM5xx



hi experts,

as we study the spec for capture in AM572x TRM 2.0/1.1

A VIP module includes the following main features:
• Two independently configurable external video input capture slices each of which has two video input
ports, Port A and Port B, where Port A can be configured as a 24/16/8 bit port, and Port B is a fixed
8bit port. VIP3 does not use Port B of both slices and Port A supports only 16bit interface.
• Each video input Port A port can be operated as clock independent input channels (with interleaved or
separated Y/C data input). Embedded sync and external sync modes are supported for all input
configurations.
• Support for a single external asynchronous pixel clock, up to 165 Mhz per port.

 

By our test in capturevpedisplay.c, and our command is ./capturevpedisplay 1920 1080 yuyv 320 240 uyvy 0 1 -s 26:1920x1080

gettimeofday(&PreviousTime,NULL);

index = vip_dqbuf(vpe); // get data from vip

... //we mark almost everything here , including VPE(scaling) and display

vip_qbuf(vpe, index);  //

gettimeofday(&CurrentTime,NULL);
diff = ( (CurrentTime.tv_sec*1000000+CurrentTime.tv_usec) - (PreviousTime.tv_sec*1000000 + PreviousTime.tv_usec) );
printf(", diff = %d \n", diff);

we found that the consuming time for capture is 0.15ms around, which means the capture rate is about 7fps. This is quite different with the spec in the above datasheet. 

Is there anything I misunderstand ?? or something wrong ??

Thanks

  • What's you test setup? If it's AM57x GP EVM with the sensor board that it comes with (MT9T111), then the limitation is coming from sensor speed. It supports 1080p around 14 fps. I don't know how your rest of the setup between profiling that's causing the perfromance to 7 fps.
  • hi manisha,

    Many thanks for your response.

    After checking MT9T111's datasheet from below
    www.digchip.com/.../MT9T111-pdf.php

    we found the following description
    The MT9T111 image sensor can be programmed to output progressive-scan images at up to 30 fps in preview/power-saving mode and 15 fps in fullresolution (QXGA) mode.

    And we check the current mode
    root@am57xx-evm:~# v4l2-ctl --get-fmt-video -d /dev/video1
    Format Video Capture:
    Width/Height : 1920/1080
    Pixel Format : 'NV24'
    Field : None
    Bytes per Line: 1920
    Size Image : 4147200
    Colorspace : Broadcast NTSC/PAL (SMPTE170M/ITU601)
    Flags :
    root@am57xx-evm:~#


    root@am57xx-evm:~# v4l2-ctl --list-formats-ext -d /dev/video1
    ioctl: VIDIOC_ENUM_FMT
    Index : 0
    Type : Video Capture
    Pixel Format: 'NV24'
    Name : NV24 YUV 444 co-planar
    Size: Discrete 2048x1536
    Interval: Discrete 0.033s (30.000 fps)
    Size: Discrete 1920x1200
    Size: Discrete 1920x1080

    root@am57xx-evm:~/201# v4l2-ctl --get-parm -d /dev/video1
    Streaming Parameters Video Capture:
    Capabilities : timeperframe
    Frames per second: 30.000 (30/1)
    Read buffers : 4


    Because the current setting is 1920x1080, it should output 30fps.

    But it seems to conflict with your speaking ( It supports 1080p around 14 fps. ), is there something wrong ??

    Thanks

  • hi manisha,

    I don't know how your rest of the setup between profiling that's causing the perfromance to 7 fps.
    > Hereunder is how I test

    1. follow processors.wiki.ti.com/.../Processor_SDK_Building_The_SDK to generat capturevpedisplay demo
    2. add timing-measurement as below inside main() in omapdrmtest/1.0.0-r8/git/capturevpedisplay.c

    vpe->field = V4L2_FIELD_ANY;
    while (1)
    {
    gettimeofday(&PreviousTime,NULL); //added by HeartBreak
    index = vip_dqbuf(vpe);
    gettimeofday(&CurrentTime,NULL); //added by HeartBreak

    vpe_input_qbuf(vpe, index);

    if (!doOnce) {
    count ++;
    for (i = 1; i <= NUMBUF; i++) {
    /** To star deinterlace, minimum 3 frames needed */
    if (vpe->deint && count != 3) {
    index = vip_dqbuf(vpe);
    vpe_input_qbuf(vpe, index);
    } else {
    stream_ON(vpe->fd, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE);
    doOnce = 1;
    printf("streaming started...\n");
    break;
    }
    count ++;
    }
    }

    index = vpe_output_dqbuf(vpe);
    display_buffer(vpe, index);
    vpe_output_qbuf(vpe, index);

    index = vpe_input_dqbuf(vpe);
    vip_qbuf(vpe, index);

    //added by HeartBreak
    diff = ( (CurrentTime.tv_sec*1000000+CurrentTime.tv_usec) - (PreviousTime.tv_sec*1000000 + PreviousTime.tv_usec) );
    printf("diff = %d\n", diff);

    }

    and the result are shown (the unit is us)
    diff = 149127
    diff = 149140
    diff = 149133
    diff = 149121
    diff = 149151
    diff = 149128
    diff = 149129
    diff = 149145
    diff = 149132
    diff = 149152
    diff = 149132
    diff = 149134
    diff = 149143
    diff = 149149
    diff = 149117
    diff = 149145
    diff = 149131
    diff = 149136

    Please let me know if any problem

    Thanks
  • hi experts,

    In our application, we need to verify if the VIP's speed could really achieve 30/60 fps. 

    Any comment ??

    Thanks

  • VIP can achieve 1080p60 fps. As mentioned, the sensor board on GP EVM supports only 1080p ~14 fps. 

     

  • hi manisha,
    many thanks for your reply. and I have two questions as below

    Q1. how could I proof the 1080p60 for VIP in software??

    Q2. how did you get the result of 14fps ??

    thanks.