CN114584786B - 基于视频解码的内存分配方法及系统 - Google Patents
基于视频解码的内存分配方法及系统 Download PDFInfo
- Publication number
- CN114584786B CN114584786B CN202210068273.4A CN202210068273A CN114584786B CN 114584786 B CN114584786 B CN 114584786B CN 202210068273 A CN202210068273 A CN 202210068273A CN 114584786 B CN114584786 B CN 114584786B
- Authority
- CN
- China
- Prior art keywords
- memory
- video
- decoding
- size information
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 387
- 238000000034 method Methods 0.000 title claims abstract description 65
- 230000008859 change Effects 0.000 claims abstract description 26
- 230000003068 static effect Effects 0.000 claims description 25
- 238000003860 storage Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 description 22
- 238000005457 optimization Methods 0.000 description 12
- 239000000872 buffer Substances 0.000 description 10
- 238000007726 management method Methods 0.000 description 7
- 239000013598 vector Substances 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/43—Hardware specially adapted for motion estimation or compensation
- H04N19/433—Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请实施例公开了一种基于视频解码的内存分配方法及系统。本申请实施例提供的技术方案,通过对输入的二进制码流进行预解码得到视频帧数据的尺寸信息;基于尺寸信息分配视频解码器的显示内存和动态内存;在确定尺寸信息满足预设变化状态的情况下,释放显示内存和动态内存,并根据变化后的尺寸信息重新分配视频解码器的显示内存和动态内存。采用上述技术手段,通过预解码视频帧数据的尺寸信息以适应性进行解码器的内存分配,并根据尺寸信息的变化实时更新内存分配,以此可以按需分配解码器的内存,确保内存分配合理,进而提升解码器的性能,优化视频解码时效。
Description
技术领域
本申请实施例涉及视频解码技术领域,尤其涉及一种基于视频解码的内存分配方法及系统。
背景技术
目前,在视频解码场景中,通常会构建一个视频解码器以对网络上获取到的二进制码流按照一定的语法规则进行解析和重建,还原成可供客户端进行播放的视频帧。在此过程中,解码器需要分配多块内存用于存储从网络上获取到的二进制码流、当前解码帧、参考帧、块级运动矢量以及序列参数集、图像参数集、视频参数集等头信息,以实现整个视频解码和播放流程。为了优化内存分配和管理,通常会将参考帧队列中无用的部分视频帧的内存释放,以实现内存的回收和复用。或者采用共享显示内存的方式,将解码后的数据直接写入显示内存中,以省略视频帧解码缓存到显示缓存的数据拷贝过程。
但是,现有视频解码场景的内存优化方式较为单一,解码器对于二进制码流、当前解码帧、参考帧、块级运动矢量以及序列参数集、图像参数集、视频参数集等头信息,采用最大分配模式进行内存分配,导致内存分配过多,单一内存块尺寸多大,以此会增大解码器的内存消耗,影响解码器的性能。
发明内容
本申请实施例提供一种基于视频解码的内存分配方法及系统,能够优化解码器的内存分配和管理,解决现有解码器的内存消耗过大的技术问题。
在第一方面,本申请实施例提供了一种基于视频解码的内存分配方法,包括:
对输入的二进制码流进行预解码得到视频帧数据的尺寸信息;
基于尺寸信息分配视频解码器的显示内存和动态内存;
在确定尺寸信息满足预设变化状态的情况下,释放显示内存和动态内存,并根据变化后的尺寸信息重新分配视频解码器的显示内存和动态内存。
在第二方面,本申请实施例提供了一种基于视频解码的内存分配系统,包括:
预解码模块,用于对输入的二进制码流进行预解码得到视频帧数据的尺寸信息;
分配模块,用于基于尺寸信息分配视频解码器的显示内存和动态内存;
更新模块,用于在确定尺寸信息满足预设变化状态的情况下,释放显示内存和动态内存,并根据变化后的尺寸信息重新分配视频解码器的显示内存和动态内存。
在第三方面,本申请实施例提供了一种基于视频解码的内存分配设备,包括:
存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的基于视频解码的内存分配方法。
在第四方面,本申请实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的基于视频解码的内存分配方法。
本申请实施例通过对输入的二进制码流进行预解码得到视频帧数据的尺寸信息;基于尺寸信息分配视频解码器的显示内存和动态内存;在确定尺寸信息满足预设变化状态的情况下,释放显示内存和动态内存,并根据变化后的尺寸信息重新分配视频解码器的显示内存和动态内存。采用上述技术手段,通过预解码视频帧数据的尺寸信息以适应性进行解码器的内存分配,并根据尺寸信息的变化实时更新内存分配,以此可以按需分配解码器的内存,确保内存分配合理,进而提升解码器的性能,优化视频解码时效。
附图说明
图1是本申请实施例提供的一种基于视频解码的内存分配方法的流程图;
图2是本申请实施例中二进制码流的处理流程图;
图3是本申请实施例中解码器的解码流程图;
图4是本申请实施例中二进制码流的结构示意图;
图5是本申请实施例中的边界填充示意图;
图6是本申请实施例中的一种基于视频解码的内存分配系统的结构示意图;
图7是本申请实施例中的一种基于视频解码的内存分配设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
本申请提供的基于视频解码的内存分配方法,旨在根据视频帧数据的尺寸信息适应性分配视频解码器的显示内存和动态内存,以优化解码器的内存分配和管理,保障视频解码时效。相对于传统的视频解码器,一般会采用内存池优化方法或者共享显示内存的方式。其中,内存池优化方法的核心思想是建立一个长度为N的参考帧队列,每一帧按需分配好内存并配置一个标志位,标志位用于记录该块内存是否可用。当一帧用完后,解码器并不真正释放该帧内存,而是仅将标志位置为0,并将内存保留给尚未解码的帧使用。从而达到减少内存回收与再分配,实现内存复用的目的。共享显示内存优化方法的核心思想是在客户端或者SDK(软件开发工具包)层预先分配好N帧显示缓存,并将缓存地址传入解码器中,用于代替解码器中的解码图片缓存区。此时,解码出的数据将直接写入到显示缓存中,从而省略掉解码缓存到显示缓存的数据拷贝过程。
由于上述两种内存优化方法均是针对某一类内存进行的单一优化过程,解码器仍然存在申请内存数目多、单块内存尺寸过大等问题。而且共享显示内存的优化方案是按照视频帧最大尺寸进行内存分配的,虽然可以省略从解码帧到显示帧的数据拷贝过程,但也会增大解码器分配的内存。
而解码器内存申请数目过多、申请尺寸过大是不利于解码器进行内存管理的,在内存分配性能较弱的平台上会有内存越界、程序崩溃的风险。同时采用最大分配模式进行内存分配,同样会导致解码器内存消耗过大,进而影响解码器的性能,降低视频帧数据解码的时效性。基于此,提供本申请实施例的一种基于视频解码的内存分配方法,以解决现有解码器的内存消耗过大的技术问题。
实施例:
图1给出了本申请实施例提供的一种基于视频解码的内存分配方法的流程图,本实施例中提供的基于视频解码的内存分配方法可以由基于视频解码的内存分配设备执行,该基于视频解码的内存分配设备可以通过软件和/或硬件的方式实现,该基于视频解码的内存分配设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。一般而言,该基于视频解码的内存分配设备可以是视频解码服务器、电脑,手机,平板等视频解码处理设备。
下述以该基于视频解码的内存分配设备为执行基于视频解码的内存分配方法的主体为例,进行描述。参照图1,该基于视频解码的内存分配方法具体包括:
S110、对输入的二进制码流进行预解码得到视频帧数据的尺寸信息。
本申请实施例通过对解码器进行内存合理分配,以提供一种低内存消耗的视频解码方案,从细节上降低解码过程中申请内存的数量以及单块内存的大小。同时利用预解码方式,提前解析视频帧数据的尺寸信息,然后按照实际尺寸信息进行显示内存和动态内存的分配,在不影响解码速度的同时,降低内存消耗,提高解码器的解码时效性。
其中,在基于视频解码的内存分配设备进行视频解码的过程中,如图2所示,基于视频解码的内存分配设备(如直播或者短视频客户端)从网络上拉取到视频编码后传输来的二进制码流,基于该二进制码流,由SDK(指软件开发工具包,在本申请实例中,特指与音视频处理相关的软件工具包合集)负责将二进制码流解封装拼凑成帧,然后送入解码器中进行视频解码。解码器内部需要进行内存分配,以对诸多内存模块进行数量和大小的缩减。采用本申请实施例的内存分配方法分配内存后,对视频帧数据进行解码得到视频帧,解码器输出的视频帧可直接用于客户端显示,也可以经过缩放、裁剪、添加特效等处理后,再送入客户端显示,以此完成二进制码流的处理过程。
可以理解的是,在视频帧解码过程中,会分配一块显示内存存储解码完之后的视频帧数据。如果没有提前获知视频帧的尺寸信息(即视频帧显示帧的宽度信息和高度信息),则为了能够存储视频帧数据,需要按照最大宽高尺寸分配显示内存。由于视频帧数据一般不会达到最大尺寸,这样无疑会造成显示内存浪费。基于此,本申请实施例通过对输入的二进制码流进行预解码,以从二进制码流中提前获取视频帧数据的尺寸信息,进而进行解码器的内存分配。
具体地,以视频直播客户端为例,参照图3,在客户端从网络上获取到编码后的二进制码流后,首先将二进制码流解封装并拼凑成视频帧数据,然后由SDK(软件开发工具包)创建解码器,以通过该解码器进行视频帧数据的解码。
在创建完解码器之后,使用解码器进行视频帧数据解码之前,需要预先对解码器进行内存分配,以用于存储解码过程中所产生的相关数据。基于此,本申请实施例采用预解码的方式,只从视频帧数据中解析出当前视频帧数据的尺寸信息,然后基于该尺寸信息进行解码器的内存分配。
可以理解的是,对于视频帧数据,除了包含视频实质内容的图像组数据之外,还应当包含序列参数集、图像参数集、视频参数集等头信息。一般而言,在传输二进制码流时,会对应设定数量的图像组(GOP)配置相应的头信息。则通过预解码这部分头信息,即可从头信息中确定当前视频帧数据的尺寸信息,进而为后续的解码器内存提供分配依据。
可选地,视频帧数据的预解码可以通过增加预解码API接口实现,通过输入二进制码流,输出相应的尺寸信息,以此来实视频帧数据的预解码。并且需要说明的是,对于每一次预解码得到的尺寸信息,需要将其保存以用于与下一次预解码得到的尺寸信息进行比对,用于进行解码器内存的调整。客户端需要对输入的二进制码流实时进行预解码,以及时确定视频帧数据尺寸信息的变化,及时调整解码器的内存分配。
S120、基于尺寸信息分配视频解码器的显示内存和动态内存。
进一步地,基于该已确定的视频帧数据,即可以此为依据分配解码器相应的显示内存和动态内存。可以理解的是,在以此视频帧数据的尺寸信息后,即可确定每一帧视频帧数据所占用显示内存的空间,进而根据需要存储的视频帧数据的数量确定这部分视频帧数据所占用的显示内存空间,以此来适应性分配显示内存。
可以理解的是,显示内存主要用于存储从解码器中输出到SDK层的视频帧数据,也可用于进行解码帧格式转换时的数据存储。如果显示内存以视频帧数据可能的最大尺寸信息进行分配,例如8092×4096。而实际视频帧数据的尺寸信息相对偏小,例如720×1280。显然以视频帧数据的最大尺寸信息进行显示内存分配会造成较大的内存消耗。而通过预解码二进制码流确定视频帧数据的实际尺寸信息,基于尺寸信息分配显示内存,以此来节省显示内存的过分消耗,实现显示内存的合理分配。
同理,对应动态内存,基于该尺寸信息,确定动态内存存储一个视频帧数据的对应信息所需要的内存空间,进而根据需要存储的信息量适应性分配动态内存。
本申请实施例中,动态内存为解码器的临时内存,动态内存的分配大小与预解码的尺寸信息相关,为了节省内存消耗,因此需要动态地释放与分配。例如,视频帧图像编码树单元、预测单元级别的各种标志位,运动矢量的数量,以及解码图片缓存区内各个视频帧数据的大小,都和视频帧数据的实际大小相关。当视频帧数据的分辨率发生变化时,这些信息的大小也会发生变化。以此,本申请实施例通过尺寸信息分配动态内存,以减少解码器的内存消耗。
具体地,动态内存包括比特流内存和边界填充内存,本申请实施例根据视频帧数据的尺寸信息分配动态内存,主要是为了对动态内存中存在明显冗余的比特流内存与边界填充内存进行优化。
其中,比特流内存主要用于存储去除安全码之后的一段码流,以送入解码接口解析出一帧数据。如果解码器直接采用1024×1024固定尺寸的静态内存,当视频帧数据的实际宽高值超过1024×1024时,再按照实际宽高值分配一块动态内存,以此会导致部分静态内存浪费。即当视频帧数据的实际分辨率高于1024×1024时,整块静态内存则处于无用状态,改用动态内存存储对应码流。基于此,通过删除原有分配用于存储这部分码流的静态内存,然后按照视频帧数据的尺寸信息分配一个动态内存作为比特流内存,以此来缩减比特流内存对解码器内存的消耗。通过按需分配的原则,大大削减了这部分内存的分配数量和大小。
另一方面,对于边界填充内存,则根据尺寸信息以及设定的边界填充长度信息分配视频解码器的边界填充内存。其中,在解码过程中,为了在运动矢量超出参考帧边界时,仍能够提供合适的参考块,一般在参考帧的四周进行边界填充操作,边界填充长度为固定值(如80)。但实际运动矢量超出参考帧边界的情况较少,而边界填充所引入的内存增量却很明显。为了减少边界填充内存的消耗,尽量缩减上下左右的边界填充长度,如图4所示,A框表示采用原始边界填充长度分配的帧级内存,B框表示本申请实施例内存优化后帧级内存,C表示实际大小的视频帧。本申请实施例基于视频帧的实际尺寸信息,将视频帧上下左右的边界填充长度由(80,80,80,80)优化为(40,40,32,40),以此可以大大减少边界填充内存的消耗。基于此,通过确定视频帧的实际尺寸信息,结合合理的边界填充长度信息,即可确定视频解码器合理的边界填充内存。以此能够在不影响视频帧解码速度的情况下,显著降低边界填充所消耗的内存。尤其是在低分辨率的情况下更为明显。以360P分辨率为例,经过边界填充内存优化后的一帧视频帧内存能够相比优化前节省25%内存空间。
需要注意的是,为了应对运动矢量超出边界填充长度(即40)的边界的情况,则可以在运动矢量超出边界填充长度的边界时,另外分配一块临时内存,并实时边界填充出所需要的参考块,以此来灵活进行视频帧边界填充,优化边界填充内存的管理和分配。
可选地,由于在视频解码过程中,解码器还需要分配多块内存用于存取诸如多线程,以及列参数集、图像参数集、视频参数集等头信息。这部分内存若不加以细致优化,也会造成内存申请数目多、申请尺寸过大的问题。因此,本申请实施例通过获取视频解码器的预配置信息,基于预配置信息分配视频解码器的静态内存,该静态内存即用于存储上述多线程,以及列参数集、图像参数集、视频参数集等头信息。静态内存为一些固定尺寸的内存,其不会因视频帧数据的尺寸信息变化而发生变化,例如多线程信息、列参数集、图像参数集、视频参数集等头信息所涉及到的内存。
具体地,在解码器的构建过程中,会设定相应的预配置信息,以便于解码器根据预配置信息进行静态内存分配。其中,预配置信息包括解码线程数量信息,静态内存包括多线程内存;对应地,在基于预配置信息分配视频解码器的静态内存时,根据解码线程数量信息分配多线程内存。
本申请实施例对于多线程内存分配的优化,主要是削减与多线程相关的内存数量及内存的大小。根据预设定的解码线程数量信息,适应性分配多线程内存。由于客户端实际进行解码时,仅采用单线程或2线程执行解码操作。解码器如果直接建立较多数量线程的解码句柄(如8个),并为每个线程分配多块内存作为帧间预测、反变换、反扫描以及预测单元映射的临时缓存,则会导致大部分与多线程相关的内存被浪费掉。基于此,通过预设置解码器的线程数,以引导解码器进行静态内存的分配,将多线程的内存分配方式由最大分配模式优化为按需分配模式,实现多线程内存分配的优化,减少这部分内存的消耗。
此外,预配置信息还包括头信息内存配置信息,静态内存包括头信息内存;对应地,基于预配置信息分配视频解码器的静态内存时,根据头信息内存配置信息分配头信息内存。
本申请实施例对于头信息内存的优化,主要是削减与列参数集、图像参数集、视频参数集等头信息相关的内存数量及内存的大小。而实际解码过程中头信息所实际用到的内存较少,如果按照解码器最大支持的头信息内存分配数量,如对解码器最大支持的17个列参数集、65个图像参数集、16个视频参数集以及相关的82个缩放矩阵均分别分配一块内存,会导致这部分内存的浪费。而考虑到直播/短视频客户端码流的编码实际只需要分别使用到上述各类信息的一块内存,因此本申请实施例将列参数集、图像参数集、视频参数集等头信息及其相关的缩放矩阵数量,均削减至最优的一项,由最大分配模式修改为按需分配模式,然后预先设置头信息内存配置信息,以便于解码器在构建后基于这部分信息进行头信息内存的分配,实现头信息内存数量的缩减。
S130、在确定尺寸信息满足预设变化状态的情况下,释放显示内存和动态内存,并根据变化后的尺寸信息重新分配视频解码器的显示内存和动态内存。
进一步地,在完成上述显示内存、静态内存和动态内存的分配之后,即可开始解码器的解码过程。解码器依次经过熵解码、反量化、反变换、帧内/帧间预测以及去块滤波和样点自适应补偿等后处理过程后,就能得到一帧完整的解码图像,并将解码图像存储在显示内存中。
进一步地,在视频帧数据解码成功后,通过显示内存地址拿到解码帧数据,最后经过一系列缩放、渲染等操作后,即可使用该解码帧数据用于屏幕显示。
基于上述内存分配方式,即可显著降低解码器所需的内存数量与内存大小,便于进行内存分配与管理,解决解码器申请内存数目过多、申请内存过大的问题。同时针对共享显示内存分配过剩的问题,采用预解码方式获取视频帧数据尺寸信息,基于尺寸信息按需分配显示内存,避免了显示内存分配过大造成的存储资源浪费。以此可以降低因内存越界而造成的程序崩溃,使得视频解码可以适配在内存分配和管理性能较弱的移动端平台上部署。
进一步地,一般而言,视频帧数据在解码过程中,如果分辨率没有发生变化,则无需调整解码器等内存分配。而在实际应用中,视频帧数据会因为各种原因发生分辨率变化的情况。如用户主动调整视频的分辨率,则在用户客户端调整分辨率后,从网络上拉取视频帧数据的分辨率发生变化,此时由于视频帧数据的尺寸信息发生变化,需要适应性调整此时显示内存和动态内存的分配。
如图5所示,在二进制码流预解码过程中,首先获取到头信息1,根据头信息1确定当前视频帧数据的尺寸信息后,依据尺寸信息进行解码器的显示内存和动态内存的分配。解码器会将当前确定尺寸信息保存,以用于后续通过两次预解码的尺寸信息比对判断视频帧数据的是否发生变化,并在达到预设变化状态时,重新分配动态内存和显示内存。
例如,在预解码头信息2确定尺寸信息与上一次头信息1确定的尺寸信息不同,两者达到预设变化状态,此时重新分配动态内存和显示内存。需要说明的是,本申请实施例的预设变化状态可以是尺寸信息的变化达到设定阈值,也可以是尺寸信息变化时即进行动态内存和显示内存的重新分配。预设变化状态可以根据实际动态内存和显示内存的分配需求设定,在此不多赘述。
可选地,在确定当前尺寸信息变大时,释放当前显示内存和动态内存,并重新分配视频解码器的显示内存和动态内存。需要注意的是,在直播或者短视频的视频帧数据的解码过程中,一旦预解码检测到视频帧数据的分辨率发生变化,若是分辨率变小,则当前动态内存和显示内存满足分辨率变小后的相关数据存储需求。此时可以忽略该尺寸信息变化,也可以适应性调小动态内存和显示内存;若分辨率变大,则当前动态内存和显示内存无法满足分辨率变大后的相关数据存储需求,需释放当前显示内存和动态内存。参照上述S110-S120的动态内存和显示内存分配方式,根据视频帧数据实时的尺寸信息重新分配显示内存和动态内存,以确保内存分配合理,优化视频解码效果。
上述,通过对输入的二进制码流进行预解码得到视频帧数据的尺寸信息;基于尺寸信息分配视频解码器的显示内存和动态内存;在确定尺寸信息满足预设变化状态的情况下,释放显示内存和动态内存,并根据变化后的尺寸信息重新分配视频解码器的显示内存和动态内存。采用上述技术手段,通过预解码视频帧数据的尺寸信息以适应性进行解码器的内存分配,并根据尺寸信息的变化实时更新内存分配,以此可以按需分配解码器的内存,确保内存分配合理,进而提升解码器的性能,优化视频解码时效。
在上述实施例的基础上,图6为本申请提供的一种基于视频解码的内存分配系统的结构示意图。参考图6,本实施例提供的基于视频解码的内存分配系统具体包括:预解码模块21、分配模块22和更新模块23。
其中,预解码模块21用于对输入的二进制码流进行预解码得到视频帧数据的尺寸信息;
分配模块22用于基于尺寸信息分配视频解码器的显示内存和动态内存;
更新模块23用于在确定尺寸信息满足预设变化状态的情况下,释放显示内存和动态内存,并根据变化后的尺寸信息重新分配视频解码器的显示内存和动态内存。
具体地,更新模块23用于确定当前尺寸信息变大,释放当前显示内存和动态内存,并重新分配视频解码器的显示内存和动态内存。
其中,动态内存包括比特流内存和边界填充内存。根据尺寸信息以及设定的边界填充长度信息分配视频解码器的边界填充内存。
具体地,基于视频解码的内存分配系统还包括静态内存分配模块,用于获取视频解码器的预配置信息,基于预配置信息分配视频解码器的静态内存。
其中,预配置信息包括解码线程数量信息,静态内存包括多线程内存;
对应地,基于预配置信息分配视频解码器的静态内存,包括:
根据解码线程数量信息分配多线程内存。
预配置信息包括头信息内存配置信息,静态内存包括头信息内存;
对应地,基于预配置信息分配视频解码器的静态内存,包括:
根据头信息内存配置信息分配头信息内存。
上述,通过对输入的二进制码流进行预解码得到视频帧数据的尺寸信息;基于尺寸信息分配视频解码器的显示内存和动态内存;在确定尺寸信息满足预设变化状态的情况下,释放显示内存和动态内存,并根据变化后的尺寸信息重新分配视频解码器的显示内存和动态内存。采用上述技术手段,通过预解码视频帧数据的尺寸信息以适应性进行解码器的内存分配,并根据尺寸信息的变化实时更新内存分配,以此可以按需分配解码器的内存,确保内存分配合理,进而提升解码器的性能,优化视频解码时效。
本申请实施例提供的基于视频解码的内存分配系统可以用于执行上述实施例提供的基于视频解码的内存分配方法,具备相应的功能和有益效果。
在上述实际上例的基础上,本申请实施例还提供了一种基于视频解码的内存分配设备,参照图7,该基于视频解码的内存分配设备包括:处理器31、存储器32、通信模块33、输入装置34及输出装置35。存储器32作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请任意实施例所述的基于视频解码的内存分配方法对应的程序指令/模块(例如,基于视频解码的内存分配系统中的预解码模块、分配模块和更新模块)。通信模块33用于进行数据传输。处理器通过运行存储在存储器中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的基于视频解码的内存分配方法。输入装置34可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置35可包括显示屏等显示设备。上述提供的基于视频解码的内存分配设备可用于执行上述实施例提供的基于视频解码的内存分配方法,具备相应的功能和有益效果。
在上述实施例的基础上,本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种基于视频解码的内存分配方法,存储介质可以是任何的各种类型的存储器设备或存储设备。当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的基于视频解码的内存分配方法,还可以执行本申请任意实施例所提供的基于视频解码的内存分配方法中的相关操作。
上述仅为本申请的较佳实施例及所运用的技术原理。本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由权利要求的范围决定。
Claims (9)
1.一种基于视频解码的内存分配方法,其特征在于,包括:
对输入的二进制码流进行预解码得到视频帧数据的尺寸信息;
基于所述尺寸信息分配视频解码器的显示内存和动态内存,所述动态内存包括比特流内存和边界填充内存;
在确定所述尺寸信息满足预设变化状态的情况下,释放所述显示内存和所述动态内存,并根据变化后的尺寸信息重新分配所述视频解码器的显示内存和动态内存。
2.根据权利要求1所述的基于视频解码的内存分配方法,其特征在于,所述在确定所述尺寸信息满足预设变化状态的情况下,释放所述显示内存和所述动态内存,并根据变化后的尺寸信息重新分配所述视频解码器的显示内存和动态内存,包括:
确定当前所述尺寸信息变大,释放当前所述显示内存和所述动态内存,并重新分配所述视频解码器的显示内存和动态内存。
3.根据权利要求1所述的基于视频解码的内存分配方法,其特征在于,所述基于所述尺寸信息分配视频解码器的显示内存和动态内存,包括:
根据所述尺寸信息以及设定的边界填充长度信息分配视频解码器的边界填充内存。
4.根据权利要求1所述的基于视频解码的内存分配方法,其特征在于,还包括:
获取所述视频解码器的预配置信息,基于所述预配置信息分配所述视频解码器的静态内存。
5.根据权利要求4所述的基于视频解码的内存分配方法,其特征在于,所述预配置信息包括解码线程数量信息,所述静态内存包括多线程内存;
对应地,所述基于所述预配置信息分配所述视频解码器的静态内存,包括:
根据所述解码线程数量信息分配所述多线程内存。
6.根据权利要求4所述的基于视频解码的内存分配方法,其特征在于,所述预配置信息包括头信息内存配置信息,所述静态内存包括头信息内存;
对应地,所述基于所述预配置信息分配所述视频解码器的静态内存,包括:
根据所述头信息内存配置信息分配所述头信息内存。
7.一种基于视频解码的内存分配系统,其特征在于,包括:
预解码模块,用于对输入的二进制码流进行预解码得到视频帧数据的尺寸信息;
分配模块,用于基于所述尺寸信息分配视频解码器的显示内存和动态内存,所述动态内存包括比特流内存和边界填充内存;
更新模块,用于在确定所述尺寸信息满足预设变化状态的情况下,释放所述显示内存和所述动态内存,并根据变化后的尺寸信息重新分配所述视频解码器的显示内存和动态内存。
8.一种基于视频解码的内存分配设备,其特征在于,包括:
存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6任一所述的基于视频解码的内存分配方法。
9.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-6任一所述的基于视频解码的内存分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210068273.4A CN114584786B (zh) | 2022-01-20 | 2022-01-20 | 基于视频解码的内存分配方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210068273.4A CN114584786B (zh) | 2022-01-20 | 2022-01-20 | 基于视频解码的内存分配方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114584786A CN114584786A (zh) | 2022-06-03 |
CN114584786B true CN114584786B (zh) | 2024-02-13 |
Family
ID=81772310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210068273.4A Active CN114584786B (zh) | 2022-01-20 | 2022-01-20 | 基于视频解码的内存分配方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114584786B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6072548A (en) * | 1997-07-28 | 2000-06-06 | Lsi Logic Corporation | Video decoder dynamic memory allocation system and method allowing variable decoded image size |
CN101478692A (zh) * | 2008-12-25 | 2009-07-08 | 昆山锐芯微电子有限公司 | 图像传感器动态分辨率的测试方法和系统 |
JP2009241547A (ja) * | 2008-03-31 | 2009-10-22 | Brother Ind Ltd | 画像処理装置 |
JP2012247843A (ja) * | 2011-05-25 | 2012-12-13 | Mitsubishi Electric Corp | 画像処理装置 |
JP2016143940A (ja) * | 2015-01-30 | 2016-08-08 | ルネサスエレクトロニクス株式会社 | 画像処理装置および半導体装置 |
CN105847823A (zh) * | 2016-04-05 | 2016-08-10 | 北京佳讯飞鸿电气股份有限公司 | 一种在视频解码中减少内存带宽使用的方法 |
CN109068165A (zh) * | 2018-07-23 | 2018-12-21 | 北京奇艺世纪科技有限公司 | 一种动态图显示方法及装置 |
CN109614240A (zh) * | 2018-12-13 | 2019-04-12 | 锐捷网络股份有限公司 | 内存申请方法、设备及存储介质 |
CN112835730A (zh) * | 2021-03-08 | 2021-05-25 | 上海肇观电子科技有限公司 | 图像存储、内存分配、图像合成方法、装置、设备及介质 |
-
2022
- 2022-01-20 CN CN202210068273.4A patent/CN114584786B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6072548A (en) * | 1997-07-28 | 2000-06-06 | Lsi Logic Corporation | Video decoder dynamic memory allocation system and method allowing variable decoded image size |
JP2009241547A (ja) * | 2008-03-31 | 2009-10-22 | Brother Ind Ltd | 画像処理装置 |
CN101478692A (zh) * | 2008-12-25 | 2009-07-08 | 昆山锐芯微电子有限公司 | 图像传感器动态分辨率的测试方法和系统 |
JP2012247843A (ja) * | 2011-05-25 | 2012-12-13 | Mitsubishi Electric Corp | 画像処理装置 |
JP2016143940A (ja) * | 2015-01-30 | 2016-08-08 | ルネサスエレクトロニクス株式会社 | 画像処理装置および半導体装置 |
CN105847823A (zh) * | 2016-04-05 | 2016-08-10 | 北京佳讯飞鸿电气股份有限公司 | 一种在视频解码中减少内存带宽使用的方法 |
CN109068165A (zh) * | 2018-07-23 | 2018-12-21 | 北京奇艺世纪科技有限公司 | 一种动态图显示方法及装置 |
CN109614240A (zh) * | 2018-12-13 | 2019-04-12 | 锐捷网络股份有限公司 | 内存申请方法、设备及存储介质 |
CN112835730A (zh) * | 2021-03-08 | 2021-05-25 | 上海肇观电子科技有限公司 | 图像存储、内存分配、图像合成方法、装置、设备及介质 |
Non-Patent Citations (3)
Title |
---|
AVS-M视频压缩技术及应用研究;郭春辉;《中国优秀硕士论文电子期刊》;全文 * |
Evaluation of Cache-based Memory Hierachy for HEVC Video Decoding;Garrenlus de Souza et al.;《SBCCI》;全文 * |
一种基于Android的视频自适应算法设计;王辉;《 工业仪表与自动化装置 》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114584786A (zh) | 2022-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12003743B2 (en) | Video stream decoding method and apparatus, terminal device, and storage medium | |
US9967577B2 (en) | Acceleration interface for video decoding | |
RU2691962C2 (ru) | Устройство обработки изображений и способ обработки изображений | |
US9210421B2 (en) | Memory management for video decoding | |
KR102144881B1 (ko) | 비디오 처리를 위한 송신 장치 및 방법 | |
US8395634B2 (en) | Method and apparatus for processing information | |
US20180103261A1 (en) | Browser-based video decoder using multiple cpu threads | |
US20170220283A1 (en) | Reducing memory usage by a decoder during a format change | |
CN105163127A (zh) | 视频分析方法及装置 | |
US20140177710A1 (en) | Video image compression/decompression device | |
KR20180120792A (ko) | 화상 코딩 장치, 화상을 코딩하는 방법, 화상 디코딩 장치, 화상을 디코딩하는 방법 및 컴퓨터 판독가능 매체 | |
US20240283930A1 (en) | Systems and methods for video encoding using image segmentation | |
CN114339412A (zh) | 视频质量增强方法、移动终端、存储介质及装置 | |
WO2024078066A1 (zh) | 视频解码方法、视频编码方法、装置、存储介质及设备 | |
JP2010109572A (ja) | 画像処理装置、及び方法 | |
CN114584786B (zh) | 基于视频解码的内存分配方法及系统 | |
CN104980798A (zh) | 一种远端视频显示方法及装置 | |
JP2024517915A (ja) | データ処理方法、装置、コンピュータ機器及びコンピュータプログラム | |
US20110051815A1 (en) | Method and apparatus for encoding data and method and apparatus for decoding data | |
CN114007137A (zh) | 一种基于roi的视频分级编码的方法、装置及介质 | |
US20160261873A1 (en) | Moving image coding apparatus and moving image coding method | |
WO2020004080A1 (ja) | 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム | |
CN107667529B (zh) | 用于有效地对数据进行嵌入式压缩的方法、装置和计算机可读记录介质 | |
CN116389763B (zh) | 基于多种编码器的视频编码方法和装置 | |
WO2022206199A1 (zh) | 在视频解码装置中进行图像处理的方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |