CN115361579B - 视频送显方法、装置、电子设备及存储介质 - Google Patents
视频送显方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115361579B CN115361579B CN202210904150.XA CN202210904150A CN115361579B CN 115361579 B CN115361579 B CN 115361579B CN 202210904150 A CN202210904150 A CN 202210904150A CN 115361579 B CN115361579 B CN 115361579B
- Authority
- CN
- China
- Prior art keywords
- video
- video frame
- buffer
- queue
- display
- 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
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000005540 biological transmission Effects 0.000 title claims description 19
- 239000000872 buffer Substances 0.000 claims abstract description 120
- 238000009877 rendering Methods 0.000 claims description 17
- 238000002716 delivery method Methods 0.000 claims description 8
- 230000004888 barrier function Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 3
- 230000007717 exclusion Effects 0.000 claims description 2
- 230000000903 blocking effect Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
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/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4331—Caching operations, e.g. of an advertisement for later insertion during playback
-
- 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/436—Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
- H04N21/4363—Adapting the video stream to a specific local network, e.g. a Bluetooth® network
-
- 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 or rendering scenes according to encoded video stream scene graphs
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明提供一种视频送显方法、装置、电子设备及存储介质,该视频送显方法包括:响应于送显请求,获取待显示视频数据,通过第一线程对视频数据执行解码,将得到的视频帧存储至视频帧送显队列;通过所述第一线程对第一缓存和第二缓存进行管理,第一缓存用于存储待显示的视频帧,第二缓存用于填充视频帧;通过第二线程获取关键视频帧送显队列的栅栏释放事件,轮转第一缓存和第二缓存,将关键视频帧归还至视频帧队列;通过第二线程从关键视频帧送显队列查找符合预设条件的视频帧并执行送显。本发明解决镜像投屏在网络波动时视频播放出现卡顿、画面抖动、显示忽快忽慢的问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种视频送显方法、装置、电子设备及存储介质。
背景技术
随着移动设备硬件规格的提高及移动操作系统的迭代升级,移动设备能够处理的多媒体场景与日俱增,使用者已经不满足仅仅在小屏上独享多媒体内容,更乐于将移动设备小屏上的多媒体内容投射到电视、投影仪等大屏上与他人分享。现已研发出一种具有镜像投屏(Miracast/Airplay)功能的外部装置(Sink端),其可在与移动Souce设备连接后,解码移动Source端设备的通信数据,控制Sink端的显示器播放移动Source端的一路H264码流格式视频,Sink端外部功能装置很重要的技术就是对Souce端的码流实现流畅回放,并降低移动设备Souce端和显示Sink端的音视频延迟。
镜像投屏场景的一个特点就是对网络要求极高,由于Sink端外部装置和Source端的音视频近乎同步镜像,任何的网络波动都会导致视频出现播放卡顿、画面抖动、显示忽快忽慢的问题,造成用户镜像投屏体验下降。现有技术通过接收一个完整的输入帧数据,记录接收时间并提取该帧数据的关键信息;结合关键信息进行网络状况的判断;建立缓冲池,缓冲池接收数据,并根据网络状况自动调整缓冲池大小;结合关键信息进行下一帧数据发出时间的预测;根据数据发出的预测时间,缓冲池发送数据并记录发送时间;对缓冲池发送的数据进行解码并平滑输出。
发明内容
本发明实施例的主要目的在于提出一种视频送显方法、装置、电子设备及存储介质,实现了对镜像投屏场景在不同视频帧率和屏幕刷新率下能够平滑播放,且画面实时性更高。
本发明的一方面提供了一种视频送显方法,其特征在于,包括:
响应于送显请求,获取待显示视频数据,通过第一线程对所述视频数据执行解码,将得到的视频帧存储至视频帧送显队列;
通过所述第一线程对第一缓存和第二缓存进行管理,所述第一缓存用于存储待显示的所述视频帧,所述第二缓存用于填充所述视频帧;
通过第二线程获取关键视频帧送显队列的栅栏释放事件,轮转所述第一缓存和第二缓存,将所述关键视频帧归还至所述视频帧队列;
通过第二线程从所述关键视频帧送显队列查找符合预设条件的所述视频帧并执行送显。
根据所述的视频送显方法,其中响应于送显请求,获取待显示视频数据,通过第一线程对所述视频数据执行解码,将得到的视频帧存储至视频帧送显队列,包括:
通过解码器对所述视频数据执行解码,进而通过中间件将所述视频帧添加至所述视频帧送显队列;
通过所述中间件对所述视频帧送显队列从头至尾进行遍历获取没有同时处于所述第一缓存和所述第二缓存的所述视频帧,并将所述视频帧送回解码器填充新的解码图像数据。
根据所述的视频送显方法,其中还包括:
通过配置文件对所述视频帧送显队列的长度进行自定义设置。
根据所述的视频送显方法,其中通过所述第一线程在所述视频帧送显队列创建第一缓存和第二缓存,所述第一缓存用于存储待显示的所述视频帧,所述第二缓存用于填充所述视频帧,还包括:
检测到显示设备刷新时,交换所述第一缓存和所述第二缓存的地址;
以使所述显示设备从所述第二缓存读取所述视频帧进行显示,且所述第一缓存用于填充所述视频帧,直至检测到所述显示设备的送显请求时,交换所述第一缓存和所述第二缓存的地址。
根据所述的视频送显方法,其中通过第二线程获取关键视频帧送显队列的栅栏释放事件,轮转所述第一缓存和第二缓存,将所述关键视频帧归还至所述视频帧队列,包括:
等待所述视频帧队列中已经送显的倒数第二帧的栅栏释放;
归还倒数第二帧的缓存至视频帧送显队列,以使中间件取走第二帧的缓存送至解码器填充新的所述视频帧;
从视频帧送显队列中获取符合所述预设条件视频帧,所述预设条件为:当前要送显的视频帧与上一帧送显的视频帧的显示时间戳的差值大于屏幕刷新时间的一半;
创建从所述视频帧送显队列中取出的视频帧的栅栏;
并将所述视频帧送给显示设备执行显示。
根据所述的视频送显方法,其中方法还包括:
通过所述第二线程获取收到第一帧时的时间戳为Tfirst,收到第一帧时的本地时间为Tlocal,后面每一帧的时间戳为Tsrc,每帧解码前时的本地时间为Tnow;
动态计算Tnow-Tlocal>=Tsrc-Tfirst是否成立,若成立就进行通过所述第二线程进行解码渲染,若不成立则使所述第二线程睡眠,直至满足渲染条件。
根据所述的视频送显方法,其中方法包括:
所述第一线程与所述第二线程相互独立,所述第一线程与所述第二线程访问所述视频帧送显队列满足互斥规则。
本发明实施例的另一方面提供了一种视频送显装置,包括:
渲染模块,用于根据送显请求,获取待显示视频数据,通过第一线程对所述视频数据执行解码,将得到的视频帧存储至视频帧送显队列;
缓存模块,通过所述第一线程对第一缓存和第二缓存进行管理,所述第一缓存用于存储待显示的所述视频帧,所述第二缓存用于填充所述视频帧;
栅栏模块,用于通过第二线程获取关键视频帧送显队列的栅栏释放事件,轮转所述第一缓存和第二缓存,将所述关键视频帧归还至所述视频帧队列;
送显模块,用于通过第二线程从所述关键视频帧送显队列查找符合预设条件的所述视频帧并执行送显。
本发明实施例的另一方面提供了一种电子设备,包括处理器以及存储器;
所述存储器用于存储程序;
所述处理器执行所述程序实现如前文所描述的方法。
本发明实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前文所描述的方法。
本发明的有益效果为:解决镜像投屏在网络波动时视频播放出现卡顿、画面抖动、显示忽快忽慢的问题。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明实施例的方法的流程示意图。
图2是本发明实施例的视频送显渲染流程图。
图3是本发明实施例的栅栏释放事件处理流程示意图。
图4是本发明实施例的镜像投屏平滑送显示意图。
图5是本发明实施例的双缓存示意图。
图6是本发明实施例的视频送显分析装置图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特有的意义。因此,“模块”、“部件”或“单元”可以混合地使用。“第一”、“第二”等只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。在本后续的描述中,对方法步骤的连续标号是为了方便审查和理解,结合本发明的整体技术方案以及各个步骤之间的逻辑关系,调整步骤之间的实施顺序并不会影响本发明技术方案所达到的技术效果。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
如图1所示,本发明实施例提供了一种视频送显方法的流程,该方法具体包括但不限于步骤S100-S400。
步骤S100,响应于送显请求,获取待显示视频数据,通过第一线程对视频数据执行解码,将得到的视频帧存储至视频帧送显队列;
在一些实施例中,参考图2,视频送显渲染流程图,该流程包括但不限于步骤S210~S220:
步骤S120,通过解码器对视频数据执行解码,进而通过中间件将视频帧添加至视频帧送显队列;
步骤S130,通过中间件对视频帧送显队列从头至尾进行遍历获取没有同时处于第一缓存和第二缓存的视频帧,并将视频帧送回解码器填充新的解码图像数据。
步骤S200,通过所述第一线程对第一缓存和第二缓存进行管理,第一缓存用于存储待显示的视频帧,第二缓存用于填充视频帧;
在一些实施例中,其中的第一缓存和第二缓存可以通过指针的方式实现,其中视频帧送显队列中的视频帧送显后,以对两个缓存指针进行维护,其中一个缓存指针指向正在显示的视频帧,另外缓存指针指向待显示的视频帧。
示例性地,当缓存指针指向的视频帧显示完成后,会有一个fence栅栏释放事件,两个缓存指针交换,当前显示的是另外一缓存指针指向的视频帧,而下一次送显的视频帧会被第一个缓存指针指向。
步骤S300,通过第二线程获取关键视频帧送显队列的栅栏释放事件,轮转第一缓存和第二缓存,将关键视频帧归还至视频帧队列;
在一些实施例中,参考图3,其包括但不限于步骤S310~S,50,
步骤S310,等待视频帧队列中已经送显的倒数第二帧的栅栏释放;
步骤S320,归还倒数第二帧的缓存至视频帧送显队列,以使中间件取走第二帧的缓存送至解码器填充新的视频帧;
步骤S330,从视频帧送显队列中获取符合预设条件视频帧,预设条件为:当前要送显的视频帧与上一帧送显的视频帧的显示时间戳的差值大于屏幕刷新时间的一半;
步骤S340创建从视频帧送显队列中取出的视频帧的栅栏;
步骤S350,并将视频帧送给显示设备执行显示。
在一些实施例中,参考图5,一个前缓冲区用于显示器读取显示,一个后缓冲区用于填充解码后的图像等待显示。当屏幕刷新时,前后缓冲区会发生地址的交换,显示器从前缓冲区(屏幕刷新前的后缓冲区)读取显示,后缓冲区(屏幕刷新前的前缓冲区)会被填充下一帧解码后的图像等待再次发生地址交换时显示器读取显示。
在一些实施例中,在镜像投屏场景采用Fence同步机制,送显视频帧的Fence释放事件作为倒数第二帧视频帧(前缓冲区,相当于第一缓存区)释放与下一帧视频帧送显(填充后缓冲区,相当于第二缓存区)的触发条件。已经解码的多媒体视频帧队列与送显模块是两个独立线程,多媒体视频帧队列的缓存轮转不受送显线程的影响,从而保证网络波动后,镜像投屏的显示能瞬间恢复实时性。
步骤S400,通过第二线程从关键视频帧送显队列查找符合预设条件的视频帧并执行送显。
在一些实施例中,第一线程与第二线程分别表示渲染线程和送显线程。
在一些实施例中,参考图4,其中的送显线程包括如下流程:
等待已经送显的倒数第二帧的Fence释放(即此时的前缓冲区显示完成,前后缓冲区发生地址交换,显示器读取此时的前缓冲区显示,此时的后缓冲区等待填冲下一帧解码后的图像)
归还倒数第二帧的buffer至视频帧送显队列,以便被中间件取走送至解码器填充新的视频帧
从视频帧送显队列中获取符合如下条件的视频帧:当前要送显的视频帧的显示时间戳(pts)与上一帧送显的视频帧pts的差值Δt应大于屏幕刷新时间tD的一半。
创建从视频帧送显队列中取出的视频帧的Fence。
将该视频帧送给显示驱动显示。
其中的渲染线程包括如下流程:
创建视频帧送显队列,解码器解码出来后的视频帧经由中间件后添加到视频帧送显队列尾部
中间件从视频帧送显队列的头部开始遍历寻找当前没有在前缓冲区正在显示的视频帧并且没有在后缓冲区准备显示的视频帧,将其送回解码器填充新的解码图像数据。
渲染线程与送显线程是两个独立线程,视频帧队列的缓存轮转不受送显线程的影响,从而保证网络波动后,镜像投屏的显示能瞬间恢复实时性。
在一些实施例中,本发明的送显流程还可以通过如下方式实现:
计算出收到第一帧时的时间戳为Tfirst,收到第一帧时的本地时间为Tlocal,后面每一帧的时间戳为Tsrc,每帧解码前时的本地时间为Tnow;判断Tnow-Tlocal〉=Tsrc-Tfirst是否成立,如果成立就进行解码渲染,如果不成立就进行sleep,直到条件成立为止。根据相邻两帧的时间戳差值的恒定性,采用了动态计算码流的相对时间戳和本地的绝对时间戳,通过其差值的大小,决定是否对当前帧进行解码,这样就能避免每收到一帧就解码和渲染的话有时候会出现显示过快或过慢的情况,从而提高实时视频渲染的平滑性。
图6是本发明实施例的视频送显分析装置图。该装置包括了渲染模块601、缓存模块602、栅栏模块603及送显模块604;
其中,渲染模块,用于根据送显请求,获取待显示视频数据,通过第一线程对视频数据执行解码,将得到的视频帧存储至视频帧送显队列;缓存模块,用于通过所述第一线程对第一缓存和第二缓存进行管理,第一缓存用于存储待显示的视频帧,第二缓存用于填充视频帧;栅栏模块,用于通过第二线程获取关键视频帧送显队列的栅栏释放事件,轮转第一缓存和第二缓存,将关键视频帧归还至视频帧队列;送显模块,用于通过第二线程从关键视频帧送显队列查找符合预设条件的视频帧并执行送显。
示例性地,在装置中的渲染模块、缓存模块、栅栏模块及送显模块的协同下,实施例装置可以实现前述的任意一种视频送显方法,即响应于送显请求,获取待显示视频数据,通过第一线程对视频数据执行解码,将得到的视频帧存储至视频帧送显队列;通过所述第一线程对第一缓存和第二缓存进行管理,第一缓存用于存储待显示的视频帧,第二缓存用于填充视频帧;通过第二线程获取关键视频帧送显队列的栅栏释放事件,轮转第一缓存和第二缓存,将关键视频帧归还至视频帧队列;通过第二线程从关键视频帧送显队列查找符合预设条件的视频帧并执行送显。本发明解决镜像投屏在网络波动时视频播放出现卡顿、画面抖动、显示忽快忽慢的问题。
本发明实施例还提供了一种电子设备,该电子设备包括处理器以及存储器;
存储器存储有程序;
处理器执行程序以执行前述的视频送显方法;该电子设备具有搭载并运行本发明实施例提供的视频送显的软件系统的功能,例如,个人计算机(Personal Computer,PC)、手机、智能手机、个人数字助手(Personal Digital Assistant,PDA)、可穿戴设备、掌上电脑PPC(Pocket PC)、平板电脑等。
本发明实施例还提供了一种计算机可读存储介质,所述存储介质存储有程序,所述程序被处理器执行实现如前面所述的视频送显方法。
在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。
本发明实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前述的视频送显方法。
此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,所述的功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
以上是对本发明的较佳实施进行了具体说明,但本发明并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (9)
1.一种视频送显方法,其特征在于,包括:
响应于送显请求,获取待显示视频数据,通过第一线程对所述视频数据执行解码,将得到的视频帧存储至视频帧送显队列;
通过所述第一线程对第一缓存和第二缓存进行管理,所述第一缓存用于存储待显示的所述视频帧,所述第二缓存用于填充所述视频帧;
通过第二线程获取关键视频帧送显队列的栅栏释放事件,轮转所述第一缓存和第二缓存,将所述关键视频帧归还至所述视频帧队列;
通过第二线程从所述关键视频帧送显队列查找符合预设条件的所述视频帧并执行送显;
其中,所述通过第二线程获取关键视频帧送显队列的栅栏释放事件,轮转所述第一缓存和第二缓存,将所述关键视频帧归还至所述视频帧队列,包括:
等待所述视频帧队列中已经送显的倒数第二帧的栅栏释放;
归还倒数第二帧的缓存至视频帧送显队列,以使中间件取走倒数第二帧的缓存送至解码器填充新的所述视频帧;
从视频帧送显队列中获取符合所述预设条件视频帧,所述预设条件为:当前要送显的视频帧与上一帧送显的视频帧的显示时间戳的差值大于屏幕刷新时间的一半;
创建从所述视频帧送显队列中取出的视频帧的栅栏;
并将所述视频帧送给显示设备执行显示;
其中,令第一缓存指针指向正在显示的视频帧,令第二缓存指针指向待显示的视频帧;当缓存指针指向的视频帧显示完成后,会有一个fence栅栏释放事件,两个缓存指针交换,当前显示的是另外一缓存指针指向的视频帧,而下一次送显的视频帧会被第一个缓存指针指向。
2.根据权利要求1所述的视频送显方法,其特征在于,所述响应于送显请求,获取待显示视频数据,通过第一线程对所述视频数据执行解码,将得到的视频帧存储至视频帧送显队列,包括:
通过解码器对所述视频数据执行解码,进而通过中间件将所述视频帧添加至所述视频帧送显队列。
3.根据权利要求1所述的视频送显方法,其特征在于,还包括:
通过配置文件对所述视频帧送显队列的长度进行自定义设置。
4.根据权利要求1所述的视频送显方法,其特征在于,所述通过所述第一线程对第一缓存和第二缓存进行管理,所述第一缓存用于存储待显示的所述视频帧,所述第二缓存用于填充所述视频帧,还包括:
检测到显示设备刷新时,交换所述第一缓存和所述第二缓存的地址;
以使所述显示设备从所述第二缓存读取所述视频帧进行显示,且所述第一缓存用于填充所述视频帧,直至检测到所述显示设备的送显请求时,交换所述第一缓存和所述第二缓存的地址。
5.根据权利要求1所述的视频送显方法,其特征在于,所述方法还包括:
通过所述第二线程获取收到第一帧时的时间戳为Tfirst,收到第一帧时的本地时间为Tlocal,后面每一帧的时间戳为Tsrc,每帧解码前时的本地时间为Tnow;
动态计算Tnow-Tlocal>=Tsrc-Tfirst是否成立,若成立就进行通过所述第二线程进行解码渲染,若不成立则使所述第二线程睡眠,直至满足渲染条件。
6.根据权利要求1所述的视频送显方法,其特征在于,所述方法包括:
所述第一线程与所述第二线程相互独立,所述第一线程与所述第二线程访问所述视频帧送显队列满足互斥规则。
7.一种视频送显装置,其特征在于,包括:
渲染模块,用于根据送显请求,获取待显示视频数据,通过第一线程对所述视频数据执行解码,将得到的视频帧存储至视频帧送显队列;
缓存模块,用于通过所述第一线程对第一缓存和第二缓存进行管理,所述第一缓存用于存储待显示的所述视频帧,所述第二缓存用于填充所述视频帧;
栅栏模块,用于通过第二线程获取关键视频帧送显队列的栅栏释放事件,轮转所述第一缓存和第二缓存,将所述关键视频帧归还至所述视频帧队列;
送显模块,用于通过第二线程从所述关键视频帧送显队列查找符合预设条件的所述视频帧并执行送显;
其中,所述通过第二线程获取关键视频帧送显队列的栅栏释放事件,轮转所述第一缓存和第二缓存,将所述关键视频帧归还至所述视频帧队列,包括:
等待所述视频帧队列中已经送显的倒数第二帧的栅栏释放;
归还倒数第二帧的缓存至视频帧送显队列,以使中间件取走倒数第二帧的缓存送至解码器填充新的所述视频帧;
从视频帧送显队列中获取符合所述预设条件视频帧,所述预设条件为:当前要送显的视频帧与上一帧送显的视频帧的显示时间戳的差值大于屏幕刷新时间的一半;
创建从所述视频帧送显队列中取出的视频帧的栅栏;
并将所述视频帧送给显示设备执行显示;
其中,令第一缓存指针指向正在显示的视频帧,令第二缓存指针指向待显示的视频帧;当缓存指针指向的视频帧显示完成后,会有一个fence栅栏释放事件,两个缓存指针交换,当前显示的是另外一缓存指针指向的视频帧,而下一次送显的视频帧会被第一个缓存指针指向。
8.一种电子设备,其特征在于,包括处理器以及存储器;
所述存储器用于存储程序;
所述处理器执行所述程序实现如权利要求1-6中任一项所述的视频送显方法。
9.一种计算机可读存储介质,其特征在于,所述存储介质存储有程序,所述程序被处理器执行实现如权利要求1-6中任一项所述的视频送显方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210904150.XA CN115361579B (zh) | 2022-07-28 | 2022-07-28 | 视频送显方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210904150.XA CN115361579B (zh) | 2022-07-28 | 2022-07-28 | 视频送显方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115361579A CN115361579A (zh) | 2022-11-18 |
CN115361579B true CN115361579B (zh) | 2024-06-25 |
Family
ID=84032078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210904150.XA Active CN115361579B (zh) | 2022-07-28 | 2022-07-28 | 视频送显方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115361579B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117094876A (zh) * | 2023-07-12 | 2023-11-21 | 荣耀终端有限公司 | 数据处理的方法、电子设备及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108347645A (zh) * | 2018-01-19 | 2018-07-31 | 浙江大华技术股份有限公司 | 一种视频帧解码显示的方法及装置 |
CN110771160A (zh) * | 2018-07-23 | 2020-02-07 | 深圳市大疆创新科技有限公司 | 视频均匀显示方法、终端设备、机器可读存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101404489B1 (ko) * | 2012-08-08 | 2014-06-10 | 한국과학기술정보연구원 | 멀티쓰레드를 이용한 동영상 실시간 렌더링 방법 및 시스템 |
WO2020019140A1 (zh) * | 2018-07-23 | 2020-01-30 | 深圳市大疆创新科技有限公司 | 视频处理方法、终端设备、机器可读存储介质 |
CN112330783A (zh) * | 2019-07-31 | 2021-02-05 | 广州虎牙科技有限公司 | 云渲染方法、装置、终端设备及可读存储介质 |
CN114071224B (zh) * | 2020-07-31 | 2023-08-25 | 腾讯科技(深圳)有限公司 | 视频数据处理方法、装置、计算机设备及存储介质 |
CN113438502B (zh) * | 2021-05-27 | 2022-07-12 | 卡莱特云科技股份有限公司 | 一种视频帧图像传输方法、发送卡及视频帧图像显示系统 |
CN114237532A (zh) * | 2021-11-30 | 2022-03-25 | 珠海全志科技股份有限公司 | 基于Linux嵌入式系统的多窗口实现方法、装置及介质 |
CN114071226B (zh) * | 2022-01-14 | 2022-04-26 | 飞狐信息技术(天津)有限公司 | 视频预览图的生成方法及装置、存储介质及电子设备 |
CN114626974A (zh) * | 2022-04-24 | 2022-06-14 | 湖南国科微电子股份有限公司 | 图像处理方法、装置、计算机设备及存储介质 |
-
2022
- 2022-07-28 CN CN202210904150.XA patent/CN115361579B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108347645A (zh) * | 2018-01-19 | 2018-07-31 | 浙江大华技术股份有限公司 | 一种视频帧解码显示的方法及装置 |
CN110771160A (zh) * | 2018-07-23 | 2020-02-07 | 深圳市大疆创新科技有限公司 | 视频均匀显示方法、终端设备、机器可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115361579A (zh) | 2022-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109618179B (zh) | 超高清视频直播的快速起播方法及装置 | |
US10531149B2 (en) | Method and system for managing buffers | |
US8787726B2 (en) | Streaming video navigation systems and methods | |
US7990386B2 (en) | Method for correlating animation and video in a computer system | |
US8238420B1 (en) | Video content transcoding for mobile devices | |
US8811797B2 (en) | Switching between time order and popularity order sending of video segments | |
KR20100035690A (ko) | 디지털 미디어 처리 인터페이스 | |
CN101854508B (zh) | 反向回放编码的多媒体内容的方法和装置 | |
CN112601127B (zh) | 视频显示方法及装置、电子设备、计算机可读存储介质 | |
US20200296470A1 (en) | Video playback method, terminal apparatus, and storage medium | |
CN115361579B (zh) | 视频送显方法、装置、电子设备及存储介质 | |
AU2014364151A1 (en) | Handling video frames compromised by camera motion | |
CN110582012A (zh) | 视频切换方法、视频处理方法、装置及存储介质 | |
CN111526404A (zh) | 单帧播放方法、装置、设备以及存储介质 | |
CN109302636B (zh) | 提供数据对象全景图信息的方法及装置 | |
US11678019B2 (en) | User interface (UI) engine for cloud UI rendering | |
WO2018094261A1 (en) | Method and system for managing buffers | |
US20210400334A1 (en) | Method and apparatus for loop-playing video content | |
CN112449239A (zh) | 视频播放方法、装置及电子设备 | |
JPH10191257A (ja) | ディジタル動画像復号化装置、及びディジタル動画像復号化方法 | |
CN112954483B (zh) | 数据传输方法、系统及非易失性存储介质 | |
US11799943B2 (en) | Method and apparatus for supporting preroll and midroll during media streaming and playback | |
CN110557652A (zh) | 视频处理装置及其视频处理方法 | |
US11729239B1 (en) | Electronic real-time communications | |
US11588870B2 (en) | W3C media extensions for processing DASH and CMAF inband events along with media using process@append and process@play mode |
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 |