Skip to content

Latest commit

 

History

History
344 lines (241 loc) · 10.3 KB

K510_V4l2_Developer_Guides.md

File metadata and controls

344 lines (241 loc) · 10.3 KB

K510 V4L2 Developer's Guide

文档版本:V1.0.0

发布日期:2022-03-09

免责声明 您购买的产品、服务或特性等应受北京嘉楠捷思信息技术有限公司(“本公司”,下同)商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,本公司不对本文档的任何陈述、信息、内容的准确性、可靠性、完整性、营销型、特定目的性和非侵略性提供任何明示或默示的声明或保证。除非另有约定,本文档仅作为使用指导的参考。 由于产品版本升级或其他原因,本文档内容将可能在未经任何通知的情况下,不定期进行更新或修改。

商标声明

”、“Canaan”图标、嘉楠和嘉楠其他商标均为北京嘉楠捷思信息技术有限公司的商标。本文档可能提及的其他所有商标或注册商标,由各自的所有人拥有。

版权所有©2022北京嘉楠捷思信息技术有限公司 本文档仅适用K510平台开发设计,非经本公司书面许可,任何单位和个人不得以任何形式对本文档的部分或全部内容传播。

北京嘉楠捷思信息技术有限公司 网址:canaan-creative.com 商务垂询:[email protected]

# 前言 **文档目的** 本文档为K510 V4L2 应用实例的说明文档。

读者对象

本文档(本指南)主要适用的人员:

  • 软件开发人员
  • 技术支持人员

修订记录 修订记录累积了每次文档更新的说明。最新版本的文档包含以前所有版本的更新内容。

版本号 修改者 修订日期 修订说明
V1.0.0 系统软件组 2022-03-09 SDK V1.5发布
v1.0.1 朱大雷 2022-03-11 SDK V1.5发布
**目 录**

[TOC]

1 V4L2 mediactl库

1.1 头文件说明

include “media_ctl.h”

1.2 API 函数说明

◆ mediactl_init
struct video_info
{
	unsigned int video_used;
	char *video_name[4];
	unsigned int enable[4];
	unsigned int video_width[4];
	unsigned int video_height[4];
	unsigned int video_out_format[4];
};

int mediactl_init(char *video_cfg_file,struct video_info *dev_info)

初始化media。

参数
参数:
[in]	video_cfg_file:	video的配置文件,这个文件的内容只需关心下面解释的内容,具体解释如下。
sensor0_name:只在V4L2驱动中设置的sensor驱动名字。
sensor0_cfg_file:sensor对应的isp参数配置文件名字,如imx219_0.conf。
sensor0_total_width:sensor输出的水平方向的总像素,用来产生VSYNC信号,如3476
sensor0_total_height:sensor输出的总行数,用来产生HSYNC信号,如1166
sensor0_active_width:sensor输出的水平方向的有效像素,如1920,
sensor0_active_height:sensor输出的有效行数,如1080
video2_used:1 -- 使能,0 -- 没有使用。
video2_width:video输出的宽度,如1920。
video2_height:video输出的高度,如1080。
video2_out_format:1--指YUV420,NV21。
video3_used:1 -- 使能,0 -- 没有使用。
video3_width:video输出的宽度,如1080。
video3_height:video输出的高度,如720。
video3_out_format:1--指YUV420,NV21。
video4_used:1 -- 使能,0 -- 没有使用。
video4_width:video输出的宽度,如640。
video4_height:video输出的高度,如480。
video4_out_format:1--指YUV420,NV21。
video5_used:1 -- 使能,0 -- 没有使用。
video5_width:video输出的宽度,如320。
video5_height":video存储的高度,如320。
video5_height_r:video输出的高度,如240。
video5_out_format:0--指分离RGB,1--指ARGB。
sensor1_name:只在V4L2驱动中设置的sensor驱动名字。
sensor1_cfg_file:sensor对应的isp参数配置文件名字,如imx219_0.conf。
sensor1_total_width:sensor输出的水平方向的总像素,用来产生VSYNC信号,如3476
sensor1_total_height:sensor输出的总行数,用来产生HSYNC信号,如1166
sensor1_active_width:sensor输出的水平方向的有效像素,如1920,
sensor1_active_height:sensor输出的有效行数,如1080
video6_used:1 -- 使能,0 -- 没有使用。
video6_width:video输出的宽度,如1920。
video6_height:video输出的高度,如1080。
video6_out_format:1--指YUV420,NV21。
video7_used:1 -- 使能,0 -- 没有使用。
video7_width:video输出的宽度,如1080。
video7_height:video输出的高度,如720.
video7_out_format:1--指YUV420,NV21。
video8_used:1 -- 使能,0 -- 没有使用。
video8_width:video输出的宽度,如640。
video8_height:video输出的高度,如480。
video8_out_format:1--指YUV420,NV21。
video9_used:1 -- 使能,0 -- 没有使用。
video9_width:video输出的宽度,如320。
video9_height:video存储的宽度,如320。
video9_height_r:video输出的高度,如240。
video9_out_format:0--指分离RGB,1--指ARGB。
[out]	dev_info:	mediactl_lib返回从video的配置文件得到的video信息,具体的解释如下。
video_used:这里是指ISP的pipeline,如果使用就会返回1,否则0。K510支持ISP_F2K/ISP_R2K这两个		   			  pipeline,每个pipeline最多支持4个video输出。
video_name[4]:返回的video的名字。f2k的四个video是video2/video3/video4/video5;r2k的四个video是				   video6/video7/video8/video9
enable[4]:返回的每个video是否使能,1 -- 使能,0 -- 没有使用。
video_width[4]:返回的每个video的宽度。
video_height[4]:返回的每个video的高度。
video_out_format[4]:返回的每个video的输出图像格式,具体见《video的配置文件》的解释。
具体使用方法如下:
char *video_cfg_file = "video_cfg";
struct video_info dev_info[2]
mediactl_init(video_cfg_file,&dev_info)

