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

文档序号:9277088阅读:来源:国知局
据帧类型信息分类而不依据帧长做参考和复杂 度预测窗口尺寸动态变化确定。低功耗解码器的整体实现思路如图1所示。
[0041] 操作系统内核层通过配置电压管理模块的相关寄存器实现电压和频率调节接 P;
[0042] 应用程序层定义预测窗口的最大尺寸,初始化存放视频解码时间预测参考信息的 三个Buffer即IBuffer、PBuffer和BBuffer。分别用于存放I帧,P帧和B帧已经解码完 成帧的解码时间。
[0043] 初始化最大窗口大小winSize以及三种类型帧最优预测窗口尺寸IoptWindow、 PoptWindow 和 BoptWindow0
[0044] 读入一段视频码流,找到一个NAL单元的起始码。记录此时的码流位置为 FrameStarto 一个NAL单元的开始是以起始码标记的。在H. 264中起始码为0X000001或 0x00000001
[0045] 根据起始码得到的NAL数据解析得到VCLNAL单元类型NALType。起始码开始后 的一个字节中低五位即标识NAL单元的类型,使用当前字节值与Oxlf做与操作即可计算出 NALType。
[0046] 1)若当前NAL单元不为1-5之间,则为非VCL NAL单元,此时回到步骤1,寻找下 一个NAL单元起始码。
[0047] 2)若当NAL单元类型为1-5时表示的是视频编码层的数据,即为VCL NAL单元。 解析得到的数后,其开始部分即为条带头数据Slicejieader。条带头的第一个语法元素为 firstMblnSlice,采用无符号整数指数哥伦布编码。第二个元素即为slice_type,同样采用 无符号整数的指数哥伦布编码。根据无符号整数指数哥伦布编码解析得到的slice_typ e 值,即可判断其条带类型。判断条带类型的流程如图2所示。
[0048] 判断得到当前Slice的类型后继续寻找下一个NAL单元的起始码。依据同样的方 式判断其NAL单元类型。
[0049] 1)若该NAL单元为非VCL NAL类型,则表明当前帧的Slice已经分析完成。记 录此时的NAL单元的起始字节码所在位置为FrameEncL则帧长FrameLen为FrameEnd -FrameStart.
[0050] 2)若该NAL单元为VCL NAL单元,贝丨」继续解析当前NAL单元的firstMblnSlice。 判断其是否为0。若为〇,表明此VCL NAL单元为一个新的数据帧的第一个Slice。记录此 时NAL单元的其实字节码所在位置为FrameEnd。则所要分析数据帧的长度FrameLen为 FrameEnd-FrameStart。若不为0,表明当前VCL NAL单元中包含的Slice和上一个Slice 为同一个数据帧的两个不同Slice。此时继续寻找下一个NAL单元做判断。计算帧长的流 程参考图3。
[0051] 根据得到的帧类型FrameType判断
[0053] 2)若为 P 帧,则预测值predTime为 2 J^tWmd〇W_1(PBuffer[n])/PoplWiiidow;
[0054] 3)若为B帧,则预测值predTime为 Z =^twmdow ^BBufferlnD/BoptWindow;
[0055] 填取FrameLen长度的数据到硬件解码单元中。
[0056] 根据得到的预测值predTime和当前视频一帧数据的显示时间间隔T比较。
[0059] 发送解码命令给专用视频解码单元,并等待解码结束。
[0060] 解码完成后统计当前帧实际解码所使用的时间decTime。
[0061] 判断当前帧的类型,若为I帧,则由0〈N〈winSize依次计算 avgN= 2 !LOBufferMMN+1),求取与当前解码时间最接近的aVgN的值(即 Il一U |decTime_avgN|最小的avgN)所对应的N为最优I帧窗口尺寸IoptWindow。若为P帧, 则由〇〈N〈winSize依次计算avgN= 2 N (PBuffer[n])/(N+1),求取与当前解码时间 最接近的avgN的值(即I decTime-avgN|最小的avgN)所对应的N为最优P帧窗口尺寸 IoptWindow。若为 B 帧,则由 0〈N〈winSize 依次计算 avgN= Z^^OBuffer^nD/^N+l), 求取与当前解码时间最接近的avgN的值(即IdecTime-avgN|最小的avgN)所对应的N为 最优B帧窗口尺寸BoptWindow。
[0062] 更新当前帧类型对应的Buffer。即若为I帧,贝丨」对于1〈 = N〈winSizeIBuffer [N] =IBufTer [N_l],IBufTer [0] = decTime.。即若为P 帧,则对于 1〈 = N〈winSizePBufTer [N] =PBufTer [N_l],PBufTer [0] = decTime.即若为 B 帧,则对于 1〈 = N〈winSizeBBufTer [N] =BBuffer[N-l], BBuffer[0] = decTime.
[0063] 按照上述方案解码下一帧数据。依据预测值设置低功耗解码器和更新预测参数的 过程参考图4。
[0064] 以上说明书中描述的只是本发明的【具体实施方式】,各种举例说明不对本发明的实 质内容构成限制,所属技术领域的普通技术人员在阅读了说明书后可以对以前所述的具体 实施方式做修改或变形,而不背离本发明的实质和范围。
【主权项】
1. 一种针对专用视频解码单元的低功耗解码器实现方法,其特征在于:步骤分为应用 程序层和操作系统内核层两部分实现;应用程序层根据解码复杂度预测算法得到预测解码 时间,填取一帧数据到硬件解码单元,调用操作系统内核层提供支持的电压频率调节接口, 动态调节电压和频率后解码,解码完成后更新预测参数。2. 根据权利要求1所述的一种针对专用视频解码单元的低功耗解码器实现方法,其特 征在于:通过码流解析得到帧类型和帧长度信息,每次填取一帧长度的码流到专用视频解 码单元,而预测解码时间复杂度仅根据帧类型信息分类,不使用帧长信息做参考。3. 根据权利要求1所述的一种针对专用视频解码单元的低功耗解码器实现方法, 其特征在于:解码复杂度预测算法基于帧类型分类,定义一个最大窗口值winSize,并 维护三个尺寸为winSize的Buffer;每个buffer分别用于存储I、P、和B类帧的最近 winSize帧的解码时间,维护三个记录最优预测窗口尺寸的变量optWinSize分别记录 其最优预测窗口大小;将视频帧类型分为I、P、B三类,从视频码流中解析一帧数据帧 长FrameLen并解析其帧类型FrameType;依据帧类型FrameType选择对应的Buffer和 最优窗口尺寸optWindow;根据复杂度预测的Buffer和最优窗口尺寸optWinSize,计算4. 根据权利要求1所述的一种针对专用视频解码单元的低功耗解码器实现方法,其特 征在于:实际电压和频率调节方案为:5. 根据权利要求1所述的针对专用视频解码单元的低功耗解码器实现方法,其特 征在于:解码完成后根据实际解码时间decTime更新最优窗口尺寸optWindow的值; 根据该帧的类型,选取对应的Buffer和optWindow;对于0〈 =N〈winSize依次计算求取|avgN-decTime|最小的avgN所对应的N值为最 优预测窗口值,作为对下一个该类型帧预测的窗口尺寸;对于〇〈N〈winSize,Buffer[N]=Buffer[N-l],Buffer[0] =decTime〇
【专利摘要】本发明涉及一种针对专用视频解码单元的低功耗解码器实现方法,其特征在于:步骤分为应用程序层和操作系统内核层两部分实现;应用程序层根据解码复杂度预测算法得到预测解码时间,填取一帧数据到硬件解码单元,调用操作系统内核层提供支持的电压频率调节接口,动态调节电压和频率后解码,解码完成后更新预测参数。本发明考虑了专用视频解码单元做硬件解码的特点,使得其预测效果较好;在北大众志PKUnity86-3系统芯片平台实现该预测方案,测试器误差为3ms以内的预测准确度在95%以上。
【IPC分类】H04N19/187, H04N19/44, H04N19/42
【公开号】CN104994389
【申请号】CN201510288718
【发明人】程旭, 刘锋, 李博
【申请人】常州北大众志网络计算机有限公司, 北京北大众志微系统科技有限责任公司
【公开日】2015年10月21日
【申请日】2015年5月29日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1