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

技术编号:25486986 阅读:31 留言:0更新日期:2020-09-01 23:06
本发明专利技术公开了一种用于数字音视频解码设备的内存调度方法。现有数字音视频解码设备的内存调度方法造成整体运行效率很低。本发明专利技术方法将已申请的内存池中的一部分标记为待释放内存池,其他部分则为正在使用部分。每次应用向系统申请内存块时,额外申请多个字节作为待释放标记F、被引用标记R、使用率H三个调度变量的存储空间。优先从已申请但在待释放池中获取内存,待释放池中的数据是没有被系统正式释放的,这样既能降低频繁申请释放率,由于数据内容不必重新进行解析,所以又能有效地利用已在内存中的数据。本发明专利技术方法采用最近使用率较低且大的内存块优先正式释放,既能保证内存申请的高效性,又能确保整个界面响应和音视频播放响应迅速。

【技术实现步骤摘要】
一种用于数字音视频解码设备的内存调度方法
本专利技术属于计算机
,具体涉及一种用于数字音视频解码设备的内存调度方法。
技术介绍
目前,数字音视频解码设备的发展趋向高清晰度和网络电视(IPTV),对于音视频内存需求呈现上升趋势。而另一方面,从界面内存需求和产品成本角度看,数字音视频对帧存需求进一步增长,留给界面的使用的内存却十分有限。所以一套高效的适用于数字音视频解码设备(例如数字电视机顶盒)的内存分配方法在数字电视机顶盒领域显得十分重要。在图形界面(GUI)上,部分界面对于图片需求非常高,特别是网络电视(IPTV)机顶盒,会出现大量来自网络,需要实时解码的图片。而数字电视机顶盒对于界面运行效率要求也是非常高,对于图片量大,存在网络图片的情况,如果全部加载到内存,则界面运行速度达到需求,但对于内存消耗会很大。对于部分产品,特别是低成本产品会产生很大的成本压力。如果从另一个角度,将所有图片都用CPU实时加载,对于内存压力会非常小,但是整个界面的切换效率会变得非常低。由于近年数字电视机顶盒产品全面向高清晰度发展,传统标清数字电视机顶盒产品中使用点阵字由于显示效果上的缺陷,正在逐渐被淘汰。取而代之的是与大多数个人电脑(PC机)一样的矢量字,由于点阵字的每个字只有width×height位的数据量,而矢量字仅点阵列信息就有width×height×8bit的数据量,整体数据量是点阵字的8倍。整个数字电视机顶盒运行过程中需要的各种语言文字符号的数量非常大,与图片同样原理,全部加载将会造成内存紧张;实时解析,对于数字电视机顶盒这样的嵌入式系统来说,其文件系统主要是在flash之上,对于频繁读取flash,会造成整体运行效率很低。对于数字电视机顶盒产品的发展来看,软件结构由单一模块向多模块,多服务甚至多进程发展。对于每个模块都需要管理一块属于自己的内存,同时运行多个模块的情况下,对于内存的占用是非常大的。对于当今数字电视机顶盒软件产品的开发来说,如何做到多模块复用内存,成了资源有限的数字电视机顶盒产品主要问题。
技术实现思路
本专利技术的目的就是提供一种用于数字音视频解码设备的内存调度方法,用以应对数字音视频解码设备内存资源有限,且运行效率要求高的特点。数字音视频解码设备内存的内存池包括已释放的内存池和已申请的内存池。已释放的内存池即为可供申请的内存池。已申请的内存池即为已经被占用的内存池,已申请的内存池中的一部分标记为待释放内存池,其他部分则为正在使用部分。本专利技术方法包括申请过程和释放过程。每次应用向系统申请内存块时,在需要申请的内存块基础上额外申请多个字节,额外申请的字节作为该内存块的三个调度变量的存储空间,三个调度变量分别为待释放标记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用于标记申请的内存块是否被引用,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的内存块构成。本文档来自技高网
...

【技术保护点】
1.一种用于数字音视频解码设备的内存调度方法,所述的数字音视频解码设备的内存池包括已释放的内存池和已申请的内存池,已释放的内存池即为可供申请的内存池,已申请的内存池即为已经被占用的内存池;其特征在于:所述的已申请的内存池中的一部分标记为待释放内存池,其他部分则为正在使用部分;/n包括申请过程和释放过程;/n每次应用向系统申请内存块时,在需要申请的内存块基础上额外申请多个字节,额外申请的字节作为该内存块的三个调度变量的存储空间,三个调度变量分别为待释放标记F、被引用标记R、使用率H,在申请时将每个调度变量写入对应的字节;待释放标记F用于标记是否为待释放内存块,1表示待释放、0表示正在使用;被引用标记R用于标记申请的内存块是否被引用,1表示被引用,0表示未被引用;使用率H用于标记申请的内存块的使用次数,每使用一次加1;申请过程具体如下:/n(1).应用每次向系统申请内存块时,首先在待释放内存池中查找需要申请内存块是否存在,如果存在,F标记为0,R标记为1,H加1,并将该内存块由待释放内存池中取出,作为正在使用部分;如果不存在,进入步骤(2);/n(2).向已释放的内存池申请,如果申请成功,F标记为0,R标记为1,H加1,作为正在使用部分;如果申请未成功,进入步骤(3);/n(3).将待释放内存池中的内存块按照进行使用率H进行排序,选取使用率最低的一个或多个内存块M:/n如果内存块M为一个,直接释放内存块M,内存块M所占空间并入已释放的内存池,进入步骤(2);/n如果内存块M为多个,则按照内存块M的大小进行排序,直接释放最大的内存块M,该内存块M所占空间并入已释放的内存池,进入步骤(2);/n释放过程具体如下:/n(a).系统将正在使用的,但使用周期已经结束的内存块的R标记为0、F标记为1,作为待释放内存块;/n(b).待释放内存块并入待释放内存池,待释放内存池由F标记为1的内存块构成。/n...

【技术特征摘要】
1.一种用于数字音视频解码设备的内存调度方法,所述的数字音视频解码设备的内存池包括已释放的内存池和已申请的内存池,已释放的内存池即为可供申请的内存池,已申请的内存池即为已经被占用的内存池;其特征在于:所述的已申请的内存池中的一部分标记为待释放内存池,其他部分则为正在使用部分;
包括申请过程和释放过程;
每次应用向系统申请内存块时,在需要申请的内存块基础上额外申请多个字节,额外申请的字节作为该内存块的三个调度变量的存储空间,三个调度变量分别为待释放标记F、被引用标记R、使用率H,在申请时将每个调度变量写入对应的字节;待释放标记F用于标记是否为待释放内存块,1表示待释放、0表示正在使用;被引用标记R用于标记申请的内存块是否被引用,1表示被引用,0表示未被引用;使用率H用于标记申请的内存块的使用次数,每使用一次加1;申请过程具体如下:
(1).应用每次向系统申请内存块时,首先在待释放内存池中查找需要申请内存块是否存在,如果存在,F标记为0,R标记为1,H加1,并将该内存块由待释放内存池中取出,作...

【专利技术属性】
技术研发人员:沈丛则刘非刘峰张令
申请(专利权)人:杭州国芯科技股份有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1