logo好方法网

一种用于数字音视频解码设备的内存调度方法


技术摘要:
本发明公开了一种用于数字音视频解码设备的内存调度方法。现有数字音视频解码设备的内存调度方法造成整体运行效率很低。本发明方法将已申请的内存池中的一部分标记为待释放内存池,其他部分则为正在使用部分。每次应用向系统申请内存块时,额外申请多个字节作为待释放  全部
背景技术:
目前,数字音视频解码设备的发展趋向高清晰度和网络电视(IPTV),对于音视频 内存需求呈现上升趋势。而另一方面,从界面内存需求和产品成本角度看,数字音视频对帧 存需求进一步增长,留给界面的使用的内存却十分有限。所以一套高效的适用于数字音视 频解码设备(例如数字电视机顶盒)的内存分配方法在数字电视机顶盒领域显得十分重要。 在图形界面(GUI)上,部分界面对于图片需求非常高,特别是网络电视(IPTV)机顶 盒,会出现大量来自网络,需要实时解码的图片。而数字电视机顶盒对于界面运行效率要求 也是非常高,对于图片量大,存在网络图片的情况,如果全部加载到内存,则界面运行速度 达到需求,但对于内存消耗会很大。对于部分产品,特别是低成本产品会产生很大的成本压 力。如果从另一个角度,将所有图片都用CPU实时加载,对于内存压力会非常小,但是整个界 面的切换效率会变得非常低。 由于近年数字电视机顶盒产品全面向高清晰度发展,传统标清数字电视机顶盒产 品中使用点阵字由于显示效果上的缺陷,正在逐渐被淘汰。取而代之的是与大多数个人电 脑(PC机)一样的矢量字,由于点阵字的每个字只有width×height位的数据量,而矢量字仅 点阵列信息就有width×height×8bit的数据量,整体数据量是点阵字的8倍。整个数字电 视机顶盒运行过程中需要的各种语言文字符号的数量非常大,与图片同样原理,全部加载 将会造成内存紧张;实时解析,对于数字电视机顶盒这样的嵌入式系统来说,其文件系统主 要是在flash之上,对于频繁读取flash,会造成整体运行效率很低。 对于数字电视机顶盒产品的发展来看,软件结构由单一模块向多模块,多服务甚 至多进程发展。对于每个模块都需要管理一块属于自己的内存,同时运行多个模块的情况 下,对于内存的占用是非常大的。对于当今数字电视机顶盒软件产品的开发来说,如何做到 多模块复用内存,成了资源有限的数字电视机顶盒产品主要问题。
技术实现要素:
本发明的目的就是提供一种用于数字音视频解码设备的内存调度方法,用以应对 数字音视频解码设备内存资源有限,且运行效率要求高的特点。 数字音视频解码设备内存的内存池包括已释放的内存池和已申请的内存池。已释 放的内存池即为可供申请的内存池。已申请的内存池即为已经被占用的内存池,已申请的 内存池中的一部分标记为待释放内存池,其他部分则为正在使用部分。 本发明方法包括申请过程和释放过程。 每次应用向系统申请内存块时,在需要申请的内存块基础上额外申请多个字节, 额外申请的字节作为该内存块的三个调度变量的存储空间,三个调度变量分别为待释放标 3 CN 111614985 A 说 明 书 2/3 页 记F、被引用标记R、使用率H,在申请时将每个调度变量写入对应的字节;待释放标记F用于 标记是否为待释放内存块,1表示待释放、0表示正在使用;被引用标记R用于标记申请的内 存块是否被引用,1表示被引用,0表示未被引用;使用率H用于标记申请的内存块的使用次 数,每使用一次加1。申请过程具体如下: (1) .应用每次向系统申请内存块时,首先在待释放内存池中查找需要申请内存块 是否存在,如果存在,F标记为0,R标记为1,H加1,并将该内存块由待释放内存池中取出,作 为正在使用部分;如果不存在,进入步骤(2); (2) .向已释放的内存池申请,如果申请成功,F标记为0,R标记为1,H加1,作为正在 使用部分;如果申请未成功,进入步骤(3); (3) .将待释放内存池中的内存块按照进行使用率H进行排序,选取使用率最低的 一个或多个内存块M: 如果内存块M为一个,直接释放内存块M,内存块M所占空间并入已释放的内存池, 进入步骤(2); 如果内存块M为多个,则按照内存块M的大小(size)进行排序,直接释放最大的内 存块M,该内存块M所占空间并入已释放的内存池,进入步骤(2)。 释放过程具体如下: (a) .系统将正在使用的,但使用周期已经结束的内存块的R标记为0、F标记为1,作 为待释放内存块; (b) .待释放内存块并入待释放内存池,待释放内存池由F标记为1的内存块构成。 本发明结合数字音视频解码设备图片内存、surface内存、音视频帧存以及文字内 存使用单个内存块大,申请释放频繁的特点,且对界面切换音视频播放响应速度要求较高, 优先从已申请但在待释放队列中获取内存,既能降低频繁申请释放率,又能有效地利用已 在内存中的数据。本发明方法采用最近使用率较低且大的内存块优先正式释放,既能保证 内存申请的高效性,又能确保整个界面响应和音视频播放响应迅速。 附图说明 图1为本发明方法的流程图。 具体实施方案 以下结合附图和具体实施例对本发明进一步详细说明。 一种用于数字音视频解码设备的内存调度方法,数字音视频解码设备内存的内存 池包括已释放的内存池和已申请的内存池。已释放的内存池即为可供申请的内存池。已申 请的内存池即为已经被占用的内存池,已申请的内存池中的一部分标记为待释放内存池, 其他部分则为正在使用部分。该方法包括申请过程和释放过程。 如图1所示,每次应用向系统申请内存块时,在需要申请的内存块基础上额外申请 多个字节,额外申请的字节作为该内存块的三个调度变量的存储空间,三个调度变量分别 为待释放标记F、被引用标记R、使用率H,在申请时将每个调度变量写入对应的字节(本实施 例中,待释放标记F使用一个字节,被引用标记R使用一个字节,使用率H使用四个字节);待 释放标记F用于标记是否为待释放内存块,1表示待释放、0表示正在使用;被引用标记R用于 4 CN 111614985 A 说 明 书 3/3 页 标记申请的内存块是否被引用,1表示被引用,0表示未被引用;使用率H用于标记申请的内 存块的使用次数,每使用一次加1。申请过程具体如下: (1) .应用每次向系统申请内存块时,首先在待释放内存池中查找需要申请内存块 是否存在,如果存在,F标记为0,R标记为1,H加1,并将该内存块由待释放内存池中取出,作 为正在使用部分;如果不存在,进入步骤(2); (2) .向已释放的内存池申请,如果申请成功,F标记为0,R标记为1,H加1,作为正在 使用部分;如果申请未成功,进入步骤(3); (3) .将待释放内存池中的内存块按照进行使用率H进行排序,选取使用率最低的 一个或多个内存块M: 如果内存块M为一个,直接释放内存块M,内存块M所占空间并入已释放的内存池, 进入步骤(2); 如果内存块M为多个,则按照内存块M的大小(size)进行排序,直接释放最大的内 存块M,该内存块M所占空间并入已释放的内存池,进入步骤(2)。 释放过程具体如下: (a) .系统将正在使用的,但使用周期已经结束的内存块的R标记为0、F标记为1,作 为待释放内存块; (b) .待释放内存块并入待释放内存池,待释放内存池由F标记为1的内存块构成。 5 CN 111614985 A 说 明 书 附 图 1/1 页 图1 6
下载此资料需消耗2积分,
分享到:
收藏