- 博客(127)
- 资源 (21)
- 收藏
- 关注
原创 [AV1] AV1技术专栏(正在更新中)
这个专栏是我花了半年的时间阅读libav1,SVT-AV1以及dav1d的源码后摸索总结出来的AV1技能树,希望能帮助到你的AV1编解码器的学习。
2020-10-18 16:08:08 45027 19
原创 [AV1] interpolation
在AV1中,帧间预测的插值滤波一共定义了以下五种类型interpolation filter名称0EIGHTTAP_REGULAR1EIGHTTAP_SMOOTH2MULTITAP_SHARP3BILINEAR4switchabetypedef enum ATTRIBUTE_PACKED { EIGHTTAP_REGULAR, EIGHTTAP_SMOOTH, MULTITAP_SHARP, BILINEAR, // Enco
2022-01-04 16:43:28 909 1
原创 一段NEON代码
#include <iostream>#include <arm_neon.h> //需包含的头文件using namespace std;float sum_array(float *arr, int len){ if (NULL == arr || len < 1) { cout << "input error\n"; return 0; } int dim4 = len >>
2021-09-14 16:59:03 511
原创 STL学习笔记(16)常用STL算法
算法主要是由头文件#include <algorithm.h>组成。 其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等。常用遍历算法for_each/* 遍历算法 遍历容器元素 @param beg 开始迭代器 @param end 结束迭代器 @param _callback 函数回调或者函数对象 @return 函数对象 */for_each(iterator beg, iterator end, _callback)
2021-07-02 17:39:36 431
原创 STL学习笔记(15)函数对象适配器
函数适配器 bind1st bind2nd现在有这么个需求,在遍历容器的时候,希望将容器中的值全部加上 100 之后显示出来,怎么做?我们直接给函数对象绑定参数 编译阶段就会报错for_each(v.begin(), v.end(), bind2nd(myprint(),100));如果我们想使用绑定适配器,需要我们自己的函数对象继承 binary_function 或者 unary_function,根据我们函数对象是一元函数对象,还是二元函数对象来决定绑定哪个。class MyPrint :
2021-07-02 15:35:17 222
原创 STL学习笔记(14)内建函数对象
STL内建函数对象STL 内建了一些函数对象。分为:算数类函数对象,关系运算类函数对象,逻辑运算类仿函数。这些仿函数所产生的 对象,用法和一般函数完全相同,当然我们还可以产生无名的临时对象来履行函数功能。使用内建函数对象,需 要引入头文件 #include。6 个算数类函数对象,除了 negate 是一元运算,其他都是二元运算。template<class T> T plus<T>//加法仿函数 template<class T> T minus<T>
2021-07-02 14:43:12 104
原创 STL学习笔记(13)谓词
谓词谓词是指普通函数或重载的 operator()返回值是 bool 类型的函数对象(仿函数)。如果 operator 接受一个参数,那么叫做一元谓词,如果接受两个参数,那么叫做二元谓词,谓词可作为一个判断式。class GreaterThenFive{public: bool operator()(int num) { return num > 5; }}; //一元谓词void test01(){ vector<int> v; for (int
2021-07-02 14:34:39 97
原创 STL学习笔记(12)函数对象
函数对象重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象,也叫仿函数(functor),其实就是重载“()”操作符,使得类对象可以像函数那样调用。注意1.函数对象(仿函数)是一个类,不是一个函数。2.函数对象(仿函数)重载了”() ”操作符使得它可以像函数一样调用。函数对象分类:假定某个类有一个重载的 operator(),而且重载的 operator()要求获取一个参数,我们就将这个类称为“一元仿函数”(unary functor)
2021-07-02 14:29:12 129
原创 H.266 现状
H.266,即VVC,已于2020年6月完成标准化工作,其标准号为Rec. ITU-T H.266 and ISO/IEC 23090-3,标准将在2020年11月正式开始生效。H.266最显著的特点就是其相比起它前一代的标准,即ITU-T and ISO/IEC High Efficiency Video Coding (HEVC),标准号Rec. ITU-T H.265 and ISO/IEC 23008-2,有近50%的压缩性能的提升,而相比起更早的标准H.264/MPEG-4 AVC standar
2021-06-13 13:57:49 3005
原创 手把手教你搭建自己的 AV1 Analyzer
随着最近H.266标准的完成,其惊人的复杂度令人生畏,与此同时,新兴的AOM组织于2018年年中耗时3年完成的AV1标准吸引了不少业内人的眼球,不仅仅是其有竞争力的编码性能,还有其在流媒体方面的优异表现,最重要的是其免专利费(royalty-free)使用这一项就会吸引各大厂商跟进。以前学习ITU-T线的编解码标准的时候,边学习边会有使用到码流分析工具来协助我们理解码流内部的编码结构,比如H264的时候,我们有使用Vega H264 Analyzer,HEVC的时候,我们有使用Elecard stream
2021-04-13 15:27:34 2125 12
原创 STL学习笔记(11)常用容器 map/multimap
map/multimap 基本概念Map 的特性是,所有元素都会根据元素的键值自动排序。Map 所有的元素都是 pair,同时拥有实值和键值,pair 的 第一元素被视为键值,第二元素被视为实值,map 不允许两个元素有相同的键值。我们可以通过 map 的迭代器改变 map 的键值吗?答案是不行,因为 map 的键值关系到 map 元素的排列规则,任 意改变 map 键值将会严重破坏 map 组织。如果想要修改元素的实值,那么是可以的。Map 和 list 拥有相同的某些性质,当对它的容器元素进行新增
2021-04-11 12:40:53 133
原创 STL学习笔记(10)常用容器 pair
对组(pair)将一对值组合成一个值,这一对值可以具有不同的数据类型,两个值可以分别用 pair 的两个公有属性 first 和 second 访问。类模板:template <class T1, class T2> struct pair.如何创建对组?//第一种方法创建一个对组pair<string, int> pair1(string("name"), 20);cout << pair1.first << endl; //访问 pair 第一
2021-04-11 11:48:24 104
原创 STL学习笔记(9)常用容器 set/multiset
set/multiset 容器基本概念Set 的特性是:所有元素都会根据元素的键值自动被排序。Set 的元素不像 map 那样可以同时拥有实值和键值,set 的元素即是键值又是实值。Set 不允许两个元素有相同的键值。 我们可以通过 set 的迭代器改变 set 元素的值吗?不行,因为 set 元素值就是其键值,关系到 set 元素的排序规则。 如果任意改变 set 元素值,会严重破坏 set 组织。换句话说,set 的 iterator 是一种 const_iterator. set 拥有和 list
2021-04-11 11:40:08 141
原创 STL学习笔记(8)常用容器 list
list 容器基本概念链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相较于 vector 的连续线性空间,list 就显得负责许多,它的好处是每次插入或者删除一个元素,就是配置或者释放一个元素的空间。因此,list 对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元
2021-04-11 11:29:52 113
原创 STL学习笔记(7)常用容器 queue
queue 容器基本概念Queue 是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口,queue 容器允许从一端新增元素,从另 一端移除元素。queue 没有迭代器Queue 所有元素的进出都必须符合”先进先出”的条件,只有 queue 的顶端元素,才有机会被外界取用。Queue 不提 供遍历功能,也不提供迭代器。queue 常用操作1. queue 构造函数queue<T> queT;//queue 采用模板类实现,queue 对象的默认构
2021-04-11 11:11:55 126
原创 STL学习笔记(6)常用容器 stack
stack 容器基本概念stack 是一种先进后出(First In Last Out, FILO)的数据结构,它只有一个出口,形式如图所示。stack 容器允许新增元素, 移除元素,取得栈顶元素,但是除了最顶端外,没有任何其他方法可以存取 stack 的其他元素。换言之,stack 不允许有遍历行为。 有元素推入栈的操作称为:push,将元素推出 stack 的操作称为 pop。stack 没有迭代器Stack 所有元素的进出都必须符合”先进后出”的条件,只有 stack 顶端的元素,才有机会被外
2021-04-11 11:07:36 110
原创 STL学习笔记(5)常用容器 deque
deque 容器基本概念Vector 容器是单向开口的连续内存空间,deque 则是一种双向开口的连续线性空间。所谓的双向开口,意思是可以 在头尾两端分别做元素的插入和删除操作,当然,vector 容器也可以在头尾两端插入元素,但是在其头部操作效率 奇差,无法被接受。Deque 容器和 vector 容器最大的差异,一在于 deque 允许使用常数项时间对头端进行元素的插入和删除操作。二 在于 deque 没有容量的概念,因为它是动态的以分段连续空间组合而成,随时可以增加一段新的空间并链接起来, 换句
2021-04-11 11:02:48 116
原创 STL学习笔记(4)常用容器 vector
vector 容器基本概念vector 的数据安排以及操作方式,与 array 非常相似,两者的唯一差别在于空间的运用的灵活性。Array 是静态空间, 一旦配置了就不能改变,要换大一点或者小一点的空间,可以,一切琐碎得由自己来,首先配置一块新的空间, 然后将旧空间的数据搬往新空间,再释放原来的空间。Vector 是动态空间,随着元素的加入,它的内部机制会自 动扩充空间以容纳新元素。因此 vector 的运用对于内存的合理利用与运用的灵活性有很大的帮助,我们再也不必 害怕空间不足而一开始就要求一个大块头的
2021-04-10 19:18:10 125
原创 STL学习笔记(3)常用容器 string
string 容器基本概念C风格字符串(以空字符结尾的字符数组)太过复杂难于掌握,不适合大程序的开发,所以C++标准库定义了一种string 类,定义在头文件。String 和 c 风格字符串对比:char*是一个指针,String 是一个类string 封装了 char,管理这个字符串,是一个 char 型的容器。String 封装了很多实用的成员方法 查找 find,拷贝 copy,删除 delete 替换 replace,插入 insert不用考虑内存释放和越界string 管理 ch
2021-04-10 18:54:00 117
原创 STL学习笔记(2)STL 三大组件
容器容器,置物之所也。 研究数据的特定排列方式,以利于搜索或排序或其他特殊目的,这一门学科我们称为数据结构。大学信息类相关 专业里面,与编程最有直接关系的学科,首推数据结构与算法。几乎可以说,任何特定的数据结构都是为了实现 某种特定的算法。STL 容器就是将运用最广泛的一些数据结构实现出来。常用的数据结构:数组(array),链表(list),tree(树),栈(stack),队列(queue),集合(set),映射表(map),根据数据在容器中的 排列特性,这些数据分为序列式容器和关联式容器两种:
2021-04-10 18:23:42 140
原创 STL学习笔记(1)STL 概述
长久以来,软件界一直希望建立一种可重复利用的东西,以及一种得以制造出”可重复运用的东西”的方法,让程序 员的心血不止于随时间的迁移,人事异动而烟消云散,从函数(functions),类别(classes),函数库(function libraries), 类别库(class libraries)、各种组件,从模块化设计,到面向对象(object oriented ),为的就是复用性的提升。复用性必须建立在某种标准之上。但是在许多环境下,就连软件开发最基本的数据结构(data structures) 和算法
2021-04-10 17:42:24 188
原创 在Windows环境下编译VPX
首先到CygWin的官网下载CygWin的安装包,编译环境需在此环境下进行,https://cygwin.com/install.html,安装的过程中,记得一定要安装perl,make,wget,apt-cyg这些命令,不然后面会很麻烦安装apt-cyg可以直接将这个脚本拷贝到系统中,然后运行即可。然后在CygWin环境下,切换到libvpx的目录下,运行configure./configure --target=x86-win32-vs12 --enable-static-msvcrt --d
2021-03-19 19:04:48 544
原创 [C语言] #、##、__VA_ARGS__的使用
从网上借鉴了一些内容,然后整理了一下三者的区别,记录一下。#include <iostream>// #: 用来把参数转换成字符串#define LOG1(x) do { printf("%s=%d\n",#x,x); }while(0)// ##:用于将带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串;但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元;#define LOG2(x) log##x()// __VA
2021-03-14 18:04:27 430
原创 不同HDR技术的比较
HDR技术优点缺点Dolby VisionTM12-bit colorsLuminance up to 10000 nits (4000 nits current target) - future proofDynamic Metadata(per scene) - SMPTE ST 2094-10Dual Layer DV: Backward compatibility with legacy SCR TVs and STBEarly Adoption by TV mannufac...
2021-03-13 14:11:35 1806 9
转载 过扫描和欠扫描
在crt显示时代,电子束在扫描图像的时候,并不是从显示器的边缘开始的,为什么了,因为如果正好100%从边缘开始我们就会看到显示边缘畸变,图像扭曲不正常,为了解决这个问题,就是加大扫描范围,而显示较小的范围,通常国家标准是95%。即实际上我们看到的图像只是真实的图像的95%,边缘被切掉了,切掉的图像部分就是畸变的部分。我们称这个现象为过扫描现象即overscan。那何谓欠扫描,从字面意思理解就是欠缺扫描,即图像扫描不到位,扫描面积小于显示面积。直观的体验就是你看到的图像不满屏有黑边。所以带来一个问题,在现
2021-03-06 16:47:13 3657 1
原创 [AV1] Reference Frame
帧间预测算法里另一个重要的概念就是参考帧了Reference Frame在实际的软件实现中,一般编码器会维护两个Reference Frame list,分别为 RefFrame[0]和RefFrame[1],当仅只有一个参考帧时,RefFrame[1]会被置空,也就是赋值为 -1RefFrame[0]Name of ref_frame0INTRA_FRAME1LAST_FRAME2LAST2_FRAME3LAST3_FRAME4GOLDEN_FR
2021-02-20 18:03:09 2450 2
原创 [AV1] Inter Block Mode
在AV1中的帧间预测中,最重要的概念之一就是帧间预测块的YMode了。YMode我们知道,在AV1中,帧间预测有若干的参考帧,那么我们到底去哪一帧获取到运动向量(Motion Vector)呢,这个就靠YMode来指定了。标准中,YMode有以下的指定值。YModeName of YMode含义14NEARESTMV使用RefStackMv[0] 作为Motion Vector15NEARMV使用RefStackMv[RefMvIdx]作为Motion Vector
2021-02-20 16:49:32 1284
原创 [AV1] Constrained Directional Enhancement Filter
CDEF原理在AV1视频标准中,CDEF为非线性空间滤波器,该滤波器以8x8为基本单位,通过沿着物体的方向进行滤波,从而消除和减弱振铃(ringing artifact)效应,从而提升重建图像的质量。在Encoder端,CDEF滤波一共分三部分组成,分别为CDEF direction 处理CDEF Block 处理CDEF Filter 处理CDEF direction 处理首先,CDEF一共定义了八个方向,如下图所示:沿着方向,一个8x8的块由很多行(由k表示)的像素组成,每个方向的
2021-02-20 16:29:00 1743 5
AV1 Specification 标准文档
2020-10-19
R-REC-BT.500-13-201201-I!!PDF-E.pdf
2020-02-16
C#程序设计.pdf
2019-06-04
Introduction to Visual Studio and CSharp.pdf
2019-05-13
C#界面设计教程.ppt
2019-05-13
C#--winform--常用控件大全.doc
2019-05-13
一台电脑学网管
2019-05-07
汇编语言实用教程-基于Win32编程
2019-04-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人