第二季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,即退出进程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

〖Linux〗穿越城墙之后,直接连接国内网站的路由配置

因为有需要做Android相关的开发工作,很多时候要穿越之后才能做事情; 如Android文件加密预研、Android NDK/SDK的下载,都需要使用得到Google; 但是穿越之后,访问国内网站就不是那么方便了,所以,写…

android自动化持续集成,Android系统的持续集成自动化测试框架的研究与实践

摘要:近几年,Android系统占据着智能移动设备操作系统领域中极大的市场份额。随着Android市场中软件数量的不断攀升,移动用户对Android应用的质量要求也越来越高。如何保证Android软件的质量,成为移动应用领域中亟待解决的问题。重视移动应用的测试工作,是提高Androi…

poj 2891 Strange Way to Express Integers

题目&#xff1a;http://poj.org/problem?id2891 思路&#xff1a;扩展欧几里得 #include <cstdio> #include <cstring> #include <iostream> #include <cmath> #include <algorithm> using namespace std; #define maxn 100010 int n; long lo…

第二季4:SAMPLE_VENC_1080P_CLASSIC函数的总流程

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 函数SAMPLE_VENC_1080P_CLASSIC()有七个大步骤。 step 1: init sys variable&#xff0c;即初始化&#xff08;填充&#xff09;mpp系统的变量、参数。 step 2: mpp system init&#xff0c;即初始化…

读书笔记2014第13本:《富爸爸,穷爸爸》

早就收藏了《富爸爸&#xff0c;穷爸爸》这本书&#xff0c;一直没看&#xff0c;最近仔细翻看一遍&#xff0c;发现自己智商一般&#xff0c;情商不行&#xff0c;原来财商更差&#xff0c;连书里的穷爸爸也比不上。这本书在这个时代再看&#xff0c;已经跟不上形势的发展了&a…

html里嵌入语音,HTML5语音合成API语音/语言支持

