- 博客(23)
- 收藏
- 关注
原创 C++面试问题
指向未分配或已释放内存的指针。比如未初始化、delete后未指向空、保存了局部变量的地址申请的空间没有被释放,导致这些内存不能被重用。不断累积耗尽系统内存。堆上申请的空间没有释放循环引用缓存友好地代码指的是,更好利用缓存特性的代码,因为程序具有局部特性。空间局部:如果程序访问了某块内存地址,那么他将来可能访问邻近的内存地址时间局部:如果程序访问了某块内存地址,那么他将来可能还会访问这块内存地址函数内联是在编译期,将函数嵌入到调用位置,减少函数的调用,提高性能。
2024-07-13 14:05:45 725
原创 h264分析三(变换量化)
h264的dct变换采用的是整数变化,减少了浮点数运算的耗时和不同机器的差别。dct变换为了分离高频和低频信息,之后通过量化和熵编码进行数据压缩。通常来说dct变换是对4x4的子块进行,变化后低频信息集中在左上角。
2024-07-13 11:01:52 369
原创 h264分析二(帧内和帧间编码分析)
帧间预测是在其他已编码的图像中去寻找参考像素块,帧间编码有单参考(只在一帧已编码图像寻找参考像素块)和多参考(在多个已编码图像中寻找像素块),既可以向前参考也可以向后参考。方案一:对每一种预测模式的残差块的像素值求绝对值再求和,称为cost,然后取其中cost最小的预测模式为最优预测模式。在预测时,已编码像素值会重建像素,用来做待编码像素的参考像素。在H264中亮度块的宏块大小是16 x 16,亮度宏块还可以划分为更小的子块8 x 8或者4 x 4。先得到预测块,根据预测块得到残差块。
2024-06-26 15:14:34 766
原创 h264分析一(基本码流分析)
IDR帧也叫立即刷新帧。如果一个参考帧出现问题,后面所有的P帧和B帧都会出现问题,错误会不断累积,为了解决这个问题,H264规定IDR帧之后的帧不能参考IDR帧之前的帧。Slice是帧内部的概念,是为了并行编码设计的。可以将一帧图片划分为几个Slice,并且Slice之间相互独立、互不依赖、独立编码,这样就可以多线程并行对多个Slice进行编码,从而提升速度。但是也因为一帧内的几个Slice是相互独立的,帧内预测不能跨Slice进行,所以帧内编码会降低性能。
2024-06-26 15:12:36 1095
原创 Electron调用C++函数
它可以让开发者使用Web技术(HTML,CSS和JavaScript)来构建跨平台的桌面应用程序,如VSCode、Slack、Discord等知名应用程序都是使用Electron开发的。虽然Electron本身提供了很多API来与操作系统进行交互,但是在某些场景下,开发者可能需要使用更底层的系统API来实现某些高级功能。在这种情况下,开发者可以使用C++编写Node.js本地模块,然后在Electron中使用这些模块。在本文中,我们将详细介绍如何在Electron中使用C++ Node本地模块。
2024-06-17 15:05:16 1159 1
原创 使用Sparkle框架MacOS程序升级
Sparkle是一个非常简单且易用的macOS应用程序更新框架,目前众多知名macOS App都在使用。Sparkle的原理是根据提前配置好的xml文件地址,每次启动后解析xml,看看有没有比当前版本新的数据,有的话提示更新。xml文件可以存在任何可以访问xml元数据的服务器,包括 GitHub 仓库。
2024-06-13 17:24:55 1117
原创 ffmpeg常用命令解析
ffmpeg [第一个输入文件对应的解析参数] -i 第一个输入文件名 [第二个输入文件对应的解析参数 ] -i 第二个输入文件名 [如果有第三个文件输入] [-i] [如果有第三个文件] [第一个输出文件对应的参数] [第一个输出文件名] [第二个输出文件对应的参数] [第二个输出文件名] [第三个输出文件对应的参数] [第三个输出文件名]codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 //流的编码详细描述。
2022-12-23 15:20:07 1187 1
原创 C++面试一些问题记录
构造函数不能定义为虚函数。vptr指针构造完成才能确认指向,所以构造函数不能定义为虚函数 析构函数必须定义为虚函数。否则多态时无法析构父类方法指向被释放的内存指向没有权限的内存。
2022-12-23 15:06:52 120
原创 攻克视频技术学习
rgb三个颜色具有相关性,不方便做编码(R、G、B三张图像几乎完全一样,只是颜色不同,如果用来编码,三张图像同等重要,而且轮廓还差不多,但颜色又不同,因此不好编码),而YUV不同,Y是图像的大体轮廓,没有颜色信息,U、V是颜色信息,三张图像相互独立。在PPS中有一个全局基础的QP,且每一个Slice在这个基础QP的基础上做调整。相比于帧内预测,帧间预测的块的划分类别会多很多,宏块大小16x16,可以划分为16x8,8x16,8x8三种,其中8x8可以继续划分为8x4,4x8和4x4,这事亮度块的划分。
2022-12-23 15:05:34 2194
原创 SVC简单解释
SVC是指一个码流当中,可以分为好几层。比如三层第0层是最底层,可以独立进行编解码,不依赖第一层和第二层第一层编解码依赖于第0层,但是不依赖第二层第二层编解码需要依赖第0层和第一层并且,第0层质量最低,第0层加第一层次之,三层加在一起的时候质量最高。注意这里的质量不是直接指画面质量,而是帧率、分辨率的高低所代表的质量。
2022-12-23 15:01:24 2908
原创 FLV格式解析
FLV是一种常见的音视频封装,尤其在流媒体场景经常用到。FLV也是比较简单的封装,它是一个个tag组成。tag又分为视频tag、音频tag、script tag,分别用来存放视频数据、音频数据和MetaData数据。正在上传…重新上传取消总体格式如下图:正在上传…重新上传取消。
2022-12-23 14:57:32 1197
原创 MP4格式解析
MP4由一系列的box组成,每一个box存放了不同的数据,box里面还可以嵌套box。最外层主要有三个box,分别是ftyp box、moov box和mdat box。其中最重要最复杂的就是moov box了,里面存放了音视频的基本信息和每一个音视频数据的具体位置。
2022-12-23 14:49:35 449
原创 C++菜鸟入职篇2
学些SVN的使用1.从SVN上下载 :checkout 2.提交代码: 先下载最新代码check 提交自己代码commit3.图标介绍:绿色对号 刚下完的 红色叹号自己修改过的 黄色叹号是提交冲突的...
2018-12-20 19:11:18 217
原创 C++菜鸟入职篇1
在校期间学习了基本的C/C++语法 略懂STL 简单的了解过数据结构与算法 进程线程 TCP/UDP网络通信 一切都是为了找一份工作呀 为中华崛起而读书 这周进入职场面对未来一片茫然 请论坛各位大神指教进入公司正赶上一个项目开发 老版本更新为新版本 第一天看见了未来几个月要陪伴我的源代码 简直了 太多了 在校期间也没接触过这一个项目上万行的代码呀 一个库又一个库 一层接口封装另一层接口 茫然 ...
2018-12-19 20:14:47 579
原创 数据的逻辑结构和存储结构
数据的逻辑结构(1)集合 :结构中的数据元素除了同属一个集合外,数据元素之间没有其他关系。就像数学中的自然数集合集合中的元素都属于该集合除此之外没有其他关系。(2)线性结构:结构中的数据元素存在一种一对一的关系。(3)树状结构:结构中的数据元素是一对多的层次关系。(4)图结构:多对多。 ...
2018-07-16 16:13:26 1306
原创 递归
递归是一种解决问题的思想,不是一种具体的代码一个方法是递归方法的主要特征是:自己调用自己如果一个方法不断的调用自己,没有尽头,那么将导致“死递归”死递归会导致JVM内存中的方法栈内存区溢出:StackOverflowError递归方法的标准结构:一般的递归方法都有两个基本组成部分: 1.递归调用:就是一个方法自己调用自己的过程 2.递归出口:如果一个递归方法不断调用自己不退出,将会导致...
2018-07-16 16:00:41 307
原创 剑指offer习题第一章总结
习题一:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数答:首先要考虑数组是否为空等边界问题通过右上角的元素 可以排除一列或者只剩一列元素如果右上角的数字等于要查找的数字则查找结束 如果右上角数字大于这个个数则剔除右上角数字所在的列如果右上角数字小于...
2018-07-16 15:18:56 133
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人