自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (1)
  • 收藏
  • 关注

原创 在商汤遇到个职场垃圾后,我离职了...

2020年9月初,我从商汤离职。这次离职对我影响还挺大的,所以离职后我一直在反思。2018年的时候,AI还相当火热,我也很看好这一行业,我觉得AI可以作为我未来十年的事业。所以当我拿到商汤offer时,薪资虽然低于我的预期,但我也很乐意地接受了。入职后,因为有信念的支撑,我在工作中也比较积极,主动承担了项目中不少工作,也逐渐得到领导的信任。同一项目中有个年龄大、职级高的开发同事A,他技术能力不咋样,人品还差,部门内有多人和他发生过冲突。在这个项目中,我和他有工作交集,不可避免的会出现推诿扯皮,刚开始我还

2021-04-10 15:50:00 7317 1

原创 36岁程序员,被老板赏识,被同事信任,工作稳定,薪资OK,没有被裁员,我却开始做自媒体

36岁程序员,被老板赏识,被同事信任,工作稳定,薪资OK,没有被裁员,我却开始做自媒体

2024-04-12 15:46:12 233

原创 36岁程序员,10年前错过了阿里,我一点都不后悔

36岁程序员,10年前错过了阿里巴巴,我一点也不后悔

2024-04-12 14:55:58 300

原创 你不知道的 malloc 内幕:malloc 真的会分配内存吗

malloc 并不会真正的申请物理内存,只有在第一次使用时才会由page fault 触发内存申请

2023-08-22 20:21:01 547 1

原创 Window下编译ffmpeg

window下编译ffmpeg

2023-07-18 11:08:07 1019

原创 选择与谁同行比要去的远方更重要---2021年的一些职场感悟

2021年的职场感悟

2022-01-06 14:52:00 5318 4

原创 VSCode离线安装Verilog插件

VSCode离线安装Verilog插件下载插件安装下载插件1.进入vscode插件网站,2.搜索verilog,找到verilog-HDL3.进入插件网址,选择下载插件离线安装包,以vsix扩展名结尾安装进入vscode安装路径下的bin文件夹, bin 目录下右键点击在此处打开命令窗口,输入以下命令,最后面的参数换成你下载的插件离线安装包的名字即可:code --install-extension xxxxx.vsix看到如下提示即意味着安装成功,就可以打开 VSCode 进行查看了

2021-10-09 16:24:23 1810

原创 H264/AVC-编码方式:帧、场以及宏块帧场自适应(MBAFF)

本文主要介绍H264编码方式:帧、场、帧场自适应

2021-08-05 17:59:05 2046

原创 VisualStudio: warning C4819的解决办法

VS项目中经常会遇到这样的warning:warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss。这个警告提示就是和文件中 Unicode 字符有关,具体在代码哪行也不好找。解决方法如下:打开出现 warning 的文件,Ctrl+A全选,

2021-07-31 10:18:46 1193 1

原创 H264编码-码率控制原理以及JM代码分析

码率控制的主要目的是控制每一帧图像编码输出的比特数,并在总比特数一定的约束条件下使图像失真最小。当然,由于视频图像质量及其编码复杂性,码率控制的目标并不是单一的。常见的控制目标包括:提高输出码率控制精度使其最大程度的接近目标码率;提高编码后输出比特流的峰值信噪比;减少码率波动;提高编码速度等。码率控制是一个多约束条件、多目标的优化问题。码率控制涉及视频质量和信道带宽的折衷。减少码率会牺牲质量,质量提高就会增加码率。常用的码率调节手段包括:调节编码帧率。当码率高于信道时,通过丢帧来降低码率;当码率低于信

2021-07-12 21:02:12 2289

原创 H264编码- 码率控制 RQ 模型参数推导过程以及JM代码分析

本文主要介绍H264码率控制过程中,RQ模型参数更新原理以及推导过程,并结合JM19.0代码分析其功能实现

2021-07-12 20:58:52 1663

原创 LATEX数学公式

