AVS3中的AMVR和EMVR

在AVS2中运动预测中使用的MV都是1/4像素精度,通过在整像素间插值能显著提升非整像素运动预测的精度,同时带来的问题是随着MV精度的提高编码MVD所需的比特数也会增加。

AMVR


AMVR支持的MVD编码5种精度的MVR{1/4,1/2,1,2,4},索引为0到4,如下表。

编码端从5种精度中选择RD cost最小的,将MVR索引传输到解码端,其中索引使用截断二元码编码,解码端获取到MVR后将MVD和对应的MVP对齐到该精度。

注意,对于使用仿射模式的CU,AMVR仅支持3种精度{1/4,1,1/16}。CU的索引CPMV使用相同的精度。

EMVR


EMVR是在AMVR的基础上将MVR和HMVP绑定。当使用EMVR时,MVP候选项由HMVP构成,此时MVR和MVP共用同一个索引。

HMVP候选集由历史已编码CU的MV构成,距离当前越近分配的索引越大。EMVR将MVR和HMVP的索引绑定,绑定的规则基于这样的假设,离当前越近的MVP和当前的运动越相关。因此,MVR小的索引和MVP大的索引绑定,也即对越近的MVP使用的MV精度越高。

假设MVR的数量是N,HMVP中MVP的数量是M,则根据M和N的大小关系有两种情况:

  • 当M>=N时,如上图(a),MVR的索引0对应MVP的索引(M-1),MVR的索引(N-1)对应MVP的索引(M-N),此时对于MVR的每项HMVP中都有对应的MVP。

  • 当M<N时,如上图(b),MVR的索引0对应MVP的索引(M-1),MVR的索引(M-1)对应MVP的第一个索引。MVR的索引M到(N-1)都对应HMVP中的同一个索引(M-1)。

根据HMVP候选集构建规则可以得到运动信息,如果运动信息只有L0对应的mvH0,则L1中的mvH1由mvH0缩放得到,反之亦然。

缩放规则如上表,其中dE0和dE1分别是当前帧和L0和L1中参考帧的距离,dL0和dL1分别是当前帧和L0和L1中运动信息的参考帧的距离。

当前的MVP由下式求得:

  \begin{array}{c} MvEPred_x = Clip3(-32768,32767,Sign(mvH_x*D1*D2)\\ *((Abs(mvH_x*D1*(16384/D2))+8192)>>14))\\ MvEPred_y = Clip3(-32768,32767,Sign(mvH_y*D1*D2)\\ *((Abs(mvH_y*D1*(16384/D2))+8192)>>14)) \end{array}

经AMVR调整精度后:

  \begin{array}{c} MvEPred_x = Clip3(-32768,32767,Rounding\\ (MvEPred_x,amvr_index)<<amvr_index)\\ MvEPred_y = Clip3(-32768,32767,Rounding\\ (MvEPred_y,amvr_index)<<amvr_index) \end{array}

实验结果


下表是AMVR和EMVR在RA配置下的效果,实验平台为HPM6.0,anchor是AMVR和EMVR均关闭。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 FFmpeg 进行 AVS3 编码,需要先编译 FFmpeg 并启用 AVS3 的支持。下面是一个简单的编译和配置过程: 1. 下载 FFmpeg 源代码 首先,你需要从 FFmpeg 官网下载最新的源代码。 2. 安装 AVS3 相关依赖 FFmpeg 需要依赖以下软件包来支持 AVS3 编码: - AVS3-P2 reference software - xavs3 库 你可以从 AVS3 官方网站上下载这些软件包,并按照它们的指导进行安装。 3. 配置 FFmpeg 在配置 FFmpeg 时,你需要启用 AVS3 的支持。你可以使用以下命令进行配置: ``` ./configure --enable-libxavs3 --enable-version3 --enable-shared --enable-hardcoded-tables --enable-gpl --enable-nonfree ``` 其,`--enable-libxavs3` 表示启用 xavs3 库的支持,`--enable-version3` 表示使用最新的库版本,`--enable-shared` 表示编译动态链接库,`--enable-hardcoded-tables` 表示启用硬编码的表格,`--enable-gpl` 表示启用 GPL 许可证,`--enable-nonfree` 表示启用非自由许可证。 4. 编译 FFmpeg 在配置完成后,你可以使用以下命令编译 FFmpeg: ``` make ``` 5. 安装 FFmpeg 编译完成后,你可以使用以下命令将 FFmpeg 安装到系统: ``` make install ``` 6. 使用 FFmpeg 进行 AVS3 编码 现在,你可以使用 FFmpeg 进行 AVS3 编码了。例如,如果你要将一个视频文件编码为 AVS3 格式,你可以使用以下命令: ``` ffmpeg -i input.mp4 -c:v libxavs3 output.avs ``` 其,`-i` 表示输入文件,`-c:v libxavs3` 表示使用 libxavs3 库进行视频编码,`output.avs` 表示输出文件的名称。 注意:AVS3 是国提出的一种新型视频编码标准,目前尚未得到广泛的应用和支持。因此,在使用 FFmpeg 进行 AVS3 编码时,你需要先确认你的播放器或设备是否支持 AVS3 格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值