Difference between revisions of "How to use frame rate adjust function on NVIDIA Jetson Board/zh"

From wiki_veye
Jump to navigation Jump to search
 
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 />

Latest revision as of 11:34, 19 March 2021

English

1 怎样在英伟达平台使用灵活帧率功能

1.1 问题描述

CS系列摄像头支持灵活的帧率控制功能,可以使用I2C脚本进行配置。

但是如果使用我们提供的默认的驱动,使用gstreamer做应用层调用,每次gstreamer的调用都会覆盖i2c脚本已经写好的帧率模式。


下面以CS-MIPI-IMX307为例给出例子和解决方法。

比如,我们采用如下命令,配置CS-MIPI-IMX307的模式为1920*1080@10fps:

./cs_mipi_i2c.sh -w -f videofmt -p1 1920 -p2 1080 -p3 10

然后使用如下命令预览:

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

摄像头会被gstreamer命令重新配置为1920*1080@30fps。

1.2 解决方法

由于我们的驱动模式是V4L2模式,暂时给出的解决方案是:修改摄像头驱动的源码,在驱动中去掉对摄像头码流模式的配置。

以CS-MIPI-IMX307为例,在cs_imx307.h文件中,进行如下修改:

static cs307_reg cs307_reg_1920x1080_30fps[] = {

/*    {FMT_WIDTH_L,0x80},

    {FMT_WIDTH_H,0x7},

    {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_CMD},

    {FMT_HEIGHT_L,0x38},

    {FMT_HEIGHT_H,0x4},

    {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_CMD},

    {FMT_FRAMRAT_L,0x1E},

    {FMT_FRAMRAT_H,0x00},

    {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_STREAM},*/

{CS307_TABLE_END, 0x00}

};

static cs307_reg cs307_reg_1280x720_crop_60fps[] = {

/*    {FMT_WIDTH_L,0x00},

    {FMT_WIDTH_H,0x5},

    {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_CMD},

    {FMT_HEIGHT_L,0xD0},

    {FMT_HEIGHT_H,0x2},

    {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_CMD},

    {FMT_FRAMRAT_L,0x3C},

    {FMT_FRAMRAT_H,0x00},

    {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_STREAM},*/

{CS307_TABLE_END, 0x00}

};

static cs307_reg cs307_reg_640x480_crop_130fps[] = {

/*    {FMT_WIDTH_L,0x80},

    {FMT_WIDTH_H,0x2},

    {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_CMD},

    {FMT_HEIGHT_L,0xE0},

    {FMT_HEIGHT_H,0x1},

    {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_CMD},

    {FMT_FRAMRAT_L,0x82},

    {FMT_FRAMRAT_H,0x00},

    {CS307_TABLE_WAIT_MS, CS307_WAIT_MS_STREAM},*/

{CS307_TABLE_END, 0x00}

};

然后按照英伟达Jetson平台上VEYE和CS系列摄像头驱动源码编译指南重新编译驱动即可。

做如上更改之后,记得使用i2c脚本进行码流模式的配置。