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.

DM8168编码前SWMS帧率控制平滑度问题



采集1080P60,经过SWMS模块后送编码,

swMsPrm[i].layoutPrm.outputFPS=60;

swMsPrm[i].enableProcessTieWithDisplay      = FALSE;

根据底层代码swMsLink_drv.c中SwMsLink_drvGetTimerPeriod计算pObj->timerPeriod =(1000/(layoutParams->outputFPS));为整数16

实际上板测试发现,编码帧率为62帧左右,而不是60帧,且由于swMsPrm[i].maxInputQueLen            = 12,在底层swMsLink_drv.c中经常出现

if ((queCnt > skipInputFrames)条件成立,进而调用Avsync_vidQueFlush函数,导致画面跳帧明显。

有什么办法控制在平滑的60帧

  • 你好,

    “实际上板测试发现,编码帧率为62帧左右”

    为什么编码的帧率不是60? 你输入采集的帧率不是60帧么?能否从采集这里控制一下?

  • 采集输入的摄像机为1080P60,也达不到62帧,所以不清楚这62帧是从何而来的,初步分析发现可能如下有关,因为swms采用period计时方式,而

    SwMsLink_drvGetTimerPeriod中pObj->timerPeriod =(1000/(layoutParams->outputFPS)),档outputFPS=60时,实际计算值为16.67,但由于不支持浮点计算,取整16,而1000ms/16ms=62.5帧,取整为62帧。即每秒调度62次。