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.

Why Select Link drops frames

Hello,

We are designing a HD capture solution on DM8168, DVR RDK 4.0.
Our HD capture sources have different interlaced mode such as 1080I and 720P, so we connect capture link to a select link to choose different dei links. However, it seems that select link drops some frames if the input sources are 1080I and 720P. How can I avoid this problem? Thank you very much.

As below statistics, capture FPS are 60 and 59, but Recv. FPS of DEI0 and DEI1 (which is behind select link) are 36 and 45. Without select link, the Recv. FPS is normal.

[m3vpss ] CH | Fields Fields Fields FPS FPS FPS Width Height Fields Count (Desc Error Y/C)
[m3vpss ] ------------------------------------------------------------------------------------------------------------
[m3vpss ] 000 | 18132 18132 0 60 60 0 1280 / 1280 720 / 720 7217 0 0/0 (0/0)
[m3vpss ] 200 | 17875 8943 8932 59 29 29 1920 / 1920 277 / 576 4052 11 0/0 (0/0)

[m3vpss ] *** [DEI0 ] DEI Statistics ***
[m3vpss ]
[m3vpss ] Elasped Time : 300 secs
[m3vpss ] Total Fields Processed : 10834
[m3vpss ] Total Fields FPS : 123 FPS
[m3vpss ]
[m3vpss ]
[m3vpss ] CH | In Recv In Reject In Process Out[0] Out[1] Out[2] Out[3] Out[4] Skip Out[0] Skip Out[1] Skip Out[2] Skip Out[3] Skip Out[4] User Out[0] User Out[1] User Out[2] User Out[3] Use
[m3vpss ] Num | FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS Skip FPS Skip FPS Skip FPS Skip FPS Sk
[m3vpss ] --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[m3vpss ] 0 | 36 0 36 18 0 0 0 0 0 36 0 0 0 18 0 0 0 8
[m3vpss ]
[m3vpss ]
[m3vpss ] *** [DEI1 ] DEI Statistics ***
[m3vpss ]
[m3vpss ] Elasped Time : 300 secs
[m3vpss ] Total Fields Processed : 10168
[m3vpss ] Total Fields FPS : 49 FPS
[m3vpss ]
[m3vpss ]
[m3vpss ] CH | In Recv In Reject In Process Out[0] Out[1] Out[2] Out[3] Out[4] Skip Out[0] Skip Out[1] Skip Out[2] Skip Out[3] Skip Out[4] User Out[0] User Out[1] User Out[2] User Out[3] Use
[m3vpss ] Num | FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS Skip FPS Skip FPS Skip FPS Skip FPS Sk
[m3vpss ] --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[m3vpss ] 0 | 45 11 33 16 0 0 0 0 0 33 0 0 0 16 0 0 0 4

+--------------+
|                   |
|                   |
|    Capture  |
|                   |
|                   |
+--------------+
        +
        |
        | 2ch HD
        |
       V
+--------------------------+
|                                 |
|      Select                 |
|                                 |
+----+-----------+-------+
       |               |  
     0|               |1
       |               | 
       v              v
+---------+ +-----------+
|            |  |               |
|DEI      |  |  DEI       |
|Bypass | |Enabled  |
+--------+ +------------+  
     +               +
      |                |
     v                v 
