第二季3:sample_venc.c的整体分析

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。

一、sample文件夹的介绍

将mpp/sample文件夹以及mpp/include文件夹导入SI后,搜索main时可以发现很多main函数。这说明sample文件夹下有很多例程,每个例程面向一个典型应用。我们只分析venc文件夹,其完整演示了视频捕获、视频处理、视频编码、视频输出与保存的功能。

可以在每个例程的目录下输入“make”进行编译,但要注意文件mpp/sample/Makefile.param中的参数设置,具体说明见第一季9:sample_venc.c的编译和测试

以venc例程说明这些文件的调用关系。venc目录下的sample_venc.c文件中的main函数调用了一些位于common目录中的函数,而common目录中的函数再调用mpp中的API,即上一级目录ko、lib中的函数,然后再调用HI3518E内部的硬件单元。

二、sample_venc.c的整体分析

找到sample_venc.c的main函数如下。  

我们在终端执行“./sample_venc index”时,不同的index对应不同的*argv[1],main函数首先判断参数再跳转到不同的函数。我们重点分析case ‘0’,因为我们主要是研究“AD->VI->VPSS->VENC->h264/h265”这条主线(见博文第二季1:MPP模块概述_天糊土的博客-CSDN博客),则需要分析SAMPLE_VENC_1080P_CLASSIC这个函数。

三、SAMPLE_VENC_1080P_CLASSIC函数的流程

函数SAMPLE_VENC_1080P_CLASSIC()有七个大步骤。

初始化MPP系统(step1&2:init system)

step 1: init sys variable,即初始化mpp系统相关的变量。

step 2: mpp system init,即初始化mpp系统。

见博客第二季4:初始化MPP系统(step1&2)

配置视频捕获模块(step3:VI模块)

step 3: start vi dev & chn to capture,即进行图像的采集。

见博客第二季5:配置视频捕获模块(step3:VI模块)

配置视频处理子系统(step4:VPSS模块)

step 4: start vpss and vi bind vpss,即启动VPSS并绑定VI,进行图像处理。

见博客第二季6:配置视频处理子系统(step4:VPSS模块)

配置编码模块(step5:VENC模块)

step 5: start stream venc,即开始进行编码。

见博客第二季7:配置编码模块(step5:VENC模块)

保存编码得到的码流(step6:Save to File)

step 6: stream venc process -- get stream, then save it to file,把编码得到的裸流保存为裸流文件。

注意这里是将裸流保存为裸流文件(见博客第二季8:保存编码得到的码流(step6)),其实也可以保存为MP4格式的文件(见第7季内容),或者通过rtsp协议进行网络传输(见第6季内容)。

退出进程(step7:Exit)

step 7: exit process,即退出进程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天糊土

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值