LaTeX是一种文字处理软件也是一门计算机标记语言。它可以很方便的编写数学公式。本文主要介绍一些常用的Latex数学公式语法。简单运算拉丁字母、阿拉伯数字和 ±*/= 运算符均可以直接输入获得。命令\cdot表示乘法的圆点,命令\neq表示不等号,命令\equiv表示恒等于,命令\bmod表示取模$$(x\bmod16)+2-3*4/5-7/y + z\cdot r$$效果:(x mod 16)+2−3∗4/5−7/y+z⋅r(x\bmod16)+2-3*4/5-7/y + z\cdot r(x

2021-07-09 19:09:48 6866

转载 [转载]宋宝华:世上最好的共享内存(Linux共享内存最透彻的一篇)

[原文地址](https://blog.csdn.net/21cnbao/article/details/103470878)共享单车、共享充电宝、共享雨伞,世间的共享有千万种,而我独爱共享内存。 早期的共享内存,着重于强调把同一片内存,map到多个进程的虚拟地址空间(在相应进程找到一个VMA区域),以便于CPU可以在各个进程访问到这片内存。 现阶段广泛应用于多媒体、Graphics领域的共享内存...

2021-07-02 14:19:48 782

原创 H264/AVC-基于上下文自适应可变长编码CAVLC原理以及代码实现

1. 基本原理CAVLC属于熵编码。熵编码是一种无损压缩编码方法,它生成的码流可以经解码无失真地恢复出原数据。熵编码是建立在随机过程的统计特性基础上的,因此它主要为了降低数据的统计冗余。在 H.264 的 CAVLC(基于上下文自适应的可变长编码)相比于huffman编码,它可以通过根据已编码句法元素的情况自适应调整当前编码中使用的码表,从而取得了极高的压缩比。下面举例说明CAVLC的基于上下文特性。下图是色度分量DC系数解析要用到的码表,其中tzVlcIndex指的是非零DC系数个数(色度DC系数

2021-07-01 14:48:26 1471 2

原创 一文搞懂H264量化原理以及计算过程

1.概述量化是使数据比特率下降的有效工具。量化过程的输入值动态范围很大,需要较多的比特才能表示一个数值,量化后的输出则只需要较小比特表示。量化是不可逆过程,处理过程中有信息丢失,存在量化误差。H.264采用标量量化技术,它将每个图像样点编码映射成较小的数值。一般标量量化器的原理为:FQ=round(y/QP)FQ=round(y/QP)FQ=round(y/QP)其中,y 为输入样本点编码,QP 为量化步长,FQ 为 y 的量化值,round()为取整函数(其输出为与输入实数最近的整数)在量化和

2021-06-30 14:36:58 5640 2

原创 ffmpeg常用命令

ffmpeg功能强大,是多媒体领域的标杆软件,支持多种音视频处理功能。本文主要介绍ffmpeg一些常用命令。ffmpeg可以自己通过源码编译,或在官网上下载对应平台的预编译的可执行文件。下载地址转换文件格式ffmpeg支持不同封装格式文件的转换,如从mp4转到 ts:ffmpeg -i /files/v/small_bunny_1080p_30fps.mp4 /files/v/small_bunny_1080p_30fps.ts从 mp4 转换到 ts 文件并显示指定音视频编码格式(使

2021-06-26 11:49:23 1046

原创 VVC/H266资源汇总(提案、VTM代码等)

HHI,包括VTM代码和标准文档https://jvet.hhi.fraunhofer.de/VVC JVET提案https://jvet-experts.org/VVC JVET会议记录和测试验证码流https://www.itu.int/wftp3/av-arch/jvet-site/

2021-06-22 13:53:44 1064

原创 android平台malloc_debug使用方法(含测试代码)

1.libc_malloc_debug.so是android bionic的debug库,库或可执行文件链接该so就可以测试内存泄露或内存越界 源码在android sdk以下路径: android/bionic/libc/malloc_debug2.在程序退出时,使用debug_dump_heap 保存堆栈信息,用于最后生成内存报告3.编译并把库和可执行文件推到android机器 ,使用ndk编译需要 -g 参数,否则在生成report时无法定位函数位置并把库和可执行文件推到手机,执行 adb sh

2021-06-10 17:27:03 3368

原创 AVC/H264-帧间预测

帧间预测是H264标准中的一种基于时间冗余的压缩方法。因为视频流相邻帧存在时间相关性,相邻帧的视频内容差异不大,因此可以通过前后相邻帧的数据预测当前宏块内容,从而达到压缩数据目的。帧间预测处理的基本单元是宏块内的最小子分块,比如一个宏块如果分为16个P_4x4块,则需要对每个4x4块分别做帧间预测。帧间预测的输入为:宏块分块索引mbPartIdx、子宏块分块索引subMbPartIdx,这两个变量主要用于确定当前处理分块在图像的位置;当前分块的大小,包括亮度分量和色度分量(partWidth、par

2021-06-04 13:53:57 1794

原创 H264/AVC-帧内预测相邻像素推导过程

帧内预测过程会以相邻块的像素值做参考,来预测当前块的像素值。以Intra_4x4为例,如下图所示,需要用到的13个相邻像素值,那么如何获取这13个像素值?本文要主要说明如何获取帧内预测所用到的相邻像素。对应参考文档6.4.5-6.4.9小节内容。获取相邻像素的流程如下:找到当前块(可以为4x4、8x8、16x16大小)的左、上、右上、左上相邻块找到左、上、右上、左上相邻块所在宏块根据当前宏块以及相邻块所在宏块确定相邻像素在此之前需要先知道宏块地址是否可用,如果宏块地址不可用,则在该宏块的相

2021-05-29 16:29:38 1291 1

原创 H264/AVC-slice data解析

slice header解析slice data主要存放了该slice所有宏块信息以及残差数据。slice data语法结构slice data解析流程如下:获取当前宏块位置CurMbAddr;如果当前slice不是I slice,则存在skip 宏块。因此需要根据熵编码类型解析skip宏块标记。1)对于cavlc,mb_skip_run表示当前宏块与上一宏块位置的差值,如果差值大于1,则梁洪快间存在skip宏块;2)对于cabac,每一个宏块都存在一个mb_skip_flag表示该宏块是

2021-05-28 09:39:40 1575

原创 H264/AVC-slice header解析

一个slice语法由slice header和slice data构成,slice header表示该slice的基本语法,slice data则存放了该slice中所有宏块的数据。slice header语法结构first_mb_in_slice:表示该slice的第一个宏块在图像中的位置。一个图像可能分为多个slice单独编码,因此可以通过first_mb_in_slice确定该slice是否为一个完整的图像。1)如果MbaffFrameFlag 等于 0, 也就是该slice不是mbaff,

2021-05-27 10:25:24 2088

原创 H264/AVC-PPS(图像参数集)解析

什么是PPSpps(picture parameter set)图像参数集,是指码流中多个图像共用的参数信息。为减少每一帧编码bit,把一定范围内连续图像的相同参数提取出来,单独编码为pps,从而避免每一个slice都重复编码这些参数。如下图所示,蓝色部分为pps数据。PPS的语法结构pic_parameter_set_id当前PPS的唯一id,取值范围为0-255,也就是说一个码流中最多存在256个PPS。slice header中有一个pps_id用于指明该slice使用哪个pps中的参

2021-05-26 17:00:57 1357

原创 H264/AVC-SPS(序列参数集)解析

1.什么是SPS一个H264码流序列中,每个slice都会有各自的编码参数,其中有些参数在整个码流序列中不会改变,为节省码流,把这类参数提取出来放入SPS单独编码。这些参数就是SPS。SPS是 nalu 单元的一种,它的nalu type是7。以一个h264码流为例,蓝色数据就是SPS。2.SPS的语法结构SPS语法结构如下:profile_idc/level_idc:h264通过 profile_idc 和 level_idc 来确定该码流支持哪些特性。我们的测试码流中 profile

2021-05-14 14:47:03 1935

原创 H264/AVC-去块滤波(loop-filter)

H264视频编码标准中,在解码器反变换量化后会出现块效应。其产生的原因有:量化过程是有损的,会引入误差。变换系数的量化过程相对粗糙,因而反量化过程恢复的变换系数带有误差,会造成图像块边界上视觉不连续;运动补偿预测。运动补偿是从不同帧的不同位置上内插采样点数据复制而来。因为运动补偿块的匹配不可能绝对准确,所以会在边界上产生数据不连续。因此,需要一个去块滤波器改善画面质量。1. 边缘滤波顺序对于整个解码图像,按照宏块地址增加的顺序为所有重建后的宏块执行滤波过程。滤波过程对宏块的亮度块和色度块分别进

2021-05-14 11:18:34 1346

原创 H264/AVC-帧间预测1(skip和direct预测模式的mv和ref_idx的推导)

在宏块类型里介绍了I、P、B slice中的宏块类型解析,其中P_Skip、B_Skip、B_Direct这几种宏块类型并没有在码流中编码宏块运动矢量和参考帧索引信息。本文主要介绍这几种情况下,mv和ref_idx推导过程。mv预测在帧间预测编码模式下,每个分块都有一个或两个mv需要编码。当采用小尺寸编码时,一个宏块内需要编码的mv也越多,所需比特额越多。同时,mv有两个值并且以1/4像素为单位,这也就意味着mv的数值还不小,因此有必要对mv进行压缩。H264标准利用临近块mv的相关性对当前块mv进行

2021-05-13 17:33:31 3156

原创 H264/AVC学习框架总结以及链接汇总

整理了这段时间学习的H264标准,标准种的知识点比较多,有些内容前段时间学习了,过段时间又忘了,还是要做好笔记。接下来的时间会逐渐完善学习总结文档。码流解析这部分主要分析H264码流结构以及语法元素码流结构宏块类型解析NALU解析解码流程这部分主要分析H264解码流程中的各个模块实现帧内预测帧间预测(未完成)整数DCT变换参考帧管理解码参考图像标记POC计算参考帧队列重排...

2021-05-06 15:04:45 697 3

原创 H264/AVC-帧内预测

I宏块使用帧内预测编码压缩数据,根据相邻宏块数据恢复当前宏块信息。值得注意的一点是,帧内预测所参考的相邻宏块数据是deblocking之前的像素值,因为上一宏块的deblocking依赖当前宏块像素值,但当前宏块数据还未重建。1.帧内预测类型帧内预测包含4种类型:亮度4x4块Intra_4x4预测方式亮度8x8块Intra_8x8预测方式亮度16x16宏块Intra_16x16预测方式色度8x8块预测方式。帧内预测的输入为预测模式和相邻块像素值,输出为当前块的预测值。2. 亮度Intr

2021-05-04 12:05:34 2110

原创 H264/AVC-宏块类型

基本概念H264中常见的几种宏块有I、P、B宏块,宏块类型由宏块头中的mb_type确定。其中I slice中只允许存在I宏块,P slice允许存在P宏块和I宏块,B slice允许存在I宏块和B宏块。为节省编码码流,mb_type包含了多个信息,比如该宏块的划分方式,子块预测方式,cbp等。1.1 宏块划分方式I宏块支持16x16、4个8x8块、16个4x4块划分方式;P宏块支持16x16、2个16x8块、2个8x16块、4个8x8块(8x8块还需要再次划分)B宏块支持16x16、2个1

2021-04-30 19:19:03 2416 2

原创 H264/AVC-NALU解析

简介NALU是H264码流的基本单元。它的起始码是0x000001或0x00000001,可以根据起始码查找NALU元素。如下图所示,H264中NALU由header和body两部分构成。NALU headerforbidden_zero_bit,必须为0nal_ref_idc, 如果nalu_type为slice,表示该slice是否用作参考nal_unit_type,表示nalu类型NALU类型定义如下,一般比较常见的几种类型是非IDR slice(type=1)、IDR(type=

2021-04-29 15:54:25 1029

原创 H264/AVC-基本概念和码流结构

1.基本概念1.1 sliceH264标准引入了slice概念,一帧图像可以分成几个slice分别进行编码。这样的好处是可以避免误差扩散。由于slice是单独编码,一幅图像前一个slice出错,不会影响到后一个slice。如下图所示,一个图像被分成两个slice。1.2 宏块H264标准规定slice需要分成16x16大小的块分别编码,这些数据块就是宏块(macroblock)。以YUV420数据为例,一个宏块包含16x16亮度数据块和2个8x8色度数据块。宏块按照数据编码方式可分为帧宏块和场

2021-04-29 14:30:45 1317

原创 H.264/AVC学习-解码参考图像标记

本文对应H.264标准文档8.2.5节从解码流程来看,解码完一帧图像后,需要对图像存储处理。存储参考帧的缓冲区称为解码图像缓冲区(DPB,decoded picture buffer)。如果当前图像被其他图像参考,还要对图像进行参考标记。当 nalu header中的语法元素nal_ref_idc不等于0,表示该nalu对应的图像是参考图像,此时需要对图像进行标记操作。标记过程按照slice header中dec_ref_pic_marking语法处理。参考图像标记的目的主要是,管理图像缓冲,对于不

2021-04-02 15:38:02 1133

原创 H.264/AVC学习-POC计算

POC(picture order counts)用来表示解码帧显示顺序,当码流中存在B帧时,解码顺序和显示顺序不一样,视频帧显示时需要根据POC重排顺序,否则会出现跳帧、画面不连贯。比如,对于IPBB这项顺序的视频序列,解码顺序为 I-P-B-B,但它的显示顺序为 I-B-B-P。1.基本概念对于H.264的码流,需要计算POC包括三种:coded frame(编码帧), coded field(编码场)和complementary field pair(互补参考场对),每种类型的POC都由 Top

2021-04-01 13:27:20 1842

原创 deflate算法总结

参考资料:1.gzip压缩系列2.1.deflate压缩Deflate是一种数据无损压缩算法,它广泛用于zip文件压缩以及png图片压缩。deflate结合了huffman编码和LZ77编码,流程如下:1.LZ77算法,利用相邻数据的相关性对原始数据压缩,该模块输入为原始数据,输出为literal、distance-length数据对;2.huffman编码,对LZ77的结果分别进行数据统计生成huffman表,再对数据进行huffman编码。该模块的输入为literal和distance-

2021-03-22 10:13:42 9221 1

原创 使用visual studio的dumpbin工具查看库的符号表

今天在一个项目中链接一个自己编译的第三方静态库zlib时,报错“unresolved external symbol _inflate”(无法解析的外部符号)。这个报错说明是在链接过程中出错,因此我想看下编译的zlib库是否有这个符号。linux可以通过readelf看库的符号表,visual studio自带的dumpbin工具也实现了类似功能,可以查看vs编译库的信息。使用步骤1.开始菜单栏找到 native tools command prompt2. 在命令行输入dumpbin.exe,可

2021-03-16 16:03:34 3516

原创 visual studio编译链接zlib库

最近在visual studio开发项目中要依赖zlib库,编译链接遇到了一些问题,记录下。VS版本:2015zlib编译zlib编译步骤:1.从 zlib官网下载zlib源码,我下载的是1.2.11版本;2.解压后,在文件夹路径 contrib/vstudio/vc14找到zlibvc.sln3.打开后编译,编译方式选择静态库方式;4.编译后,把lib库放入开发项目链接。在编译项目时报错找不到zlib的符号,使用VS自带的dumpbin工具查看编译出来zlib.lib库的符号表,是有

2021-03-11 20:47:36 1551

转载 转载:【压缩原理】 deflate 算法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/tuwenqi2013/article/details/103758292———————————————— 目录   1 概述 2 LZ77算法原理 2.1 压缩 2.2 解压缩 3 Huffman编码 3.1 构造霍夫曼树 4

2021-03-09 11:45:15 1089

原创 JPEG文件格式及其解码流程

jpeg是1992年发布的图片编码标准,20多年过去了,它在如今图片压缩领域仍然占据着重要地位。本文主要针对标准ISO/IEC 10918-1 分析jpeg文件结构以及解码流程。1.文件结构1.1 基本单元Jpeg文件由一个一个段来存储。段的一般结构为:前两个字节为段标识(第一个字节为0xff,第二个字节对于不同段,这个值是不同的),后面紧跟两个字节为该段的长度,该长度不包含段标识的两个字节。名称字节数数据说明段标识10xff每个段的开始标识段类型1段类型标

2021-02-26 11:22:03 3537

原创 基金训练营学习笔记4-指数基金

基金是所有基金品类中,最推荐大家投资的一种。什么是指数基金?指数基金,是属于股票基金的一个分类,是一种特殊的股票基金。普通的股票基金和指数基金的差别:普通的股票基金是主动管理型基金,而指数基金是被动管理型基金。主动管理型基金跟被动管理型基金最大的差别就在于:一个是要获得超越市场的收益,而另外一个是只求获得市场的平均收益。三个优点第一个优点,是长生不老。指数基金非常灵活,能够纳新除旧,有新陈代谢的能力。投资指数基金比投资一个公司的股票要安全的多。第二个优点,是长期上涨。只要国家有一个稳

2021-01-04 19:38:41 1202

原创 基金训练营学习笔记3-股票基金

在投资市场,风险和收益永远是成正比的,低风险的基金可以帮助我们打理短期资金或者完善资产配置。但是要想追寻更高一些的收益,我们就需要配置一些稍高风险的资产,比如股票基金。什么是股票基金?股票型基金,就是主要投资股票的基金。买股票基金,相当于让基金经理帮我们炒股。股票是高风险的投资品种,因此,股票基金在所有的基金类型中,风险最大,潜在收益也最高。虽然股票基金的风险要高于其他类型的基金,但其风险还是要小于普通小白直接买卖股票。如果缺少研究股票的耐心和专业,可以直接买股票基金,选择让基金经理帮你炒股。股票基

2021-01-04 19:19:50 861

H264标准Advanced_video_coding_for_generic_audiovisual_services_2019.6

H264标准白皮书Advanced_video_coding_for_generic_audiovisual_services(2019.6版本),全英文

2020-11-26

空空如也

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

TA关注的人

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