自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陌上烟雨遥的博客

专注嵌入式linux开发,QT/Embedded开发,打造物联网平台

  • 博客(112)
  • 收藏
  • 关注

原创 H266/VCC原理标准和实现

内容简介:系统全面介绍了新一代通用的视频编码标准VCC/H.266,讲解了编码原理及实现方法,并对相应标准语法语义进行模块化解读...

2023-05-08 07:25:11 278 1

原创 learnOpenGl

总结learnOpenGl 例程

2022-12-05 16:33:01 433

原创 openGl(五)实操

1 如何绘制一个三角形?2 如何用一个VAO/VBO绘制两个三角形?3 如何用两个VAO/VBO绘制两个三角形?4 如何用两个着色器会议两个三角形?

2022-11-24 08:49:28 354

原创 openGl(四) 高级光照

1 Blinn-Phone 与 冯氏光照模型有什么区别?答:在冯氏光照模型中观察向量和反射向量夹角大于90度点积为负数,镜面分量为0,高光区域会出现明显断层。Blinn-phone光照模型唯一不同就是取得是观察向量和反射向量之间的半程向量,它不会大于90度。2 Gamma 校正作用及如何使用?答:电压与亮度不会是一条直线,通过乘一个gamma值校正成直线。使用法一:glEnable(GL_FRAMRBUFFER_SRBG);开启openGl自动校正;使用法二:在着色器中乘这个gamma值。

2022-10-28 07:38:56 499

原创 openGl高级(三)

1 Assimp 模型加载库作用?答:在日常生活中有很多复杂的模型比如火车房屋,如果一一定义它们得顶点将很困难。Assimp能对每一种模型格式进行导入。2 openGl如何应用Assimp模型加载库?答:step 1:include Assimp头文件,通过loadModel()加载模型库,将得到一个scene; step 2:定义在上openGl Mesh,来接收scene里面的数据。step 3:根据mesh里面的数据来渲染。

2022-10-21 08:29:51 454

原创 openGl 光照(二)

1 为什么小草是绿的,物体的颜色是怎么出来的?答:一个物体的颜色是由它反射得颜色决定的,小草吸收太阳光除绿色以外的颜色,并将绿色反射出来,所以看到是绿色的。假如用单一蓝光照射,那会是黑色。2 如何创建一个光照场景?答:再新建一个光照着色器就行了,将光源颜色和对象颜色作为输入变量传至光照着色器计算出输出变量。

2022-10-19 07:49:56 238

原创 openGl 入门(一)

以问答的形式记录openGl 知识点

2022-10-16 09:52:52 2372

原创 opengl复盘

openGl 基础操作1 创建一个窗口?2 创建并编译着色器?3 通过缓冲对象或者uniform发送顶点数据?4 绘制物体?5 纹理使用?6 使用矩阵平移缩放旋转?7 创建3D通过摄像机移动?openGl名词解释openGl:一个定义函数布局和输出的图形API的正式规范。GLAD:一个加载拓展路,用来加载并设定所有openGl函数指针,从而让我们使用所有openGl函数。viewport: 我们需要渲染的窗口。图形管线:一个顶点在呈现为像素之前全部的经过。

2022-09-21 07:39:43 168

原创 leetcode题型分析《哈希表》

哈希表最大的优点就是高效,在哈希表中插入,删除或查找一个元素都只需要O(1)时间,常被用来优化时间效率。1 哈希表的设计1)如何快速一个元素在哈希表中位置答:可以使用一个数组2) 如何解决哈希冲突答:可以把存入数组同一位置的多个元素用链表存储。3)如何保证存入和读取删除一个元素时间是O(1)答:哈希表中元素数目与数组长度的比值超过一定阈值就对数组进行扩容。剑指offer II 30 插入,删除和随机访问都是O(1)的容器思路:用一数组存放插入得值;用一个hash ,key

2022-09-07 07:34:47 129

原创 leetcode题型分析《链表》

