已阅读5页,还剩68页未读, 继续免费阅读
(信号与信息处理专业论文)dvcpro+hd解码算法的研究及其gpu并行算法的实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上海交通大学工学硕士学位论文 摘要 第 i 页 dvcpro hd 解码算法的研究及其解码算法的研究及其 gpu 并行算法的实现并行算法的实现 摘摘 要 要 dvcpro hd 是 smpte 制定的视频压缩标准,它是 dv 系列标准中 的高清标准,由于它特别适合编辑,所以在目前广播电影电视的前端编 辑和后期处理中得到了广泛的应用。为了方便制作和处理, pc 平台上 需要有实时解码器,而在现有的开源解码器中,仅有 dv 标清的解码器, 一些优化较好的 dvcpro hd 的解码器,如 main concept 提供的解码器 没有开源的程序,不能适应灵活的应用。 现代的显示芯片已经具有高度的可程序化能力,由于显示芯片通常 具有相当高的内存带宽,以及大量的执行单元,因此利用显示芯片进行 并行运算能取得比较好的效果。nvidia 提供了一套类似于 c 语言的开 发环境 cuda,为 gpu 编程提供了极大的便利。 本文根据 smpte 公布的 dvcpro hd 的标准,比较研究了实际应用 中松下 hvx 200 摄像机产生的 dvcpro hd 码流与标准码流的差异, 并 在 pc 平台上设计实现了适合于 hvx 200 产生的 dvcpro hd 码流的 c 语言解码器,同时对其中计算量较大 idct 模块进行了汇编优化。 上海交通大学工学硕士学位论文 摘要 第 ii 页 为了实现 dvcpro hd 的实时解码, 本文利用 gpu 强大的并行处理 能力,在 cuda 平台下,对 dvcpro hd 的帧内视频段进行并行处理, 实验证明引用了 gpu 的并行运算后,解码速度可达 50fps,能满足实时 应用的需求。 关键词:关键词:gpu,cuda,dvcpro hd,并行解码 上海交通大学工程硕士学位论文 abstract 第 iii 页 decoder algorithm of dvcpro hd research and realization of gpu parallel algorithm abstract dvcpro hd is a video compression standard made by smpte, it is the hd standard in the dv serial standards, it is widely used in the movie and tv broadcasting because it is suitable for edit. we need a real-time decoder on a pc platform for non-linear edit and other usage. in the open source decoders, only sd decoders are provided. some well optimized hd decoders such as decoder provided by main concept does not have source code, which would not meet the applications. nowadays, display chips have high parallel process ability, and own very high bandwidth in memory, and large mounts of execute units, so we can have a well performance in parallel processing. nvidia has provided a development environment cuda, which makes it convenient to program on gpu. in this article, a video decoder of dvcpro hd is provided. after research on the video files made by panasonic hvx 200 and the standard 上海交通大学工程硕士学位论文 abstract 第 iv 页 made by smpte, we provide a decoder of dvcpro hd suitable for hvx200 on the pc platform. in addition, assembly optimizes on idct part of the decoder is taken on and have a well result. in order to get a real-time decoder of dvcpro hd, the powerful parallel process ability of gpu is utilized. in the cuda platform, we have a parallel process on the video segments in a video frame, the experiments show that parallel decoder on gpu has a well performance, the decode frame rate reaches about 50 per second, it is a real-time decoder and would meet the demands in application. keywords: gpu,cuda,dvcpro hd,parallel decoder 上海交通大学工学硕士学位论文 第 7 页 第一章第一章 概述概述 1.1 引言引言 随着数字时代的来临,多媒体技术得到了日新月异的发展,人们对它的需求 日益增加。在多媒体技术的各个应用领域中,视频信号占有相当重要的地位。但 是,未经压缩的原始图像数据并不适合存储和传输。例如,未压缩的 yuv4201 格式的标清视频(720576)图像序列以 25 帧/s 传播,其码流速率为 118.6mb/s, 若用 650 mb 的光盘存储该视频信号,仅仅能播放 44 秒钟,而 yuv422 的无压 缩高清视频,则只能存放 8.8 秒钟。对于压缩的视频,要实现它的广泛的应用, 对视频的实时解码播放是一个比较基本的要求。 通常来讲,广播电影电视前端分为前期、后期、传输三个环节。 “前期” (production)主要是指用摄像机采集音视频信号,记录在相应的介 质上;或者在演播室中通过相应的分配、处理设备将节目信号送到后期制作系统 或传输播出系统;包括摄像机、录像机、音视频分配器,等等。 “后期” (post-production)主要指对节目的制作。从早期的线性编辑、到近 期的非线性编辑、网络化非线性编辑、3d 动漫创作、后期合作、媒体资产管理 系统、视频服务器、转码处理,以及自动播出等均属于广义的“后期”范畴。 在模拟电视时代, “传输” (transmission)前端系统主要包括变频调制、功 放、发射天线等;在数字电视时代,主要包括:信源编码器、传输流复用器、信 道调制器、ca 系统等。 数字电视传输主要采用 mpeg-22标准,新出现的 h.2643和中国标准的 avs4技术也得到了小范围的应用,并有扩大应用范围的趋势。 在前期和后期系统中,dv5系列格式得到了最广泛的应用。 dv 系列分为标清的 dv25 和 dv50,以及高清标准 dvcpro hd6,目前 标清 dv25 和 dv50 已有开源的解码器,开源解码库 ffmpeg7已经提供了对标 清 dv 的实现,但没有 dvcpro hd 的支持,main concept8公司以库的形式提 上海交通大学工学硕士学位论文 第 8 页 供了 dvcpro hd 的解码器,不过在实际的应用中缺少灵活性。 1.2 dvcpro hd 的标准简介的标准简介 在 dv 广泛应用的今天,人们对高清 dv 的需求越来越大,各大公司都展开 了对 dvcpro hd 的研究,dvcpro hd 的基本解码流程如图 1-1 所示, 熵解码反量化idct重采样还原图像 原始图像重采样dct量化熵编码 压缩帧量化表 图 1-1 dvcpro hd 编解码框图 figure 1-1 codec flow of dvcpro hd 离散余弦变换采用了两种变换模式, 即 8x8 和 2x4x8 的 dct9变换, 量化过 程为了使量化后的数据编码长度最少,且尽量减小对图像质量的影响,故设计了 对于不同的数据有不同的量化步长。z 型扫描和游程编码和上述的情况一样,为 了使编码的数据更少而采用的方法。对于熵编码部分,dvcpro hd 给出了一 个编码的码表,在编解码时对照查找相应的码表即可得到码字,对比 huffman10 编码这种方法可以加快编解码的速度。dvcpro hd 的特点是没有采用帧间的 预测,这个特点也十分的便于编辑,这样对广播电影电视的前端的处理带来的方 便。 1.3 gpu 简介简介 gpu11有强大的并行处理以及浮点运算能力, 并且它的内部带宽很宽, 很适 宜于做大规模的运算。一般来说,视频编解码的运算量比较大,要使它在 gpu 上有很好的处理效果,必须要做大规模的并行处理,而且对于不同的视频标准, 上海交通大学工学硕士学位论文 第 9 页 要有不同的并行处理方法。 为了便于 gpu 上进行开发,nvidia 提供了 cuda12开发环境,方便了较 为复杂的程序比如视频编解码程序在 gpu 上的实现。通过对 dvcpro hd 视频 标准的分析可以知道 dvcpro hd 的视频段(video segment)比较适宜于并行 处理。 1.4 课题提出背景和意义课题提出背景和意义 本文来自与松下合作的项目 p2 writer, 该项目自主研发用于拍摄记录现场的 多媒体转存设备。该设备可以将记录在松下公司的 p2 卡上的 dv、dvcpro、 dvcpro50、 dvcpro hd、avci-50、avci-10014等多种格式的音频和视频 转存至廉价的可提供 raid115冗余数据保护的大容量硬盘中,也可以进行片段 浏览、播放、格式化、网络共享等操作。在从传统的磁带摄影编辑工作流程到全 新的无带化工作流程的转变中, 该设备凭着低廉且高可靠性的优势将会对无带化 工作流程的推广与发展起到积极的促进作用。 该项目中比较重要的一项工作是提供 dv 系列的实时解码器,目前标清的 dv 与 dv50 可以利用已有的开源解码器, 而高清 dvcpro hd 则需要提供实时 解码器,本文即完成了这样的工作。 1.5 本文结构及研究成果本文结构及研究成果 本文的结构如下: 第一章是概述,介绍了 dv 系列标准的现状和应用范围,以及 gpu 的特点。 阐述了课题提出的背景和意义。 第二章详细分析了 dv 系列标准的文件格式和编解码过程,提出了 dvcpr o hd 解码器的设计方案,并在 pc 平台上进行 c 语言实现。并对 idct 模块进 行 x86 汇编优化。 第三章介绍了 gpu 的结构,处理单元以及通用计算方法,分析了视频并行 处理的算法,以及对不同的视频标准所采用的不同方法。 上海交通大学工学硕士学位论文 第 10 页 第四章提出了两种利用 gpu 在 cuda 环境下对 dvcpro hd 并行解码的 算法,通过实验证明,两种算法都能实现实时解码。 第五章对全文工作进行总结,指出了 gpu 用于视频编解码的发展方向。 本文利用 gpu 对 dvcpro hd 实现了并行的解码, 并且对其它视频的并行 的算法进行了一些研究, 为今后其它视频标准用 gpu 进行并行处理打下了基础。 主要贡献主要集中在以下两点: 第一,本文对 dvcpro hd 进行了详细的分析,并根据 smpte 的 s370m 标准设计实现 dvcpro hd 的解码器,且在 x86 系统下对它进行了汇编优化; 第二,利用 gpu 在 cuda 的环境下对编写的解码器进行了改造,提出了视 频解码的并行算法,并将它用于解码器中,在用 cuda 解码的过程中提出了两 种方案,根据实验结果选择了较优的一种,最后将处理的结果与 cpu 下处理的 结果进行了对比,实验证明了 gpu 并行解码能大大提高解码的速度,能满足实 时解码的需求。 上海交通大学工学硕士学位论文 第 11 页 第二章第二章 dvcpro hd 标准的研究与解码器的实现标准的研究与解码器的实现 2.1 引言引言 本章研究 dv 系列标准,首先给出 dv 系列标准的帧结构,并分析了帧结构 里序列,通道的概念,随后说明了宏块与 dif 块的对应关系以及解码后宏块的 位置重排。本文设计并实现了 dvcpro hd 的解码器的框图,说明了解码器的 设计思想和框图中各个模块的作用, 最后在 x86 平台下对 idct 模块进行汇编优 化,实验证明能正确解码 hvx 200 产生的码流。 2.2 dv 标准的介绍标准的介绍 2.2.1 格式分类与简介格式分类与简介 dv 格式一共有三种:dv25,dv50,dv100,其最主要的区别之一就是码 率,分别为 25mb/s、50mb/s、100mb/s。其中,dv25、dv50 分别用于 panasonic 公司的 dvcpro 系列摄录像机和 dvcpro 50 标清摄录像机,dv100 用于 panasonic 公司的 dvcpro hd 系列摄录像机。索尼公司的 dvcam、hdcam、 数字 betacam、imx,jvc 公司的 d-9,及多种家用 dv 格式,等均与之类似。 如表 2-1 所示: 表 2-1 dv 系列格式对比表 格式 系统 采样方式 图像大小 场频 62550i 4:1:1 720 x 576 50-hz dv25 52560i 4:1:1 720 x 480 59.94-hz 62550i 4:2:2 720 x 576 50-hz dv50 52560i 4:2:2 720 x 480 59.94-hz 108060i 4:2:2 1920 x 1080 59.94-hz 108050i 4:2:2 1920 x 1080 50-hz 72060p 4:2:2 1280 x 720 59.94-hz dv100 72050p 4:2:2 1280 x 720 50-hz 按照从顶自下的顺序,dv 数据流的层级结构如下: 上海交通大学工学硕士学位论文 第 12 页 帧(frame) 通道(channel) 序列(sequence) 视频段(video segment) dif 块(dif block) 2.2.2 dv 格式的帧结构 格式的帧结构 2.2.2.1 dv25 的帧结构的帧结构 dv25 只有一个通道,对于 525/60 的系统,一个通道可以分为 10 个序列, 而对于 625/50 的系统, 它可以分为 12 个序列, 同时由于 525/60 每秒解码 30 帧, 625/50 系统每秒解码为 25 帧,这样保证了两种系统的码流速率是相同的。dv25 的帧结构如图 2-1 所示: 图 2-1 dv25 的帧结构 figure 2-1 frame structure of dv25 上海交通大学工学硕士学位论文 第 13 页 2.2.2.2 dv50 的帧结构的帧结构 如图 2-2,在帧结构上它对于 dv25 而言只是多了一个通道,场频与 dv25 一样,因此它的码流速率多了一倍即 50mb/s。525/60 与 625/50 系统的区别跟 dv25 一样。 图 2-2 dv50 的帧结构 figure 2-2 frame structure of dv50 2.2.2.3 dv100 的帧结构的帧结构 如图 2-3,可以看出它由四个通道组成,因此它的码流速率为 100mb/s,50i 系统和 60i 系统的区别跟 dv25,dv50 一样。 上海交通大学工学硕士学位论文 第 14 页 图 2-3 dv100 的帧结构 figure 2-3 frame structure of dv100 2.2.3 序列的结构序列的结构 上面介绍了它们的帧结构,也提到了 50i 系统和 60i 系统的区别就是每个通 道划分的序列数不同,而对于不同系统划分出来的序列,它们的结构是一样的。 序列的结构如图 2-4 所示: 上海交通大学工学硕士学位论文 第 15 页 图 2-4 序列的结构 figure 2-4 structure of sequence 从图中可以看出,一个序列由 150 个 dif 块组成,其中包含 6 个辅助信息 块,即图中第一行的六个块,9 个音频块即第二行到第十行每一行的第一个块, 和 135 个视频 dif 块,即第二行到第十行除音频块以外的块。 2.2.4 宏块与宏块与 dif 块块 2.2.4.1 dv25 的宏块与视频的宏块与视频 dif 块块 dif 块对应着压缩后的宏块(macro block),对于 dv25、dv50、dv100 不同 上海交通大学工学硕士学位论文 第 16 页 格式的 dif 块,其长度统一为 80 个字节,而内部结构是不同的。宏块是组成视 频图像的最基本的单元,而 dif 块是帧结构里的概念。宏块的结构与视频 dif 块的结构如图 2-5 所示,宏块结构(六个 dct 块,其中四个亮度块,两个色度 块) : 图 2-5 4:1:1 压缩的宏块和 dct 块 figure 2-5 4:1:1 compressed macro block and dct block dif 块有三种,即头信息 dif 块,音频 dif 块和视频 dif 块, 视频 dif 块的结构如图 2-6 所示(可以看到六个 dct 块压缩后的位置),前 三个字节是统一定义的。 图 2-6 4:1:1 dif 块的排列 figure 2-6 arrangement of 4:1:1 dif block 其中,mo 定义 dct 变换的模式(参见 2.1.5.1) , c0、c1 表示量化类别(参见 2.1.5.3) 。 上海交通大学工学硕士学位论文 第 17 页 2.2.4.2 dv50 的宏块与视频的宏块与视频 dif 块块 dv50 的宏块结构如图 2-7 所示,它有两个是亮度块,两个是色度块: 图 2-7 4:2:2 格式压缩的宏块和 dct 块 figure 2-7 4:2:2 macro block and dct block 将四个 dct 块压缩成一个 dif 块,它的结构如图 2-8 中可以看出,它的结 构和 dv25 差不多,只是它只压缩了四个 dct 块,与 dv25 相比,dif 块的二 号位和四号位是空的,从这里可以看出 dv50 的压缩效率比 dv25 要低,因为它 的一个 dif 块只压缩了四个 dct 块。 图 2-8 dv50 的 4:2:2 格式压缩的 dif 块的排列 figure 2-8 arrangement of 4:2:2 dif in dv50 上海交通大学工学硕士学位论文 第 18 页 2.2.4.3 dv100 的宏块和的宏块和 dif 块块 dv100 的宏块结构(八个 dct 块)如下图,对于 1080i 的系统来说,它的 底层宏块的结构有所不同,如图 2-9 右边所示,而对于 720p 的系统,它只有一 种宏块结构,不过 dv100 的一个宏块都是由八个 dct 块组成。 图 2-9 1080i 系统的宏块和 dct 块 figure 2-9 macro block and dct block in 1080i system 图 2-10 720p 系统的宏块和 dct 块 figure 2-10 macro block and dct block in 720p system 将八个 dct 块压缩成一个 dif 块,它的结构如图 2-11 所示: 上海交通大学工学硕士学位论文 第 19 页 图 2-11 dv100 的 4:2:2 格式的 dif 块的排列 figure 2-11 arrangement for 4:2;2 dif block in dv100 与 dv25 和 dv50 比较可以看出 dv100 的压缩效率是最高的, 它的一个 dif 块里压缩了八个 dct 块,但是这里也有它的一些缺点,由于这里采用的是变长 编码,而且压缩后的长度是固定的(8 个或者 10 个字节) ,它有可能不能将所有 的数进行编码,这里采用的是丢弃的方式,按之字扫描的顺序,后面的数不能进 行编码的会被丢弃,也就是说 dct 的高频部分可能在编码后被丢弃,这样会造 成图像细节的损失。 2.2.5 宏块的压缩宏块的压缩 上面提到了宏块以及宏块压缩后 dif 块的结构,这里主要介绍一下宏块压 缩成 dif 块的步骤。总的来说,要进行四个步骤的处理,即 dct、加权,量化, 变长编码,下面来具体对四个步骤进行介绍。 2.2.5.1 dct 变换变换 dv25 与 dv50 有两种 dct 变换的方式,即 8-8-dct 和 2-4-8-dct。 8-8-dct: 77 , , , , , 00 ( , )( ) ( )( , )cos(21)/16)cos(21)/16) i j k li j k l yx ch vc v c hpx yv yh x = =+ (2-1) 8-8-dct 的反变换: 上海交通大学工学硕士学位论文 第 20 页 77 , , , , , 00 ( , )( ( ) ( )( , )cos(21)/16)cos(21)/16) i j k li j k l vh px yc v c h ch vvyhx = =+ (2-2) 其中: ( )0.5/2c h = 对于 0h = ( )0.5c h = 对于 1,2,.,7h = ( )0.5/2c v = 对于 0v = ( )0.5c v = 对于 1,2,.,7v = 2-4-8-dct: 37 , , , , , , , 00 ( , )( ) ( )( ,2 )( ,21) i j k li j k li j k l zx ch uc u c hpxzpxzkc = =+ (2-3) 37 , , , , , , , 00 ( ,4)( ) ( )( ,2 )( ,21) i j k li j k li j k l zx ch uc u c hpxzpxzkc = +=+ (2-4) 2-4-8-dct的反变换: 37 , , , , , , , 00 ( ,2 )( ( ) ( )( , )( ,4) i j k li j k li j k l uh pxzc u c h ch uch ukc = =+ (2-5) 37 , , , , , , , 00 ( ,21)( ( ) ( )( , )( ,4) i j k li j k li j k l uh pxzc u c h ch uch ukc = +=+ (2-6) 其中 0,.,3u = ( /2)zint y= cos(21)/8)cos(21)/16)kcuzhx=+ ( )0.5/2c h = 对于 0h = ( )0.5c h = 对于 1,2,.,7h = ( )0.5/2c v = 对于 0v = ( )0.5c v = 对于 1,2,.,7v = 上海交通大学工学硕士学位论文 第 21 页 dv100也有两种dct方式,即帧dct和场dct。帧dct即8-8-dct,场 dct即要先分出它的奇场和偶场再做8-8-dct变换,如图2-12所示: 图 2-12 场 dct 的重排列 figure 2-12 re-arranged field dct 2.2.5.2 加权加权 dv25和dv50的权重可以用下列公式来计算: 8-8-dct mode ( , )1/4w h v = 对于0h =且0v = ( , )( ) ( )/2w h vw h w v= h,v为其它值 2-4-8- dct mode ( , )1/4w h v = 对于0h =且0v= ( , )( ) (2 )/2w h vw h wv= 对于4v ( , )( ) (2(4)/2w h vw h wv= h,v取其它值时 其中: (0)1w= (1)4/(472)wcscscs= 上海交通大学工学硕士学位论文 第 22 页 (2)4/(26)wcscs= (3)1/(25)wcs= (4)7/8w= (5)4/3wcscs= (6)4/2wcscs= (7)4/1wcscs= 对于cos(/16)csmm= 1,2,.,7m = dv100的dct权重以矩阵的形式给出,矩阵如图2-13和图2-14: 图 2-13 dv100 亮度信号的权重矩阵 figure 2-13 weight matrix of dv100 luminal signal 图 2-14 dv100 色度信号的权重矩阵 figure 2-14 weight matrix of dv100 color signal 上海交通大学工学硕士学位论文 第 23 页 2.2.5.3 量化量化 对于dv25和dv50, 它们的量化过程是一样的, 量化步长由三个量来决定, 即量化数字(qno)、在dct块中的区号以及类别号,这个量化过程可以用一张 量化表来表示,量化表如表2-2所示: 表 2-2 dv25 与 dv50 的量化表 其中qno位于dif块的第四个字节低四位,即每个dif块会有一个qno, 而类别号(class number)位于压缩dct块的第二个字节 (可以参考dif块的结构 图),区位号(area number)的确定可以参考图2-15: 上海交通大学工学硕士学位论文 第 24 页 图 2-15 dct 的区域号 figure 2-15 dct area number dv100的量化比dv25和dv50要简单一些,它的量化步长仅由量化数字 (qno)和类别号(class number)来决定,具体量化步长确定可以参照表2-3: 表 2-3 dv100 的量化步长表 2.2.5.4 变长编码变长编码(vlc) 变长编码对于 dv25,dv50 和 dv100 都是一样的,由于做完 dct 后的矩阵是稀疏矩 阵,因此编码是由跳转长度(run length)和幅度(amplitude)来确定的。这里的跳转长度是待 编码数与上一个不为零的数在之字扫描中的距离, 幅度是指量化后的数。 它们的对应关系如 表 2-4 所示: 上海交通大学工学硕士学位论文 第 25 页 表 2-4 vlc 的码表 2.2.6 位置重排位置重排 在dv系列格式中,一幅压缩的视频图像是由许多dif块组成,而这些dif 块并不是按空间先后顺序来排列, 要遵循一定的特殊规定。 这里有两个重要概念: 超级块(super block)和视频段(video segment)。 超级块是由27个宏块组成,随超级块的位置和视频格式的不同它的结构有 多种变化,这里就不一一列举了。以dv25,625/50为例:一帧视频图像是由60 个超级块组成的,它们的组成方式如图2-16所示: 上海交通大学工学硕士学位论文 第 26 页 图 2-16 视频图像的组成方式 figure 2-16 arrangement for video picture 这里可以看出有三种形态的超级块,它们的结构如图2-17所示,从图中可 以看出宏块在其中排列的方式是不一样的。 : 图 2-17 超级块的结构 figure 2-17 structure of superblocks 上海交通大学工学硕士学位论文 第 27 页 视频段(video segment)是压缩域位置重排的基本单位,它由五个相邻的视频 dif块组成。参见图2-4中,每一行dif块,由一个音频dif块和三个视频段组 成。 每个视频dif块在解码之后,所对应原始域的坐标由超级块的垂直坐标、 超级块的水平坐标、以及宏块在超级块中的序号这三个参数组合得出。一个视频 段中,5个相邻的视频dif块解码之后所对应的原始域位置坐标依次按如下公式 计算(坐标表示方法为(超级块垂直坐标,超级块水平坐标,宏块序号) ) : (a, 2, k) 其中 a = (i + 2m) mod n (b, 1, k) 其中 b = (i + 6m) mod n (c, 3, k) 其中 c = (i + 8m) mod n (d, 0, k) 其中 d = (i + 0) mod n (e, 4, k) 其中 e = (i + 4m) mod n 其中,a,b,c,d,e为超级块的垂直坐标(由图2-17标出) ; n 为视频图像中垂直的超级块数,对于dv25,62550系统来说,n为12; i为序列(sequence)的序号(序列的总数与超级块的行数相同) 。 m参数在不同的格式中分别有不同的定义,在dv25,625/50系统中为1; k 是宏块在超级块中的序号,k = 0, ., 26 2.2.7 dv 标准的应用标准的应用 dvcpro格式是松下公司在家用dv格式基础上开发的一种专业级数字录 像机格式。用于标准清晰度电视广播制式的模式有两种,即dvcpro-25模式和 dvcpro-50模式。 dvcpro-p是为480p格式的摄录制作而设计, 也即通常所谓的 “增强电视” 。 几年前,增强电视在美国等市场得到较广泛应用。近年来,由于高清的实用化和 普及应用, “增强电视”逐渐退出历史舞台。 上海交通大学工学硕士学位论文 第 28 页 表 2-5 dvcpro 系列压缩格式比较 图 2-18 松下公司系列产品应用领域对照 figure 2-18 application fields for panasonic products 在dvcpro-25模式中,视频信号一律采用4:1:1取样,8bit量化,采用 帧内5:1数据压缩(4.987:1)视频数据率约为25mbps。 在dvcpro-50模式中,视频采用4:2:2取样,8bit量化,采用帧内3.3: 1数据压缩(3.325:1)视频数据率约为50mbps。 dvcpro-25可记录两路数字音频信号,dvcpro-50可记录四路数字音频 上海交通大学工学硕士学位论文 第 29 页 信号。每路音频信号的取样频率都为48khz,16bit量化。dvcpro-25 机,在 模拟分量输入, 模拟分量输出时,y信号带宽5.5mhz, 色差信号带宽为1.3mhz, s/n都为55db,视频录放质量不如digital-s格式,特别时色差信号的质量要更 差一些。而 dvcpro50机的视频录放质量和digital-s11相同。 对于625/50制式, 上鼓每秒旋转150圈,dvcpro25一帧记录12条磁迹。 dvcpro50一帧记录24条磁迹。磁迹宽度都为18m,磁迹间无保护带,相 邻磁迹方位角20。dvcpro系列格式使用1/4英寸(6.35) 涂敷金属磁 带(mp) 。带盒尺寸有标准型(1257814.6)和中型(97.564.5 14.6)两种。对于dvcpro25标准型可记录123分钟,中型可记录63 分钟。dvcpro格式的最大优点是:带盒小,机芯小,磁鼓小,体积小,便于 生产,重量轻和机动灵活的一体化摄录机。另外,dvcpro25模式可以重放 家用dv格式的节目带(对dv小盒带要加带盒适配器) ,dvcpro50能兼容 重放dvcpro25模式的节目带。因机型体积小,可以用便携式编辑机现场采 访编辑,经过5:1压缩的数字信号,能按原样或进行近一步压缩后,通过数字 或模拟电话线路传出去。 dvcpro倾斜磁迹与dv相同, 结构也相同。 与dv格式的相比,dvcpro-25 磁迹宽度是18m,比dv増宽8m。在保证记录密度足够高的前提下,为重放 与插入编辑的磁迹跟踪提供了更大的容差。同时也解决了磁带灵敏度低的问题。 另外,dvcpro格式比dv格式多了两条纵向磁迹(cue、ctl) 。dvcpro格 式由于磁鼓小,其上面无法安装dt磁头。同时,重放磁头未设计成像digital-s 格式那样的提前拾取磁带上的信号,所以无预读功能。 dvcpro-hd(d-12)采用8/10 bits 4:2:2采样。支持两种dct变换模 式:88帧dct和88场dct。当两场的差别较小时,采用帧内模式;当两 场区别较大时, 采用场内dct模式。 对于1080/60i、1080/50i、720/60p和720/50p, 分别使用三组不同的亮度和色度量化矩阵。 在进行dct变换之前,需要首先进行水平方向的亚抽样(sub-sampling)。对 于1080/60i和1080/50i制式, 水平方向的1920个亮度点分别被重新采样为1280 和1440个象素点,水平方向的960个色度点分别被重新采样为640和720个象 素点;对于720/60p和720/50p制式,水平方向的1280个亮度点被亚采样为960 上海交通大学工学硕士学位论文 第 30 页 个点,640个色度点被亚采样为480个点。整体的功能框图如图2-19所示: 图 2-19 dvcpro-hd 格式压缩功能框图 figure 2-19 compress block for dvcpro hd 2.3 解码器的设计与实现解码器的设计与实现 为了使解码器获得更好的扩展性,可以大致将其设计成为六个模块:识别和 读取模块、解码调度模块、dct模块、编解码模块、像素输出和处理模块、比 特数据读取模块。而解码器的调试也是工作是的重点部分,需要对标准有着很深 刻的理解,解码器的各个模块如图2-20所示,它主要分为视频格式识别模块、 解码调度模块、核心解码模块、比特读取模块、dct const char *long_name; int priv_data_size; int (*read_probe)(probedata *); int (*read_header)(struct formatcontext *, formatparameters *ap); 上海交通大学工学硕士学位论文 第 32 页 int (*read_packet)(struct formatcontext *, packet *pkt); int (*read_close)(struct formatcontext *); int (*read_seek)(struct formatcontext *, int stream_index, int64_t timestamp, int flags); int64_t (*read_timestamp)(struct formatcontext *s, int stream_index, int64_t *pos, int64_t pos_limit); int flags; const char *extensions; int value; struct inputformat *next; inputformat; 如上面的结构体,里面的函数指针中,read_header是读取视频文件头的函 数,read_packet是在解码过程中读取视频文件帧的函数,read_close是关闭打开 的视频文件,表示读取结束。函数read_seek是按给定的索引读取视频帧, read_timestamp是读取时间戳,不同的视频格式对这几个函数指针有不同的初始 化,这样方便了在调用上述函数的时候可以使用同一函数指针。 2. dct模块 把它单独作为一个模块是因为它是最影响速度的模块,对解码器的优化,它 是很重要的一个部分, 还有一个原因是绝大部分的视频标准都会用到dct变换, 因此把它单独作为一个模块可以加强解码器的扩展性。 在不同的平台上的优化工 作也可以单独对它进行,只要接口不变,对其它模块不会构成影响。 3. 编解码模块 这个模块是解码器的核心部分,它需要根据具体的标准来编写,这里面也有 几个函数指针,不同的视频标准会有不同的初始化函数、编解码函数。 上海交通大学工学硕士学位论文 第 33 页 typedef struct codec const char *name; enum codectype type; enum codecid id; int priv_data_size; int (*init)(codeccontext *); int (*encode)(codeccontext *, uint8_t *buf, int buf_size, void *data); int (*close)(codeccontext *); int (*decode)(codeccontext *, void *outdata, int *outdata_size, uint8_t *buf, int buf_size); int capabilities; struct codec *next; void (*flush)(codeccontext *); const rational *supported_framerates; const enum pixelformat *pix_fmts; codec; 在解码dvcpro hd时,它的几个函数指针都用相应的dvcpro hd的函 数进行初始化。如初始化函数init,编码函数encode,以及解码函数decode。把 codec结构体中所有的量初始化以后,整个解码器即可用于解码。 dvcpro hd的解码可以分为几个层次,最上层以帧为单位进行解码,再往 下便是中间的序列层,由于dvcpro hd中视频段(video segment)的概念比 较重要,最终宏块的位置安放的算法也是以它为单元来进行,因此第三个层次就 是视频段层次, 将一帧图像可以按照压缩域的顺序按照视频的格式将它分成若干 个视频段来进行解码。第四个层次便是视频段里的dif块的解码,以及dif块 解码为宏块后,宏块的位置安放。 在这其中,宏块的解码的过程可以单独作为一个小的部分来完成,这样加强 了它的独立性,也更符合标准的做法。 对于不同标准的解码器,只需要更换编解码模块即可,它可以使解码器的扩 展更加的容易,也为调试带来了便利。 4. 像素输出和处理模块 上海交通大学工学硕士学位论文 第 34 页 dvcpro hd编解码需要进行采样,如果需要把解码的图片输出,或者把编 码的图片要进行rgb到yuv的转换,便可以使用此模块,它能提供各种像素 格式间的转换,以及像素的采样变换。 5. 比特数据读取模块 它主要负责读取文件中的信息,读取的最小单位是一个比特,要解码的过程 中通常会很频繁的调用比特读取函数,按照标准的要求能够顺序的读取数据信 息,并且能够保存当前的位置,以便后面能够正确的读取相应的数据。比特读取 模块的设计如下: typedef struct getbitcontext const uint8_t *buffer, *buffer_end; int index; getbitcontext; 在getbitcontext中,buffer用于存储数据,buffer_end用于批示数据缓存的 尾部,index是表示当前数据指针。 2.3.2 解码器的调试解码器的调试 解码器编写好以后应该按各个模块逐个调试, 根据每个模块的特点来设计它 的调试的方法,以便可以快速的调试成功。 视频格式的识别和读取模块的调试,可以用不同的素材来对它进行试验,首 先测试它能否正确识别不同格式的视频,能否正确判断视频文件是的关键信息。 待文件格式正确识别,测试它能否正确逐帧读取视频文件的内容,如果正确则识 别和读取模块就调试成功。 dct模块的调试需要多组测试数据,要考虑各处特殊情况,它都能正确进 行变换。 dvcpro hd解码模块的调试是重点,中间的步骤比较多,可以采用的方法 是先用己知数据来让它进行解码, 比如标准彩条, 它的每个像素点的数据都已知, 上海交通大学工学硕士学位论文 第 35 页 可以知道每步的结果来对照解码是否成功,在这里有一点要说明的是dvcpro hd的标准中,宏块位置的放置会有所不同,它的算法会有一些差别,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年碳核查结果确认合同协议
- 2025年生物识别技术协议
- 2025年生物安全应急演练合同协议
- 2025年社区便利店配送时效服务协议
- 北京八中2026届化学高二上期中联考试题含解析
- 关于公司活动策划方案范文
- 2025年个人与装修公司房屋修缮合同协议
- 2026届新疆第二师华山中学化学高三第一学期期中监测模拟试题含解析
- 2026届安徽省铜陵市化学高三第一学期期中调研试题含解析
- 山东省郯城县2025-2026学年高一数学第一学期期末监测模拟试题含解析
- 蓄力扬帆 增长可期-中国企业在拉美投资调研
- 员工离职流程及薪资结算标准
- 【《高血压脑出血患者超早期康复护理的分析进展》5100字】
- 产品生命周期管理表格产品更新换代决策参考
- 2025年国考税务面试真题及答案
- 中国石化安全员考试题库完整版及答案解析
- 知道网课《气的世界-太极健康探秘(上海中医药大学)》课后章节测试答案
- 新版中华民族共同体概论课件第八讲共奉中国与中华民族内聚发展(辽宋夏金时期)-2025年版
- 输电线路红外测温课件
- 露营知识技巧培训班课件
- (已压缩)国民体质测定标准(2023年修订)
评论
0/150
提交评论