Luckfox Pico Pi RV1106學習<4>:RV1106的幀率問題
- 1. 背景
- 2. 問題
1. 背景
接上篇。我在應用中創建3個線程:
- CAM線程,使用V4L2驅動,從 /dev/video11 獲取圖像。
- ENC線程,使用硬件編碼器(RK-MPI-VENC)對圖像編碼。
- DTR線程,發送編碼后的數據。
實際上,SDK中的 media 路徑下有多個以 sample_ 開頭的例程,比這個更簡單更高效。一般是直接將VI綁定到VPSS或VENC,直接就可以獲取264碼流。
2. 問題
應用了 IMX415 攝像頭之后,使用V4L2獲取圖像,只能獲取到20FPS左右。而且V4L2驅動不支持 VIDIOC_S_PARM 命令設置幀率。修改了 驅動中 imx415.c 的寄存器列表,支持到90fps(720P情況下),輸出幀率也沒有變化。
這時候想到不用自己的程序,用 sample_venc_stresstest 這個例程來測試。先修改默認幀率:
圖中修改VI的幀率。結果發現,如果該值設置為30,那么運行時不會報錯。如果設置超過30,例如35,運行就會報錯。
cmpi 16:47:45-763 {createRuntime :711} [non-WRAP MODE]: buff size = 1382400
RTIsp3x 16:47:45-768 {ispInitDevice :591} sensor name = m00_b_imx415 4-0037
RTDeviceV4L2 16:47:45-769 {open :137} cameraIndex:0, entityName:rkisp_mainpath
RTDeviceV4L2 16:47:45-770 {open :143} open video name(/dev/video11)
RKViChn 16:47:45-770 {setFrameRateRuntim:437} VVI_IOCTL_SET_FR ioctl fail # <----此處
個人估計是RV1106的VI就不支持超過30FPS。
最早看RV1106的介紹,是支持5M@30fps的編碼。由于我只需要720p,因此評估性能,60fps的編碼應該是可行的。現在看來,無法從攝像頭獲取超過30fps的原始圖像。
本人不擅長搞軟件,如果理解的不對,希望能指出。