增加dummy节点,减少代码复杂程度,不用担心头节点为空的情况。剑指offer II 21 删除倒数第N个节点思路:定有两个指针,让指针一先走N步,然后两个指针一起前进,当指针一到达链表尾部时,指针二位于倒数第N个节点。剑指offer II 22 链表中环的入口节点思路:定义快慢指针,快指针一次走两步,慢指针一次一步,当快慢指针相遇时,将快指针重新指向头,然后一次一步,当快慢指针再次相遇时,即为环的入口点。剑指offer II 23 两个链表的第1个重合节点思路1:定义p1,p2指针

2022-09-05 08:18:36 245

原创 leetcode题型分析《字符串》

题型一般都与统计字符出现次数有关系,常用哈希表存储每个元素出现的次数,然后加双指针遍历。剑指offer II 14 字符串中的变位词变位词指个单词的字母和出现次数相同,只是出现顺序不同。step 1用数组模拟哈希表,数组下标0对应字母a,下标25对应字母z;step 2 首先扫描字符串s1,对应哈希表值也++,然后扫描字符串s2,对应哈希表得值--;如果哈希表所有的值都为0,就是变位词。step 3 判断长度为n的s2子串是不是s1的变位词,扫描字符串中的每一个字母,把该字母在哈希表中的

2022-09-02 07:28:57 133

原创 leetcode题型分析《数组》

1 双指针使用两个相同反向或者相反方向的指针扫描数组从而达到解题的目的。相反方向指针经常用来求排序数组中的两数之和。相同方向指针经常用来求正数数组中子数组的和或者乘积。剑指offer II 6 排序数组中两个数组之和剑指offer II 7 数组中和为0的3个数字思路:要求三数之和,先求两数之和,固定变量i,求tagert - sum(j, k) = nums[i];如果i,j,k对应的和大于0,k向左移动,如果和小于0,j向右移动。............

2022-08-26 07:43:31 137

原创 leetcode题型分析《整数》

剑指offer II 1整数除法思路:如果被除数最多大于除数*2^k倍,那么将被除数减去除数的2^k倍,然后将剩余的被除数重复之前的步骤。每次除数翻倍,时间复杂度为O(log n)。step 1:如果dividend为整数最大值,被除数为-1返回INT_MAX;step 2: 定义negative = 2; 负负得正,当negative = 1时,则取相反符号。step 3: 每次减去被除数最多大于除数*2^k,并累加result。

2022-08-25 07:24:24 90

原创 leetcode题型分析《图》

图1)图的搜索广度优先搜索和深度优先搜索剑指offer II 105:最大岛屿面积step1 找出图的节点和边,将为1的岛屿视为图的节点,上下左右相邻格子为1的节点之间有条边。step 2 逐一扫描每一个节点,当遇到节点为1,且不在已知岛屿表明到达一个新的岛屿并重新计算岛屿面积。定义一个visited二维数组,存到被访问过的节点。step 3比较所有岛屿面积,求出面积最大那个。广度优先搜索具体实现:定义一个queue,首先将起始节点加入队列中,然后取出队列中节点并访问其相邻节点,

2022-08-22 07:32:20 328

原创 leetcode题型分析

1) 前缀和1 应用场景: 需频繁的对某一区间进行求和2 算法思想:用prevSum[i + 1] 记录nums[0...i]之和,要求nums[i..j] 之间的和只需 prevSum[j+1] - prevSum[i]就好。3 表达式:prevSum[i+1] = nums[0] + nums[1] + ... + nums[i]; nums[i..j] = prevSum[j+1] - prevSum[i];4 例子: 303. 区域和检索 - 数组不可变(中等) 304. ⼆维区域和检

2022-03-12 11:30:33 1786

原创 leetcode数组

1 两数之和:利用unordered_map<>节点的值和下标,当diff = target - nums[i];如果diff存在于map中,则{i,map(diff)} 则为结果。15 三数之和,18 四数之和:可以转化为通用nSum,nSum = num(i) + (n-1)Sum;26 删除有序数组中重复项: 遍历法,将nums重新排一次。定义一个变量i,当nums[i] != nums[j],nums[i] = nums[j];最后返回i+1;31下一个排列:34 在排序

2022-03-11 08:09:16 103

原创 leetcode 树

