2.音视频工作流程分析 —-FrameSource

以下几篇文章都将针对 音视频工作的各个模块 进行分析

整体流程图
在这里插入图片描述
再讲 FrameSource 视频源之前,先讲一个非常重要的部分 — GROUP与Channel。

Group 是一路数据输入的最小单位。一个 Device 可以有多个 Group,每个 Group
只能接收一路数据输入,Group 可以有多路输出。

两个 Group 经过 Bind 连接后,源 Group 的数据会自动发到目的 Group

Channel 通常指一个单一功能的单元,Channel 在 Create 时(实例化)时被指定具体
功能。也就是说在不同的模块中channel 有这不同的功能。
在 Encoder 模块中,channel 负责不同 格式(H264,JPEG) 的编码。
在IVS模块中,channel负责 某种 算法的实现。

以上两者,在整个工程中是很重要的存在。两者负责整个工程中的 数据传输与功能实现

接下来,进入本章主题,分析 FrameSource 视频源 模块。

FrameSource 是 ISP 出图功能的软件抽象,输出 ISP 处理后的原始视频。

FrameSource 的结构

在这里插入图片描述

如图,FrameSource 有三种码流(主码流(0)次码流(1,2)扩展码流(3,4))。三种输出均可用来编码。

Channel 0 一般作为高清视频流
Channel 1/2 一般作为标清视频流,或者 IVS 智能算法的数据源
Channel 3/4 是拓展通道,在特殊应用下使用,一般不建议使用

其中 扩展码流 是 主次码流的 copy , 然后 对拷贝过来的视频 进行其他操作的处理。来实现主 次码流不方便的功能。

FrameSource 代码编写流程

读取配置文件的sensor名字 (根据键值 从 字典文件中 获取对应 sensor名字)

获取镜头分辨率大小 (根据上面名字,查找对应参数值,获取其中的 宽高)

设置通道0的分辨率大小为镜头的分辨率大小(将通道设置成以上分辨率大小)

创建通道(根据通道号和通道属性结构体)

设置通道(根据通道号和通道属性结构体)

typedef struct {
	int picWidth;				/**< 图片宽度 */
	int picHeight;				/**< 图片高度 */
	IMPPixelFormat pixFmt;		/**< 图片格式 */
	IMPFSChnCrop crop;			/**< 图片裁剪属性 */
	IMPFSChnScaler scaler;		/**< 图片缩放属性 */
	int outFrmRateNum;			/**< 通道的输出帧率分子 */
	int outFrmRateDen;			/**< 通道的输出帧率分母 */
	int nrVBs;					/**< Video buffer数量 */
	IMPFSChnType type;			/**< 通道类型 */
	IMPFSChnCrop fcrop;			/**< 图片裁剪属性 */
} IMPFSChnAttr;
 /* 通道0(主码流)视频源参数 */
            .index = CH0_INDEX,
            .enable = CHN0_EN,
            .fsChnAttr =
            {
                .pixFmt = PIX_FMT_NV12,
                .picWidth = SENSOR_WIDTH_DEFAULT,/*1920*/
                .picHeight = SENSOR_HEIGHT_DEFAULT,/*1080*/
                .outFrmRateNum = SENSOR_FRAME_RATE_NUM,
                .outFrmRateDen = SENSOR_FRAME_RATE_DEN,
                .nrVBs = 2,
                .type = FS_PHY_CHANNEL,
		   },

使能framesource通道,开始处理数据

图像翻转设置, 根据涂鸦配置文件设置(根据宏定义 设置不同属性)

注:后面会对 FrameSource 两个通道 分别和 IVS OSD 进行绑定(bind)
原通道与目的通道绑定后,数据就会自动传输)
在使能Fsrc通道 处理完信息之后,输出主码流到 OSD 0,输出次码流到 IVS 0;

自此 我们完成了 图像的采集 与 部分处理。下篇将对 OSD 模块分析。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值