一种针对专用视频解码单元的低功耗解码器实现方法

文档序号:9277088阅读:338来源:国知局
一种针对专用视频解码单元的低功耗解码器实现方法
【技术领域】
[0001] 本发明涉及视频解码功耗优化技术,尤其是一种针对专用硬件视频解码单元解码 过程的功耗优化技术。
【背景技术】
[0002] 视频解码一个重要的特点是其计算复杂度高,而且计算过程需要密集的数据存 取,很大程度上增加了系统的计算负载和能量消耗。然而不同的视频有不同的码率,不同的 尺寸,不同的帧类型序列和编码格式,同一视频不同的帧也有不同的类型和宏块编码方式, 因而导致实际解码功耗各不相同。如果能够根据视频解码的特点预测每一帧的解码时间, 并据此动态设置解码单元工作频率和电压,在保证每一帧的解码时间恰好满足播放的实时 需求前提下,使解码单元能够尽可能地在较低的主频和电压下工作,就可以降低视频解码 功耗。
[0003] 目前以帧为单位实现的解码复杂度预测算法大都基于帧长和帧类型两种信息预 测解码复杂度。在使用CPU做软件视频解码操作的情况下视频的帧长和解码时间存在较为 明显的线形关系,易于使用帧长作为解码复杂度的预测参考。而在使用专用视频解码单元 以帧为单位做硬件解码时,由于视频专用解码单元内部设计使用了诸如流水线并行处理, 内部解码数据缓存,解码指令重排序等解码优化设计,使得使用专用硬件解码单元做视频 解码的情况下视频的帧长和解码时间并不存在明显的线形关系。因而不能依据帧长信息预 测硬件解码单元的解码时间复杂度。
[0004] 虽然使用专用硬件解码单元做视频解码每帧数据和帧长并不存在明显的线性关 系,但是对于同种类型的帧,解码每一帧数据的时间比较接近,均维持在一个中心值范围内 上下波动,考虑对不同类型的帧进行分类,分别计算其解码时间平均值,作为对该类型帧的 预测值,可以准确预测每一帧数据解码时间复杂度。

【发明内容】

[0005] 本发明要解决的技术问题是:提出一种针对专用视频解码单元的低功耗解码器实 现方法。
[0006] 本发明所采用的技术方案为:一种针对专用视频解码单元的低功耗解码器实现方 法,步骤分为:
[0007] A、应用程序层和操作系统内核层两部分实现;应用程序层根据解码复杂度预测算 法得到预测解码时间,填取一帧数据到硬件解码单元,调用操作系统内核层提供支持的电 压频率调节接口,动态调节电压和频率后解码,解码完成后更新预测参数。
[0008] 通过码流解析得到帧类型和帧长度信息,每次填取一帧长度的码流到专用视频解 码单元,而预测解码时间复杂度仅根据帧类型信息分类,不使用帧长信息做参考。
[0009] B、解码复杂度预测算法基于帧类型分类,定义一个最大窗口值winSize,并维护三 个尺寸为winSize的Buffer ;每个buffer分别用于存储I、P、和B类帧的最近winSize帧 的解码时间,维护三个记录最优预测窗口尺寸的变量optWinSize分别记录其最优预测窗 口大小;初始值均为1。
[0010] C、将视频帧类型分为I、P、B三类,从视频码流中解析一帧数据帧长FrameLen并解 析其帧类型FrameType ;
[0011] 其中,
[0012] Cl、寻找当前NAL单元的其实字节码为0x000001或0x00000001,记录此时的位置 为 FrameStart0
[0013] C2、从起始字节码开始,解析当前NAL单元的类型。判断为非VCL NAL单元则跳过。 若为VCL NAL单元则分析NAL单元中Slice的类型为FrameType ;
[0014] C3、寻找下一个NAL单元并判断其类型。若为非VCL NAL单元表明一帧分析 结束,记录当前NAL单元的其实字节码位置为FrameEnd。若为VCL NAL单元,则解析 firstMblnSlice值,若为0,表示其为下一帧数据的开始,记录此时NAL单元其实字节码为 FrameEncL若firstMblnSlice不为0,表明当前slice与上一个slice为同一帧数据的内 容,此时按照步骤A3进行下一个NAL单元寻找下一个NAL单元。
[0015] C4、FrameEnd与FrameStart的差值即为当前数据帧的帧长FrameLen。
[0016] D、依据帧类型FrameType选择对应的Buffer和最优窗口尺寸optWindow ;
[0017] 其中,
[0018] D1、若当前帧类型FrameType为I,则解码时间预测值为
[0022] 其中,
[0023] E1、若当前帧类型FrameType为I,则选择IBuffer和IoptWindow作为复杂度预测 的Buffer和最优预测窗口;
[0024] E2、若当前帧类型FrameType为P,则选择PBuffer和PoptWindow作为复杂度预测 的Buffer和最优预测窗口;
[0025] E3、若当前帧类型FrameType为B,则选择BBuffer和BoptWindow作为复杂度预测 的Buffer和最优预测窗口
[0026] F、根据该预测值与当前视频帧显示时间间隔的关系调用操作系统的电压 频率调节接口动态设置频率和电压以用于控制解码。实际电压和频率调节方案为:

[0027] G、读取一帧数据长度FrameLen内容填入硬件解码单元,记录解码开始时间,开始 一帧数据解码;
[0028] H、解码完成后统计当前帧解码花费时间decTime,依据帧类型更新相关预测 参数。解码完成后根据实际解码时间decTime更新最优窗口尺寸optWindow的值; 根据该帧的类型,选取对应的Buffer和optWindow ;对于0〈 = N〈winSize依次计算 avgN=Z (IBuffer[n])/(N+l),求取 |avgN_decTime| 最小的avgN所对应的N值为最 优预测窗口值,作为对下一个该类型帧预测的窗口尺寸;对于〇〈N〈winSize,Buffer[N]= Buffer[N-l],Buffer[0] = decTime〇
[0029] 其中,
[0030] HI、若当前帧为 I 帧,则对任意 0〈 =N〈winSize计算avgN=2n=〇(IBuffer[n]) 这N+1个同类型帧的历史解码时间的平均值,选取|avgN-decTime|最小的avgN所对 应的 N 为最优 I 帧窗口 尺寸,即 IoptWinow =Nd 对任意 0〈N〈winSize,IBuffer[N]= IBuffer[N-l]〇IBuffer[0] = decTime〇
[0031] H2、若当前帧为 P 帧,则对任意 0< = N〈winSize 计算avgN=2n=()(PBuffer[Il]) 这N+1个同类型帧的历史解码时间的平均值,选取|avgN-decTime|最小的avgN所对 应的 N 为最优 P 帧窗 口尺寸,即 PoptWinow =Nd 对任意 0〈N〈winSize,FjBufferIiN]= PBuffer[N-1]〇PBuffer[0] = decTime〇 _M
[0032] H3、若当前帧为 B 帧,则对任意 0< = N〈winSize 计算avgN=Zn=()(BBuffer[n]) 这N+1个同类型帧的历史解码时间的平均值,选取|avgN-decTime|最小的avgN所对 应的N为最优B帧窗口尺寸,即BoptWinow = N。对任意0〈N〈winSize,BBuffer[N]= BBufTer[N-l]。 BBufTer[0] = decTime。
[0033] 本发明的有益效果是:由于本方案考虑了专用视频解码单元做硬件解码的特点, 使得其预测效果较好;在北大众志PKUnity86-3系统芯片平台实现该预测方案,测试器误 差为3ms以内的预测准确度在95 %以上。
【附图说明】
[0034] 下面结合附图和实施例对本发明进一步说明。
[0035] 图1是本发明的整体设计思路图;
[0036] 图2是本发明实现从视频码流中提取出帧类型信息流程图;
[0037] 图3是本发明中提取一帧数据的长度的流程图;
[0038] 图4是本发明实现依据帧类型做解码复杂度预测的示意图。
【具体实施方式】
[0039] 现在结合附图和优选实施例对本发明作进一步详细的说明。这些附图均为简化的 示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。
[0040] 本发明包含三项关键技术,即应用程序层和操作系统内核层分层实现复杂度预测 和电压频率调节、复杂度预测方法的计算依
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1