H266VVC参考软件VTM H265HEVC/HM 代码运行

HEVC/HM代码稍微旧一点的版本,里面已经有build目录和VS工程,例如HM16.8直接打开HM_vc2015.sln就行。较新的版本同VVC/VTM几乎完全一样。这里以VVC/VTM为例。这里也有一篇非常详细的HM早期版本的教程:HEVC代码学习0:HM使用+码流分析教程_慢慢积累-CSDN博客

下载提案的网站:Welcome to Joint Video Experts Team,选择All Meetings,以VTM6.0为例,是O那次会议,提案为:

会议记录 JVET-O2000 Meeting Report of the 15th JVET Meeting (Gothenburg, SE, 3–12 July 2019)
算法描述 JVET-O2002 Algorithm description for Versatile Video Coding and Test Model 6 (VTM 6)

下载VTM6.0的代码:Files · VTM-6.0 · jvet / VVCSoftware_VTM · GitLab

备注:RC是Release Candidate(发行候选版本)的简称。和Beta版最大的差别在于Beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错

关于提案的一些常识:JVET提案学习方法_慢慢积累-CSDN博客

可以考虑在改动之前,先在本地建立一个Git仓库,防止以后忘记代码有没有改过、改了哪里、改乱了等等。

git init
git add .
git commit -m "VTM 6.0"

阅读这个项目的README,得知在Windows系统下:

1.安装Cmake,下载:https://cmake.org/download/,下载Zip,然后把bin目录添加到环境变量,或者直接下载那个msi的安装包来安装。

2.新建build目录,在目录中执行:

mkdir build
cd build
cmake .. -G "Visual Studio 16 2019" -A x64

最后一句命令可以根据自己的VisualStudio版本修改:

cmake .. -G "Visual Studio 14 2015" -A x64
cmake .. -G "Visual Studio 15 2017" -A x64
cmake .. -G "Visual Studio 16 2019" -A x64

然后在build目录打开 NextSoftware.sln 就可以了。

下面这段是cmake的日志,可以看出来,如果更换了VS版本,是打不开NextSoftware.sln的,需要重新生成。

PS E:\Documents\VideoCoding\VVCSoftware_VTM\build> cmake .. -G "Visual Studio 16 2019" -A x64
-- Selecting Windows SDK version 10.0.17763.0 to target Windows 10.0.18362.
-- The C compiler identification is MSVC 19.22.27905.0
-- The CXX compiler identification is MSVC 19.22.27905.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.22.27905/bin/Hostx64/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.22.27905/bin/Hostx64/x64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.22.27905/bin/Hostx64/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.22.27905/bin/Hostx64/x64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Setting up BBuildEnv 3.13.0.2
-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE
-- Found OpenMP_C: -openmp (found version "2.0")
-- Found OpenMP_CXX: -openmp (found version "2.0")
-- Found OpenMP: TRUE (found version "2.0")
-- bb_enable_warnings:  -> updating warnings flags: /WX;/wd4996
-- Configuring done
-- Generating done
-- Build files have been written to: E:/Documents/VideoCoding/VVCSoftware_VTM/build

编码

右键把EncoderApp设为启动项目

配置 EncoderApp 项目属性:

  • 属性 - 调试 - 工作目录:$(SolutionDir)../bin

$(SolutionDir)就是build文件夹,我这里设到与build同级的bin文件夹)

  • 属性 - 调试 - 命令参数:-c ../cfg/per-sequence/BasketballPass.cfg -c ../cfg/encoder_intra_vtm.cfg

(如果需要可以在结尾添加>> enc_log.txt来把输出保存到txt中)

  • 属性 - 常规 - 输出目录:这个可以不改,也可以改成和工作目录一致。默认位置在bin文件夹里一层一层点进去。

然后把BasketballPass.cfg对应的yuv文件放到工作目录,或者修改BasketballPass.cfg文件里yuv文件的位置。

然后右键 - 生成;然后点本地调试器,就可以开始跑。

解码

右键把DecoderApp设为启动项目

配置 DecoderApp 项目属性:

属性 - 调试 - 工作目录:$(SolutionDir)../bin

属性 - 调试 - 命令参数:-b str.bin -o dec.yuv

如果想使用YUView查看统计信息,命令参数:-b str.vvc -o dec.yuv --TraceFile="ACoded.vtmbmsstats" --TraceRule="D_BLOCK_STATISTICS_ALL:poc>=0" >> declog.txt注意在此之前的编码要修改配置文件生成vvc文件 具体可参考文章:VVC/VTM 可视化_hujy23的博客-CSDN博客

关于修改编码参数

(以IBC参数为例)

如果研究IBC,编码时的命令参数要加一项,有几种加法:

  • --IBC=1,变成-c BasketballDrillText.cfg -c encoder_intra_vtm.cfg --IBC=1。(怎么知道可以这样写呢,读doc目录下的software manual)

  • -c ../cfg/per-class/classF.cfg,变成-c ../cfg/per-sequence/BasketballPass.cfg -c ../cfg/encoder_intra_vtm.cfg -c ../cfg/per-class/classF.cfg,参数里的classF.cfg要放在最后面,因为不同配置文件里的同一个配置,靠后的生效的。(encoder_intra_vtm.cfg和classF.cfg都规定了IBC,前者规定是0后者是1)。

  • 或者直接修改 encoder_intra_vtm.cfg 里面的IBC部分。

怎么查看有没有生效呢?在main函数中parseCfg函数这句设置断点,然后F5开始调试,运行到这里,在局部变量窗口展开pcEncApp-EncAppCfg可以在这一大堆参数,此时都还是空的,再F10走一步,可以看到参数都读进来了,里面有IBC相关的,m_IBCMode就是IBC的开关。
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值