+-----------------+
|                      |  
|          nsf       |
|                      |
+-----------------+

  • Select link does not drop frames. Make sure you invoke Vsys_printDetailedStatistics atleast 2 times with 1 min interval to get correct statistics. Refer

    /dvr_rdk/mcfw/src_linux/mcfw_api/usecases/ti816x/multich_hd_sdi_dvr.c

    where a similar (but more complex) usecase is implemented and dynamic interlaced->progressive switch using selectLink is tested to be working fine

  • Hello, Badri

    Thank you for reply. We print statistics two times and seem to get the same result. 

    Cature output around 60 fps (both interlaced and progressive), but Dei links only get 36 and 43. 

    Question 1. The Dei's input frame rate setting is 60 and output frame rate setting is 30, so if Dei receives 36 fps (in this case) and then it output 18 fps. Is that expected? 

    Question 2. According to the statistics report, Dei receives 36 fps. Does it mean select link output 36 fps? How can we check select link's output frame rate?

    More Information. If the input sources are both interlaced or progressive, the result is OK. Does select link has any timing issue?

    // Code of select and Dei

    SelectLink_CreateParams_Init( selectPrm );

    selectPrm.inQueParams.prevLinkId = captureId ;
    selectPrm.inQueParams.prevLinkQueId = 0 ;

    selectPrm.numOutQue = 2 ;

    // Que 0
    selectPrm.outQueParams[0].nextLink = deiId0 ;

    selectPrm.outQueChInfo[0].numOutCh = 1 ;
    selectPrm.outQueChInfo[0].outQueId = 0 ;

    selectPrm.outQueChInfo[0].inChNum[0] = 0 ;

    // Que 1
    selectPrm.outQueParams[1].nextLink = deiId1 ;

    selectPrm.outQueChInfo[1].numOutCh = 1 ;
    selectPrm.outQueChInfo[1].outQueId = 1 ;

    selectPrm.outQueChInfo[1].inChNum[0] = 1 ;


    DeiLink_CreateParams_Init( deiPrm0 );

    deiPrm0.inQueParams.prevLinkId = selectId ;
    deiPrm0.inQueParams.prevLinkQueId = 0 ;

    deiPrm0.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].scaleMode = DEI_SCALE_MODE_ABSOLUTE ;
    deiPrm0.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].absoluteResolution.outWidth = 640 ;
    deiPrm0.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].absoluteResolution.outHeight = 480 ;

    for (chId=1; chId < DEI_LINK_MAX_CH; chId++)
    deiPrm0.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][chId] = deiPrm0.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0];

    deiPrm0.enableOut[DEI_LINK_OUT_QUE_DEI_SC] = TRUE;
    deiPrm0.outQueParams[DEI_LINK_OUT_QUE_DEI_SC].nextLink = mergeId ;

    deiPrm0.inputFrameRate[DEI_LINK_OUT_QUE_DEI_SC] = 60 ;
    deiPrm0.outputFrameRate[DEI_LINK_OUT_QUE_DEI_SC] = 30 ;

    deiPrm0.comprEnable = FALSE;
    deiPrm0.setVipScYuv422Format = FALSE;

    // hard-coded for test
    deiPrm0.enableDeiForceBypass = TRUE ; // 720P
    // deiPrm1.enableDeiForceBypass = FALSE ; // 1080I

    ----------------- First Time -------------------------------------------------------------
    [m3vpss ]
    [m3vpss ] *** Capture Driver Advanced Statistics ***
    [m3vpss ]
    [m3vpss ] VIP Parser Reset Count : 0
    [m3vpss ]
    [m3vpss ] | Total Even Odd Total Even Odd Min / Max Min / Max Dropped Fid Repeat Frame Error Y/C
    [m3vpss ] CH | Fields Fields Fields FPS FPS FPS Width Height Fields Count (Desc Error Y/C)
    [m3vpss ] ------------------------------------------------------------------------------------------------------------
    [m3vpss ] 000 | 3527 3527 0 60 60 0 1280 / 1280 720 / 720 1351 0 0/0 (0/0)
    [m3vpss ] 200 | 3268 1639 1629 56 28 28 1920 / 1920 528 / 576 739 9 0/0 (0/0)
    [m3vpss ]
    [m3vpss ] VIP Capture Port 0 | DescMissMatch1 = 0, DescMissMatch2 = 0 , DescMissMatch3 = 0
    [m3vpss ] VIP Capture Port 2 | DescMissMatch1 = 0, DescMissMatch2 = 0 , DescMissMatch3 = 0
    [m3vpss ]
    [m3vpss ] *** Capture List Manager Advanced Statistics ***
    [m3vpss ]
    [m3vpss ] List Post Count : 15686195
    [m3vpss ] List Stall Count : 0
    [m3vpss ] List Post Time (ms) : Max = 2, Min = 0, Avg = 0, Total = 2008
    [m3vpss ] INTC Timeout Count : (0, 0) (Min timeout value = 958, 976)
    [m3vpss ] Descriptor miss found count : 0
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] VIP and VPDMA registers,
    [m3vpss ] VIP0 : FIQ_STATUS : 0x4810551c = 0x00000000
    [m3vpss ] VIP1 : FIQ_STATUS : 0x48105a1c = 0x00000000
    [m3vpss ] VPDMA: LIST_BUSY : 0x4810d00c = 0x001c0000
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] 70604889: CAPTURE: Fields = 4705 (fps = 79, CPU Load = 0)
    [m3vpss ] 70604889: CAPTURE: Num Resets = 0 (Avg 0 ms per reset)
    [m3vpss ] 70604889: SYSTEM : FREE SPACE : System Heap = 66496 B, Mbx = 10229 msgs)
    [m3vpss ] 70604889: SYSTEM : FREE SPACE : SR0 Heap = 8691328 B (8 MB)
    [m3vpss ] 70604890: SYSTEM : FREE SPACE : Frame Buffer = 131627392 B (125 MB)
    [m3vpss ] 70604890: SYSTEM : FREE SPACE : Bitstream Buffer = 203988352 B (194 MB)
    [m3vpss ] 70604890: SYSTEM : FREE SPACE : Tiler Buffer = 224 B (0 MB) - TILER OFF
    [m3vpss ]
    [m3vpss ] *** [NSF1] NSF Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 59 secs
    [m3vpss ] Total Fields Processed : 3793
    [m3vpss ] Total Fields FPS : 194 FPS
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] CH | In Recv In Reject In Process Out User Out Out
    [m3vpss ] Num | FPS FPS FPS FPS Skip FPS Skip FPS
    [m3vpss ] ------------------------------------------------
    [m3vpss ] 0 | 18 0 18 18 0 0
    [m3vpss ] 1 | 15 0 15 15 0 0
    [m3vpss ] 2 | 30 0 30 30 0 0
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [DEI0 ] DEI Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 61 secs
    [m3vpss ] Total Fields Processed : 2252
    [m3vpss ] Total Fields FPS : 125 FPS
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] CH | In Recv In Reject In Process Out[0] Out[1] Out[2] Out[3] Out[4] Skip Out[0] Skip Out[1] Skip Out[2] S
    [m3vpss ] Num | FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS
    [m3vpss ] ------------------------------------------------------------------------------------------------------------
    [m3vpss ] 0 | 36 0 36 18 0 0 0 0 0 36 0 4
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [DEI1 ] DEI Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 61 secs
    [m3vpss ] Total Fields Processed : 1948
    [m3vpss ] Total Fields FPS : 49 FPS
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] CH | In Recv In Reject In Process Out[0] Out[1] Out[2] Out[3] Out[4] Skip Out[0] Skip Out[1] Skip Out[2] S
    [m3vpss ] Num | FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS
    [m3vpss ] ------------------------------------------------------------------------------------------------------------
    [m3vpss ] 0 | 43 11 31 15 0 0 0 0 0 31 0 2
    [m3vpss ]
    [m3vpss ]

    ----------------- Second Time -------------------------------------------------------------

    [m3vpss ]
    [m3vpss ] *** Capture Driver Advanced Statistics ***
    [m3vpss ]
    [m3vpss ] VIP Parser Reset Count : 0
    [m3vpss ]
    [m3vpss ] | Total Even Odd Total Even Odd Min / Max Min / Max Dropped Fid Repeat Frame Error Y/C
    [m3vpss ] CH | Fields Fields Fields FPS FPS FPS Width Height Fields Count (Desc Error Y/C)
    [m3vpss ] ------------------------------------------------------------------------------------------------------------
    [m3vpss ] 000 | 7401 7401 0 60 60 0 1280 / 1280 720 / 720 2937 0 0/0 (0/0)
    [m3vpss ] 200 | 7142 3576 3566 58 29 28 1920 / 1920 528 / 576 1630 9 0/0 (0/0)
    [m3vpss ]
    [m3vpss ] VIP Capture Port 0 | DescMissMatch1 = 0, DescMissMatch2 = 0 , DescMissMatch3 = 0
    [m3vpss ] VIP Capture Port 2 | DescMissMatch1 = 0, DescMissMatch2 = 0 , DescMissMatch3 = 0
    [m3vpss ]
    [m3vpss ] *** Capture List Manager Advanced Statistics ***
    [m3vpss ]
    [m3vpss ] List Post Count : 15702351
    [m3vpss ] List Stall Count : 0
    [m3vpss ] List Post Time (ms) : Max = 2, Min = 0, Avg = 0, Total = 2008
    [m3vpss ] INTC Timeout Count : (0, 0) (Min timeout value = 958, 976)
    [m3vpss ] Descriptor miss found count : 0
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] VIP and VPDMA registers,
    [m3vpss ] VIP0 : FIQ_STATUS : 0x4810551c = 0x00000000
    [m3vpss ] VIP1 : FIQ_STATUS : 0x48105a1c = 0x00000000
    [m3vpss ] VPDMA: LIST_BUSY : 0x4810d00c = 0x001e0000
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] 70669510: CAPTURE: Fields = 9975 (fps = 80, CPU Load = 0)
    [m3vpss ] 70669510: CAPTURE: Num Resets = 0 (Avg 0 ms per reset)
    [m3vpss ] 70669510: SYSTEM : FREE SPACE : System Heap = 66496 B, Mbx = 10238 msgs)
    [m3vpss ] 70669511: SYSTEM : FREE SPACE : SR0 Heap = 8691328 B (8 MB)
    [m3vpss ] 70669511: SYSTEM : FREE SPACE : Frame Buffer = 131627392 B (125 MB)
    [m3vpss ] 70669511: SYSTEM : FREE SPACE : Bitstream Buffer = 203988352 B (194 MB)
    [m3vpss ] 70669512: SYSTEM : FREE SPACE : Tiler Buffer = 224 B (0 MB) - TILER OFF
    [m3vpss ]
    [m3vpss ] *** [NSF1] NSF Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 64 secs
    [m3vpss ] Total Fields Processed : 7996
    [m3vpss ] Total Fields FPS : 195 FPS
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] CH | In Recv In Reject In Process Out User Out Out
    [m3vpss ] Num | FPS FPS FPS FPS Skip FPS Skip FPS
    [m3vpss ] ------------------------------------------------
    [m3vpss ] 0 | 17 0 17 17 0 0
    [m3vpss ] 1 | 17 0 17 17 0 0
    [m3vpss ] 2 | 30 0 30 30 0 0
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [DEI0 ] DEI Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 64 secs
    [m3vpss ] Total Fields Processed : 4538
    [m3vpss ] Total Fields FPS : 123 FPS
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] CH | In Recv In Reject In Process Out[0] Out[1] Out[2] Out[3] Out[4] Skip Out[0] Skip Out[1] Skip Out[2] S
    [m3vpss ] Num | FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS
    [m3vpss ] ------------------------------------------------------------------------------------------------------------
    [m3vpss ] 0 | 35 0 35 17 0 0 0 0 0 35 0 6
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] *** [DEI1 ] DEI Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 64 secs
    [m3vpss ] Total Fields Processed : 4145
    [m3vpss ] Total Fields FPS : 49 FPS
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] CH | In Recv In Reject In Process Out[0] Out[1] Out[2] Out[3] Out[4] Skip Out[0] Skip Out[1] Skip Out[2] S
    [m3vpss ] Num | FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS FPS
    [m3vpss ] ------------------------------------------------------------------------------------------------------------
    [m3vpss ] 0 | 46 12 34 17 0 0 0 0 0 34 0 3
    [m3vpss ]
    [m3vpss ]

  • CJ said:
    Question 1. The Dei's input frame rate setting is 60 and output frame rate setting is 30, so if Dei receives 36 fps (in this case) and then it output 18 fps. Is that expected? 

    - Yes this is expected. Only the ratio of input:output fps matters.As you have 2:1 ratio for input:output if inputs is 36 fps output will be 18 fps.

    The issue you are seeing is unrelated to select link. Capture link is dropping frames because it does not have output buffers, The issue appears to be a performance bottleneck with DEI bypass mode. Attach your usecase file for confirmation that there are no issues with configuration,.Are you using 2 different DEI instances or the same instance ? Run the demo option "d" in mcfw API demo which runs a similar usecase and check the DEI fps you are getting.