内存管理方法以及相关装置与流程

文档序号:19634635发布日期:2020-01-07 11:52阅读:287来源:国知局
本发明涉及视频处理领域,尤其涉及内存管理方法以及相关装置。
背景技术
::双倍速率同步动态随机存储器(doubledataratesdram,ddrsdram)又称ddr内存,是视频处理系统的重要构成部分,通常情况下ddr内存与主芯片价格平齐甚至超过主芯片。所以,在相同业务体验的前提下减少ddr的使用,是降低视频处理系统成本的有效途径。在媒体架构中,视频解码器(videodecoder,vdec)的帧缓冲区(framebuffer,也可称为帧存)占据了ddr内存的主要部分,例如将6~7帧的图像帧(如参考帧)存储在帧缓冲区。因此,为了降低视频处理中内存的占用,通常在参考帧存取过程中引入压缩技术,包括无损压缩和有损压缩这两种技术。其中,有损压缩利用了人类对图像或声波中的某些频率成分不敏感的特性,在数据压缩过程中损失掉一定的信息,所以有损压缩通常能带来较大的图像压缩率,但是,有损压缩会引入图像的误差,由于解码的参考帧具有参考特性,误差经过参考帧迭代之后不断累积放大,最终有可能呈现视觉可觉察的图像损伤,造成图像质量(picturequality,pq)的下降,所以,在解码环节的参考帧存取过程中通常不采用有损压缩技术。无损压缩技术是更为常见的应用于参考帧存取的技术,其利用数据的统计冗余进行压缩,可通过在解压缩完全恢复原始数据而不引起图像失真。所以,目前在解码环节通常采用无损压缩技术。虽然无损压缩不会造成数据损伤,但是无损压缩的压缩率并不可靠,例如4k视频在无损压缩下也存在压缩率仅为20%甚至无法压缩的情形。所以相对而言,现有的无损压缩技术不能有效节省内存占用。因此,如何有效降低解码时的参考帧存取对内存的占用就成为一个问题。技术实现要素:本发明实施例提供了内存管理方法以及相关装置,能够有效降低解码时的参考帧存取对内存的占用。第一方面,本发明实施例提供了一种视频解码中的内存管理方法,该方法包括:视频解码器对码流进行解码得到第一图像帧,所述第一图像帧包括n个片tile(比如n个相同的片),每个片表示所述第一图像帧中的一个矩形区域的图像,n是大于等于2的整数;对所述第一图像帧进行压缩(例如无损压缩)得到第二图像帧,所述第二图像帧包括n个经压缩后的片;在内存中为所述n个经压缩后的片分配帧缓冲区;为所述n个经压缩后的片在所述帧缓冲区中所占用的内存空间建立虚拟页面与物理页面的映射关系,其中,每个经压缩后的片所占用的内存空间包括一个或多个物理页面,在所述映射关系下所述n个经压缩后的片所占用的多个虚拟页面的页号连续;分别将所述n个经压缩后的片存储到所述帧缓冲区。可以看到,本发明实施例中视频解码器可将各个经过压缩(例如无损压缩)后的片依次紧凑地存入帧缓冲区中虚拟地址连续的内存区域,实现所占用内存空间的归集,这些经过压缩后的片所占用的物理页面的页号可以是离散的,但是这些经过压缩后的片所占用的虚拟页面的页号是连续的。所以,实施本发明实施例能够有效降低解码时的参考帧存取对内存的占用目的。基于第一方面,在本发明可能的实施方式中,为了实现内存资源充分利用,设计了以下两种方式来实现动态分配帧存,实现精细粒度的内存分配或内存回收,这两种方式分别为内存回收模式和预分配模式(或称按需分配模式),下面分别描述这两种方式。(1)在采用内存回收模式的内存分配实现方式中,在进行物理内存分配时,每次分配一个小块的内存(例如1mb或512kb),称这样一个小块的内存称为内存块,多次分配后可形成一个解码通道的内存块池。内存块池的大小可对应帧存开销的最小值,例如每个帧缓冲区需要分配15mb的内存空间,针对6帧图像帧,4k视频的解码通道大约需要90mb(即15mb×6=90mb)。在解码过程中,可在内存中的内存块池中为所述n个经压缩后的片分配所述帧缓冲区,所述帧缓冲区包括m个内存块(例如每个内存块为1mb,那么一个15mb的帧缓冲区需要15个内存块),每个内存块包括多个物理页面,所述多个物理页面对应于多个页号连续的虚拟页面,但这些虚拟页面对应的物理页面可以是离散的(即这些物理页面的页号可以是不连续的)。所述n个经压缩后的片所占用的内存空间小于等于所述m个内存块对应的内存空间。在n个经压缩后的片需要被实际存入内存的时候,建立虚拟地址与物理地址的映射关系,之后,再将n个经压缩后的片紧凑排列地存入该帧缓冲区的内存块。最后,根据实际内存占用量,将帧缓冲区中未被占用的剩余内存块摘除,重新回收到内存块池,所述剩余内存块可用于后续的帧缓冲区分配和片存储,从而实现了内存空间的动态利用,大大提升了内存的使用效率。其中,本发明实施例为所述n个经压缩后的片在所述帧缓冲区中所占用的内存空间建立虚拟页面与物理页面的映射关系的过程如下:寻找到内存块池中的无占用的内存块,这些内存块分别对应一个页表,该页表记录了对应的内存块中的各个虚拟页面与物理页面的映射关系。然后,将足量的内存块(m个内存块)组合成容器所指示大小的存储空间,例如虚拟内存空间为15mb时,选择总量为15mb的若干个内存块组合为容器所需的物理内存空间,例如将15个1mb的内存块进行组合。具体的,可将所述总量为15mb的若干个内存块对应的各个页表组合成帧缓冲区的页表,这样,就实际建立起了帧缓冲区中虚拟地址与物理地址的映射关系,从而确保该帧缓冲区拥有真正的15m物理内存可以看到,本发明实施例通过可将图像帧无损压缩后紧凑内存排布存入所分配的帧缓冲区,通过对物理内存空间进行精细化分配,实现对碎片内存的归集利用,视频解码器解码完一帧图像帧并存入帧缓冲区后,可将帧缓冲区没有用完的内存回收出来,释放未被占用的空闲内存,合并到下一帧的解码使用中。由于无损压缩不损失图像质量,这样,就能用较少的内存预算,实际获得较多的帧缓冲区个数,从而确保各项性能指标并不受损,实现了不损失图像质量的前提下既节省带宽又节省帧存的目的。(2)在采用预分配模式的内存分配实现方式中,可在解码前为图像帧分配的帧缓冲区只包括虚拟内存空间,而不包括物理内存空间,该虚拟内存空间包括多个页号连续的虚拟页面。也就是说,一开始分配帧缓冲区时建立的页表只指示了一个或多个虚拟页面,而没有指示虚拟页面与物理页面的映射关系,与前一种实现方案不同,本按需分配方案不涉及内存回收而是在分配实际物理内存之前提前分配虚拟内存空间。例如解码时,需要分配15个帧缓冲区,每个帧缓冲区占15mb空间,则在虚拟内存空间中足额分配15mb×15的空间。但对于这15个帧缓冲区中的每一个帧缓冲区,其对应的每个虚拟页面都可能没有物理页面与其进行映射。在需要将图像帧的数据单元存入内存时,再分别对所述一个或多个虚拟页面的页号进行页表查询;若查询到页表中不具有一个或多个虚拟页面的页号与物理页面的页号的映射关系,则在所述内存中为所述一个或多个虚拟页面分配所述一个或多个物理页面,从而实现了按照该数据单元的实际需求来分配实际的物理页面。其中,当需要在内存中寻找未被占用的一个或多个物理页面时,可查询位图(bitmap),位图包括多个位,每个位分别用于指示内存中的一个物理页面是否被占用,然后根据位图来寻找到未被占用的一个或多个物理页面。例如,位图中的各个位分别指示了一个物理页面的占用状态,其中“0”代表对应的物理页面未被占用,“1”代表了对应的物理页面已被占用。在经压缩后的数据单元存入帧缓冲区过程中,当需要寻找未被占用的4个物理页面时,可根据位图寻找4个值为“0”的位所指示的4个物理页面。本发明实施例中,建立帧缓冲区的虚拟页面与物理页面的映射关系的过程如下:在需要将经压缩后的数据单元存入帧缓冲区时,根据数据单元对应的一个或多个虚拟页面的页号进行页表查询,若查询不到与所述一个或多个虚拟页面的页号对应的物理页面的页号,则在内存中寻找未被占用的一个或多个物理页面,将所述一个或多个物理页面的页号增加到页表,以使得页表中所述一个或多个虚拟页面的页号中的每一个分别对应一个物理页面的页号。这样,就建立帧缓冲区的虚拟页面与物理页面的映射关系。可以看到,本发明实施例通过改进页表的建立机制,实现了内存“按需占用”,图像帧经过无损压缩后,通过紧凑内存排布存入按需分配的物理内存空间,由于不损失图像质量,所以实现了不损失图像质量的前提下既节省带宽又节省帧存的目的。另外,本发明实施例中在查询页表发现缺少物理页面与虚拟页面的对应关系时,能够自动补充物理页面,使缺页处理过程对媒体框架透明,使得本发明实施例技术方案可以适用于任何形态的媒体框架,有利于提升应用性和用户体验。基于第一方面,在可能的实施方式中,在存储过程可将多个经压缩后的片、多个压缩信息、和一个头地址信息组成一个数据单元的形式存储到所述帧缓冲区。例如,图像帧以ctu为单位形成数据单元进行数据存取,图像帧划分成n个相同数据长度的片,每个数据单元例如包括3个片,此外,每个数据单元还包括一个头地址信息以及每个片所对应的压缩信息,头地址信息指示了各个数据单元的起始地址,压缩信息指示了各个片的压缩模式/压缩后的长度。如图7所示,图像帧中的数据单元1可包括头地址信息1、片1的压缩信息1、片2的压缩信息2、片3的压缩信息3、以及片1、片2、片3。在图像压缩过程根据需要存入帧缓冲区的数据量来动态分配物理内存空间,并且将各个经过压缩后的数据单元依次紧凑地存入帧缓冲区,实现所占用内存空间的归集,且实现建立了各个经过压缩后的数据单元与存储地址之间的映射关系。这样,配合原有的各片的长度就可以实现各个数据单元的随机存取。在经压缩后的图像完全存入帧缓冲区后,便可释放帧缓冲区中未占用的内存空间基于第一方面,在可能的实施方式中,在分别将所述n个经压缩后的片存储到内存的帧缓冲区后,在对后续图像进行解码的过程中,还包括:从所述帧缓冲区分别读取所述n个经压缩后的片;对所述n个经压缩后的片做解压得到第一图像帧的解码帧;以所述解码帧作为参考帧进一步对所述码流进行解码得到第三图像帧。需要说明的是,如果上述压缩过程采用是无损压缩,那么所述解码帧就是所述第一图像帧;如果压缩过程采用是其他的压缩方式(如有损压缩),且该压缩方式造成了部分图像损失,那么解码帧为损失部分信息的第一图像帧。第二方面,本发明实施例提供了一种内存管理的装置,所述装置包括解码模块、内存管理模块、压缩模块和解压缩模块,其中:所述解码模块,用于对码流进行解码得到第一图像帧,所述第一图像帧包括n个片,每个片表示所述第一图像帧中的一个区域的图像,n是大于等于2的整数;所述压缩模块,用于对所述第一图像帧进行压缩得到第二图像帧,所述第二图像帧包括n个经压缩后的片;所述内存管理模块,用于在内存中为所述n个经压缩后的片分配帧缓冲区;还用于为所述n个经压缩后的片在所述帧缓冲区中所占用的内存空间建立虚拟页面与物理页面的映射关系,其中,每个经压缩后的片所占用的内存空间包括一个或多个物理页面,在所述映射关系下所述n个经压缩后的片所占用的多个虚拟页面的页号连续;还用于分别将所述n个经压缩后的片存储到所述帧缓冲区。需要说明的是,上述功能模块具体用于实现第一方面所描述的方法,相关实施方式的实现过程还可参考第一方面的描述,这里不再赘述。第三方面,本发明实施例提供了又一种内存管理的装置,所述装置包括处理器和存储器,其中:所述处理器用于,对码流进行解码得到第一图像帧,所述第一图像帧包括n个片tile,每个片表示所述第一图像帧中的一个区域的图像,n是大于等于2的整数;对所述第一图像帧进行压缩得到第二图像帧,所述第二图像帧包括n个经压缩后的片;在所述存储器中为所述n个经压缩后的片分配帧缓冲区;还用于为所述n个经压缩后的片在所述帧缓冲区中所占用的内存空间建立虚拟页面与物理页面的映射关系,其中,每个经压缩后的片所占用的内存空间包括一个或多个物理页面,在所述映射关系下所述n个经压缩后的片所占用的多个虚拟页面的页号连续;还用于分别将所述n个经压缩后的片存储到所述帧缓冲区。需要说明的是,所述处理器和存储器具体用于实现第一方面所描述的方法,相关实施方式的实现过程还可参考第一方面的描述,这里不再赘述。第四方面,本发明实施例提供了又一种非易失性计算机可读存储媒介;所述计算机可读存储媒介用于存储第二方面所述方法的实现代码。所述程序代码被计算设备执行时,所述用户设备用于第一方面所述方法。第五方面,本发明实施例提供了一种计算机程序产品;该计算机程序产品包括程序指令,当该计算机程序产品被计算设备执行时,该控制器执行前述第一方面所述方法。该计算机程序产品可以为一个软件安装包,在需要使用前述第一方面的任一种可能的设计提供的方法的情况下,可以下载该计算机程序产品并在控制器上执行该计算机程序产品,以实现第一方面所述方法。可以看到,本发明实施例能够实现图像帧经过压缩(如无损压缩)后,存入帧缓冲区中虚拟地址连续的内存区域,实现了所占用内存区域的归集,所以实施本发明实施例能够达到有效降低解码时的参考帧存取对内存的占用目的。另外,采用本发明实施例提供的内存回收方案还能将帧缓冲区没有用完的内存回收出来,合并到下一帧的解码使用,实现对碎片内存的有效利用;采用本发明实施例提供的按需分配方案能够改进页表的建立机制,实现了内存“按需占用”,极大提升了内存的使用效率。附图说明为了更清楚地说明本发明实施例或
背景技术
:中的技术方案,下面将对本发明实施例或
背景技术
:中所需要使用的附图进行说明。图1是本发明实施例提供的一种视频编解码系统的示意性框图;图2是本发明实施例提供的一种视频编解码装置的示意性框图;图3是本发明实施例提供的一种视频编解码系统中的目的地装置的示意性框图;图4是本发明实施例提供的一种将图像帧划分为多个片的示意图;图5是现有技术提供的一种随机存取的实现方案示意图;图6是本发明实施例提供的一种随机存取的实现方案示意图;图7是本发明实施例提供的一种数据单元的数据格式示意图;图8是本发明实施例提供的一种内存分配的应用场景示意图;图9是本发明实施例提供的一种建立虚拟页面和物理页面映射关系的应用场景示意图;图10是本发明实施例提供的又一种内存分配的应用场景示意图;图11是本发明实施例提供的又一种通过smmu进行缺页处理的应用场景示意图;图12是本发明实施例提供的一种内存管理方法的流程示意图;图13是本发明实施例提供的又一种内存管理方法的流程示意图;图14是本发明实施例提供的又一种内存管理方法的流程示意图。具体实施方式下面结合本发明实施例中的附图对本发明实施例进行描述。本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。下面首先介绍本发明实施例涉及的系统架构。参见图1,图1是本发明实施例提供的一种视频编解码系统的示意性框图。如图1所示,视频编解码系统包含源装置10a及目的地装置10b。源装置10a可产生经编码视频数据并发送码流至目的地装置10b,因此,源装置10a可被称作视频编码装置或视频编码设备。目的地装置10b可解码由源装置10a产生的经编码视频数据并进行视频显示,因此,目的地装置10b可被称作视频解码装置或视频解码设备。源装置10a及目的地装置10b可为视频编解码装置或视频编解码设备的实例。源装置10a及目的地装置10b可包括广泛范围的装置,包含台式计算机、移动计算装置、笔记本(例如,膝上型)计算机、平板计算机、机顶盒、智能手机等手持机、电视、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机,或其类似者。在一实例中,源装置10a可经由磁盘存取或卡存取方式来存取存储媒介。存储媒介可包含多种本地存取式数据存储媒介,例如ddr内存、蓝光光盘、dvd、cd-rom、快闪存储器,等等。目的地装置10b可经由信道17接收来自源装置10a的编码后的视频数据。信道17可包括能够将经编码视频数据从源装置10a移动到目的地装置10b的一个或多个媒介及/或装置。在一个实例中,信道17可包括使源装置10a能够实时地将编码后的视频数据直接传输到目的地装置10b的一个或多个通信媒介。在此实例中,源装置10a可根据通信标准(例如,无线通信协议)来调制编码后的视频数据,且可将调制后的视频数据传输到目的地装置10b。所述一个或多个通信媒介可包含无线及/或有线通信媒介,例如射频(rf)频谱或一根或多根物理传输线。所述一个或多个通信媒介可形成基于包的网络(例如,局域网、广域网或全球网络(例如,因特网))的部分。所述一个或多个通信媒介可包含路由器、交换器、基站,或促进从源装置10a到目的地装置10b的通信的其它设备。在另一实例中,信道17可包含存储由源装置10a产生的编码后的视频数据的存储媒介。在此实例中,目的地装置10b可经由磁盘存取或卡存取来存取存储媒介。存储媒介可包含多种本地存取式数据存储媒介,例如ddr内存、蓝光光盘、dvd、cd-rom、快闪存储器,等等。在另一实例中,信道17可包含文件服务器或存储由源装置10a产生的编码后的视频数据的另一中间存储装置。在此实例中,目的地装置10b可经由流式传输或下载来存取存储于文件服务器或其它中间存储装置处的编码后的视频数据。文件服务器可以是能够存储编码后的视频数据且将所述编码后的视频数据传输到目的地装置10b的服务器类型。实例文件服务器包含web服务器(例如,用于网站)、文件传送协议(ftp)服务器、网络附加存储(nas)装置,及本地磁盘驱动器。目的地装置10b可经由标准数据连接(例如,因特网连接)来存取编码后的视频数据。数据连接的实例类型包含适合于存取存储于文件服务器上的编码后的视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,dsl、缆线调制解调器等),或两者的组合。编码后的视频数据从文件服务器的传输可为流式传输、下载传输或两者的组合。本发明实施例的技术不限于无线应用场景,示例性的,可将所述技术应用于支持以下应用等多种多媒体应用的视频编解码:空中电视广播、有线电视发射、卫星电视发射、流式传输视频发射(例如,经由因特网)、存储于数据存储媒介上的视频数据的编码、存储于数据存储媒介上的视频数据的解码,或其它应用。在一些实例中,视频编解码系统可经配置以支持单向或双向视频传输,以支持例如视频流式传输、视频播放、视频广播及/或视频电话等应用。在图1的实例中,源装置10a包含视频数据源11、视频编码器12及ddr内存13。此外,在一些实例中,源装置10a还包括输出接口(图1未示),输出接口可包含调制器/解调器(调制解调器)及/或发射器,用于将编码的码流通过信道17发送至目的地装置10b。其中,视频数据源11可包含视频俘获装置(例如,视频相机)、含有先前俘获的视频数据的视频存档、用以从视频内容提供者接收视频数据的视频输入接口,及/或用于产生视频数据的计算机图形系统,或上述视频数据源的组合。视频编码器12可编码来自视频数据源11的视频数据,视频数据包括多帧图像帧。在一些实例中,视频编码器12可将编码后的视频数据(例如参考帧)经过压缩后存储于ddr内存13中,相应的,视频编码器12还可解压缩ddr内存13中的参考帧,利用该参考帧来继续编码其他的图像帧。在图1的实例中,目的地装置10b包含视频解码器14、视频显示器15和ddr内存16。在一些实例中,目的地装置10b还可包括输入接口(图未示出)、输入接口可包含接收器及/或调制解调器。输入接口可经由信道17接收码流,该码流包括编码后的视频数据。其中,视频解码器14可解码码流中的经编码后的视频数据,得到解码后的视频数据。在一些实例中,视频解码器14可将解码后的视频数据经过压缩后存储于ddr内存16中,相应的,视频解码器14还可解压缩ddr内存16中的视频数据,以便于将解压缩后得到的图像帧作为参考帧来供视频解码器14继续解码后续的码流。另外,当需要进行视频显示时,也可以解压缩ddr内存16中的视频数据,解压缩后得到的视频数据可输入至视频显示器15。视频显示器15可与目的地装置10b整合在一起,或者,视频显示器15可独立部署在目的地装置10b的外部。一般来说,视频显示器15可根据所输入的视频数据进行视频显示。视频显示器15可包括多种显示装置,例如液晶显示器(lcd)、等离子体显示器、有机发光二极管(oled)显示器或其它类型的显示装置。本发明实施例所描述的内存管理方法主要应用于源装置10a和/或目的地装置10b相应的编解码中的数据压缩/解压缩过程。参见图2,图2是本发明实施例提供的一种视频编解码装置50的示意性框图,所述视频编解码装置50可用于实现源装置10a和/或目的地装置10b的功能。装置50可以例如是无线通信系统的移动终端或者有线通信系统的用户设备。应理解,可以在可能需要对视频图像进行编码和解码,或者编码,或者解码的任何电子设备或者装置内实施本发明的实施例。如图2所示,装置50可以包括用于控制装置50的处理器56(或者控制器)、存储器58和编码解码器54,对应于图1中的源装置10a的视频编码器12或目的地装置10b的视频解码器14。处理器56可用于运行操作系统(os),处理器56可以连接到存储器58,该存储器58例如为ddr内存(或称ddr内存条)、蓝光光盘、dvd、cd-rom、快闪存储器等等存储媒介,在本发明具体实施例中,存储器58可以存储经压缩图像的数据(例如经过无损压缩后的图像帧),和/或也可以存储用于在处理器56上实施的指令,该存储器58对应于图1中的源装置10a的ddr内存13或目的地装置10b的ddr内存16。处理器56可连接到适合于实现视频数据的编码和解码或者由处理器56控制的辅助编码和解码的编码解码器54。装置50还可以包括形式为液晶显示器的显示器32,显示器32可以是适合于显示图像或者视频的任何适当的显示器技术,对应于目的地装置10b的视频显示器15。装置50还可以包括小键盘34。在本发明的其它实施例中,可以运用任何适当的数据或者用户接口机制。例如,可以实施用户接口为虚拟键盘或者数据录入系统作为触敏显示器的一部分。装置可以包括麦克风36或者任何适当的音频输入,该音频输入可以是数字或者模拟信号输入。装置50还可以包括如下音频输出设备,该音频输出设备在本发明的实施例中可以是以下各项中的任何一项:耳机38、扬声器或者模拟音频或者数字音频输出连接。装置还可以包括用于与其它设备的近程视线通信的红外线端口42。在其它实施例中,装置50还可以包括任何适当的近程通信解决方案,比如蓝牙无线连接或者usb/火线有线连接。可选的,装置50还可以包括用于提供用户信息并且适合于提供用于在网络认证和授权用户的认证信息的读卡器48和智能卡46,例如uicc和uicc读取器。装置50还可以包括无线电接口52,该无线电接口52连接到处理器56并且适合于生成例如用于与蜂窝通信网络、无线通信系统或者无线局域网通信的无线通信信号。装置50还可以包括天线44,该天线44连接到无线电接口52用于向其它(多个)装置发送在无线电接口52生成的射频信号并且用于从其它(多个)装置接收射频信号。在本发明的一些实施例中,装置50可以通过无线或者有线连接接收视频数据进行编码/解码。本发明实施例所描述的内存管理方法主要应用于装置50相应的编解码中的数据压缩/解压缩过程。下文主要从解码侧的角度来具体描述本发明实施例所提供的内存管理方案,需要理解的是,本发明实施例所提供的内存管理方案也可以应用于编码侧,即关于编码侧的内存管理方案可参考解码侧的实现方案进行类似实施,这是因为在编码侧有时也会涉及到解码方案,因此也可以使用本实施例提到的适用于解码侧的方案,所以后文将不再赘述。参见图3,图3示出了一种视频编解码系统中的目的地装置的具体逻辑结构,该目的地装置包括视频解码器20、视频显示器30和内存(包括帧缓冲区22,帧缓冲区又可称为帧存),如ddr内存。其中,视频解码器20在硬件实现上可为图2实施例所示的编码解码器54、或包括编码解码器54或是其一部分,视频解码器20包括解码器21和内存管理模块23。另外,视频解码器20还可包括压缩模块24和解压缩模块25,在一可能实施例中,压缩模块24和解压缩模块25可以作为解码器的功能模块来实现;在又一可能实施例中,压缩模块24和解压缩模块25也可以独立于解码器来实现。其中,帧缓冲区(framebuffer)22用于实现存储视频数据,具体的可存储经过压缩模块24采用无损压缩方式压缩的图像帧。具体实现中,目的地装置的内存可采用ddr来实现,帧缓冲区22可位于ddr内存中,也就是说,帧缓冲区22指示了内存中所分配的用于图像存储的存储区域。具体实现中,帧缓冲区22可以是视频显示器所显示画面的一个直接映象,帧缓冲区的每一存储单元对应屏幕上的一个像素,整个帧缓冲区对应一帧图像。根据应用场景的需要,帧缓冲区22的数量可以有多个,每个帧缓冲区22可用于动态存储一个用于作为后续解码参考的参考帧或者用于视频显示的图像帧。需要说明的是,本实施例的过压缩模块24和解压缩模块25可以使用无损压缩技术和有损压缩技术,并在使用无损压缩技术时达到更加的技术效果。本实施例仅以无损压缩技术为例作说明,但不用于限定实施例方案在的有损压缩技术场景下的应用。内存管理模块23可通过动态的内存分配来为帧缓冲区22分配内存空间(虚拟内存空间/物理内存空间),实现有效归集利用内存空间或回收空闲内存空间,从而节省内存的消耗。具体实施例中,解码器21对输入的码流进行解码,输出图像帧。为节省带宽,图像帧需经过压缩模块24压缩之后,再存入内存管理模块23中所配置的帧缓冲区22。在一可能实施例中,存入帧缓冲区22的图像帧作为参考帧,在后续解码过程中该参考帧经过解压缩模块25进行解压缩之后应用到解码器21中进行解码参考;在又一可能的实施例中,存入帧缓冲区22的图像帧经过解压缩模块31之后进行解压缩之后应用到视频显示器30中进行视频显示。可以理解的,本发明实施例中,压缩过程和解压缩过程之间互相对应,也就是说,当压缩模块采用无损压缩方式对图像进行压缩,那么解压缩模块25或解压缩模块31就是相应地对经无损压缩后的图像进行解压缩,恢复原先的图像且不引起图像失真。本发明实施例中,可将图像帧沿着水平和垂直方向分割成n个相同的矩形区域,每个矩形区域成为一个片(tile)。这样,可以以片为单元进行图像数据的存取。此外,图像帧还可以有多种分割方式,比如在h.265中,图像帧可被分割为多个大小相等的树形编码单元(ctu),ctu是h.265基本处理单元,每个ctu的大小例如可以是16x16或32x32或64x64等等。这样,每个ctu可能会包括多个片。举例来说,如图4所示的一种图像帧分割方式示例中,一个图像帧可包括8个ctu,同时,该图像帧可分割成24个片,这样,每个ctu可包括3个片。需要说明的是,本示例仅仅用于解释而非限定。下面介绍本发明实施例涉及的虚拟内存空间和物理内存空间。在计算科学中,内存可分为虚拟内存空间和物理内存空间。物理内存空间直接与内存条的物理硬件相关,表示根据内存条的地址线直接进行寻址的内存空间大小。示例性地,处理器的操作系统(os)运行的一个程序(进程)时,其所需的内存空间是有可能大于内存条的总容量,举例来说内存条的总容量是256m,而程序却需要创建一个2g的数据区,那么就无法将所有数据都能一起加载到内存条的物理内存中,有一部分数据要放到其他媒介(比如硬盘)中,也就是说,操作系统就会借助其他媒介空间作为虚拟的内存空间,把当前进程暂时不需要的数据放在其他媒介上。待进程需要访问那部分数据时,再通过调度进入物理内存空间。或者,os或其他软件的进程为了管理在物理内存中碎片化的数据,通过可映射到物理内存的虚拟内存来掌控。尽管物理内存的地址是碎片化、和非连续的,但进程所观察到的虚拟内存仍然是连续的,便于进程进行处理。以上仅仅是举例,总体来说,虚拟内存空间可以理解为os或其他软件的进程运行时所有内存空间(如2g)的总和(即可理解为在进程的角度所看到的内存空间),并且可能有一部分不在物理内存空间(如256m)中,而是在其他媒介中。所以,虚拟内存和物理内存之间需要建立映射关系,使得软件进程能管理和掌控与物理内存对应的虚拟内存的操作。在计算科学的内存分页机制中,操作系统对虚拟内存地址空间进行分页产生虚拟页面(page),对物理内存地址空间进行分页产生物理页面(或称物理页帧,pageframe),虚拟页面包含相应的虚拟地址,物理页面包含相应的物理地址,一个虚拟页面和一个物理页面的空间大小是一样的,所以,虚拟页面的总数要大于物理页面的总数。在处理器中,设置有系统内存管理单元(systemmemorymanagementunit,smmu),smmu可用处理器来管理虚拟内存和物理内存的控制线路,负责将虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权等等。具体的,smmu维护有一个页表(pagetable),页表可用于记录虚拟页面与物理页面的映射关系,更确切的说,是记录虚拟页面的页号与物理页面的页号之间的一一映射关系。本发明实施例中,为了保证图像帧数据存入内存的帧缓冲区后内存不膨胀以及寻址方便,图像帧数据需要能够在帧缓冲区中随机存取。为了更好理解本发明实施例的技术思想,下面首先比较现有技术与本发明实施例在随机存取方案的实现上的差异。参见图5,图5为一种随机存取的实现方案。在该方案中,系统固定分配用于存储图像帧的帧缓冲区,分配帧缓冲区的时候不仅为该帧缓冲区分配了虚拟内存空间,还为该帧缓冲区分配了物理内存空间,并将虚拟内存空间的虚拟页面和物理内存空间的物理页面完全对应起来。具体的,图像帧划分成n个相同数据长度的片,在不采用无损压缩技术对图像进行压缩时,这种方案通过固定每个片的起始地址,将片的坐标固定映射为片的起始存储地址,这样就能直接建立各个片与其存储地址的静态映射关系(如图5上半部分示出灰色区域分别表示片1、片2…片的数据长度)。在采用无损压缩后,不同的片被压缩的程度各有差异(如图5下半部分示出灰色区域分别表示片1、片2…片n压缩后的数据长度),但是各个数据单元的起始存储地址依然固定不变,所以在帧缓冲区存取图像帧时能够实现随机存取。然而,通过无损压缩后空闲出来的内存(如图4下半部分示出空白区域表示空闲出来的内存)也很难被利用到其他帧存中,造成浪费。为了解决现有技术中无损压缩方式形成的内存浪费,本发明实施例进一步提供的内存管理模块23采用动态分配帧存的策略,在对帧缓冲区22的存储空间分配中实现精细粒度的内存分配或空闲内存的回收,实现效率最大化。内存管理模块23可根据解码器21的需要预先分配帧缓冲区(如图6上半部分的白色区域),该帧缓冲区只是一片虚拟空间。参见图6,在本发明一种实施例中,图像帧以片为单位进行数据存取,图像帧划分成n个相同数据长度的片。在图像压缩过程根据需要存入帧缓冲区的数据量来动态分配物理内存空间,并且将各个经过压缩(例如无损压缩)后的片依次紧凑地存入帧缓冲区,实现所占用内存空间的归集(如图6下半部分示出灰色区域),各个经过压缩后的片的起始存储地址不再固定。为了实现随机存储,本发明实施例重新建立各个经过压缩后的片与存储地址之间的映射关系。具体的,除了存储各个经过压缩后的片之外,本发明实施例还存储了各个片对应的头地址信息以及压缩信息,头地址信息指示了各个经过压缩后的片的起始地址,压缩信息指示了各个经过压缩后的片的压缩模式/压缩后的长度,这样配合原有的各片的长度就可以实现各个片的随机存取。在经压缩后的图像完全存入帧缓冲区后,便可释放帧缓冲区中未占用的内存空间(如图6下半部分示出空白区域)。参见图7,在本发明实施例一种具体实现中,图像帧以ctu为单位形成数据单元进行数据存取,图像帧划分成n个相同数据长度的片,每个数据单元例如包括3个片,此外,每个数据单元还包括一个头地址信息以及每个片所对应的压缩信息,头地址信息指示了各个数据单元的起始地址,压缩信息指示了各个片的压缩模式/压缩后的长度。如图7所示,图像帧中的数据单元1可包括头地址信息1、片1的压缩信息1、片2的压缩信息2、片3的压缩信息3、以及片1、片2、片3。在图像压缩过程根据需要存入帧缓冲区的数据量来动态分配物理内存空间,并且将各个经过压缩后的数据单元依次紧凑地存入帧缓冲区,实现所占用内存空间的归集,且实现建立了各个经过压缩后的数据单元与存储地址之间的映射关系。这样,配合原有的各片的长度就可以实现各个数据单元的随机存取。在经压缩后的图像完全存入帧缓冲区后,便可释放帧缓冲区中未占用的内存空间下面描述本发明实施例中,内存管理模块23采用动态分配帧存的策略,实现精细粒度的内存分配或内存回收的几种实现方式。如下面(1)和(2)两种方式分别为内存回收模式和预分配模式,以实现内存资源充分利用。(1)一种精细粒度的内存分配实现方式中,采用内存回收模式,对操作系统而言,内存管理模块23对视频帧存的分配行为可分为如下两方面:一方面是通过内存管理模块23或操作系统os中的视频固件(videofirmwire,vfmw)进行物理内存分配,如图8所示,每次分配一个小块的内存(例如1mb或512kb),称这样一个小块的内存称为内存块,多次分配后可形成一个解码通道的内存块池。内存块池的大小可对应帧存开销的最小值,例如每个帧缓冲区需要分配15mb的内存空间,针对6帧图像帧(即对应于图8所示的6个帧缓冲区),4k视频的解码通道大约需要90mb(即15mb×6=90mb)。内存块池中的内存由多个离散的内存块构成。每个内存块内的虚拟地址是连续的,也就是说,每个内存块对应多个虚拟页面,同一内存块中的这些虚拟页面之间的页号连续,每个虚拟页面对应于一个物理页面,但这些虚拟页面对应的物理页面可以是离散的(即这些物理页面的页号可以是不连续的)。另一方面,可通过内存管理模块23预先为每个帧缓冲区分配足够的虚拟内存空间(即只分配虚拟地址空间),这样的虚拟内存空间又可称为容器。例如如果每个帧缓冲区需要分配15mb的内存空间,那么需要为每个帧缓冲区分配15mb的容器。通过所分配的容器,播放框架看到的“图像帧”依然具有原先固定的虚拟地址与数据长度,从而本发明实施例的技术方案能够兼容于现有的各种播放框架。在容器分配时,帧缓冲区中的虚拟地址与物理地址的对关系是不确定的,这种对应关系在图像帧需要被实际存入内存的时候才建立起来。下面进一步描述本发明实施例中,在图像帧需要被实际存入内存的时候,内存管理模块23建立虚拟地址与物理地址的映射关系(即容器与物理内存空间的映射关系)的实施方式。本发明实施例中,可在vfmw拥有内存块池的前提下,在解码之前为每个帧缓冲区(即空有虚拟地址而无物理内存空间的容器)分配实际的物理内存空间。由于无损压缩的压缩率具有不确定性,所以在本发明可能实施例中,在解码器解码每帧图像帧之前,都将对应的各个容器注满实际的物理内存空间,也就是说,解码启动之前,建立帧缓冲区的虚拟地址与物理地址之间的映射关系,其实现过程如下:寻找到内存块池中的无占用的内存块,这些内存块分别对应一个页表,该页表记录了对应的内存块中的各个虚拟页面与物理页面的映射关系。然后,将足量的内存块组合成容器所指示大小的存储空间,例如一个容器所指示的虚拟内存空间为15mb时,选择总量为15mb的若干个内存块组合为容器所需的物理内存空间,例如将15个1mb的内存块进行组合。具体的,可将所述总量为15mb的若干个内存块对应的各个页表组合成帧缓冲区的页表,这样,就实际建立起了帧缓冲区中虚拟地址与物理地址的映射关系,从而确保该帧缓冲区拥有真正的15m物理内存。解码结束后,将图像帧各个经压缩后的数据单元紧凑排列地存入该帧缓冲区,根据解码器上报的实际内存占用量,将帧缓冲区中未被占用的内存块摘除,重新回收到内存块池。例如,参见图9,在对帧缓冲区0的实际存储空间分配中,寻找到m个内存块(内存块1、内存块2…内存块m)来组合成实际存储空间,每个内存块都具有对应的页表,将这些页表拷贝在一起组合为帧缓冲区0的页表。解码结束后,根据解码器上报的内存占用量,将多余的内存块标记为“空闲”,释放这些空闲的内存块回收到内存块池,这些内存块池中的内存块可继续应用于后续的帧缓冲区(容器),从而实现了内存空间的动态利用。在一种具体应用场景中,上述过程可包括:os提供分配帧缓冲区的功能,封装成“vfb_alloc()”,其返回的虚拟空间没有物理页表对应。内存管理模块自行管理物理内存预算,比如4k解码通道需要90mb内存(包括6个帧缓冲区),则通过“mmb_new()”指令以较小粒度(比如1mb或512kb)分配多块,总容量为90mb。在解码启动之前,解码器执行帧缓冲区的虚拟地址与物理地址之间的对应,寻找空闲的内存块,并将各个内存块对应的页表挂接到帧缓冲区页表,确保当前针对的帧缓冲区是真正的15m物理内存,避免出现缺页。解码结束后,内存管理模块根据解码器上报的当前的帧缓冲区的内存占用量,将无占用的内存块摘除,重新回收到内存块池,以便后续使用。可以看到,本发明实施例通过可将图像帧无损压缩后紧凑内存排布存入所分配的帧缓冲区,通过对物理内存空间进行精细化分配,实现对碎片内存的归集利用,解码器解码完一帧图像帧并存入帧缓冲区后,内存管理模块可将帧缓冲区没有用完的内存回收出来,释放未被占用的空闲内存,合并到下一帧的解码使用中。这样,就能用较少的内存预算,实际获得较多的帧缓冲区个数,从而确保各项性能指标并不受损,实现了不损失图像质量的前提下既节省带宽又节省帧存的目的。(2)在又一种内存分配实现方式中,采用预分配模式或按需分配方式,内存管理模块23可在解码前为图像帧分配的帧缓冲区只包括虚拟内存空间,而不包括物理内存空间,该虚拟内存空间包括多个页号连续的虚拟页面。也就是说,一开始分配帧缓冲区时建立的页表只指示了虚拟页面,而没有指示虚拟页面与物理页面的映射关系,与前一种实现方案不同,本按需分配方案不涉及内存回收而是在分配实际物理内存之前提前分配虚拟内存空间。例如解码时,需要分配15个帧缓冲区,每个帧缓冲区占15mb空间,则在虚拟内存空间中足额分配15mb×15的空间。但对于这15个帧缓冲区中的每一个帧缓冲区,其对应的每个虚拟页面都可能没有物理页面与其进行映射。在需要将图像帧的数据单元存入内存时,通过缺页处理的方式按照该数据单元的实际需求来分配实际的物理页面。本发明实施例中,建立帧缓冲区的虚拟页面与物理页面的映射关系的过程如下:在需要将经压缩后的数据单元存入帧缓冲区时,根据数据单元对应的一个或多个虚拟页面的页号进行页表查询,若查询不到与所述一个或多个虚拟页面的页号对应的物理页面的页号,则在内存中寻找未被占用的一个或多个物理页面,将所述一个或多个物理页面的页号增加到页表,以使得页表中所述一个或多个虚拟页面的页号中的每一个分别对应一个物理页面的页号。这样,就建立帧缓冲区的虚拟页面与物理页面的映射关系。之后,就可将经压缩后的数据单元存储到所述对应的物理页面。在一种需要进行缺页处理的具体应用场景中,当需要在内存中寻找未被占用的一个或多个物理页面时,内存管理模块23可查询位图(bitmap),位图包括多个位,每个位分别用于指示内存中的一个物理页面是否被占用,然后根据位图来寻找到未被占用的一个或多个物理页面。如图10所示,位图中的各个位分别指示了一个物理页面的占用状态,其中“0”代表对应的物理页面未被占用,“1”代表了对应的物理页面已被占用。在经压缩后的数据单元存入帧缓冲区0过程中,当需要寻找未被占用的4个物理页面时,可根据位图寻找4个值为“0”的位所指示的4个物理页面。需要说明的是,在上述处理流程中,“寻找值为0的位”可以有多种多样的实现方式。比如,如果物理页面数量较少,可以直接采用依顺序查询的方式来寻找到值为“0”的位;如果物理页面数量非常多,即对应位图中的位的数目巨大,以128mb物理内存空间为例意味着32768个物理页,因此位图有32768个位,这种情况下可以通过“分级标示”的方法来查找“0”位,比如将32768个位分成256段,每段包含128个位,这128个位通过“相互乘积”来形成一个状态标识,如果某一段的状态标识为“0”,说明这一段就存在“0”位,如果某一段的状态标识为“1”,说明这一段就不存在“0”位。这样就能快速实现“寻找值为0的位”。在本发明实施例的具体实现中,内存管理模块23可包括系统内存管理单元(smmu)来实现帧缓冲区的实际存储空间分配过程中的缺页处理。参见图11,smmu可包括转换检测缓冲区(translationlookasidebuffer,tlb)模块、缺页处理模块和仲裁模块。tlb模块可预先将tlb载入,动态维护页表中的页表项,在需要将经压缩后的数据单元存入帧缓冲区时,内存管理模块23可将数据单元对应的一个或多个虚拟页面的虚拟地址通过axi(advancedextensibleinterface,高级可扩展接口)总线送入tlb模块,tlb模块将虚拟地址转化成虚拟页面的页号进行页表查询,如果查询不到与该虚拟页面的页号对应的物理页面的页号,则向缺页处理模块发送缺页请求。缺页处理模块通过仲裁模块和axi总线来获得位图和物理页列表的对应关系,进而通过位图来寻找未被占用的一个或多个物理页面,获得所述一个或多个物理页面的物理地址,进而根据物理地址对应的页号增加到tlb模块的页表,以使得页表中所述一个或多个虚拟页面的页号中的每一个分别对应一个物理页面的页号,进而将更新后的页表填充到tlb模块,从而完成补页,为数据单元分配了物理页面,后续就可将经压缩后的数据单元存储到所述对应的物理页面。可以看到,本发明实施例通过内存管理模块23改进页表的建立机制,实现了内存“按需占用”,图像帧经过无损压缩后,通过紧凑内存排布存入按需分配的物理内存空间,实现了不损失图像质量的前提下既节省带宽又节省帧存的目的。另外,内存管理模块23通过smmu可以实现缺页时自动补充物理页面,使缺页处理过程对媒体框架透明,使得本发明实施例技术方案可以适用于任何形态的媒体框架,有利于提升应用性和用户体验。基于上述系统架构和装置,下面进一步描述本发明实施例涉及的内存管理方法。参见图12,图12示出了本发明实施例涉及的一种内存管理方法的流程示意图,该方法可应用于图3实施例所描述的视频解码器,该视频解码器包括解码器、压缩模块、解压缩模块、内存管理模块,压缩模块和解压缩模块可以作为解码器的功能模块来实现,或者,压缩模块和解压缩模块也可以独立于解码器来实现。该方法包括但不限于如下步骤:步骤s101:解码器对码流进行解码得到第一图像帧,所述第一图像帧包括n个大小相同的片(tile),每个片表示所述第一图像帧中的一个矩形区域的图像,n≥2。步骤s102:压缩模块对所述第一图像帧进行压缩(如无损压缩)得到第二图像帧,所述第二图像帧包括n个经压缩后的片,可以理解的,由于各个片的图像数据各有差异,所以各个片经过无损压缩后,压缩率也各有差异,形成的各个经压缩后的片的数据长度也各有差异。步骤s103:内存管理模块分别将所述n个经压缩后的片存储到内存的帧缓冲区(framebuffer),所述n个经压缩后的片在所述帧缓冲区占用的物理页面所对应的虚拟页面具有连续的页号。其中,所述内存的帧缓冲区由内存管理模块进行配置和管理。具体的,内存管理模块在内存中为所述n个经压缩后的片分配帧缓冲区,并为所述n个经压缩后的片在所述帧缓冲区中所占用的内存空间建立虚拟页面与物理页面的映射关系,其中,每个经压缩后的片所占用的内存空间包括一个或多个物理页面,在所述映射关系下所述n个经压缩后的片所占用的多个虚拟页面的页号连续,之后,内存管理模块分别将所述n个经压缩后的片存储到所述帧缓冲区。也就是说,视频解码器可将各个经过压缩(例如无损压缩)后的片依次紧凑地存入帧缓冲区,实现所占用内存空间的归集,这些经过压缩后的片所占用的物理页面的页号可以是离散的,但是这些经过压缩后的片所占用的虚拟页面的页号是连续的。为了实现随机存储,本发明实施例还可重新建立各个经过压缩后的片与存储地址之间的映射关系。具体的,除了存储各个经过压缩后的片之外,本发明实施例还存储了各个片对应的头地址信息以及压缩信息,头地址信息指示了各个经过压缩后的片的起始地址,压缩信息指示了各个经过压缩后的片的压缩模式/压缩后的长度,这样配合原有的各片的长度就可以实现各个片的随机存取。具体实施情况还可参考图6实施例的描述。另外,在可能的实施例中,图像帧还可根据数据单元的形式进行数据存取,所述数据单元在不同的应用场景中可以有多种多样的实现形式,例如数据单元为树形编码单元(codingtreeunit,ctu)、树形编码块(codingtreeblock,ctb)、编码块(codingblock,cb)、编码单元(codingunit,cu)、预测块(predictionblock,pb)、宏块等等中的一种。具体的,可以将所述n个经压缩后的片划分成多个组,每个组用于形成一个数据单元,每一组包括不同的经压缩后的片,每一组中的每个经压缩后的片分别对应于一个压缩信息,所述压缩信息指示了对应的经压缩后的片所占用的存储空间;每一组对应一个头地址信息。也就是说,所述多个组中的每一组、以及该组对应的头地址信息、该组对应的压缩信息构成一个数据单元,进而内存管理模块将这样构成的多个数据单元分别存储到所述帧缓冲区,所述多个数据单元在所述帧缓冲区占用的物理页面所对应的虚拟页面具有连续的页号。具体实施情况还可参考图7实施例的描述。需要说明的是,内存管理模块分别将所述n个经压缩后的片存储到内存的帧缓冲区后,在解码器对后续图像进行解码的过程中,还包括:内存管理模块从所述帧缓冲区分别读取所述n个经压缩后的片,解压缩模块对所述n个经压缩后的片做解压得到第一图像帧的解码帧,然后,解码器以所述解码帧作为参考帧进一步对所述码流进行解码得到第三图像帧。需要说明的是,如果上述步骤s102的压缩过程采用是无损压缩,那么所述解码帧就是所述第一图像帧;如果上述步骤s102的压缩过程采用是其他的压缩方式(如有损压缩),且该压缩方式造成了部分图像损失,那么解码帧为损失部分信息的第一图像帧。可以看到,本发明实施例能够实现图像帧经过无损压缩后,存入帧缓冲区中虚拟地址连续的内存区域,实现了所占用内存区域的归集,所以实施本发明实施例能够实现了不损失图像质量的前提下既节省带宽又节省帧存的目的。参见图13,图13示出了本发明实施例涉及的又一种内存管理方法的流程示意图,该方法可应用于图3实施例所描述的视频解码器,同样,该视频解码器包括解码器、压缩模块、解压缩模块、内存管理模块。该方法采用内存回收模式,包括但不限于如下步骤:步骤s201:解码器对码流进行解码得到第一图像帧,所述第一图像帧包括n个大小相同的片,每个片表示所述第一图像帧中的一个矩形区域的图像,n≥2。步骤s202:压缩模块对所述第一图像帧进行无损压缩得到第二图像帧,所述第二图像帧包括n个经压缩后的片。步骤s203:内存管理模块在所述内存中分配未被占用的多个细粒度的内存块(例如1mb或512kb),每个细粒度的内存块包括多个页号连续的虚拟页面,每个虚拟页面映射一个物理页面。也就是说,同一内存块中的这些虚拟页面之间的页号连续,每个虚拟页面对应于一个物理页面,但这些虚拟页面对应的物理页面可以是离散的。具体实施过程可参考图8实施例的描述,这里不再赘述。步骤s204:内存管理模块将所述多个细粒度的内存块组合成所述帧缓冲区,所述多个内存块对应的物理内存空间之和为m,0≤m≤所述第一图像帧的数据量。例如如果每个帧缓冲区需要分配15mb的内存空间,那么为了保险起见可将若干个内存块组合成15mb的帧缓冲区,当然,在可能的实施例中,如果能预先估计当前的无损压缩的压缩率,那么也可以根据预估的压缩率适当降低所需要分配的内存空间。比如预估到压缩率不低于20%,那么可将若干个内存块组合成12mb的帧缓冲区。具体实现中,可确定各个内存块对应的页表,每个内存块对应的页表分别用于指示该内存块中的各个虚拟页面与物理页面的映射关系,然后将所述各个内存块对应的页表组合成所述帧缓冲区的页表。本步骤的具体实施过程还可参考图8实施例的描述,这里不再赘述。步骤s205:内存管理模块分别将所述n个经压缩后的片存储到帧缓冲区,所述n个经压缩后的片在所述帧缓冲区占用的物理页面所对应的虚拟页面具有连续的页号,实现虚拟内存页号的连续,便于软件做管理和维护。具体还可参考图11实施例步骤s103的描述,这里不再赘述。步骤s206:内存管理模块释放所述帧缓冲区中未被所述多个数据单元占用的内存块。具体的,解码结束后,内存管理模块根据上报的内存占用量,将多余的内存块标记为“空闲”,释放这些空闲的内存块回收,这些回收的内存块可继续应用于后续的帧缓冲区,从而实现了内存空间的动态利用。比如,如果为帧缓冲区分配了15mb的物理内存空间,但是经过无损压缩在帧缓冲区依次紧凑地存入图像帧后,占用的实际内存空间为10mb,那么可释放无占用的5mb物理内存空间对应的内存块,将这5mb物理内存空间回收应用到下一个帧缓冲区。可以看到,本发明实施例通过可将图像帧无损压缩后紧凑内存排布存入所分配的帧缓冲区,通过对物理内存空间进行精细化分配,实现对碎片内存的归集利用,解码器解码完一帧图像帧并存入帧缓冲区后,内存管理模块可将帧缓冲区没有用完的内存回收出来,释放未被占用的空闲内存,合并到下一帧的解码使用中。这样,就能用较少的内存预算,实际获得较多的帧缓冲区个数,从而确保各项性能指标并不受损,实现了不损失图像质量的前提下既节省带宽又节省帧存的目的。参见图14,图14示出了本发明实施例涉及的又一种内存管理方法的流程示意图,该方法可应用于图3实施例所描述的视频解码器,同样,该视频解码器包括解码器、压缩模块、解压缩模块、内存管理模块,该内存管理模块包含smmu。该方法采用预分配模式,包括但不限于如下步骤:步骤s301:解码器对码流进行解码得到第一图像帧,所述第一图像帧包括n个大小相同的片tile,每个片表示所述第一图像帧中的一个矩形区域的图像,n≥2.步骤s302:压缩模块对所述第一图像帧进行无损压缩得到第二图像帧,所述第二图像帧包括n个经压缩后的片。步骤s303:内存管理模块预先为所述第一图像帧分配虚拟内存空间,所述预先分配的虚拟内存空间包括多个页号连续的虚拟页面实现虚拟内存页号的连续,便于软件做管理和维护,所述虚拟内存空间的空间大小为k,0≤k≤所述第一图像帧的数据量。例如解码时需要分配15个帧缓冲区,每个帧缓冲区占15mb空间,则在虚拟内存空间中足额分配15mb×15的空间。但对于这15个帧缓冲区中的每一个帧缓冲区,其对应的每个虚拟页面都可能都没有物理页面与其进行映射。在需要将图像帧的数据单元存入内存时,通过缺页处理的方式按照该数据单元的实际需求来分配实际的物理页面。步骤s304:内存管理模块分别将所述第二图像帧中的每个经压缩后的片对应的一个或多个虚拟页面的页号送入smmu中进行页表查询,并在查询不到与虚拟页面的页号对应的物理页面的页号时启动缺页处理,具体实施方式可参考图11实施例的描述,这里不再赘述。步骤s305:若查询不到与所述一个或多个虚拟页面的页号对应的物理页面的页号,则内存管理模块为所述一个或多个虚拟页面分配对应的物理页面。具体实施例中,若查询不到与所述一个或多个虚拟页面的页号对应的物理页面的页号,则在所述内存中寻找未被占用的一个或多个物理页面,该过程可包括:获取位图,所述位图包括多个位,每个位分别用于指示内存中的一个物理页面是否被占用,可根据位图寻找到未被占用的一个或多个物理页面,然后将所述一个或多个物理页面的页号增加到所述页表,以使得所述页表中所述一个或多个虚拟页面的页号中的每一个分别对应一个物理页面的页号,该物理页面的页面数不少于该虚拟页面的页面数。具体实施方式可参考图10实施例和图11实施例的描述,这里不再赘述。步骤s306:内存管理模块分别将所述每个经压缩后的片存储到所述对应的物理页面。步骤s307:内存管理模块释放所述帧缓冲区中未被所述多个经压缩后的片占用的虚拟内存空间。比如,如果为帧缓冲区分配了15mb的虚拟内存空间,但是经过无损压缩在帧缓冲区依次紧凑地存入图像帧后,占用的实际物理内存空间为10mb,那么可释放无占用的5mb物理内存空间对应的虚拟页面,比如讲这5mb物理内存空间对应的虚拟页面的页号从页表中删除。可以看到,本发明实施例通过改进页表的建立机制,实现了内存“按需占用”,与图13实施例的区别在于其不需要回收操作,图像帧经过无损压缩后,通过紧凑内存排布存入按需分配的物理内存空间,实现了不损失图像质量的前提下既节省带宽又节省帧存的目的。另外,内存管理模块23通过smmu可以实现缺页时自动补充物理页面,使缺页处理过程对媒体框架透明,使得本发明实施例的技术方案可以适用于任何形态的媒体框架,有利于提升应用性和用户体验。需要说明的是,上文中本发明实施例主要以无损压缩的应用场景为例来描述本发明的技术方案,但是,需要理解的是,本发明实施例的实际应用并不局限于无损压缩的应用场景,在其他可能的应用场景中(例如有损压缩),也可能会应用本发明实施例的技术方案来实现内存的归集利用,从而降低解码时的参考帧存取对内存的占用,这里不再具体描述。在上述实施例中,可以全部或部分地通过软件、硬件、固件或者任意组合来实现。当使用软件实现时,可以全部或者部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可存储在计算机可读存储媒介中,或者从一个计算机可读存储媒介向另一个计算机可读存储媒介传输,例如,所述计算机指令可以从一个网络站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、微波等)方式向另一个网络站点、计算机、服务器或数据中心进行传输。所述计算机可读存储媒介可以是计算机能够存取的任何可用媒介,也可以是包含一个或多个可用媒介集成的服务器、数据中心等数据存储设备。所述可用媒介可以是磁性媒介(例如软盘、硬盘、磁带等)、光媒介(例如dvd等)、或者半导体媒介(例如固态硬盘)等等。在图2中的编码解码器54是一个独立的硬件装置,位于处理器56之外。可替换地,编码解码器54可以软件,即之前提到的计算机程序产品的形式存在,并运行于处理器56之上。此时编码解码器54是一个软件装置,包括软件代码指令。具体参见图3,视频解码器20可以以软件或硬件或其结合的方式实现,例如,视频解码器20内的任一个模块或单元可以由软件或硬件实现。在一个示例中,解码器21、内存管理模块23、压缩模块24和解压缩模块25均是硬件。在另一个示例中,解码器21、内存管理模块23、压缩模块24和解压缩模块25均是软件,此时他们全部是运行在处理器56上的软件代码形成的模块。在一个实例中,当某个模块以硬件实现,可包括大量晶体管、运算器件、或逻辑电路等,具体可以集成电路形式存在。图3中的帧缓冲区22位于图2的存储器58中。存储器58可具体包括一个或多个存储器。例如,存储器58包括多个不同类型的存储器,包括易失性存储器和非易失性存储器。例如,一种非易失性存储器用于存储软件代码,由处理器56执行,并驱动处理器56的工作。一种易失性存储器可用于存储数据,例如短暂地临时性存储数据,形成之前实施例提到的内存并包括所述帧缓冲区22。在上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1