AVS 帧内预测模式的汇编优化

王瑞*

  基金项目:本课题得到国家自然科学基金资助项目基金(项目编号:60772101)的资助。

  作者简介:王瑞(1986—), 男, 山东莱芜人, 硕士, 主要从事视频压缩方面的研究. E-mail:wangruityut@163.com(太原理工大学 信息工程学院,太原 030024)

  摘要:帧内预测是AVS 编码器中十分耗时的模块,因此,合理的优化这一模块对AVS 编码器的实时实现具有十分重要的意义。本文根据每种帧内预测模式的特点将其分为三大类,并在TMS320CDM####46 上如何用汇编实现做了详细分析,重新 设计了程序结构,优化后的数据显示,在不影响图像质量的前提下,汇编代码在时钟周期上效率大幅提高,耗时仅为C 代码的30%,优化效果相当明显。

  关键词: TMS320CDM####46;帧内预测;AVS 实时编码

  中图分类号:TN624Optimize Intra Predicition of AVS by assembly languageWANG Rui(College of Information Engineering,Taiyuan University of Technology Taiyuan, Taiyuan 030024)

  Abstract: Intra prediction is one of the most time-consuming model in AVS encoder, therefore,optimizing this module reasonably is very significant to realize the real-time AVS encoding.This divide all intra prediction modes into three categories according to the characteristics of each mode,and do a detailed analysis about various mode of intra prediction model with assembly language onTMS320CDM####46, and redesign the program structure, It demonstrates that the assembly code has anotable increase of the clock cycle efficiency.Under the premise of not affecting the image quality, theassembly code‘s time-consuming is only 30% of C code and the optimization is obvious.

  Key words: TMS320CDM####46;Intra Predicition;AVS real time encoding

  0 引言

  AVS(Audio Video coding Standard)标准是我国具备自主知识产权的第二代信源编码标准[1]。它的编码效率与MPEG-4/H.2#### 相当,但是计算复杂度与 专利费用低,因此在DSP 上实时实现高分辨率视频编码实例是业界努力攻克的目标。本文以TMS320DM####46 为 开发平台,重点分析了AVS 的帧内预测编码模块,并使用汇编 语言对其进行优化,对实时性的实现十分有利。

  1 TMS320CDM6000 系列DSP 特点及汇编介绍

  TMS320C6000 DSP 具有最高800MIPS 的运算性能和高效的C 编译器。其内核CPU 由两个寄存器组A 和B 组成,每组包含32 个寄存器;内部有8 个功能单元包括2 个乘法器和

  6 个算术逻辑单元。C####x+ DSP 具有高级的VLIW(Very Long Instruction Word)体系结构。

  VLIW 描述了一种指令集思想[2]。在这种指令集中,编译器把许多简单、独立的指令组合到一条指令字中。当这些指令字从Cache 或内存中取出放到处理器中时,它们被容易地分解成几条简单的指令。这些简单的指令被分派到一些独立的执行单元去执行。C####x+ CPU 一般情况下能将8 条指令组合到一条指令字中,如图2-1 所示:图1 取指包的基本形式Figure1 Basic Format of a Fetch Packet取指包里的八条指令的执行由最低比特位p 控制。p 的值决定两条指令是否并行执行。在C####x+ DSP 中,p 比特的扫描过程遵循从左到右的原则,也就是从低地址位到高地址位的顺序,如图3-2 中,顺序为从指令A 到指令H。如果第i 条指令的p=1,则代表该指令与第i+1 条指令是并行执行的,否则,如果第i 条指令的p=0,则代表该指令与第i+1 条指令不是并行的。一个取指包里所有能够并行执行的指令组成一个执行包。每个执行包里的指令使用的功能单元是互不相同的。一般情况下,通过编写线性汇编代码,然后再通过汇编优化器进行优化,也能达到一个满意的程度。但是对实时性要求比较高的地方,这个优化程度还是远远不够的。因此,需要进一步考虑代码的特点,充分利用C####x+ DSP 的资源安排并行指令,合理安排流水结构,才能最大限度的优化需要的汇编代码。线性汇编与汇编的主要区别是:汇编需要指定并行指令;汇编需要考虑寄存器的使用;汇编需要考虑指令的延时周期;汇编需要考虑功能单元的使用情况;汇编需要自己安排流水线[3]。因此,汇编代码的编写主要有以下优化策略:配合功能单元,利用SIMD、VLIW 思想尽量写并行代码,使得8 个功能单元的利用率都很高;A、B 通道并行,合理使用交叉通路;实现同样操作尽量用数据相关性小易于形成 软件流水的指令,尽量用最少周期的指令,尽量用特殊指令(一般效率比较高)例如:循环体实现一个操作 val = is<0? -val : val,可以用比较和跳转指令实现但破坏软件流水效率低,可以通过比较扩展求或操作得到一个-1 或1 的数,再用乘运算实现这个操作,虽然周期长了一些,但能形成软件流水,实际提高了效率。

  2 AVS 帧内预测及其汇编优化

  AVS 帧内预测是基于空间域的预测,即利用周围已编码块的重建像素值滤波得到当前块的像素预测值。AVS 编码标准在传统的帧内编码技术的基础上,充分利用了图像在局部空间上的高度相关性来去除图像的空间冗余性,然后再对预测残差图像进行变换编码,有效提高了图像帧内编码的效率。AVS 的亮度和色度都使用8×8 的预测块,且亮度和色度预测模式分别为5 种和4 种,但是根据宏块周围块的存在情况,在AVS 中实际上亮度预测模式有8 种不同的算法,而在色度中7 种不同的算法。但是总体上可以大致分为以下几类:1)赋值运算 亮度和色度模式0,模式DC_Top 为垂直赋值;亮度和色度的模式1,DC_Left 为水平赋值;亮度和色度模式DC_128 为常数赋值。这一类总体思路一样,都采用STDW 指令,一次可以完成一行的赋值。色度DC_Top 和DC_Left 的所需赋的值需要由加权平均运算指令DOTPUS4 求得,其他与亮度相同。如给整个8×8 块赋值128 的运算的汇编代码如下,一次加载8 个数。MVKL 0x80808080,r0MVKH 0x80808080,r0MV r0 , r1STDW r1:r0, *dst++2)要求平均值或加权平均的运算 亮度模式DC_All 和色度模式DC_All,模式3。对亮度模式DC_All,将top 和left 用LDDW 指令分别一次读进来,并把读进来的left 值解包,并把解包的每个值再分别打包,共八个值left[0] 到left[7],将这八个值分别与top 相加并移位,用指令AVGU4,这样可能会存在大1 的误差。解决误差的方法是用SUBABS4 将top值都减1 后再用指令AVGU4 与left 操作得到DST,这样的话仅top 值为0 时可能存在误差。图2 仅top=0 时可能含有误差的算法Figure2 the algorithm only top= 0 may contain error然后采用比较法消除0 值误差,即先用top 值与0 值比较,用指令CMPGTU4,得到CMP1,再用XPND4 将其展开并用NOT 取反,将此值与01010101H 相与,得到CMP1,最后用DST 减去CMP1 就消除了误差得到最终结果。色度与亮度模式DC_All 的主要区别就是所需要的值要由临近top 和left 的值用DOTPUS4 指令加权平均求出。对于色度模式3,主要思路就是用DOTPUS4 指令求得a,b,c 的值,对于中间过程则采用16 位运算指令SADDSUB2,SHR2 等,最后通过SPACKU4 指令把结果饱和为8 位。3)要进行移位运算。如亮度中的模式3 和模式4,采用的是左上和左下的预测方式,即45°角方向的赋值是一样的。对于亮度模式3 ,所需赋的值是top 和left 的均值,所以本文首先两次利用取双字指令LDDW 一次性将我们需要的值全部取出后,采用模式2 中所用的方法求得所需赋的值,然后利用移位指令,不断地组合出下一行的数进行赋值,利用存双字指令STDW 一次存进内存中。亮度模式4 所需赋的值可以直接取出,然后用移位组合出下一行的数。这样的做法明显提高了数据的利用率,减小了算法的复杂性。

  3 实验结果分析

  表1 帧内预测实验结果Table1 Intra Predicition Experiment Result帧内预测模式 优化的C(CPU 数)汇编(CPU 数)模式0(vetical) 32 13模式1(horizontal) 43 18DC_128 22 11DC_Top 32 13DC_Left 43 18模式2(DC)DC_All 93 31模式3(Down_Left) 88 25亮度模式4 (Down_Right) 73 15模式0(vetical) 32 13模式1(horizontal) 43 18DC_128 22 11DC_Top 96 27DC_Left 78 25模式2(DC)DC_All 139 46色度模式3(Plane) 1#### 48从表1 的实验结果可以看出,通过汇编优化后,各个模式全部有很大程度的降低,与优化过的C 相比降低幅度均在50%以上,相比于线性汇编优化结果其CPU 周期数也有很大程度的下降,降低幅度大部分在30%到50%之间。因此,对实时性要求比较高的编码器而言,汇编能极大地提高运算速度,缩短计算时间。

  4 结论

  本文用汇编实现了帧内预测的各种模式,在不影响图像质量的情况下有效的提高了编码速率。本实验证明,利用DSP 汇编指令实现AVS 耗时模块可极大节省计算时间,为AVS在TMS320DM####46 上实时实现提供了更大的保障。

  [参考文献] (References)

  [1]《AVS 视频(报批最终稿)》(标准号GB/T 200090.2-2006) 信息技术先进音视频编码第2 部分:视频[S].

  [2] TMS320C####x/C####x+ DSP CPU and Instruction Set Reference Guide. Literature Number: SPRU732A June2005

  [3] TMS320C6000 Optimizing Compiler v 6.1 User‘s Guide. Literature Number: SPRU187O May 2008