我正在尝试在html5中使用语音合成来用阿拉伯语讲话,但它不起作用.我运行以下脚本来检查chrome支持的语言,阿拉伯语不是其中之一.window.addEventListener("DOMContentLoaded",function () {if (window.speechSynthesis ! undefined) {document.getElementById("…

Eclipse RCP使用SWT.EMBEDDED方式显示batik的svgCanvas后窗口最大化变白问题

// 设置svg组件一直动态&#xff08;这一行代码导致了最大化变白的问题&#xff09;svgCanvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);// 以下两行解决最大化变白问题&#xff08;具体原理不详&#xff09;svgCanvas.setDoubleBuffered(false);svgCanvas.setDoubleBuffe…

第三季1:ORTP库的移植与视频的实时传输实验

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 本节内容是移植ORTP库&#xff0c;并使用ORTP库来完成视频的实时传输。 一、ORTP的简介 1、视频网络传输的两种方式 &#xff08;1&#xff09;基于下载的方式。比如http&#xff08;Hyper Text T…

cocos2d-x实例学习之常用类及其概要作用

CCLayer,CCScene CCLayer类对应cocos2d-x引擎里的布景。每个游戏场景中都可以有很多层&#xff0c;每一层负责各自的任务&#xff0c;例如专门负责显示背景、专门负责显示道具和专门负责显示人物角色等。在每个层上面可以放置不同的元素&#xff0c;包括文本、精灵和菜单等。CC…

HTML能用作网页开发语言吗,[单选题] 以下语言本身不能作为网页开发语言的是(  )。...

参考解析&#xff1a;(1)【解题步骤】步骤1&#xff1a;通过“答题”菜单打开WORD1.DOCX文件&#xff0c;按题目要求替换文字。选中全部文本(包括标题段)&#xff0c;在【开始】功能区的【编辑】分组中&#xff0c;单击“替换”按钮&#xff0c;弹出“查找和替换”对话框。在“…

第三季2:ORTP库与RTP发送实验的源码分析

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 本文首先分析ORTP库的组成&#xff0c;然后以rtpsend.c为例说明ORTP库的使用方法&#xff0c;最后分析第三季1中的RTP发送实验的源码。 一、ORTP库的源码分析 1、ORTP库概览 &#xff08;1&#…

线程让出实验【RT-Thread学习笔记 4】

API: rt_thread_yield 线程函数中调用&#xff0c;本线程释放MCU。如果此时有别的相同优先级的任务整处于等待状态&#xff0c;将获得MCU使用权。 线程让出就是给OS增加一个任务调度的机会。 创建两个线程&#xff0c;观察他们的结果&#xff1a; //线程让出试验 void yield_te…

你或许不了解的C++函数调用(1)

这篇博客名字起得可能太自大了&#xff0c;搞得自己像C大牛一样&#xff0c;其实并非如此。C有很多隐藏在语法之下的特性&#xff0c;使得用户可以在不是特别了解的情况下简单使用&#xff0c;这是非常好的一件事情。但是有时我们可能会突然间发现一个很有意思的现象&#xff0…

有赞下拉菜单html,有赞vant-ui Tabs、List、PullRefresh组件实践

Vant ui Vue.js 部分组件实践功能需求是实现一个移动端的栏目列表切换&#xff0c;于此同时列表需要进行下拉刷新&#xff0c;上拉加载如下图&#xff0c;大概是一个这样的东西看起来是挺简单的&#xff0c;实现起来很方便。没错&#xff0c;我当时也是这么想的&#xff0c;结…

第五季1:AP模式USB-WIFI网卡移植与测试

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 内容总结 &#xff08;1&#xff09;HI3518EWIFI做AP&#xff0c;PC做STA&#xff0c;实现局域网内ortp视频传输。 &#xff08;2&#xff09;HI2518EWIFI做STA&#xff0c;PC做STA&#xff0c;外部…

免费社交类图标集

免费下载 这是一套免费社交类型的图标集&#xff0c;包含35种不同内容的图标。包括当前最热的Instagram&#xff0c;Evernatoe等。和往常推荐的一样&#xff0c;PSD文件可自行调整大小,50*50像素。它们可以被用在商业项目上&#xff0c;如果你也喜欢相关类型的图标&#xff0c;…

如何把图片嵌到html中,自给自足,轻松将图片图片内嵌到HTML

自给自足&#xff0c;轻松将图片图片内嵌到HTML1.为什么要将图片内嵌到HTML&#xff1f;针对于这个问题&#xff0c;我们有如下几种答案1)能减少并发请求&#xff0c;适合且合理的使用&#xff0c;能提高网站的访问速度2)便于分享&#xff0c;完全可以将需要的图片&#xff0c;…

第五季2:STA模式USB-WIFI网卡移植与测试

以下内容源于朱有鹏课程&#xff0c;如有侵权&#xff0c;请告知删除。 参考博客 hisi3518ev200移植MT7601_fsczp的博客-CSDN博客 wpa_supplicant移植与使用_andylauren的博客-CSDN博客 Linux wpa_cli 调试方法_weixin_34168700的博客-CSDN博客 12 海思Hi3518E移植WIFI驱动(ST…

关于ping命令的工作原理

2019独角兽企业重金招聘Python工程师标准>>> 当我们在用ping命令ping地址的时候会向target主机发送一个ICMP协议中的echo包&#xff0c;如果对方living&#xff08;活动状态&#xff09;。 则会返回一个echo包。 TTL的值&#xff1a;这个值对我们有什么用&#xff0…

SPOJ-OPTM Optimal Marks ★★(按位建图 最小割)

【题意】给出一个无向图&#xff0c;每个点有一个标号mark[i]&#xff0c;不同点可能有相同的标号。对于一条边(u, v)&#xff0c;它的权值定义为mark[u] xor mark[v]。现在一些点的标号已定&#xff0c;请决定剩下点的标号&#xff0c;使得总的边权和最小。&#xff08;0 <…