Line 1: |
Line 1: |
| [http://wiki.veye.cc/index.php/How_to_use_frame_rate_adjust_function_on_NVIDIA_Jetson_Board English] | | [http://wiki.veye.cc/index.php/How_to_use_frame_rate_adjust_function_on_NVIDIA_Jetson_Board English] |
| + | |
| + | === 怎样在英伟达平台使用灵活帧率功能 === |
| + | |
| + | ==== 问题描述 ==== |
| + | CS系列摄像头支持灵活的帧率控制功能,可以使用I2C脚本进行配置。 |
| + | |
| + | 但是如果使用我们提供的默认的驱动,使用gstreamer做应用层调用,每次gstreamer的调用都会覆盖i2c脚本已经写好的帧率模式。 |
| + | |
| + | |
| + | 下面以CS-MIPI-IMX307为例给出例子和解决方法。 |
| + | |
| + | 比如,我们采用如下命令,配置CS-MIPI-IMX307的模式为1920*1080@10fps: |
| + | |
| + | <code>./cs_mipi_i2c.sh -w -f videofmt -p1 1920 -p2 1080 -p3 10</code> |
| + | |
| + | 然后使用如下命令预览: |
| + | |
| + | <code>gst-launch-1.0 v4l2src device=/dev/video0 ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420" ! nvoverlaysink sync=false</code> |
| + | |
| + | 摄像头会被gstreamer命令重新配置为1920*1080@30fps。 |
| + | |
| + | ==== 解决方法 ==== |
| + | 由于我们的驱动模式是V4L2模式,暂时给出的解决方案是:修改摄像头驱动的源码,在驱动中去掉对摄像头码流模式的配置。 |
| + | |
| + | 以CS-MIPI-IMX307为例,在[https://github.com/veyeimaging/nvidia_jetson_veye_bsp/blob/master/drivers_source/cam_drv_src/cs_imx307.h cs_imx307.h]文件中,进行如下修改:<blockquote><code>static cs307_reg cs307_reg_1920x1080_30fps[] = {</code> |
| + | |
| + | <code>/* {FMT_WIDTH_L,0x80},</code> |
| + | |
| + | <code> {FMT_WIDTH_H,0x7},</code> |
| + | |
| + | <code> {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_CMD},</code> |
| + | |
| + | <code> {FMT_HEIGHT_L,0x38},</code> |
| + | |
| + | <code> {FMT_HEIGHT_H,0x4},</code> |
| + | |
| + | <code> {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_CMD},</code> |
| + | |
| + | <code> {FMT_FRAMRAT_L,0x1E},</code> |
| + | |
| + | <code> {FMT_FRAMRAT_H,0x00},</code> |
| + | |
| + | <code> {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_STREAM},*/</code> |
| + | |
| + | <code>{CS307_TABLE_END, 0x00}</code> |
| + | |
| + | <code>};</code> |
| + | |
| + | <code>static cs307_reg cs307_reg_1280x720_crop_60fps[] = {</code> |
| + | |
| + | <code>/* {FMT_WIDTH_L,0x00},</code> |
| + | |
| + | <code> {FMT_WIDTH_H,0x5},</code> |
| + | |
| + | <code> {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_CMD},</code> |
| + | |
| + | <code> {FMT_HEIGHT_L,0xD0},</code> |
| + | |
| + | <code> {FMT_HEIGHT_H,0x2},</code> |
| + | |
| + | <code> {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_CMD},</code> |
| + | |
| + | <code> {FMT_FRAMRAT_L,0x3C},</code> |
| + | |
| + | <code> {FMT_FRAMRAT_H,0x00},</code> |
| + | |
| + | <code> {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_STREAM},*/</code> |
| + | |
| + | <code>{CS307_TABLE_END, 0x00}</code> |
| + | |
| + | <code>};</code> |
| + | |
| + | <code>static cs307_reg cs307_reg_640x480_crop_130fps[] = {</code> |
| + | |
| + | <code>/* {FMT_WIDTH_L,0x80},</code> |
| + | |
| + | <code> {FMT_WIDTH_H,0x2},</code> |
| + | |
| + | <code> {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_CMD},</code> |
| + | |
| + | <code> {FMT_HEIGHT_L,0xE0},</code> |
| + | |
| + | <code> {FMT_HEIGHT_H,0x1},</code> |
| + | |
| + | <code> {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_CMD},</code> |
| + | |
| + | <code> {FMT_FRAMRAT_L,0x82},</code> |
| + | |
| + | <code> {FMT_FRAMRAT_H,0x00},</code> |
| + | |
| + | <code> {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_STREAM},*/</code> |
| + | |
| + | <code>{CS307_TABLE_END, 0x00}</code> |
| + | |
| + | <code>};</code></blockquote>然后按照'''[http://wiki.veye.cc/index.php/VEYE_CS_Camera_source_for_Jetson/zh 英伟达Jetson平台上VEYE和CS系列摄像头驱动源码编译指南]'''重新编译驱动即可。 |
| + | |
| + | 做如上更改之后,记得使用i2c脚本进行码流模式的配置。 |
| + | <br /> |