海思3518E sample的整体架构venc层源码分析_海思 码率控制(1)

fps:(frame per second 每秒多少帧) 帧率

从main入手,main的传参分析:

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

3.sample代码学习的技巧

学习这个视频框架需要理解很多抽象的概念,理解好概念再去理解代码会更好的上手,就像学习硬件驱动一样,硬件的原理没有搞懂,看代码根本看不懂。

请参考的我博客:海思HI3518E部分

系统控制mpp:海思HI3518E系统控制mpp_小辜同学的博客-CSDN博客

视频缓存池:海思HI3518E视频缓存池_小辜同学的博客-CSDN博客

视频输入VI:海思H3518E视频输入VI_小辜同学的博客-CSDN博客

视频输出VO:海思H3518E视频输出VO_小辜同学的博客-CSDN博客

视频处理VPSS:海思H3518E视频处理VPSS_小辜同学的博客-CSDN博客

4.绘制调用关系图谱

调用关系的图谱刚开始追代码的时候并不要再过深究,深究便会深陷进去。

根据原理理解视频输入输出处理的通路即可,等项目中遇到的问题再深究。

-> 全局把控整个过程全景视图。

-> 掌握细节数据结构元素含义,和遇到的概念。

-> 知道某些关键操作在哪里定义,哪里设置,将来需要改的时候能找到地方。

main()
	SAMPLE_VENC_1080P_CLASSIC
		SAMPLE_COMM_VI_GetSizeBySensor传入参数,做一个参数的检查,根据传入的参数选择senser的清晰度,最终选择的是三路码流,一路主码流是配置出来的,另外两路是简化出来的,三路的分辨率不一样。--------------------------------------------------------->(step1)
		SAMPLE_COMM__CalcPicVbBlkSize根据选择的码流申请内存	
			SAMPLE_COMM_SYS_GetPicSize选择到底要多大的内存
		SAMPLE_COMM_SYS_Init------------------------------------------------------------------->(step2)
			HI_MPI_SYS_Exit();
			HI_MPI_VB_Exit();
			HI_MPI_VB_SetConf();
			HI_MPI_VB_Init();
			HI_MPI_SYS_SetConf();
			HI_MPI_SYS_Init();
		SAMPLE_COMM_VI_StartVi----------------------------------------------------------------->(step3)
			IsSensorInput
			SAMPLE_COMM_VI_StartIspAndVi
				SAMPLE_COMM_VI_StartMIPI*****************》(1)
					SAMPLE_COMM_VI_SetMipiAttr
						fd = open("/dev/hi_mipi", O_RDWR);
						ioctl(fd, HI_MIPI_SET_DEV_ATTR, pstcomboDevAttr)
				SAMPLE_COMM_ISP_Init********************》(2)  //isp就是image signal process,图像信号处理
					sensor_register_callback
					HI_MPI_AE_Register();
					HI_MPI_AWB_Register();
					HI_MPI_AF_Register();
					HI_MPI_ISP_MemInit();
					HI_MPI_ISP_SetWDRMode();
					HI_MPI_ISP_SetPubAttr();
					HI_MPI_ISP_Init();
				SAMPLE_COMM_ISP_Run********************》(3)
					pthread_create(&gs_IspPid, &attr, (void* (*)(void*))Test_ISP_Run, NULL)
						Test_ISP_Run
							HI_MPI_ISP_Run();
				SAMPLE_COMM_VI_StartDev****************》(4)
					HI_MPI_VI_SetDevAttr();
					HI_MPI_ISP_GetWDRMode();
					HI_MPI_VI_SetWDRAttr();
					HI_MPI_VI_EnableDev();
				SAMPLE_COMM_VI_StartChn****************》(5)
					HI_MPI_VI_SetChnAttr();
					HI_MPI_VI_SetRotate();
					HI_MPI_VI_EnableChn();					
		SAMPLE_COMM_SYS_GetPicSize------------------------------------------------------------>(step4)
		SAMPLE_COMM_VPSS_StartGroup
			HI_MPI_VPSS_CreateGrp();
			HI_MPI_VPSS_GetNRParam();
			HI_MPI_VPSS_SetNRParam();
			HI_MPI_VPSS_StartGrp();
		SAMPLE_COMM_VI_BindVpss
			SAMPLE_COMM_VI_Mode2Param
			HI_MPI_SYS_Bind();
		SAMPLE_COMM_VPSS_EnableChn
			HI_MPI_VPSS_SetChnAttr();
			HI_MPI_VPSS_SetExtChnAttr();
			HI_MPI_VPSS_SetChnMode();
			HI_MPI_VPSS_EnableChn();
		SAMPLE_COMM_VENC_Start---------------------------------------------------------------->(step5)
			SAMPLE_COMM_SYS_GetPicSize
			step 1:  Create Venc Channel
			HI_MPI_VENC_CreateChn();
			step 2:  Start Recv Venc Pictures
			HI_MPI_VENC_StartRecvPic(); 
		SAMPLE_COMM_VENC_BindVpss
			HI_MPI_SYS_Bind();
		SAMPLE_COMM_VENC_StartGetStream------------------------------------------------------->(step6)
			SAMPLE_COMM_VENC_StartGetStream
				pthread_create(&gs_VencPid, 0, SAMPLE_COMM_VENC_GetVencStreamProc, (HI_VOID*)&gs_stPara);
		SAMPLE_COMM_VENC_StopGetStream-------------------------------------------------------->(step7)
			pthread_join(gs_VencPid, 0);

5.系统控制mpp初始化解析

 

6.视频输入VI

VI模块就包含3大部分:Sensor对接的部分,ISP,VI dev和channel。

在这里插入图片描述

7.视频处理VPSS

Hi3518EV200的VI模块只有一个物理通道chn0,只能绑定VPSS的一个Grp,而VPSS一个Grp可以创建若干个VPSSchn作为不同分辨率的码流输出通道。

在这里插入图片描述

8.venc编码模块

VENC概述:

本模块支持多路实时编码,且每路编码独立,编码协议和编码 profile 可以不同。本模块支持视频编码同时,调度 Region 模块对编码图像内容进行叠加和遮挡。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值