采集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次。
TI中文支持网

