TI中文支持网
TI专业的中文技术问题搜集分享网站

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帧

Chris Meng:

你好,

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

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

cata yelo:

回复 Chris Meng:

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

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

赞(0)
未经允许不得转载:TI中文支持网 » DM8168编码前SWMS帧率控制平滑度问题
分享到: 更多 (0)