硬件解码器加速器的增强安全性的制作方法_2

文档序号:9332710阅读:来源:国知局
对所有用户的视频解码缓冲区进行读和/或写。对于一些系统,解码器可以访问内 核存储器空间。硬件解码器加速器还能够对一些系统寄存器进行读和/或写。此外对于一 些系统,如果硬件加速器104是可编程的,那么程序指令和数据存储在内核存储器空间中。
[0032] 因此,如果硬件解码器加速器被黑客危及,那么黑客可从其它解码器应用盗取视 频内容。例如,黑客可制作蓝光光盘的非法副本。此外,黑客可利用已危及的解码器加速器 来通过读取系统寄存器盗取系统秘密,诸如加密密钥。此外,在极端情况中,已危及的硬件 解码器加速器可危及系统内核,允许黑客接管整个系统100。
[0033] 最小化损坏
[0034] 系统100可以被配置来最小化硬件解码器加速器104被危及时的损坏。系统的一 种可能配置可如下。
[0035] 1.系统100在必要时将只给硬件解码器104赋予允许对寄存器进行读或写的权 利。
[0036] 2.如果硬件加速器是可编程的,那么硬件加速器指令和数据可被置于存储器空间 中而非内核存储器空间和任何用户的存储器空间中。以此方式,硬件加速器104可执行指 令,并对其自身的存储器空间进行读或写数据。
[0037] 3.如果用户缓冲区打开以供硬件解码器访问,那么只打开缓冲区的必要部分。
[0038] 受设计所限,并非所有硬件加速器可满足以上建议。例如,集成在PC图形卡中的 大部分硬件加速器可访问比所需更多的寄存器且绝无限制。因此,必须实施额外的保护层 以使其难以黑进硬件加速器。
[0039] 视频解码
[0040] 在继续描述安全软件114可以如何保护硬件解码器加速器免受恶意攻击之前,了 解如何编码视频图片是有用的。例如且无限制,如图3中所示,单个图片300(例如,数字视 频帧)可以被分解为一个或多个区段。如本文使用,术语"区段"可能是指图片300内的一 个或多个像素组。区段的范围可从图片内的单个像素到多达整个图片。区段的非限制实例 包括程序片302、宏模块304、子宏模块306、块308和个别像素310。如图3中说明,每一程 序片302包括一行或多行宏模块304或一个或多个这样的行的部分。某一行中的宏模块的 数量取决于宏模块的大小和图片300的大小和分辨率。例如,如果每一宏模块包括16乘以 16个像素,那么每一行中的宏模块的数量可以通过将图片300的宽度(以像素表示)除以 16而确定。每一宏模块304可以被分解为多个子宏模块306。每一子宏模块306可以被分 解为多个块308且每一块可以包括多个像素310。例如且不限制本发明,在常见的视频编 码方案中,每一宏模块304可以被分解为4个子宏模块306。每一子宏模块可以被分解为4 个块308且每一块可以包括4乘以4布置的16个像素310。
[0041] 应注意,每一图片可以是帧或字段。帧是指完整图像。字段是用于促进在某些类型 的显示装置上显示图像的图像的部分。通常,图像中的像素被布置成行。为了促进显示,图 像有时候可以通过将像素的交替行置于两个不同字段中而分裂。两个字段中的像素行然后 可以被交错来形成完整图像。对于一些显示装置(诸如阴极射线管(CRT)显示器),两个字 段可以仅仅以接连不断方式一个接一个地显示。用于照明显示器中的像素的磷光体或其它 发光元件的余辉结合视觉暂留造成两个字段被感知为连续图像。对于某些显示器装置(诸 如液晶显示器),可能必须在两个字段被显示之前将其交错到单个图片中。表示已编码图像 的串流数据通常包括指示图像是字段还是帧的信息。此信息可以包括在图像的标头中。
[0042] 图4说明用于可以结合本公开的方面使用的串流数据401的解码的方法400中的 可能程序流程的实例。此特定实例展示了用于例如使用AVC(H. 264)标准进行视频解码的 程序流。已编码的串流数据401最初可以被存储在缓冲区中。当已编码的串流数据401 (例 如,视频数据位流)已通过网络(例如互联网)传送时,数据401最初可以经历称作网络抽 象层(NAL)解码(402处指示)的程序。NAL解码可以从数据401移除被添加来辅助传输数 据的信息。称作"网络封装器"的此信息可以将数据401识别为视频数据或指示位流的开 始或结束、用于数据对准的位和/或关于视频数据本身的元数据。
[0043] 此外,例如,网络封装器可以包括关于数据401的信息(所述信息包括例如用于显 示数据的分辨率、图片显示格式、调色板变换矩阵)、关于每一图片的位数、程序片或宏模块 的信息以及用于低级解码的信息(例如指示程序片的开始或结束的数据)。此信息可以用 于确定传递到单个区段中的任务组中的每一个的宏模块的数量。由于其复杂性,NAL解码 通常是以图片和程序片级完成。用于NAL解码的最小NAL缓冲区通常是程序片大小。
[0044] 在一些实施方案中,在402处进行NAL解码之后,图4中说明的剩余解码可以在 三个不同线程组或任务组中实施,所述线程组或任务组在本文称作视频编码层(VCL)解码 404、运动向量(MV)重建410和图片重建414。图片重建任务组414可以包括像素预测和重 建416,和后期处理420。在本发明的一些实施方案中,可以基于数据相依性选取这些任务 组使得每一任务组可以在将宏模块发送到下一个任务组进行后期处理之前完成其对图片 (例如,帧或字段)或区段中的所有宏模块的处理。
[0045] 某些编码标准可以使用涉及像素信息从空间域到频域的变换的数据压缩的形式。 一种这样的变换尤其被称作离散余弦变换(DCT)。用于此压缩数据的解码程序涉及从频 域恢复到空间域的逆变换。在使用DCT压缩数据的情况中,逆程序称作逆离散余弦变换 (IDCT)。所变换的数据有时候被量化来减小用于表示离散变换数据中的数字的位数。例如, 数字1、2、3可以全部被映射到2,且数字4、5、6可以全部被映射到5。为了解压缩数据,在 执行从频域到空间域的逆变换之前使用称作逆量化(IQ)的程序。对于相同程序片内的宏 模块,用于VCL IQ/IDCT解码程序404的数据相依性通常为宏模块级。因此,由VCL解码程 序304产生的结果可以宏模块级进行缓冲。
[0046] VCL解码404通常包括称作熵解码406的程序,其用于解码VCL语法。诸如 AVC(H. 264)的许多编解码器使用称作熵编码的编码层。熵编码是将代码指派给信号以便匹 配代码长度与信号的概率的编码方案。通常,熵编码器用于通过用由与概率的负对数成比 例的代码表示的符号取代由相等长度的代码表示的符号来压缩数据。AVC(H. 264)支持两种 熵编码方案:上下文自适应可变长编码(CAVLC)和上下文自适应二进制算术编码(CABAC)。 因为CABAC趋向于提供的压缩比CAVLC多大约10%,所以CABAC为产生AVC(H. 264)位流的 许多视频编码器所喜爱。解码经AVC(H. 264)编码的数据流的熵层的计算量可为密集型的 且可面临使用通用微处理器解码经AVC(H. 264)编码的数据流的装置的挑战。出于此原因, 许多系统使用硬件解码器加速器。
[0047] 除了熵解码406以外,VCL解码程序404可以涉及如408处指示的逆量化(IQ)和 /或逆离散余弦变换(IDCT)。这些程序可以解码标头409和来自宏模块的数据。已解码的 标头409可以用于辅助相邻宏模块的VCL解码。
[0048] VCL解码404可以宏模块级数据相依性频率实施。具体地说,相同程序片内的不同 宏模块可以并行经历VCL解码,且结果可以被发送到运动向量重建任务组410以进行进一 步处理。
[0049] 随后,图片或区段中的所有宏模块可以经历运动向量重建410。MV重建程序410 可以涉及使用来自给出宏模块的标头411和/或同位(co-located)宏模块标头413进行 的运动向量重建412。运动向量描述图片内的表观运动。这些运动向量允许基于对先前图 片的像素和所述像素在不同图片之间的相对运动的认识进行图片(或其部分)的重建。一 旦运动向量已恢复,可以在416处使用基于来自VCL解码程序404的残余像素和来自MV重 建程序410的运动向量的程序对像素进行重建。MV的数据相依性频率(和并行度级)取 决于MV重建程序410是否涉及来自其它图片的同位宏模块。对于不涉及来自其它图片的 同位MB标头的MV重建,MV重建程序410可以程序片级或图片级并行实施。对于涉及同位 MB标头的MV重建,数据相依性频率为图片级且MV重建程序410可以程序片级并行实施。
[0050] 运动向量重建410的结果被发送到图片重建任务组414,其可以图片频率级并行 化。在图片重建任务组414内,图片或区段中的所有宏模块可以经历结合去块420的像素 预测和重建416。像素预测和重建任务416和去块任务420可以被并行化来增强解码效率。 基于数据相依性,这些任务可以宏模块级在图片重建任务组414内并行化。例如,可以对一 个宏模块执行像素预测和重建416且然后对其执行去块420。来自通过去块420获得的已 解码图片的参考像素可以在对后续宏模块的像素预测和重建416中使用。像素预测和重建 418产生已
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1