CN113015003B - 视频帧缓存方法和设备 - Google Patents
视频帧缓存方法和设备 Download PDFInfo
- Publication number
- CN113015003B CN113015003B CN202110249758.9A CN202110249758A CN113015003B CN 113015003 B CN113015003 B CN 113015003B CN 202110249758 A CN202110249758 A CN 202110249758A CN 113015003 B CN113015003 B CN 113015003B
- Authority
- CN
- China
- Prior art keywords
- frame
- displayed
- reconstructed
- identifier
- buffer
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/44004—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/431—Generation of visual interfaces for content selection or interaction; Content or additional data rendering
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及视频显示技术领域,尤其涉及一种视频帧缓存方法和设备。该方法包括:确定共享缓存,所述共享缓存包括多个帧缓存,每个所述帧缓存均设置有状态标识;将解码输出的重建帧写入设置有可写入标识的帧缓存,并且如果所述重建帧具有参考帧特征,则对相应帧缓存设置参考帧标识;从已经缓存的所述重建帧中确定待显示帧,并对所述待显示帧所在的帧缓存设置待显示标识;对设置有所述待显示标识的帧缓存中的所述待显示帧进行显示,如果所述待显示帧显示之后不再具有参考帧特征,则对相应帧缓存设置可写入标识。本发明实施例方案能够在占用较小系统内存的情况下,降低视频输出延迟。
Description
技术领域
本发明涉及视频显示技术领域,尤其涉及一种视频帧缓存方法和设备。
背景技术
在音视频播放场景中,音视频流的处理除了音视频流的解复用之外,还涉及视频流的解码和图像帧显示。即视频流首先经过视频解码重建为图像帧数据,然后经由图像显示过程将图像帧渲染到屏幕。其中,为了支持视频流解码和图像帧显示过程的正常调度,通常将图像帧数据存储在系统内存的帧缓存中。但在当前的图像帧数据的缓存方法中,可能会存在解码后的重建帧需要拷贝,占用较多内存;或者解码后的重建帧由于需要做后续视频帧的参考帧而需要延迟输出,导致视频卡顿等问题。
发明内容
有鉴于此,本发明实施例提供了一种视频帧缓存方法和设备,不仅可以避免重建帧的拷贝操作,而且可以降低重建帧由于需要做参考帧而带来的延迟。因此,本发明实施例方案能够在占用较小系统内存的情况下,降低视频输出延迟。
第一方面,本发明实施例提供了一种视频帧缓存方法,包括:确定共享缓存,所述共享缓存包括多个帧缓存,每个所述帧缓存均设置有状态标识;将解码输出的重建帧写入设置有可写入标识的帧缓存,并且如果所述重建帧具有参考帧特征,则对相应帧缓存设置参考帧标识;从已经缓存的所述重建帧中确定待显示帧,并对所述待显示帧所在的帧缓存设置待显示标识;对设置有待显示标识的帧缓存中的所述待显示帧进行显示,如果所述待显示帧显示之后不再具有参考帧特征,则对相应帧缓存设置可写入标识。
可选的,所述共享缓存包括的帧缓存个数是根据待播放视频流的参考帧个数和缓冲帧个数确定的。
可选的,每个所述帧缓存均设置有状态标识,包括:每个所述帧缓存均设置有计数器,所述计数器的取值用于作为对应帧缓存的状态标识。当帧缓存中缓存的重建帧状态发生改变时,对应的计数器取值发生改变。
可选的,所述方法还包括:创建帧缓存队列,所述帧缓存队列用于存储所述共享缓存中各个帧缓存的状态标识信息;将解码输出的重建帧写入设置有可写入标识的帧缓存,包括:根据所述帧缓存队列存储的所述各个帧缓存的状态标识信息,确定设置有可写入标识的帧缓存,其中,所述设置有可写入标识的帧缓存用于写入解码输出的重建帧。
可选的,从已经缓存的所述重建帧中确定待显示帧,包括:如果当前解码输出的重建帧仅具有显示特征,则将当前解码输出的重建帧确定为待显示帧,并在可写入标识的基础上对相应帧缓存设置待显示标识;如果当前解码输出的重建帧既具有参考帧特征又具有显示特征,则将当前解码输出的重建帧确定为待显示帧,并在参考帧标识的基础上对相应帧缓存设置待显示标识。其中,如果当前解码输出的重建帧既具有参考帧特征又具有显示特征,可以在满足预设的显示条件时,将当前解码输出的重建帧确定为待显示帧。
可选的,从已经缓存的所述重建帧中确定待显示帧,还包括:除当前解码输出的重建帧之外,如果已经设置有参考帧标识的至少一个帧缓存中的重建帧不再具有参考帧特征,并且具有显示特征且还未显示,则将相应重建帧确定为待显示帧,并将相应帧缓存的参考帧标识设置为待显示标识;除当前解码输出的重建帧之外,如果已经设置有参考帧标识的至少一个帧缓存中的重建帧不再具有参考帧标识,并且已经显示或者不具有显示特征,则将相应帧缓存的参考帧标识设置为可写入标识。
可选的,所述方法还包括:创建待显示队列,所述待显示队列用于存储所述待显示帧的待显示标识信息。其中,仅具有显示特征和既具有显示特征又具有参考特征的待显示帧的待显示标识不同。
可选的,所述待显示队列还用于存储所述待显示帧的时间戳信息和编号信息;对所述待显示帧进行显示,包括:根据所述待显示帧的时间戳信息和编号信息,确定所述待显示帧的显示顺序,并根据所述待显示帧的显示顺序,对所述待显示帧进行显示。
可选的,如果所述待显示帧显示之后不再具有参考帧特征,则对相应帧缓存设置可写入标识,包括:如果所述待显示帧仅具有显示特征,则在待显示帧显示之后,将待显示标识设置为可写入标识;如果所述待显示帧既具有显示特征又具有参考特征,则在待显示帧显示之后,将待显示标识设置为参考帧标识,之后将参考帧标识设置为待写入标识。
第二方面,本发明实施例提供了一种终端设备,包括:确定模块,用于确定共享缓存,所述共享缓存包括多个帧缓存,每个所述帧缓存均设置有状态标识;解码模块,用于将解码输出的重建帧写入设置有可写入标识的帧缓存,并且如果所述重建帧具有参考帧特征,则对相应帧缓存设置参考帧标识;显示模块,用于从已经缓存的所述重建帧中确定待显示帧,并对所述待显示帧所在的帧缓存设置待显示标识;对设置有待显示标识的帧缓存中的所述待显示帧进行显示,如果所述待显示帧显示之后不再具有参考帧特征,则对相应帧缓存设置可写入标识。
第三方面,本发明实施例提供了一种终端设备,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令以执行以执行第一方面或者第一方面任一项可能实施例的方法。。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行第一方面或者第一方面任一项可能实施例的方法。。
本发明实施例方案中,视频解码调度和图像显示调度共享帧缓存,视频解码调度和图像显示调度无需在解码和显示过程中频繁拷贝重建帧数据,节约系统缓存空间,提升系统性能。而且,本发明实施例方案对解码输出的重建帧设置状态标识,解码输出的参考帧可以实时显示,并且在显示之后可以继续作为后续视频帧解码的参考帧,降低视频帧延迟卡顿的现象。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是相关技术提供的一种视频帧缓存方法的流程图;
图2是相关技术提供的另一种视频帧缓存方法的流程图;
图3是本发明实施例提供的一种视频帧缓存方法的流程图;
图4是本发明实施例提供的另一种视频帧缓存方法的流程图;
图5是本发明实施例提供的一种终端设备的结构示意图;
图6是本发明实施例提供的另一种终端设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是相关技术提供的一种视频帧缓存方法的流程图。如图1所示,在视频播放场景中,系统调度创建视频解码调度和图像显示调度,视频解码调度和图像显示调度各自维护其内部的帧缓存,如视频解码调度维护的帧缓存用于存储Frame(0)、Frame(1)……Frame(N)个重建帧,图像显示调度维护的帧缓存用于存储Frame(0)、Frame(1)……Frame(M)个待显示帧。如图1所示,在视频解码调度过程中,视频解码引擎对视频码流进行解码,输出视频帧图像的重建帧。视频解码引擎将输出的重建帧写入其维护的帧缓存中。在图像显示调度过程中,图像显示引擎对需要显示的重建帧进行拷贝并缓存至其维护的帧缓存中。图像显示引擎依据显示顺序对拷贝的各个重建帧进行显示。在图1所示方法中,待显示的每一帧视频帧都需要拷贝,而拷贝数据的过程耗时又相对比较高,因此会极大降低整个系统的性能,增加系统带宽。
图2是相关技术提供的另一种视频帧缓存方法的流程图。如图2所示,系统调度创建视频解码调度和图像显示调度,视频解码调度维护的帧缓存用于存储Frame(0)、Frame(1)……Frame(N)个重建帧,该帧缓存中的重建帧显示之后即被释放。由于重建帧显示之后会被释放,而且由于大部分重建帧需要作为后续解码过程的参考帧,因此在帧缓存中会存在解码在前,显示在后的重建帧。例如视频流I0P1B2P3中的P1帧,P1帧解码在B2帧之前,但在显示时P1帧在B2帧之后。可见,对于解码后不能马上输出显示的重建帧,其需要在帧缓存中暂存,直至该重建帧不再做后续解码过程的参考帧。与图1所示方法相比,图2所示方法在图像显示调度过程中无需拷贝重建帧数据,但解码后的重建帧可能会保留相当长的时间,由此可能会造成很大的延迟或者卡顿现象,影响视频播放效果。
为了解决相关技术中,由于数据拷贝带来的占用系统内存,以及参考帧长时间暂存带来的延迟卡顿现象,本发明实施例提供了一种视频帧缓存方案。在该方案中,视频解码调度和图像显示调度共享帧缓存,并且通过对共享缓存包括的各个帧缓存设置状态标识,可以在保持重建帧的参考帧功能的同时,实现对重建帧的实时显示,由此可以降低显示延迟。
图3是本发明实施例提供的一种视频帧缓存方法的流程图。如图3所示,在视频播放场景中,系统调度创建视频解码调度和图像显示调度,以及分配0、1、2……N个帧缓存作为共享缓存,该共享缓存可以由视频解码调度和图像显示调度共同调度,共享缓存用于存储Frame(0)、Frame(1)……Frame(N)个重建帧。与图1和图2不同,图3所示的共享缓存中,每个帧缓存均设置有状态标识,通过状态标识可以确定相应帧缓存缓存的重建帧的状态。可选的,当帧缓存中存储的重建帧的状态发生改变时,帧缓存对应的状态标识也进行变更。可选的,本发明实施例方法还可以包括:创建帧缓存队列,帧缓存队列用于存储各个帧缓存的地址信息和状态标识信息。根据帧缓存队列中各个帧缓存的地址信息和状态标识信息,可以调用需要处理的重建帧。例如,初始化时,共享缓存中的每个帧缓存均设置有可写入标识。视频解码调度可以通过帧缓存队列随机选择一个设置有可写入标识的帧缓存作为重建帧的存放位置。当一个或者多个帧缓存中的重建帧被确定为待显示帧时,对应的帧缓存设置待显示标识。当待显示帧显示之后,可以对相应帧缓存设置已显示标识。其中,如果已经显示的视频帧不再作为后续其它视频帧的参考帧,则可以为其设置可写入标识。如果已经显示的视频帧仍然需要作为后续其它视频帧的参考帧,则可以为其保留参考帧标识。具体的,基于图3所示共享缓存,视频解码引擎对视频码流进行解码,输出视频帧图像的重建帧。视频解码引擎将解码输出的重建帧写入设置有可写入标识的帧缓存。可选的,如果写入的重建帧具有参考帧特征,则对相应帧缓存设置参考帧标识。在图像显示调度过程中,图像显示引擎从已经缓存的各个重建帧中确定待显示帧,并对待显示帧所在的帧缓存设置待显示标识。图像显示引擎从设置有待显示标识的帧缓存中读取重建帧进行显示。其中,根据重建帧的显示特征和参考帧特征,重建帧可以分为:仅用于显示的重建帧、既作为参考帧又用于显示的重建帧、仅作为参考帧的重建帧、既不作为参考帧又不用于显示的重建帧。可选的,图像显示调度过程对仅用于显示、以及既作为参考帧又用于显示两种类型的重建帧进行渲染显示。
基于图3的说明,本发明实施例的视频帧缓存方法的处理流程,如图4所示包括:
101,确定共享缓存,所述共享缓存包括多个帧缓存,每个所述帧缓存均设置有状态标识。可选的,可以为每个帧缓存设置一个计数器,计数器的取值用于作为对应帧缓存的状态标识。当帧缓存中缓存的重建帧状态发生改变时,对应的计数器的取值也对应发生改变。可选的,在初始状态时,各个帧缓存均设置有可写入标识。例如,各个计数器的初始值可以取0。当计数器的取值为0时,表示对应帧缓存为可写入状态。
在一些实施例中,在确定共享缓存之后,还可以基于共享缓存创建帧缓存队列,帧缓存队列用于存储共享缓存包括的各个帧缓存的地址信息和状态标识信息。视频解码调度可以根据帧缓存队列确定设置有可写入标识的帧缓存的地址。
在一些实施例中,共享缓存包括的帧缓存个数可以根据待播放视频流的参考帧个数和缓冲帧个数确定。在一些实施例中,根据待播放视频流的特性,确定参考帧个数为ref_num。根据图像显示调度支持的图像帧缓冲个数,确定缓冲帧个数M。帧缓存队列包括的帧缓存个数可以为:ref_num+M。
102,将解码输出的重建帧写入设置有可写入标识的帧缓存,并且如果当前写入的重建帧具有参考帧特征,则对相应帧缓存设置参考帧标识。
在一些实施例中,视频解码调度可以根据帧缓存队列存储的各个帧缓存的状态标识信息,确定设置有可写入标识的帧缓存的地址信息。视频解码调度可以将当前解码输出的重建帧写入设置有可写入标识的帧缓存。其中,如果当前解码输出的重建帧具有参考帧特征,则将相应帧缓存的可写入标识设置为参考帧标识。
在一些示例中,各个计数器的初始值可以取0。当计数器的取值为0时,表示对应帧缓存为可写入状态。视频解码调度可以将当前解码输出的重建帧写入计数器取值为0的帧缓存。如果当前解码输出的重建帧具有参考帧特征,则对用于存储当前重建帧的帧缓存的计数器+1,帧缓存队列中相应帧缓存的状态标识信息也对应+1。
其中,当前帧具有参考帧特征是指当前帧是后续视频帧解码的参考帧。例如,视频解码调度在对Px视频帧解码时,确定Px视频帧是后续Py视频帧的参考帧,则视频解码调度将Px视频帧所对应帧缓存的计数器+1。其中,Px表示当前正在解码的视频帧,Py表示解码时间在Px之后的任意一个视频帧,可选的,Px和Py可以是解码顺序相邻的两个视频帧,当然在解码顺序上Px和Py也可以间隔多个其它视频帧。另外,Px和Py可以是相同类型的视频帧,也可以是不同类型的视频帧,此处不再一一列举说明。
可选的,视频解码调度还可以维护参考帧队列,当一个重建帧具有参考帧特征时,视频解码调度可以将相应重建帧的地址信息和状态标识信息存入参考帧队列。可选的,当任一参考帧不再具有参考帧特征时,可以将不再具有参考帧队列的重建帧的地址等相关信息从参考帧队列中删除。
103,从已经缓存的重建帧中确定待显示帧,并对待显示帧所在的帧缓存设置待显示标识。可选的,待显示帧包括仅具有显示特征和既具有显示特征又具有参考特征的重建帧。
视频解码调度在对当前帧进行解码时,如果当前解码输出的重建帧仅具有显示特征,则视频解码调度可以将当前解码输出的重建帧确定为待显示帧,并将相应重建帧的计数器+1。如果当前解码输出的重建帧既具有参考帧特征又具有显示特征,则将当前解码输出的重建帧确定为待显示帧,并在参考帧标识的基础上对相应帧缓存设置待显示标识,即在计数器取值为1的基础上再+1。可选的,如果当前解码输出的重建帧既具有参考帧特征又具有显示特征,则可以在满足预设条件时,将其确定为待显示帧。例如,当其时间戳与上一个显示的重建帧的时间戳或者编号的差值小于一定阈值,则将其确定为待显示帧。当然对于当前解码输出的重建帧,在确定其既具有参考帧特征又具有显示特征时,即确定为待显示帧。
可选的,本发明实施例中还可以创建待显示队列,待显示队列用于存储待显示帧的地址信息和待显示标识信息。图像显示调度可以根据待显示队列对各个待显示帧进行调度并显示。
进一步,除当前解码输出的重建帧之外,如果已经设置有参考帧标识的至少一个帧缓存中的重建帧不再具有参考帧特征,并且具有显示特征且还未显示,则可以将相应重建帧确定为待显示帧,并将相应帧缓存的参考帧标识设置为待显示标识。可选的,此处将相应帧缓存的参考帧标识设置为待显示标识可以是:当将该至少一个帧缓存中的重建帧确定为待显示帧时,将该至少一个帧缓存的计数器在原参考帧标识为1的基础上+1,则其取值为2。当将该至少一个帧缓存中的重建帧加入待显示队列,并确定其为特殊参考帧时,再将相应计数器取值-1,此时计数器取值为1。其中,特殊参考帧可以认为是:原来为参考帧,此时不再具有参考帧特征,具有显示特征且未显示。可选的,对于特殊参考帧还可以设置特殊参考帧标识。其中,特殊参考帧标识可以不通过计数器的取值体现,例如可以在待显示队列中对相应重建帧标注特殊参考帧标识。
进一步,除当前解码输出的重建帧之外,如果已经设置有参考帧标识的至少一个帧缓存中的重建帧不再具有参考帧特征,并且已经显示或者不具有显示特征,则将相应帧缓存的参考帧标识设置为可写入标识。例如,可以将该至少一个帧缓存的计数器取值-1,其计数器-1后取值为0,即为可写入状态。在一个具体示例中,当前正在解码的视频帧为Px视频帧,Pz视频帧为Px视频帧的参考帧。Px视频帧解码后,Pz视频帧不再为其它视频帧的参考帧,则Pz视频帧不再具有参考帧特征。并且Pz视频帧已经显示或者Pz视频帧是不用进行显示的帧,则可以将Pz视频帧所在的帧缓存的计数器-1。其中,如果Pz视频帧所在的帧缓存的计数器取值为1,则-1后取值为0,表示Pz视频帧所在的帧缓存可以写入新的重建帧。
可选的,对待显示帧所在的帧缓存设置待显示标识可以是将待显示帧对应的帧缓存的计数器+1。其中,如果确定出的待显示帧仅具有显示特征,则在可写入标识的基础上对所述待显示帧所在的帧缓存设置待显示标识。如果所述待显示帧既具有显示特征又具有参考特征,则在参考帧标识的基础上对所述待显示帧所在的帧缓存设置待显示标识。其中,特殊参考帧被确定为待显示帧时,计数器在参考帧标识的基础上+1,即取值为2;当其加入到待显示队列之后再对其计数器-1,即取值为1。
104,对设置有待显示标识的帧缓存中的所述待显示帧进行显示,如果待显示帧显示之后不再具有参考帧特征,则对相应帧缓存设置可写入标识。
图像显示调度将待显示帧的帧缓存地址和计数器取值存储于待显示队列中。可选的,待显示队列中还可以存储待显示帧的时间戳信息和编号信息。图像显示调度可以根据待显示帧的时间戳信息和编号信息,确定待显示帧的显示顺序,并根据待显示帧的显示顺序,对待显示帧进行渲染显示。可选的,图像显示调度可以按照时间戳距离当前由远及近,并且按照各个待显示帧的编号顺序进行显示。可选的,图像显示调度对待显示帧进行显示之后,则将其计数器-1。其中,如果待显示帧仅具有显示特征,则在待显示帧显示之后,其计数器-1取值变为0,其对应的帧缓存即为可写入状态。如果待显示帧既具有显示特征又具有参考帧特征,则在待显示帧显示之后,其计数器-1取值变为1。对于特殊参考帧,其显示之后计数器-1取值变为0,其对应的帧缓存即为可写入状态。图像显示调度对待显示队列中的各个待显示帧进行显示之后,可以对显示队列进行清除。
在一个具体示例中,系统调度创建视频解码调度和图像显示调度,并且分配共享缓存,共享缓存包括10个帧缓存,每个帧缓存设置一个计数器,计数器初始化取值为0。视频解码调度创建帧缓存队列,帧缓存队列中存储该10个帧缓存的地址和计数器取值。视频解码调度根据帧缓存队列确定计数器取值为0的帧缓存,并根据其对应的地址将当前解码输出的重建帧写入计数器为0的帧缓存。其中,如果当前解码输出的重建帧是后续解码视频帧的参考帧,则将当前重建帧所在的帧缓存计数器+1。如果在对当前帧解码时,共享缓存已经存储有重建帧,并且已经存储的重建帧中的一个或几个不再是参考帧,但其还具有显示特征且并未显示,则对其标注特殊参考帧标识,并将其加入到待显示队列,将其计数器+1。如果共享缓存已经存储有重建帧,并且已经存储的重建帧中的一个或几个不再是参考帧,并且其不具有显示特征且或者已经显示,则将其对应的计数器-1,即其对应的计数器归0,表示可写入新的重建帧。
如果当前解码输出的重建帧不仅是后续解码视频帧的参考帧(即具有参考帧特征)而且还被确定为待显示帧,则图像显示调度可以将其加入到待显示队列,并将其所在帧缓存的计数器+1,此时其计数器取值为2。如果当前解码输出的重建帧不具有参考帧特征,但具有显示特征并被确定为待显示帧,则图像显示调度可以将其加入到待显示队列,并将其所在帧缓存的计数器+1,此时其计数器取值为1。
可选的,除了当前解码输出的重建帧之外,图像显示调度还可以已经缓存的其它重建帧中确定待显示帧,并将确定出的待显示帧加入待显示队列,并对其所在帧缓存的计数器+1,例如上述标注有特殊参考帧标识的重建帧。之后,如果待显示帧具有特殊参考帧标识则将其计数器-1。即,待显示队列中各待显示帧的计数器取值为1或者2。
图像显示调度待显示队列中的各重建帧依次进行显示,例如按照距离当前时间由远及近且编号连续的顺序,依次对待显示帧队列中的各个重建帧进行显示。并且对待显示帧队列中的重建帧显示完成之后,将其帧缓存的计数器-1。可选的,对于计数器-1归0的帧缓存,可以将其存储的重建帧删除,以支持写入新的重建帧。对于计数器-1之后为1的帧缓存,其存储的重建帧可以作为后续视频帧解码的参考帧。
可见,本发明实施例方案中,视频解码调度和图像显示调度共享帧缓存,视频解码调度和图像显示调度无需在解码缓存和显示缓存之间频繁拷贝数据,节约系统缓存空间,提升系统性能。而且,本发明实施例方案对解码输出的重建帧设置状态标识,解码输出的参考帧可以实时显示,并且在显示之后可以继续作为后续视频帧解码的参考帧,降低视频帧延迟卡顿的现象。
本发明实施例提供的共享缓存机制,能够在尽可能少的帧缓存需求下,降低视频帧的显示延迟,而且该方案能够避免内存拷贝数据带来的诸如系统带宽增加、解码耗时以及系统功耗增加等弊端,确保了系统性能,提升视频播放体验。
对应上述视频帧缓存方法,本发明实施例还提供了一种终端设备。本领域技术人员可以理解,这些终端设备均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
图5是本发明实施例提供的一种终端设备的结构示意图。如图5所示,该终端设备包括:确定模块201,用于确定共享缓存,所述共享缓存包括多个帧缓存,每个所述帧缓存均设置有状态标识。解码模块202,用于将解码输出的重建帧写入设置有可写入标识的帧缓存,并且如果所述重建帧具有参考帧特征,则对相应帧缓存设置参考帧标识。显示模块203,用于从已经缓存的所述重建帧中确定待显示帧,并对所述待显示帧所在的帧缓存设置待显示标识;对设置有待显示标识的帧缓存中的所述待显示帧进行显示,如果所述待显示帧显示之后不再具有参考帧特征,则对相应帧缓存设置可写入标识。
本发明实施例的终端设备可以执行图3和图4所示实施例的方法。本实施例未详细描述的部分,可以参考对图3和图4所示实施例的相关说明。该技术方案的执行过程和技术效果参见图3和图4所示实施例中的描述,在此不再赘述。
应理解,图5所示终端设备的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块以软件通过处理元件调用的形式实现,部分模块通过硬件的形式实现。例如,确定模块201可以为单独设立的处理元件,也可以集成在电子设备的某一个芯片中实现。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit;以下简称:ASIC),或,一个或多个微处理器(Digital Singnal Processor;以下简称:DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array;以下简称:FPGA)等。再如,这些模块可以集成在一起,以片上系统(System-On-a-Chip;以下简称:SOC)的形式实现。
图6是本发明实施例提供的另一种终端设备的结构示意图。如图6所示,终端设备以通用计算设备的形式表现。终端设备的组件可以包括但不限于:一个或者多个处理器310,通信接口320,存储器330,连接不同系统组件(包括存储器330、通信接口320和处理单元310)的通信总线340。
通信总线340表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics StandardsAssociation;以下简称:VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI)总线。
电子设备典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器330可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory;以下简称:RAM)和/或高速缓存存储器。电子设备可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。存储器330可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本说明书图3和图4所示实施例的功能。
具有一组(至少一个)程序模块的程序/实用工具,可以存储在存储器330中,这样的程序模块包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块通常执行本说明书所描述的实施例中的功能和/或方法。
处理器310通过运行存储在存储器330中的程序,从而执行各种功能应用以及数据处理,例如实现本说明书图3~图4所示实施例提供的视频帧缓存方法。
具体实现中,本申请还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本申请提供的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-only memory,简称:ROM)或随机存储记忆体(英文:random access memory,简称:RAM)等。
具体实现中,本发明实施例还提供了一种计算机程序产品,所述计算机程序产品包含可执行指令,当所述可执行指令在计算机上执行时,使得计算机执行上述方法实施例中的部分或全部步骤。
本发明实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示单独存在A、同时存在A和B、单独存在B的情况。其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项”及其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b和c中的至少一项可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
本领域普通技术人员可以意识到,本文中公开的实施例中描述的各单元及算法步骤,能够以电子硬件、计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,任一功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,简称ROM)、随机存取存储器(random access memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种视频帧缓存方法,其特征在于,包括:
确定共享缓存,所述共享缓存包括多个帧缓存,每个所述帧缓存均设置有状态标识;
将解码输出的重建帧写入设置有可写入标识的帧缓存,并且如果所述重建帧具有参考帧特征,则对相应帧缓存设置参考帧标识;
从已经缓存的所述重建帧中确定待显示帧,并对所述待显示帧所在的帧缓存设置待显示标识;
对设置有待显示标识的帧缓存中的所述待显示帧进行显示,如果所述待显示帧显示之后不再具有参考帧特征,则对相应帧缓存设置可写入标识;
其中,从已经缓存的所述重建帧中确定待显示帧,包括:
如果当前解码输出的重建帧仅具有显示特征,则将当前解码输出的重建帧确定为待显示帧,并在可写入标识的基础上对相应帧缓存设置待显示标识;
如果当前解码输出的重建帧既具有参考帧特征又具有显示特征,则将当前解码输出的重建帧确定为待显示帧,并在参考帧标识的基础上对相应帧缓存设置待显示标识。
2.根据权利要求1所述的方法,其特征在于,所述共享缓存包括的帧缓存个数是根据待播放视频流的参考帧个数和缓冲帧个数确定的。
3.根据权利要求1或2所述的方法,其特征在于,每个所述帧缓存均设置有状态标识,包括:
每个所述帧缓存均设置有计数器,所述计数器的取值用于作为对应帧缓存的状态标识。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:创建帧缓存队列,所述帧缓存队列用于存储所述共享缓存中各个帧缓存的状态标识信息;
将解码输出的重建帧写入设置有可写入标识的帧缓存,包括:
根据所述帧缓存队列存储的所述各个帧缓存的状态标识信息,确定设置有可写入标识的帧缓存,其中,所述设置有可写入标识的帧缓存用于写入解码输出的重建帧。
5.根据权利要求1所述的方法,其特征在于,从已经缓存的所述重建帧中确定待显示帧,还包括:
除当前解码输出的重建帧之外,如果已经设置有参考帧标识的至少一个帧缓存中的重建帧不再具有参考帧特征,并且具有显示特征且还未显示,则将相应重建帧确定为待显示帧,并将相应帧缓存的参考帧标识设置为待显示标识;
除当前解码输出的重建帧之外,如果已经设置有参考帧标识的至少一个帧缓存中的重建帧不再具有参考帧标识,并且已经显示或者不具有显示特征,则将相应帧缓存的参考帧标识设置为可写入标识。
6.根据权利要求1或5所述的方法,其特征在于,所述方法还包括:
创建待显示队列,所述待显示队列用于存储所述待显示帧的待显示标识信息。
7.根据权利要求6所述的方法,其特征在于,所述待显示队列还用于存储所述待显示帧的时间戳信息和编号信息;对所述待显示帧进行显示,包括:
根据所述待显示帧的时间戳信息和编号信息,确定所述待显示帧的显示顺序,并根据所述待显示帧的显示顺序,对所述待显示帧进行显示。
8.根据权利要求7所述的方法,其特征在于,如果所述待显示帧显示之后不再具有参考帧特征,则对相应帧缓存设置可写入标识,包括:
如果所述待显示帧仅具有显示特征,则在待显示帧显示之后,将待显示标识设置为可写入标识;
如果所述待显示帧既具有显示特征又具有参考帧特征,则在待显示帧显示之后,将待显示标识设置为参考帧标识,之后将参考帧标识设置为待写入标识。
9.一种终端设备,其特征在于,包括:
确定模块,用于确定共享缓存,所述共享缓存包括多个帧缓存,每个所述帧缓存均设置有状态标识;
解码模块,用于将解码输出的重建帧写入设置有可写入标识的帧缓存,并且如果所述重建帧具有参考帧特征,则对相应帧缓存设置参考帧标识;
显示模块,用于从已经缓存的所述重建帧中确定待显示帧,并对所述待显示帧所在的帧缓存设置待显示标识;对设置有待显示标识的帧缓存中的所述待显示帧进行显示,如果所述待显示帧显示之后不再具有参考帧特征,则对相应帧缓存设置可写入标识;
其中,所述显示模块,从已经缓存的所述重建帧中确定待显示帧,包括:
如果当前解码输出的重建帧仅具有显示特征,则将当前解码输出的重建帧确定为待显示帧,并在可写入标识的基础上对相应帧缓存设置待显示标识;
如果当前解码输出的重建帧既具有参考帧特征又具有显示特征,则将当前解码输出的重建帧确定为待显示帧,并在参考帧标识的基础上对相应帧缓存设置待显示标识。
10.一种终端设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令以执行如权利要求1至8任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至8任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110249758.9A CN113015003B (zh) | 2021-03-08 | 2021-03-08 | 视频帧缓存方法和设备 |
PCT/CN2022/079575 WO2022188753A1 (zh) | 2021-03-08 | 2022-03-07 | 视频帧缓存方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110249758.9A CN113015003B (zh) | 2021-03-08 | 2021-03-08 | 视频帧缓存方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113015003A CN113015003A (zh) | 2021-06-22 |
CN113015003B true CN113015003B (zh) | 2022-11-25 |
Family
ID=76408000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110249758.9A Active CN113015003B (zh) | 2021-03-08 | 2021-03-08 | 视频帧缓存方法和设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113015003B (zh) |
WO (1) | WO2022188753A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113015003B (zh) * | 2021-03-08 | 2022-11-25 | 展讯通信(上海)有限公司 | 视频帧缓存方法和设备 |
CN115733987A (zh) * | 2021-08-30 | 2023-03-03 | 华为技术有限公司 | 编解码方法、编码器、解码器及电子设备 |
CN115802095B (zh) * | 2023-01-06 | 2023-04-18 | 北京象帝先计算技术有限公司 | 视频流传输装置、系统、设备及视频流传输方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105657540A (zh) * | 2016-01-05 | 2016-06-08 | 珠海全志科技股份有限公司 | 一种适配安卓系统的视频解码方法及其装置 |
CN107222779A (zh) * | 2017-06-08 | 2017-09-29 | 浙江大华技术股份有限公司 | 一种视频倒放的方法及装置 |
CN111787330A (zh) * | 2020-06-16 | 2020-10-16 | 眸芯科技(上海)有限公司 | 支持解码压缩帧缓存自适应分配的编码方法及应用 |
CN111953992A (zh) * | 2020-07-07 | 2020-11-17 | 西安万像电子科技有限公司 | 解码方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101160640B1 (ko) * | 2003-12-30 | 2012-06-28 | 삼성전자주식회사 | 데이터 처리 시스템 및 데이터 처리 방법 |
CN101729893B (zh) * | 2008-08-15 | 2011-08-17 | 北京北大众志微系统科技有限责任公司 | 基于软硬件协同处理的mpeg多格式兼容解码方法及其装置 |
US8660191B2 (en) * | 2009-10-22 | 2014-02-25 | Jason N. Wang | Software video decoder display buffer underflow prediction and recovery |
US9270994B2 (en) * | 2012-06-29 | 2016-02-23 | Cisco Technology, Inc. | Video encoder/decoder, method and computer program product that process tiles of video data |
CN106921862A (zh) * | 2014-04-22 | 2017-07-04 | 联发科技股份有限公司 | 多核解码器系统和视频解码方法 |
US20190147854A1 (en) * | 2017-11-16 | 2019-05-16 | Microsoft Technology Licensing, Llc | Speech Recognition Source to Target Domain Adaptation |
CN113015003B (zh) * | 2021-03-08 | 2022-11-25 | 展讯通信(上海)有限公司 | 视频帧缓存方法和设备 |
-
2021
- 2021-03-08 CN CN202110249758.9A patent/CN113015003B/zh active Active
-
2022
- 2022-03-07 WO PCT/CN2022/079575 patent/WO2022188753A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105657540A (zh) * | 2016-01-05 | 2016-06-08 | 珠海全志科技股份有限公司 | 一种适配安卓系统的视频解码方法及其装置 |
CN107222779A (zh) * | 2017-06-08 | 2017-09-29 | 浙江大华技术股份有限公司 | 一种视频倒放的方法及装置 |
CN111787330A (zh) * | 2020-06-16 | 2020-10-16 | 眸芯科技(上海)有限公司 | 支持解码压缩帧缓存自适应分配的编码方法及应用 |
CN111953992A (zh) * | 2020-07-07 | 2020-11-17 | 西安万像电子科技有限公司 | 解码方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113015003A (zh) | 2021-06-22 |
WO2022188753A1 (zh) | 2022-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113015003B (zh) | 视频帧缓存方法和设备 | |
US11500586B2 (en) | Data read-write method and apparatus and circular queue | |
US20070268298A1 (en) | Delayed frame buffer merging with compression | |
JP5774699B2 (ja) | マルチメディアプロセッサにおける順序通りでないコマンド実行 | |
US10147222B2 (en) | Multi-pass rendering in a screen space pipeline | |
US8949554B2 (en) | Idle power control in multi-display systems | |
JPWO2008105092A1 (ja) | グラフィックス描画装置及びグラフィックス描画方法 | |
US10453168B2 (en) | Techniques for maintaining atomicity and ordering for pixel shader operations | |
CN110708609A (zh) | 一种视频播放方法及装置 | |
US10453243B2 (en) | Primitive level preemption using discrete non-real-time and real time pipelines | |
US20190318461A1 (en) | Histogram Statistics Circuit and Multimedia Processing System | |
US8681154B1 (en) | Adaptive rendering of indistinct objects | |
CN108024116B (zh) | 一种数据缓存方法及装置 | |
US11016802B2 (en) | Techniques for ordering atomic operations | |
KR20230073222A (ko) | 깊이 버퍼 프리-패스 | |
US20140104283A1 (en) | Page flipping with backend scaling at high resolutions | |
CN107506119B (zh) | 一种图片显示方法、装置、设备和存储介质 | |
US20100070648A1 (en) | Traffic generator and method for testing the performance of a graphic processing unit | |
US8390619B1 (en) | Occlusion prediction graphics processing system and method | |
US8269769B1 (en) | Occlusion prediction compression system and method | |
US20220391264A1 (en) | Techniques for efficiently synchronizing multiple program threads | |
CN114090168A (zh) | 一种qemu虚拟机图像输出窗口自适应调整方法 | |
CN114626974A (zh) | 图像处理方法、装置、计算机设备及存储介质 | |
US7342590B1 (en) | Screen compression | |
CN114998158A (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 |