中国论文中心http://www.wenlun.com 警告:未经本站许可不得采集本站论文内容作为自己网站的资源!(如需要转载请说明出自:http://www.wenlun.com/lwcs/so_article.asp?id=11050680156)
如果本文不完整,请点击这里查看AVS 帧内预测模式的汇编优化的其它内容 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ltsc系统激活_WIN10_X64企业版LTSC 电脑公司装机版 202008

文件: WIN10_X64_LTSC_ZJ202008.esd大小: 7431429353 字节(6.92G)MD5: A3A3B15ED47216E177C924D2E07E0799SHA1: 3A647265E0C8234225C633407093BAA07253FB34CRC32: 32E791E9(注意&#xff0c;下载文件有一定几率损坏&#xff0c;如文件值不对请重新下载&#xff01;)360安全云盘…

大学计算机应用基础考试题库,大学计算机应用基础考试题库

综合模拟(四)一、选择题。1、完整的计算机硬件系统一般包括外部设备和 C 。A、运算器的控制器 B、存储器 C、主机 D、中央处理器2、计算机能够自动工作&#xff0c;主要是因为采用了 D 。A、二进制数制 B、高速电子元件 C、存储程序控制 D、程序设计语言3、下面哪能一组是系统软…

Lombok 使用小结

Lombok 使用小结 Lombok 简介Lombok 安装Lombok 使用 API示例示例源码引用和引申Lombok 简介 Lombok 是一种 Java 实用工具&#xff0c;可用来帮助开发人员消除 Java 的冗长&#xff0c;尤其是对于简单的 Java 对象&#xff08;POJO&#xff09;。它通过注释实现这一目的。通过…

html表单input file,input标签type=file的文件上传

一&#xff0c;通过表单提交的方式该提交方式只是提交普通表单&#xff1b;对于file组所选中的文件内容是不上传的&#xff0c;因此需要设置&#xff1a;enctype属性enctype"multipart/form-data"如果想上传多文件&#xff0c;可添加multiple二&#xff0c;通过Ajax异…

AVS游程解码、反扫描、反量化和反变换优化设计

中图分类号:TN919.81   文献标识码:A   文章编号:1009-2552 (2007) 02-0054-04AVS游程解码、反扫描、反量化和反变换优化设计赵 策, 刘佩林(上海交通大学电子工程系, 上海200240)摘 要: 提出了一种适用于AVS的游程解码、反扫描、反量化和反变换硬件结构优化设计方案。根据…

Django REST framework介绍

现在前后端分离的架构设计越来越流行&#xff0c;业界甚至出现了API优先的趋势。 显然API开发已经成为后端程序员的必备技能了&#xff0c;那作为Python程序员特别是把Django作为自己主要的开发框架的程序员&#xff0c;Django REST framework&#xff08;DRF&#xff09;这个…

zabbix 安装_安装zabbix

准备一个纯净环境10.0.0.99首先修改yum源&#xff0c;修改为zabbix清华源&#xff0c;清华源玉zabbix官方源都是同步的&#xff0c;下载速度更快&#xff01;zabbix官方Download Zabbix​www.zabbix.com点击下载&#xff0c;下面有zabbix的历史版本以及官方安装文档可以查看到不…

拓展欧几里得 [Noi2002]Savage

对于一个野人&#xff0c;他&#xff08;她&#xff1f;&#xff09;所在的位置&#xff0c;&#xff08;C[i]x*p[i]&#xff09;%ans,是的&#xff0c;暴力枚举每一个ans&#xff0c;用拓展欧几里得求出每两个wildpeople(wildrage?)相遇的年份&#xff0c;如果小于最小的寿限…

CCNP-19 IS-IS试验2(BSCI)

CCNP-19 IS-IS试验2 实验拓扑&#xff1a;试验要求&#xff1a;R1 R2 R3全部采用集成的ISIS路由协议&#xff0c;R1 R2在区域49.0001内&#xff0c;R3在区域49.0002内&#xff0c;R1与R2之间的链路类型为L1&#xff0c;R2与R3之间的链路类型为L2。 试验目的&#xff1a;掌握基…

正道的光用计算机,正道的光作文500字

当那熟悉的轰天巨雷般的呼噜声响起&#xff0c;我就知道&#xff0c;这又是睡不着的一天。同样在宿舍&#xff1b;同样是小翟&#xff1b;同样的时间&#xff1b;同样在我昏昏欲睡的时候&#xff0c;那个熟悉的呼噜声&#xff0c;它又来了。它将我从即将到来的美梦中惊醒了&…

AVS高清立体视频编码器

一、成果项目背景 电视技术在经历了从黑白到彩色、从模拟到数字的技术变革之后正在酝酿另一场技术革命&#xff0c;从单纯观看二维场景的平面电视跨越到展现三维场景的立体电视。立体电视&#xff0c;又称三维电视(3DTV)&#xff0c;提供了更为丰富的视觉信息和更具临场感的观…

RESTful介绍

RESTful介绍 REST与技术无关&#xff0c;代表的是一种软件架构风格&#xff0c;REST是Representational State Transfer的简称&#xff0c;中文翻译为“表征状态转移”或“表现层状态转化”。阮一峰 理解RESTful架构 RESTful API设计指南 阮一峰 RESTful设计指南 API与用户…

dijkstra算法代码_数据科学家需要知道的5种图算法(附代码)

在本文中&#xff0c;我将讨论一些你应该知道的最重要的图算法&#xff0c;以及如何使用Python实现它们。作者&#xff1a;AI公园导读因为图分析是数据科学家的未来。作为数据科学家&#xff0c;我们对pandas、SQL或任何其他关系数据库非常熟悉。我们习惯于将用户的属性以列的形…

大暴搜 chess

仔细读题&#xff0c;会发现吃掉敌人点对方案数的贡献很神奇。如果走的空格相同&#xff0c;而走的敌人点不同&#xff0c;对答案无贡献&#xff0c;而对于走的空格相同&#xff0c;但一种走了敌人点&#xff0c;另一种没走&#xff0c;算两个方案。。。。sb出题人语文简直是和…

网站的SEO以及它和站长工具的之间秘密

博客迁移没有注意 URL 地址的变化&#xff0c;导致百度和 google 这两只爬虫引擎短时间内找不到路。近段时间研究了下国内最大搜索引擎百度和国际最大搜索引擎google的站长工具&#xff0c;说下感受。 百度的站长工具地址&#xff1a;http://zhanzhang.baidu.com/dashboard/ind…

html 缩略图点击预览,[每天进步一点点~] uni-app 点击图片实现预览图片列表

点击图片&#xff0c;实现预览图片功能&#xff0c;并且可循环预览图片列表&#xff01;image.png一、多张图片预览html代码js代码data(){return {photos:[{ src: 图片路径1},{ src: 图片路径2},{ src: 图片路径3},……]}},methods: {// 预览图片previewImage(index) {let phot…

git ssh拉取代码_阿里云搭建git服务器

一.搭建步骤&#xff0c;分为两步搭建中心仓库自动同步代码到站点目录二.详细步骤如下1.先检查一下服务器上有没有安装gitgit --version如果出现版本号&#xff0c;说明服务器已经安装git&#xff0c;如图所示&#xff1a;2.如果没有版本信息&#xff0c;则先安装git&#xff1…

Django REST framework 序列化

创建一个序列化类 使用序列化有四种方式 使用json模块&#xff0c;完全手写使用django自带的序列化模块 1&#xff0c;# from django.core import serializers 2&#xff0c;# dataserializers.serialize(“json”,book_list)使用REST framework 带的序列化方法&#xff0c…

基于SIMD的AVS整数反变换算法设计与优化

基于SIMD 的AVS 整数反变换算法设计与优化王玲娟&#xff0c;张刚**作者简介&#xff1a;王玲娟&#xff0c;&#xff08;1987-&#xff09;&#xff0c;女&#xff0c;在读硕士&#xff0c;主要研究方向&#xff1a;视频解码算法通信联系人&#xff1a;张刚&#xff0c;&#…

Word -- 列表重新编号

Word -- 列表重新编号office一言&#xff1a;我小心翼翼地灌溉&#xff0c;一日复一日地期待&#xff0c;那么费力&#xff0c;植成参天的乔木&#xff0c;岂愿见你终有一日从容赴死&#xff1f;问题 word 文档早就想解决的一个问题&#xff0c;这次遇到了就上网找解决掉了&…