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.

Ti8168 Hardware Codec and Scaler Capability

Hello,

We'd like to estimate the system capability. Per our understanding, there is hardware limitation on codec and scaler even if the CPU usage of vpss and video is low...

How many videos with 1080@30p can be handled with Ti816x, 2G memory, and dvr_rdk_4.0?
- only video decode
- only video encode
- scaler (Dei or swMs)

  • CJ said:
    How many videos with 1080@30p can be handled with Ti816x, 2G memory, and dvr_rdk_4.0?
    - only video decode

    - 6 channel with 2 1080P30 decoder running on each HDVICP/IVA-HD

    CJ said:
    - only video encode

    - 6 channel with 2 1080P30 encoder running on each HDVICP/IVA-HD

    CJ said:
    - scaler (Dei or swMs)

    - 3 channel 1080P30 / scaler IP

  • Hello, Badri

    Thank you very much for the answer. 

    Regarding scaler, how many scaler IPs in Ti8168?

    By the way, we recently face a fps problem. Below is our use case. According to the codec capability, it is supposed to meet 1080@30p *4, but we only get 25 fps for each path. 

    capture (2CH) -> dup -> swMs0 -> (4CH) merge -> nsf -> encode (4CH)

                                           -> swMs1

                                           -> swMs2

                                           -> swMs3

    By reducing 1 swMs output resolution to 480p, we can get 30 fps for each way.

    How to tune the performance? Is it expected?

    Thanks.

  •  There are 5 independent scalers. Refer hdvpss\docs\ti816x\HDVPSS_SW_Concurrency.xls  to know which scalers can be used simultaneously.

    Share the logs of Vsys_printDetailedStatistics collected 3 times at 1 min interval when you see performance at 25 fps instead of 30.Most likely NSF is the bottleneck. NSF cant process 4 channel 1080P30.

    You should configure SWMS to output 420SP by using appropriate scaler and avoid NSF for atleast 1 channel.(2 3ch 1080P30 should be possible with NSF)

  • Hello, Badri

    Can NSF frame dropped issue be solved by using 2 NSF instances, like below?

    capture (2CH) -> dup -> swMs0 ->  

                                        -> swMs1 -> merge (2CH) -> nsf0 

                                                                                                      -> merge (4CH) -> encode (4CH)

                                        -> swMs2

                                        -> swMs3 -> merge (2CH) -> nsf1 

    Thanks.

  • Using multiple instances of NSF is no use since there is only one underlying hw module which has limited capability of processing approx. 200 Mpixel/sec.

  • Hello, 

    Recently, we notice that the swMs can not output stable frames if switching 4 CH layout, but 1 CH layout works properly. It seems to be scaler performance issue.

    There are totally 4 swMs and 1 dei in our chain. As we know, 1 swMs instance may not handle 4 channels with 1080@30p, so we tried to set numSwMsInst=2. However, it seems that we don't have too many choices. In some cases, it just crashes when creating swMs or Dei. Without crash, we can only choose the same swMsInstId which is shared by another swMs and get the same result...

    Can you give us an example about choosing IDs of swMs and Dei to "balance" the scaler loading and get the best performance? 

    By the way, it is confused in document, HDVPSS_SW_Concurrency. We don't know how to map the "instance id" to M2M driver... 

    Thank you very much~~~ 

    Our use case is:

    -> 4 CH -> swMs0 (422) -> display

    -> 4 CH -> swMs1 (422) -> nsf -> dup -> dei ------>

                                                                 -------------->                

                                                                                     merge -> encode

    -> 1 CH -> swMs2 (420) --------------------------------> 

    -> 1 CH -> swMs3 (420) -------------------------------->  

    swMsPrm[0].numSwMsInst = 1;

    swMsPrm[0].swMsInstId[0] = SYSTEM_SW_MS_SC_INST_DEI_SC_NO_DEI ; // handle 4 channels

    swMsPrm[1].numSwMsInst = 1;

    swMsPrm[1].swMsInstId[0] = SYSTEM_SW_MS_SC_INST_SC5 ; // handle 4 channels

    swMsPrm[2].numSwMsInst = 1 ;
    swMsPrm[2].swMsInstId[0] = SYSTEM_SW_MS_SC_INST_VIP1_SC ; // handle 1 channel

    swMsPrm[2].outDataFormat = SYSTEM_DF_YUV420SP_UV ; 

    swMsPrm[3].numSwMsInst = 1 ;
    swMsPrm[3].swMsInstId[0] = SYSTEM_SW_MS_SC_INST_VIP1_SC ; // handle 1 channel

    swMsPrm[3].outDataFormat = SYSTEM_DF_YUV420SP_UV ; 

    deiId = SYSTEM_LINK_ID_DEI_HQ_1 ; // handle 1 channel
    deiPrm.enableOut[ DEI_LINK_OUT_QUE_VIP_SC ] = TRUE;