在解码框架中最后是做滤波处理

环路滤波是以微块做处理,按照解码顺序依次进行处理,在AVS中就是以16*16的大小

对亮度和色度分别做环路滤波,首先从左到右对垂直边界滤波,然后从上到下进行处理。

需要滤波的边界包括图像边界,条带边界,微块的上边界和下边界,同时对处理的过程会有相应的强度控制算法,如果强度为0,那么不进行滤波处理

下面介绍的更多的还是一些实现上的优化的例子,以一个垂直边界的一个点作为例子:

<span style="font-size:14px;">L2  = SrcPtr[-inc3] ;L1  = SrcPtr[-inc2] ;L0  = SrcPtr[-inc ] ;R0  = SrcPtr[    0] ;R1  = SrcPtr[ inc ] ;R2  = SrcPtr[ inc2] ;</span>

首先获取图片中该点周围的几个像素点,通过解码流中的阿尔法值和贝塔值获得强度,这里介绍一下ti6467中一些内联指令的使用:

在循环中有if指令符号会减速cpu的运行速度,无法并行处理

<span style="font-size:14px;">if ((AbsDelta < Alpha) && (AbsDelta > 1)) {if (abs(L1 - L0) < Beta) {FlatnessL = 2;} else {FlatnessL = 0;}if (abs(L2 - L0) < Beta) {FlatnessL += 1;}if (abs(R0 - R1) < Beta) {FlatnessR = 2;} else {FlatnessR = 0;}if (abs(R0 - R2) < Beta) {FlatnessR += 1;}}</span>

其实利用内联函数,几句话就可以解决

<span style="font-size:14px;">AbsDelta = abs(R0 - L0) ;iConFlag = (Alpha > AbsDelta) &(AbsDelta > 1); if (!iConFlag){continue;}FlatnessL = _cmpgt2(_pack2(Beta, Beta),_pack2(abs(L1-L0), abs(L2-L0)))*iConFlag; FlatnessR = _cmpgt2(_pack2(Beta, Beta),_pack2(abs(R0-R1), abs(R0-R2)))*iConFlag;</span>

_pack2是对两个32bit数据的低16位进行组合为一个新的32bit数据

_cmpgt2是对两个32bit数据的分别16位进行比较,将比较结果放在返回值对应的低两位当中

在获得了强度值之后会根据对应的强度对点进行不同的环路滤波处理方式,那么就难免需要用到switch操作,这也是我们不想要的,那么我们可以进行下面的处理

原方法:

