张伟华-基于DaVinci技术的H.264实现与研究.ppt_第1页
张伟华-基于DaVinci技术的H.264实现与研究.ppt_第2页
张伟华-基于DaVinci技术的H.264实现与研究.ppt_第3页
张伟华-基于DaVinci技术的H.264实现与研究.ppt_第4页
张伟华-基于DaVinci技术的H.264实现与研究.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于DaVinci技术的 H.264实现与研究 075490 张伟华 论文的主要工作 论文围绕H.264算法及DM6446嵌入式平台展开,主要分 为算法研究与平台实现两部分,主要工作如下: 算法研究: 首先简要介绍视频压缩编码的原理,评价标准及以往的视 频压缩编码标准; 然后详细介绍了H.264标准的特点、码流结构及关键技术, 并分析了H.264的学术模型JM13.2; 重点基于JM13.2模型,分析了现有的帧内预测算法,结合 高分辨率视频的编码特点,提出了一种新的快速帧内预测 算法。通过实验验证,该算法在码率与SNR值基本不变的 情况下,编码速度提高了27.8%。 论文的主要工作 平台实现: 首先介绍了常见的DSP芯片和嵌入式系统的基础知识, 分析了DM6446处理器的硬件平台,软件开发架构; 然后概述了H.264在DM6446平台上移植的系统搭建, 算法移植步骤; 最后对X264模型的算法进行简要分析及预处理,重点 研究了X264算法在DSP端的平台移植,简单优化及 ARM端应用程序的构建,DM6446平台的配置等,完成 整个系统的移植。 介绍内容 算法研究: 一. H.264/AVC标准及JM13.2模型实现 二. 基于H.264的高分辨率序列帧内预测算法的改进 平台实现: 三. DM6446嵌入式开发平台 四. H.264在DM6446平台上的移植与实现 一. H.264/AVC标准及JM13.2模型 实现 H.264编码器框架 图1-1 H.264编码器 H.264的核心技术 1)帧内预测 - 空间冗余 2)帧间预测 - 时间冗余 a)块尺寸选择的多样性 (7种) b) 1/4或1/8像素精度的运动估计 c) 多参考帧 3)整数变换与量化 4)熵编码(CABAC及CAVLC) 5)去块效应滤波器 H.264的码流结构 视频序列 - 图像 - 片 - 宏块 - 子块 4. JM13.2模型分析与流程设计 二. 基于H.264的高分辨率序列帧内预测算 法的改进 现有的帧内预测算法 亮度预测有三种: 1)4x4模式,9种预测方向 2)8x8模式,9种预测方向 3)16x16模式,有水平,垂直,DC,及平面4种 色度预测:8x8模式,有4种预测选项,类似于16x16 亮度预测模式 (a) 4x4块及预测参考像素(A-M) (b) 帧内预测模式方向 JM13.2模型中帧内预测的步骤: 1)先进行色度预测,通过计算所有可能模式的SATD值 选择最优模式 2)进行亮度预测 第一步:通过计算率失真值选择最优的Intra4x4模式 第二步:选择最优Intra16x16模式(SATD) 第三步:选择最优Intra8x8模式 (RDO方式) 第四步:计算上述三种最优模式的率失真值,选择最 优弊端:1)候选模式种类多 2)计算 量大 优点:选择的模式准确,编码后码流小 可供改进之处:1)缩减候选模式 2)简化率失真代价函数 2. HD Sequences帧内预测的编码特点 1)不同分辨率序列的块划分方式的不同 结论:随着视频分辨率的增大,4x4的划分采用的概率减小,亮度 分量的预测更倾向于使用8x8和16x16的宏块划分。 表 2-1 不同分辨率序列的块选择比率 序列格式Intra4x4 (%) Intra8x8 (%) Intra16x16 (%) Y -SNR (dB) sward.yuv (60帧) qcif43.4548.727.8338.33 cif23.3856.7319.8940.96 4cif3.8457.2138.9544.09 bigbear.yuv (360帧) qcif59.5028.5711.9242.70 cif42.9635.6321.4143.77 4cif20.8050.3328.8844.68 2)1080p HD sequences的帧内预测 表2-2 a) Intra4x4,Intra8x8及Intra16x16均使用 序列4x4 (%) 8x8 (%) 16x16 (%) Y - SNR (dB) 编码 速度 (fps) 码率 (bits/frame) sward.yuv2.0828.2169.7148.250.039164909.60 king.yuv3.2533.7163.0446.450.037228886.25 vr.yuv1.5944.4353.9746.060.037295581.25 big.yuv13.5545.9340.5140.740.0311176762.98 表2-2 b) 禁用Intra4x4预测 序列 4x4 (%) 8x8 (%) 16x16 (%) Y -SNR 提高/dB 编码 速 度 提高/% 码率 增大/% sward.yuv041.1758.82074.53.8 king.yuv045.2754.73-0.0171.73.8 vr.yuv051.3148.69077.41.6 big.yuv059.8240.18-0.0178.71.1 结论:禁用4x4的候选模式 ,编码速度有很大提高, 码率增大并不显著,同时 PSNR值并不下降。 故在编码1080p及更高分辨 率的视频时,可以去除4x4 的帧内预测模式。 3.帧内预测快速算法 原理:帧内预测所选择的编码划分大小与宏块内部的平 滑度密切相关。 方法: 1)基于上述结论,高清视频序列的帧内预测可以去 除Intra4x4候选模式。 2)提出一种新的快速预测算法,通过计算边界像素 的绝对误差和,提前判定宏块是选用Intra8x8还是 Intra16x16模式进行预测。 图 2-2 16x16宏块的平坦度 Boundary Differences=Diff1+Diff2 ( 式2-1) 图2-3 快速帧内预测算法 通过大量的实验测试可知,当T取值为23时编码性能最优。 4. 系统测试结果 表2-3 快速帧内预测算法的测试结果 序列Intra16x16和Intra8x8预测改进的快速预测 算法 Y - SNR (dB) 速度 (fps) 码率 (bits/frame ) Y -SNR 提高/dB 速度 提高/% 码率 增大/% night.yuv48.250.066171249.79-0.0127.71.3 davinci.yuv40.610.066367532.52-0.0131.61.3 king.yuv41.190.067374627.48-0.0424.41.5 vr.yuv46.060.064300238.00-0.0230.13.4 big.yuv40.730.0561189500.6 7 025.20.4 平均值43.370.064480629.69-0.0227.81.6 实验结果表明:该算法在码率只有少许增加 的情况下,编码速度提高了27.8%,SNR值基本 不变。 三. DM6446嵌入式开发平台 DM6446硬件结构 ARM926JE主处理器标准的操作系统:WinCE、Linux,应用 更加灵活 C64x+ DSP子处理器可编程:视频编解码算法更灵活 VICP视频/图像协处理器硬件实现运算密集处理:减轻DSP处理 的负担 VPSS视频处理子系统:包括视频处理前端(VPFE)和视频处 理后端(VPBE),分别用于外部图像输入设备和视频输出设备 。 片上外设组:存储类外设:本地存储 互联类外设:网络连接 通用类外设:接口片外外设 图3-1 DM6446功能结构图 视频采集编码输出系统的总体搭建 图3-2 H.264编解码软件设计框图 视频采集编码输出系统总体如图所示,主要包括视频 采集模块,DDR2存储模块,视频信号输出模块。 DaVinci软件开发系统 ARM SubsystemDSP Subsystem Transport ARM主处理器: 1)运行MontaVista Linux、 WinCE 2)用户用下列3个APIs来构建自 己的应用程序:EPSI、VISA、xDM DSP从处理器: 实现视频、图像处理算法 二者通信: 用DSP/BIOS LINK来实现 图3-3 DaVinci软件架构 四. H.264在DM6446平台上的移植与 实现 算法移植步骤 图4-1 基于DM6446的H.264算法移植步骤 第一步,基于CCS环境修改X264算法使之符合DSP C64x+平台 的特性,编译生成一个编码算法的库文件*.lib(等同于Linux环境下 的*.a64P,直接在Linux环境下修改文件后缀名也可)。 第二步,生成一个在DSP上运行的可执行程序*.x64P(即.out文件 ),也就是DSP Server。 第三步,根据DSP Server的名字及其中包含的X264编码算法创 建Codec Engine的配置文件*.cfg。这个文件定义Engine的不同配置 ,包括Engine的名字、每个Engine里包括的codecs及每个codec运 行在ARM还是DSP侧等等。 最后,应用工程师收到不同的codec包、DSP Server和Engine配 置文件*.cfg,把自己的应用程序通过编译、链接,最终生成ARM侧 可执行文件。 其中重点在于第一步DSP端X264算法的移植,与最后一步ARM 端应用程序的构建,下面将做重点介绍。 X264算法分析 1)移植算法选择 JM、X264、T264 2)X264算法分析 数据的读入与存储、数据的压缩处理(参数初始化、 以宏块为单位进行编码、编码后数据保存)、码流的 输出 3)预处理 去除汇编优化、界面显示、解码模块及工程的整合 图4-2 X264编码流程图 3. DSP端的平台移植与优化 开发环境:CCS3.3 移植需要修改的算法: 1)头文件未定义 2)数据类型的不同 3)对非标准C的代码进行修改 4)数据对齐的问题 5)部分数据结构的初始化 6)部分函数的未定义问题 7)字节对齐的问题 8)配置X264算法的参数读取方式 字节对齐问题举例说明: 在C64x+ DSP中,寄存器都是32位大小,一次同时处理32bit数据。 如果程序中的存储地址不是合法的32位字地址,在程序装入数据时,ldw 指令会对这个地址自动进行调整使之成为一个合法的字地址。 例如下面程序: #include unsigned int a; unsigned char test8 = 0x11,0x22,0x00,0x00,0x00,0x00,0x77,0x77,0x88; void main() a = *( unsigned int*)(test+2); printf(“%x”,b); 在CCS下运行结果为00002211,而VC下为00000000,因为test+2在 CCS中并非合法的地址,所以地址test+1,test+2,test+3,test+4都会 在程序装入时校准到test。 CCS3.3开发平台的设置: 1)变量的存取方式调整 2)“序”的差别 3)存储空间的分配 DSP端平台优化方面的简单措施: 1)项目级优化 2)C程序级优化 a)使用内联函数 b)循环展开 c)使用逻辑运算代替乘除运算 d)使用尽量小的数据类型 e)减小存储器相关性. 3)汇编级优化(本论文并未涉及) 仿真测试 X264算法DSP端移植完成后,对标准的foreman QCIF( 176x144)序列进行测试,编码采用Main Profile,熵编码同时采 用CABAC和CAVLC方式,PSNR随编码帧数和码流变化的效果分别 如图所示。 图4-3 PSNR随编码帧数变化测试结果图 表4-1 运动强度不同的序列测试结 果 序列运动强度PSNR (dB) bitrate (kb/s) CPU.Total.Incl.Total (Encode_frame函数) containerLow39.447583.151424171891 foremanmedium39.820610.771601938580 mobilemedium35.885595.231734151182 stefanhigh36.334934.231796240764 ARM端应用程序的创建 图4-4 ARM端应用程序的线程 1)主线程 图4-5 主线程的流程 主线程的工作: 1)执行必须的初始化工作 2)解析命令行参数,据此创建视 频线程 3)执行Codec Engine及TraceUtil 模块的初始化,以便跟踪 4)打开用来同步线程初始化的 Rendezvous的目标 5)建立视频线程。 6)调用控制线程的主函数 ctrlThrFxn(),主线程变成控制线 程。 2)视频线程 图5-8 视频线程的初始化流程 视频线程从视频采集驱动器 开辟一个帧缓存器,并用X264 算法对其编码;用一个显示线程 来“预览”要编码的数据,并用另 一个写线程将已经编码的帧写入 Linux文件系统。使用专门的I/O 线程,最大化ARM和DSP核的使 用 。 总结与展望 研究工作总结 本论文对H.264的编码技术进行研究,对高分辨率视频序列的 帧内预测算法进行了优化;最终把X264编码器移植到DM6446 平台上,通过DSP端算法的修改,ARM端应用程序的构建,DSP 端和ARM端通信的Ser

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论