![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Video Coding
Alanqin13
这个作者很懒,什么都没留下…
展开
-
pkg-config
DESCRIPTION pkgconf is a program which helps to configure compiler and linker flags for development libraries. This allows build systems to detect other dependencies and use them with the system toolchain.查看 环境变量 这样,pkg-config就会去/u...原创 2020-07-16 15:54:41 · 226 阅读 · 0 评论 -
AV1代码学习6:tpl_model之一
AV1的tpl_model是AV1的一个c文件,包含了一系列函数,其主要目的是为了利用lookahead design记录每个块的一些数据,包括失真等,在实际编码时利用这些数据建立模型,调整QP或者lambda以取得更好的编码性能。相关方面的论文是:《A Temporal Dependency Model for Rate-Distortion Optimization in ...原创 2019-12-24 16:39:50 · 2537 阅读 · 0 评论 -
AV1代码学习6:函数av1_encode和 av1_first_pass
av1_encode没什么特别好说的,会把在av1_encode_strategy的参数(EncodeFrameInput和EncodeFrameParams)赋给结构体AV1_COMP和AV1_COMMON,对当前帧的数据进行初始化 AV1_COMP *const cpi AV1_COMMON *const cm = &cpi->common; CurrentFra...原创 2019-12-23 16:14:47 · 2593 阅读 · 0 评论 -
AV1代码学习5:函数av1_encode_strategy
函数av1_encode_strategy会执行一些high-level的编码策略,包括选择帧的类型等。其中函数choose_frame_source,会根据当前帧是否为ARF or internal ARF,来对原始帧进行时域滤波,如果不是则用LAST代替或者从lookahead从得到。show_existing_frame代表这一帧已经编码过.tpl_model在第二次编码才会使用,是...原创 2019-12-10 15:48:23 · 1276 阅读 · 0 评论 -
AV1代码学习4:函数encoder_encode
进入函数encoder_encode,注意结构体AV1_COMP,基本上所有有关编码的具体信息都能从这里访问到,包括QP,POC等。av1_receive_raw_frame会对一系列结构体和buffer进行初始化,包括lookahead结构体以及参考帧列表等,下一个函数入口是av1_get_compressed_data,若返回-1则指的是没有帧被编码,因为AV1有lag-in-frame,...原创 2019-12-09 15:29:32 · 1184 阅读 · 1 评论 -
AV1代码学习3:函数aom_codec_encode
函数aom_codec_encode主要就是根据命令行参数--cpu-used来决定num_enc, 通常情况下,为了通测方便,--cpu-used都是设置为1. 提高--cpu-used的数值会加快编码器的速度,但也会降低编码质量。确定好num_enc之后,就会调用函数encoder_encodeaom_codec_err_t aom_codec_encode(aom_codec_ctx_...原创 2019-12-09 12:27:43 · 1354 阅读 · 2 评论 -
AV1代码学习2:函数encode_frame
之前代码学习1里有提到主要编码循环(while (frame_avail || got_data))里的函数encode_frame, 这个函数会做一些放缩的工作,以及计时器的启动,会把stream->encoder传入函数aom_codec_encode进行下一步工作,并判断返回值是否有error。需要注意的是av1默认是two-pass encoding,所以第一次编码是在大QP和低码...原创 2019-12-09 12:10:37 · 998 阅读 · 0 评论 -
AV1代码学习1:aomenc的main函数
这里使用的是AV1(Jun. 8, 2019version)。aomenc是编码器工程,完成视频序列的编码。运行时,首先调用aomenc.c中的main函数main函数中完成的工作主要有初始化,解析输入文件,打印数据,并且对编码过程进行计时,因为AV1是用C编写的,所以有很多地方看上去不是那么简洁。其中调用了函数encode_frame,是编码器的最上层的入口。主要过程是:...原创 2019-12-09 11:47:23 · 1501 阅读 · 1 评论 -
AV1代码学习0:libaom的配置以及码流分析
之所以写这个专栏,主要还是因为项目原因要学习AV1,之前也从未接触过工程量这么大的工程代码,所以这个专栏的形式可能会像学习笔记或者学习过程的一个记录。在学习AV1之前有接触过HEVC,很多基础的东西都是在岳麓吹雪大神的博客学到,受益匪浅。AOMedia Video 1(简称AV1)与HEVC最大的不同就是它是一个免专利的编解码器,由开源媒体联盟(AOM)开放,主要是谷歌牵头做的。AV1是还是基...原创 2019-12-06 20:35:17 · 6346 阅读 · 6 评论 -
AV1编码器相关介绍和资料
Assuming you know the basics of video codec's: Great start for AV1:Into the Depths: The Technical Details behind AV1 by Nathan Egge A few more details:The AV1 Video Codec(techical info star...原创 2019-05-20 15:49:08 · 2386 阅读 · 3 评论 -
AV1 Window编译(Using VS2015)
Step 1:在http://www.msys2.org/下载msys2,安装完成后打开msys2Step 2:在终端中输入pacman -S cmake gcc mingw-w64-x86_64-winpthreads-git mingw-w64-x86_64-libwinpthread-git binutils coreutils yasm git base-devel p7zip...原创 2019-01-15 17:12:52 · 1304 阅读 · 0 评论 -
AV1 编码器guide
Encode 8-bit AV1aomenc -v -w 1920 -h 1080 --cpu-used=0 --target-bitrate=1500 --threads=16 --profile=0 --aq-mode=0 --lag-in-frames=25 --auto-alt-ref=1 -o av1-8bit.webm 8bit.y4mEncode 10-bit AV1ao...转载 2019-01-17 15:03:55 · 1488 阅读 · 2 评论