<span style="font-size:14px;">switch (fs) {case 4:SrcPtr[-inc]  =            //L0SrcPtr[-inc2] =       //L1SrcPtr[-inc3] =   //L2SrcPtr[0]     =            //R0SrcPtr[inc]   =       //R1SrcPtr[inc2]  =   //R2break;case 3:SrcPtr[-inc] = //L0SrcPtr[0] = //R0SrcPtr[-inc2] =SrcPtr[inc] =break;case 2:  ....................................................default:break;}</span>

这里进行处理,将一个点的每个强度的点都进行处理,针对fs的值进行静态数组查询,根据值挑选出需要赋值的点

<span style="font-size:14px;">{ 0,0,0x01000000,0x01000000,0,0,0x01000000,0x01000000,0,0,0x01000000,0x01000000,0,0,0x01000000,0x01000000 },{ 0x01000000,0x01000000,0x01000000,0x01000000,0x01000000,0x01000000,0x01000000,0x01000000,0x01000000,0x01000000,0x01000000,0x01000000}
</span>

将所有需要的8bit点pack进入32bit的数据当中,然后将这个数据和上面数组中挑选的值进行点乘处理得出需要的值

AVS解码—环路滤波相关推荐

  1. h264解码之环路滤波

    代码以ffmpeg为例,h264解码代码在h264.c里. 环路滤波(Loop Filter)部分 FFmpeg的H.264解码器调用decode_slice()函数完成了解码工作.这些解码工作可以大 ...

  2. HEVC算法和体系结构:环路滤波技术

    环路滤波(In-Loop Filtering)技术 类似于以往的视频编码标准,HEVC仍采用基于块的混合编码框架,一些失真效应仍然存在,如方块效应.振铃效应.颜色偏差以及图像模糊等等.为了解决这些问题 ...

  3. FFmpeg的H.264解码器源代码简单分析:环路滤波(Loop Filter)部分

    ===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...

  4. FFmpeg的HEVC解码器源代码简单分析:环路滤波(Loop Filter)

    ===================================================== HEVC源代码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpe ...

  5. 视频千倍压缩背后的技术原理之环路滤波

    随着5G的成熟和广泛商用,带宽越来越高,让传输视频变得更加容易.移动设备算力的提升.存储容量的提升,也使得视频技术的应用越来越广泛.视频相关的技术,特别是视频压缩技术,因其专业性,深入开发的门槛较高, ...

  6. HEVC/H.265面试问题准备(PART 3. 环路滤波+熵编码)

    近期因为要准备暑期实习以及后期的秋招环节,再一次温习了<新一代高效视频编码H.265/HEVC原理.标准与实现>经典书籍,现在记录下有关阅读心得以及可能面试的问题(所有的答案都是我自己思考 ...

  7. VVC/VTM:环路滤波——Luma mapping with chroma scaling (LMCS)

    VTM中环路滤波的顺序:LMCS,deblocking filter,SAO 和ALF.其中deblocking filter和SAO 与HEVC中的相同. Luma mapping with chr ...

  8. VVC环路滤波(一):ALF

    在VTM5中提供了三种环路滤波技术:去方块滤波(Deblocking filter,DF),样点自适应补偿(Sample adaptive offset,SAO)和自适应环路滤波(adaptive l ...

  9. VVC/VTM: 自适应环路滤波(ALF, Adaptive Loop Filtering)中维纳滤波(Wiener Filtering)的公式推导

    0 前言 自适应环路滤波(ALF)并不是在 H.266/VVC 标准制定过程中才被提出来的技术,实际上其早在 H.265/HEVC 标准制定时就基本确定了现有形式的雏形,只是由于当时硬件算力的限制未能 ...

最新文章

  1. CodeForces - 1514D Cut and Stick(线段树/随机数)
  2. 【解析】在高级语言源程序中, 常需要用户定义的标识符为程序中的对象命名,常见的命名对象有()
  3. php 命令行方式运行时 几种传入参数的方式
  4. Android之开发中用到的几个多线程解析
  5. KMP 算法 学习 整理
  6. 世上最简单的mysql_最简单易懂的mysql安装教程
  7. 试设计递归算法dfs traverse_BFS 算法框架套路详解
  8. paip.使用泛型时未能找到类型或命名空间名称“T
  9. mysql字符集编码解析_MySQL字符集编码的理解
  10. otsu阈值分割算法原理_OTSU阈值分割的实现.doc
  11. ECharts绘制中国地图、广西地图
  12. 大数据基础课18 数据中台:用大数据赋能业务
  13. 成为Lowe‘s劳氏供应商的条件
  14. 关于主机名,域名区别(www.baidu.com与baidu.com)以及同源策略的一些误区
  15. 如何定向网件路由防火墙与URL
  16. 海尔笔记本X3超级本拆机增加内存图文教程(解决后盖开不了问题)
  17. iOS 添加第三方字体 .ttf
  18. python定时器每隔几秒执行一次
  19. SF - 字段和数据库的Mapping关系
  20. 运算方法和运算器——定点加法减法运算

热门文章

  1. 当物联网技术进入了玩具世界……
  2. R拓展包的下载与安装
  3. Windows让我们养成了什么臭毛病 本篇文章来源于 黑基网-中国最大的网络安全站点 原文链接:http://www.hackbase.com/news/2010-05-10/35154.html
  4. 中国科学技术大学软件学院,软件学硕专业研究生停止招生!
  5. 监听的相关概念和管理监听
  6. 存储ic载板_科技观察—IC载板—2018年IC载板行业市场空间、格局和变化
  7. android java ibinder_Java IBinder.isBinderAlive方法代码示例
  8. 那一年的北风--序言3
  9. 【学习笔记8】HTML案例3:个人简历表格设计
  10. 简易电子催眠器原理分析