返回值
0 成功,  -1 失败.
◆ mediactl_exit

关闭media设备及释放申请的share memory内存。

参数
参数:
无
◆ mediactl_set_ae
enum  isp_pipeline_e
{
	ISP_F2K_PIPELINE,
	ISP_R2K_PIPELINE,
	ISP_TOF_PIPELINE
};
int mediactl_set_ae(enum isp_pipeline_e pipeline)

配置sensor的AE值

参数
参数:
ISP_F2K_PIPELINE:配置f2k pipeline的AE。
ISP_R2K_PIPELINE:配置r2k pipeline的AE。
ISP_TOF_PIPELINE:没有使用。
◆ mediactl_get_isp_modules
enum isp_modules

{
  ISP_TPG,
  ISP_BLC,
  ISP_LSC,
  ISP_AE,
  ISP_AWB,
  ISP_AWB_D65,
  ISP_AWB_CCM,
  ISP_WDR,
  ISP_RGB_GAMMA,
  ISP_YUV_GAMMA,
  ISP_ADA,
  ISP_ADA_SBZ,
  ISP_ADA_CCR,
  ISP_RGBIR,
  ISP_RAW_2DNR,
  ISP_YUV_Y_2DNR,
  ISP_YUV_UV_2DNR,
  ISP_3DNR,
  ISP_LTM,
  ISP_SHARP,
  ISP_CC,
  ISP_CTRST,
  ISP_LUMA,
  ISP_SATURATION,
  ISP_LDC,
  ISP_AF,
};

unsigned int mediactl_get_isp_modules(enum isp_pipeline_e pipeline,enum isp_modules module)

获取ISP的各模块的使能状态。

参数
参数:
isp_pipeline_e:具体见mediactl_set_ae中的解释。
isp_modules:
  ISP_TPG --  Test Pattern Control模块
  ISP_BLC --  Black Level Correction模块
  ISP_LSC --  Lens Shading Correction模块
  ISP_AE --  AUTO Exposure Gain模块
  ISP_AWB -- AUTO white balance模块
  ISP_AWB_D65 -- AUTO white balance d65模块 
  ISP_AWB_CCM -- AUTO white balance ccm模块 
  ISP_WDR --  wide dynamic range模块
  ISP_RGB_GAMMA -- rgb gamma模块 
  ISP_YUV_GAMMA -- yuv gamma模块 
  ISP_ADA --  Adaptive dynamic range adjust模块
  ISP_ADA_SBZ -- Image stabilization模块 
  ISP_ADA_CCR -- Color correction模块 
  ISP_RGBIR -- rgbir rectify模块 
  ISP_RAW_2DNR -- raw域2D降噪模块 
  ISP_YUV_Y_2DNR -- yuv域2D Y方向降噪模块 
  ISP_YUV_UV_2DNR -- yuv域2D uv方向降噪模块 
  ISP_3DNR --  yuv域3D降噪模块
  ISP_LTM --  local tone mapping模块
  ISP_SHARP -- sharpness模块  
  ISP_CC --  color correction模块
  ISP_CTRST -- contrast adjust模块 
  ISP_LUMA --  luma adjust模块
  ISP_SATURATION -- saturation adjust 模块 
  ISP_LDC -- lens Distortion Correction模块 
  ISP_AF -- ATUO FOCUS模块 
返回值
0 -- 模块没有使能  1 -- 模块使能 

2 Demo应用

2.1 v4l2_test

程序放在/app/mediactl_lib目录下:

  • v4l2_test.out:自动保存50张图片至/root/data/video.yuv文件。 添加了-O选项修改保存文件的路径和名字,-d 修改输入配置文件的名字。可以使用-h 查看帮助。
  • 该demo是在v4l2通用demo的基础上仅添加了media初始化代码。
  • 该demo 需要video配置文件及对应的sensor配置文件在当前目录下。
  • 该demo运行命令:v4l2_test.out -d video_test.conf
  • 该demo必须保证video_test.conf,imx219_0.conf及imx219_1.conf三个配置文件存在

运行v4l2_test.out

  • -h 帮助信息,除下面三个其它的不要修改。
  • -c 保存图片的数量,默认为 50。
  • -v 打印调试信息。
  • -O 配置输出文件的全路径,默认为/root/data/video.yuv。

2.2 v4l2_drm

程序放在/app/mediactl_lib目录下:

  • v4l2_drm.out:v4l2和drm联动case,添加了-f 修改输入配置文件的名字。可以使用-h 查看帮助。

运行v4l2_drm.out

  • 该demo 需要video配置文件及对应的sensor配置文件在当前目录下。
  • 该demo通过更改配置文件,可以演示单双摄。
  • 该demo演示单摄全屏:./v4l2_drm.out -f video_drm_1080x1920.conf
  • 该demo演示双摄:./v4l2_drm.out -f video_drm_1920x1080.conf
  • 该demo必须保证video_drm_1920x1080.conf,imx219_0.conf及imx219_1.conf三个配置文件存在