1 求树的高度:转化为求以root为根的左右子树最大高度加一就是树的高度。1 + max(treeHeight(root->left), treeHeight(root->right));110 平衡树:先求左右子树高度,相减就能得出结果。​​​​​https://leetcode-cn.com/problems/balanced-binary-tree/solution/ping-heng-shu-qiu-shu-de-gao-du-jing-dia-1ab6/​​​​​​​​​​​​

2022-03-04 08:00:59 242

原创 leetcode动态规划

动态归化:应用场景:一旦涉及子序列和最值一般用动归。解题步骤:确定base case,确定状态转移方程。dp数组定义的两种形式:一维dp(单串字符),二维dp(二串字符)。300 最长递增子序列https://leetcode-cn.com/problems/longest-increasing-subsequence/solution/zui-chang-di-zeng-zi-xu-lie-dong-tai-gui-e4p0/定义:dp[i]是nums[0...i]最长递增的个数。step

2022-02-28 07:53:36 133

原创 leetcode 算法小技巧

1 备忘录可以用一维数组或者哈希表充当备忘录。int fib(int N) { // 备忘录全初始化为 0 int[] memo = new int[N + 1]; // 进行带备忘录的递归 return helper(memo, N);}int helper(int[] memo, int n) { // base case if (n == 0 || n == 1) return n; // 已经计算过,不用再计算了 if

2022-02-27 14:57:12 344

原创 leetcode BFS框架

BFS框架queue<item> myQueue;while (!queue.empty()){ sz = queue.size(); for (int i = 0; i < sz; i++) { myQueue.front(), myQueue.pop(); ....... if (condition) { myQueue.push(); } ....... }}102 二叉树的层序遍历c

2022-02-05 17:23:40 325

原创 leetcode DFS专题

1 DFS 框架result = []void backtrack(路径,选择列表) { if (满足条件) { result.add(路劲); return; } for 选择 in 选择列表 做选择 backtrack(路径,选择列表); 撤销选择}...

2022-02-05 10:55:58 183

原创 八股文笔记

1 死锁产生场景?答:死锁产生四个必要条件:互斥,占有且等待,不可强占,环路等待。工作中遇到场景:1 多把锁上锁顺序构成环路等待,2 遇到while()死循环,3 callback函数未返回。2 vector底层实现?答:它是连续线性动态空间,有三个迭代器构成,一个指向头,一个指向尾,还有个指向目前可用的空间尾。当申请空间不足时,它会去其他地方申请一块是原来两倍的buff,并把当前buff也拷贝过去。3 STL空间配置器?答:二级配置器。当申请内存小于128bytes,去第二级配置器 memory

2022-01-11 07:50:18 237

原创 leetcode 容器使用

刷题笔记

2022-01-09 16:08:09 162

原创 NuPlayer

NuPlayer 安卓原生的Player , 用于替代Awesomeplayer ;1 结构关系图MediaPlayerFactory 通过工厂模式创建AwesomePlayer , NuPlayer,其他Player.问:具体创建哪个Player 如何选择?答:通过打分机制,选择得分最高的。MediaPlayerService::Client::setDataSource()>MediaPlayerFactory::getPlayerType()>>GET.

2021-09-20 15:08:09 471

原创 C++11 新特性

在指定C++98 时, C99 还没发布,因此关于C99 很多特性都没在C++98 中包含,在制定定C++11 时将很多C99 都包含进来了。 如下是在C++98 没有的:相比于C++98, C++11 新增的项 作用 四个宏:__STDC_HOSTED__, __STDC__,__STDC_VERSION__,__STDC_ISO_10646__ 作用分别为:是否为包含标准C库,编译器是否和C标准一致,C编译器版本,某个版本的ISO/IEC 10646标准 __FU...

2021-09-11 16:22:45 120

原创 FFMPEG之H.264视频解码

一 概括FFMPEG 的libavcodec完成音视频编码或解码,H.264解码主要由H264.c实现,H.264.c 往下调用X264 实现编解码功能,H.264解码过程包含初始化/解码/关闭三个部分。解码原理为: 将NAL 数据位流输入到H.264解码器中,熵解码模块解码后输出量化系数X;系数经过反量化和反变化得到残差数据R;解码器使用从码流中解析的头信息生成预测块Pred,然后把Pred与残差R求和得到数据块DF;每个块df通过去除块效应滤波得到解码图像的重建块F。...

2021-07-25 12:02:04 2970

原创 H264视频编解码

一 编解码基础问:为什么要进行编解码?答:如果不对视频进行编解码的话,数据量太大了,存储,IO速度将压力倍增。一个4K,24FPS,1小时的数据量为:3840 * 2160 * 3 * 3600 * 25= 2085.5 G, 播放一个4K网络视频,下载速度将要579M/S。经过H264编码后,数据将缩小40~100 倍, 而新一代编码算法H265 ,压缩率甚至高达200.问:编码的本质是什么?答:去冗余。就时间上来说,视频前一帧后一帧有很强的相关性,假设对后一帧只保留变化信息,数据量是不是

2021-07-18 10:48:19 1279

原创 VideoView分析

前言videoView 它是一个用于视频播放的类,对MediaPlayer, SurfaceView 进行再封装,由此开发者在安卓上播放视频更加简单。VideoView 使用及方法setVideoPath();start(); //只需简单的call 这两支API 及可完成视频的起播,第一支指定要播放的文件,第二支播放videoView 方法如下:int getCurrentPosition():获取当前播放的位置。int getDuration():获取当前播放视频的总长度。

2021-07-17 14:46:16 421 1

原创 常见的几种算法

1 二分查找前提:给定数据都是有序排放的。思想:从中间猜,每次都排除数据的一半。比如:1,2,3....,100 数组. 依次猜的数为:50,75,88,94,97,99,100。根据如下程序,最极端情况才需要猜测7次,那二分查找最大的步数是公式是什么呢?step = log2nint binary_search(int search){ int low =0; int high = strlen(list) -1; int middle = (low .

2021-07-03 17:36:04 1869

原创 Android Audio系统

1 简述Audio 是Android 一个重要组成部分, 它主要包括三个方面:1 Audio Recorder和Audio Track:.

2021-06-20 16:45:33 541 2

原创 媒体文件解析

1 ASF格式简介ASF:Advance Streaming Format , 微软公司开发, 优势体积小适合网络传输,组成单元 ASF Object, 由 Header Object , Data Object , Index Object 组成.2 ASF 文件构成 ASF 文件构成如下图所示:其基本组成单元是ASF Object, 其格式如下:字段 字节 解释 Object GUID 16 GUID代表Object 的类型 Object Si..

2021-05-16 15:31:19 251

原创 ffmpeg 之 dash

1 简介 在dash 协议出现以前, 各家公司都开发自己的私有流媒体协议,如微软的SS, 苹果的HLS,Adobe 公司的HDS, 3GPP组织的AHS。这给客户端开发者带来了很大的困扰,后由MPEG 组织牵头,参考前几家公司的流媒体协议,共同制定DASH 协议,也称MPEG-DASH,协议标准号为:ISO/IEC23009, 标准共计八部分,其中媒体呈现(MPD)是最重要的一部分,占据正文的70% 以上。关于DASH 协议的演进历史如下图所示。 dash 协议一经推出,就被很多公司接入,...

2021-03-14 14:44:43 2751 1

原创 ffmpeg 之 http 分析 二

1 前言 本文我们学习关于HTTP 是如何在FFMPEG 中实现的,关于HTTP 协议部分请参考《ffmpeg 之 http 分析 一》, 只有熟悉了http 协议部分,我们在阅读http 源码时才能有的放矢,不至于迷失方向。 和其他demuxer 一样, 我们从分析其给外界开出的API 入手。const URLProtocol ff_http_protocol = { .name = "http", .url_open2 = h.

2021-02-28 15:24:20 1384

原创 ffmpeg 之 http 分析 一

一 协议简介 http(超文本传输协议)它是一个简单的请求响应协议,工作在tcp 之上,请求响应信息是ASCII 编码,消息内容是则具有一个类似MIME的格式。两台计算机之间使用HTTP通信,必定一个是客户端,一个是服务端。用于HTTP协议交互的信息统称为报文,请求端的HTTP报文叫做请求报文, 响应端的报文叫做响应报文。二 请求报文请求报文格式为:请求行 + 请求头部 + 空行+ 报文主体。第一部分:请求行, 方法 + 路径 + 版本号第二部分:请求头部,紧接着请求行,用来说明服...

2021-02-27 17:24:37 1679

原创 ffmpeg 之 RTSP 二

一 前言 在《ffmpeg 之 RTSP 一》主要讲解关于RTSP 协议部分, 本文主要讲解关于RTSP 在 ffmpeg 中是如何实现的, 相关代码见libavformat/rtspdec.c , libavformat/rtsp.c.还是从如下几个函数入手:AVInputFormat ff_rtsp_demuxer = { .name = "rtsp", .long_name = NULL_IF_CONFIG_SMALL("RTSP inpu.

2021-02-06 15:13:28 850 1

原创 ffmpeg 之 RTSP 一

一 前沿 打算花两篇文章来写RTSP ,第一篇介绍RTSP 协议,第二篇介绍RTSP 是如何在FFMPEG 中实现的。RTSP 是早期的流媒体协议,协议由RealNetworks,NetScape和哥伦比亚大学合作开发,并由IETF标准化(RFC2326),现在常用于安防摄像头监控。我们在播放rtsp 连接,并开启wireshark 抓取其网络包是发现,其中不但有rtsp 包,还有大量的rtp, rtcp 包。 这是 怎么回事?ffplay.exe -i rtsp://wowzaec2dem.

2021-01-31 16:28:46 11934 1

原创 FFMPEG 之 RTMP 二

一 简介上接《FFMPEG 之 RTMP 一》,讲解关于RTMP 协议相关的知识。本文讲解在FFMPEG 中是如何对RTMP 协议进行封装的,相关代码位于rtmproto.c 中,在rtmproto.c 中,它封装了RTMP 协议,相比与librtmp.c 要复杂很多, 前者是对TCP 协议的封装, 后者乃是直接对librtmp.so 的封装。如下函数乃是开给使用者的API, 我们将以此为切入点,对rtmproto.c 进行分析。const URLProtocol ff_##flavo...

2021-01-24 16:47:46 1011

原创 ffmpeg 之 RTMP 一

1 RTMP 介绍RTMP(Real Time MessagingControl) 是Adobe 公司flash 播放器和服务器之间的音视,视频以及数据传输的流媒体协议。该协议是个协议族,包括多种协议,包括最基本的RTMP 以及RTMPE,RTMPT,RTMPS 等多种变种。RTMP:工作在TCP 上, 使用端口号为1935;RTMPE:在RTMP 上增加了加密功能。RTMPT:: 工作在HTTP 上...

2021-01-24 16:00:57 3048 1

原创 ffmpeg 之 hls

前言 与其他博客不同,本文不是讲解HLS 协议本身,而是讲解在FFMPEG 中是如何解析HLS的,当然FFMPEG 也是按照HLS 协议去封装/解析 HLS 流的,因此读完本文不但能了解HLS 协议本身,还能看到HLS 是如何落地的。1 综述HLS(Http Live Streaming )是有苹果公司基于HTTP 传输的协议,目的解决防火墙屏蔽问题,如RTMP 不是走HTTP,容易被防火墙阻难。我们首先来看一个简单的m3u8 文件:#EXTM3U //固定格式,首行开头必须是#E..

2021-01-17 16:09:29 4246 1

原创 FFMPEG 之 msrledec.c

1 RLE 简介RLE(Run Length Encoding) 行程长度编码,属于熵编码,是最简单的图像压缩方法之一,比如视频msrle,tscc 以及bmp 格式 都是用的RLE 编码。 在FFMPEG 中msrledec.c 就是描述rle 格式的解码过程。RLE编码的原理比较简单,即在被压缩文件中寻找连续重复的数值,以重复次数和重复数值自身两个值取代文件中的连续值,重复次数称为行程长度。例如,若有一串字符信息aaaaabbbbcccddeefffaa,经RLE编码处理可表示为5a4b3c2.

2021-01-03 15:30:58 320

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除