渲染方法、解码方法、播放多媒体数据流的方法及装置与流程

文档序号:11594929研发日期:2016年阅读:330来源:国知局
技术简介:
本专利针对多媒体数据播放时因透明区域与播放窗口同步问题导致的"花屏"现象,提出在解析完首帧图像后先绘制透明区域,再在独立绘图层同步绘制播放窗口的解决方案。通过检测模块判断图像解析状态,通知模块协调渲染与播放流程,确保播放窗口与透明区域的精准叠加,有效消除画面闪烁与显示异常。
关键词:透明区域同步,花屏解决,多媒体渲染

本申请涉及多媒体数据流的播放技术,尤其涉及渲染方法、多媒体数据流的解码方法、播放多媒体数据流的方法、渲染装置、多媒体数据流的解码装置、播放多媒体数据流的装置、播放多媒体数据流的设备。



背景技术:

目前某些场景下,在界面上播放多媒体数据流时,需要借助多媒体数据播放服务来播放多媒体数据流,在界面上有一个区域作为多媒体数据流的显示区域。目前实现该效果的一种方案是在对界面渲染时,在绘制界面的绘图层绘制一个透明区域,另外,再在另一个绘图层绘制一个播放窗口,将播放窗口的位置重叠于透明区域的位置,播放窗口内显示每一帧待播放的多媒体数据。

现有技术中多媒体数据透过绘制好的透明区域开始播放时容易产生“花屏”现象。



技术实现要素:

本申请提供一种渲染方法、多媒体数据流的解码方法、播放多媒体数据流的方法、渲染装置、多媒体数据流的解码装置、播放多媒体数据流的装置及设备,能够解决多媒体数据透过绘制好的透明区域开始播放时容易产生“花屏”现象。

根据本申请实施例的第一方面,提供一种渲染方法,该方法包括步骤:

如果判断已解析完多媒体数据流的至少一帧图像,则绘制界面上的透明 区域,并指示进行所述多媒体数据流的播放窗口和所述多媒体数据流的至少一帧图像的绘制,所述透明区域和所述播放窗口重叠于不同的绘图层。

根据本申请实施例的第二方面,提供一种多媒体数据流的解码方法,包括:

将多媒体数据流解析成帧图像;

当解析完多媒体数据流的至少一帧图像后,发送通知消息,所述通知消息用于通知已解析完多媒体数据流的至少一帧图像。

根据本申请实施例的第三方面,提供一种播放多媒体数据流的方法,包括:

当解析完多媒体数据流的至少一帧图像后,发送通知消息;

当根据所述通知消息判断已解析完多媒体数据流的至少一帧图像时,绘制界面上的透明区域,以及绘制所述多媒体数据流的播放窗口和所述多媒体数据流的至少一帧图像,所述透明区域和所述播放窗口重叠于不同的绘图层;

在所述播放窗口显示所绘制的多媒体数据流的至少一帧图像。

根据本申请实施例的第四方面,提供一种渲染装置,包括:

检测模块,用于判断是否已解析完多媒体数据流的至少一帧图像,并将判断结果通知绘制模块;

绘制模块,用于在已解析完多媒体数据流的至少一帧图像时绘制界面上的透明区域;

通知模块,用于在已解析完多媒体数据流的至少一帧图像时指示进行所述多媒体数据流的播放窗口和所述多媒体数据流的至少一帧图像的绘制,所述透明区域和所述播放窗口重叠于不同的绘图层。

根据本申请实施例的第五方面,提供一种多媒体数据流的解码装置,包括:

解码模块,用于将多媒体数据流解析成帧图像;

通知模块,用于当解析完多媒体数据流的至少一帧图像后,发送通知消息,所述通知消息用于通知已解析完多媒体数据流的至少一帧图像。

根据本申请实施例的第六方面,提供一种播放多媒体数据流的装置,包括:

解码装置,用于当解析完多媒体数据流的至少一帧图像后,发送通知消息;

渲染装置,用于当根据所述通知消息判断已解析完多媒体数据流的至少一帧图像时,绘制界面上的透明区域,并通知多媒体数据播放装置;

多媒体数据播放装置,用于接收所述渲染装置的通知后绘制所述多媒体数据流的播放窗口和所述多媒体数据流的至少一帧图像,所述透明区域和所述播放窗口重叠于不同的绘图层;

显示装置,用于在所述播放窗口显示所绘制的多媒体数据流的至少一帧图像。

根据本申请实施例的第七方面,提供一种播放多媒体数据流的设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

当解析完多媒体数据流的至少一帧图像后,发送通知消息;

当根据所述通知消息判断已解析完多媒体数据流的至少一帧图像时,绘制界面上的透明区域,以及绘制所述多媒体数据流的播放窗口和所述多媒体数据流的至少一帧图像,所述透明区域和所述播放窗口重叠于不同的绘图层;

在所述播放窗口显示所绘制的多媒体数据流的至少一帧图像。

本申请一方面扩展了解码服务的功能,即增加了至少一帧图像解析后的提醒功能,以使解码服务可以被用于解决“花屏”现象;另一方面,渲染服务通过控制绘制透明区域和播放窗口的时机,即在保证多媒体数据流的至少一帧图像已被解析完后再开始绘制透明区域,也就意味着在绘制透明区域时至少首帧图像已经被解析完,从而解决了多媒体数据流首帧播放时的“花屏”现象。

附图说明

图1为本申请实施例中设备100的结构示意图;

图2为本申请实施例中渲染方法的流程图;

图2a、图2b为本申请实施例中两种判断至少一帧图像已被解析的流程示意图;

图3为本申请实施例中播放多媒体数据的方法的流程图;

图4a-图4c为几种应用本申请方案的界面的示意图;

图5为本申请应用实例的流程图;

图6为本申请实施例中播放多媒体数据流的装置/渲染装置/多媒体数据流的解码装置的硬件架构图;

图7为本申请实施例中渲染装置的逻辑框图;

图8为本申请实施例中多媒体数据流的解码装置的逻辑框图;

图9为本申请实施例中播放多媒体数据流的装置的逻辑框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种 信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

图1中,设备100具有中央处理器(centralprocessingunit,cpu)101、图形处理器(graphicprocessingunit,gpu)102等硬件设备,以及操作系统、操作系统内部或上层的应用(例如多媒体数据播放客户端、浏览器、移动终端桌面应用等)等软件。

设备100可以是具有无线通信功能的手持设备、车载设备、可穿戴设备、电视设备、计算设备或连接到无线调制解调器的其它处理设备等等。

gpu可以提供界面元素的渲染功能,通过渲染可以实现对界面上的界面元素进行排版。例如,浏览器运行时所呈现的界面效果、操作系统运行时所呈现的桌面效果、应用客户端呈现在操作系统桌面上的某个显示区域的效果均是gpu对待显示的数据的渲染结果。在硬件层面,cpu101与gpu102连接。操作系统运行在cpu上,应用通过操作系统提供的接口将需要渲染的数据发给gpu;gpu对需要渲染的数据进行渲染,并将渲染后的结果存储,例如,可以存储在gpu的显示存储器(vram,videoram)中。

本申请中,可以通过渲染服务调用gpu102来实现gpu的渲染功能。在某些例子中,渲染服务可以是属于应用本身所提供的模块,在某些例子中,渲染服务也可以是操作系统或第三方以插件等形式所提供的模块。在渲染时,渲染服务可以在vram中生成绘图层,绘制层是绘图的介质,在绘图层上绘制界面元素。通过操作系统中提供显示功能的显示服务获取绘图层的绘制结果进行呈现。

在界面上播放多媒体数据流的一种方案是,在渲染界面的界面元素时,在一个绘图层设置透明区域,可以通过多媒体数据播放服务在另一个绘图层设置多媒体数据的播放窗口,并通过多媒体数据服务将即将播放的每帧多媒 体数据绘制在播放窗口位置。在一个例子中,播放窗口的位置与透明区域的位置可以重叠(本申请中,重叠是指二者完全重合或基本重合)。

本申请中所指的界面不局限于应用的界面、操作系统的桌面等。多媒体数据可以是视频数据、3d动画、游戏数据等。

本申请可以控制多媒体数据流的播放时机和绘制透明区域、播放窗口的时机,可以避免“花屏”现象。

图2为本申请一个实施例中渲染方法的流程图。

s201,判断是否已解析完多媒体数据流的至少一帧图像;

s202,如果已解析完多媒体数据流的至少一帧图像,则绘制界面上的透明区域,并指示进行多媒体数据流的播放窗口和多媒体数据流的至少一帧图像的绘制。

作为例子,图2的流程可以由渲染服务执行。

多媒体数据流在被显示前需要被解析成可以显示的一帧一帧的图像帧。实现此过程的解码服务可以是位于多媒体数据播放服务中的解码器,也可以位于操作系统中,或通过第三方服务实现。

在某些场景下,s201阶段中至少一帧图像是可以指首帧图像;在另一些场景下,至少一帧图像可以包括多帧已解析的图像,例如,可以是三帧、五帧等数量的图像,至少一帧图像中所包含的帧数可以根据具体的应用场合有所不同。本申请中首帧图像是指即将在播放窗口中播放的第一帧图像,该第一帧图像可以是多媒体数据流的首帧图像帧;但并不排除在用户的不同播放需求下,需要优先播放其他非第一帧图像帧时,将其他图像帧作为即将播放的第一帧图像的可能。

与现有技术不同,本申请中绘制透明区域和播放窗口的时机是需要先确保已经解析完首帧图像,而现有技术并不考虑是否已经解码好首帧数据,在渲染服务计算好透明区域大小后就开始设置透明区域。

当已经解析完至少一帧图像后,渲染服务可以在绘制完透明区域后再指示解码服务绘制播放窗口;也可以在获知已解析完至少一帧图像后便通知解 码服务绘制播放窗口。解码服务在收到指示后,可以立刻开始绘制播放窗口;也可以在满足其他条件时开始绘制播放窗口。因此,容易理解,绘制透明窗口与绘制播放窗口可以在同一时间开始,也可以存在先后顺序。

获知是否已经解析完多媒体数据流的至少一帧图像的途径可以存在多种。例如,图2a所示,可以通过解码服务提供提醒服务,在解码服务解析完多媒体数据流的至少一帧图像后发送通知消息,渲染服务通过一个线程(本文称为第二线程)监听这个通知消息。另外,在渲染服务中设置预设标识来表示是否已解析完多媒体数据流的至少一帧图像的状态,渲染服务通过另一个线程(本文称第一线程)判断是否已解析完多媒体数据流的至少一帧图像。当预设标识的状态为初始状态时,表明尚未解析完多媒体数据流的至少一帧图像,当监听到通知消息时,修改该预设标识的状态,修改后的状态表示已解析完多媒体数据流的至少一帧图像。举例来说,可以将“1”表示解码服务已解析完至少一帧图像,“0”表示解码服务未解析完至少一帧图像。再或者用“true”“false”等值来区分不同的状态等。

图2b是另一种获知是否已经解析完多媒体数据流的至少一帧图像的方式。如图所示,渲染服务主动向解码服务发送请求,解码服务根据自己是否已经解析完至少一帧图像来给渲染服务返回请求响应,渲染服务可以根据请求响应来判断是否已解析完多媒体数据流的至少一帧图像。

如果在s201阶段的判断结果为已解析完多媒体数据流的至少一帧图像,则在s202阶段需要通知绘制透明区域和多媒体数据流的播放窗口。绘制过程本申请不作限制,例如,可以在渲染服务获知已解析完多媒体数据流的至少一帧图像后,分别通知gpu进程(gpu进程是当gpu被调用时在操作系统启动的进程)和多媒体数据播放服务,gpu进程通知渲染服务的绘图模块绘制透明区域;而多媒体数据播放服务通知相应的绘图模块绘制多媒体数据流的播放窗口和多媒体数据流的至少一帧图像。

如果在s201阶段的判断结果为未解析完多媒体数据流的至少一帧图像,则在执行s202阶段之前,可以通知渲染服务的绘图模块在所绘制的界面上 绘制预定内容的图像,内容可以根据设计者的需要制定,例如,与将要播放的视频数据相关的海报,或广告信息等。

为了配合渲染引擎的绘制过程,作为例子,本申请对解码装置做出了改进,提供了提醒服务,解码装置负责将多媒体数据流解析成一帧帧的图像,当解析完多媒体数据流的至少一帧图像后,可通过扩展接口发送通知消息,通知渲染服务已解析完多媒体数据流的至少一帧图像。

图3为根据图1所渲染的界面播放多媒体流数据的过程。此过程涉及多媒体数据流的解码、待显示的数据渲染、显示渲染结果几个阶段。

s301,当解析完多媒体数据流的至少一帧图像后,发送通知消息;

s302,当根据通知消息判断已解析完多媒体数据流的至少一帧图像时,绘制界面上的透明区域,以及多媒体数据流的播放窗口和所述多媒体数据流的至少一帧图像,透明区域和播放窗口重叠于不同的绘图层;

s303,在播放窗口显示所绘制的多媒体数据流的至少一帧图像。

s301阶段可以发生于多媒体数据流的解码阶段,可以由解码服务执行。s302阶段可以属于对待显示的数据渲染阶段。可以通过渲染服务判断是否已解析完多媒体数据流的至少一帧图像,并根据判断结果绘制界面上的透明区域,此过程可参考图2所描述的方式。渲染服务通知多媒体播放服务绘制播放窗口和至少一帧图像。对于s303,在绘制完成后播放窗口和透明区域后,可以通知显示服务来呈现渲染结果,同时通知显示服务获取已解析好的多媒体数据流的至少一帧图像在播放窗口的位置播放。

如果在渲染服务的判断结果为未解析完多媒体数据流的至少一帧图像,则在执行s302阶段之前,可以通知渲染服务的绘图模块在所绘制的界面上绘制预定内容的图像,内容可以根据设计者的需要制定,例如,与将要播放的视频数据相关的海报,或广告信息等。在绘制完成后通知显示服务显示渲染好的界面,此时在界面上呈现的是预定内容的图像而不是多媒体数据流。这样,使用户在未看到多媒体数据流之前,看到的是预定内容的图像而不是显示黑屏或白屏,增强用户体验。

图4a-图4c列举了几种播放多媒体数据流的应用场景,值得注意,本申请所适用的应用场景不局限于所列举的实例。

图4a描述了浏览器的界面播放多媒体数据流的场景。浏览器界面中的透明区域是在绘制浏览器的界面元素时,由浏览器的渲染服务所绘制;播放窗口是由多媒体数据播放服务在另一个绘图层绘制。由于透明区域和播放窗口重叠,因此用户看到的是播放窗口的呈现效果。浏览器的界面中其他区域显示有其他的界面元素(图中的文字块、图片块等)。

图4b中,在渲染iptv的操作系统的界面时,通过操作系统的渲染服务绘制透明区域,通过多媒体数据播放服务绘制播放窗口;播放窗口和透明区域布满整个界面区域。

图4c中,平板电脑的桌面上放置有游戏app,游戏app的播放窗口重叠于桌面上的透明区域。

对于其他可播放多媒体的设备的场景描述不再一一列举。

图5是本申请一个应用实例的流程图。以播放视频数据为例说明。本应用实例中以首帧图像被解析完后开始绘制透明窗口为例。

在s501阶段,解码服务对视频数据进行解码,具体过程为:从视频源获取视频数据包(s501a),然后将视频数据包解析成图像帧(s501b)。当解析出第一帧图像帧后,通过多媒体播放服务的扩展接口通知渲染服务(s501c)。发送通知消息可以按照以下命令:

messagetype:msg_info_ext

param1:306

“306”表示第一帧图像帧已经解析完成。

在s502阶段,渲染服务对界面进行渲染。具体过程为:当收到界面的业务数据(s502a)后,如果所收到的业务数据中包含视频控件,则查看预设标识的状态是否为初始状态(s502b),如果是初始状态,则认为目前首帧图像帧尚未被解析完成,则通知绘图模块在播放视频的位置绘制海报(s502c);如果不是初始状态,则认为已解析完成首帧图像帧,于是通知绘图模块绘制 透明区域,并通知多媒体播放服务绘制播放窗口和首帧图像(s502d)。在绘制完海报或者透明区域后,多媒体播放服务通知显示服务显示绘制结果(s502e)。

在显示阶段,显示服务对渲染结果和视频的图像帧进行显示。渲染服务在渲染结束后会通知显示服务显示渲染结果,另外,当多媒体播放服务在绘制好播放窗口后,也会通知显示服务显示播放窗口,并通知显示服务获取已解析的首帧图像帧在播放窗口播放。在还未开始播放视频图像帧时,显示服务获取包含海报的界面渲染结果来显示;在首帧图像帧已解析完成后,显示服务获取包含透明窗口的界面渲染结果,并叠加播放窗口来显示,显示时将每帧图像帧在播放窗口的位置显示出来。

与前述渲染方法和播放多媒体数据流的方法的实施例相对应,本申请还提供了渲染装置、播放多媒体数据流的装置、多媒体数据流的解码装置的实施例。

本申请所提供的装置的实施例可以应用在图1的设备100上,设备100的种类可参考上文描述。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备100的处理器将非易失性存储器中对应的可执行计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本申请播放多媒体数据的装置或界面渲染的装置或多媒体数据的解码装置所在设备100的一种硬件结构图,除了图6所示的处理器、内存、网络接口、以及非易失性存储器、显示存储器之外,实施例中装置所在的设备100通常根据该智能设备的实际功能,还可以包括其他硬件,例如gpu等对此不再赘述。

作为一种实施例,当设备100(本实施例中可将设备100称为播放多媒体数据流的设备)作为渲染装置、播放多媒体数据流的装置、多媒体数据流的解码装置的承载实体时,设备100的处理器可以被配置为执行以下操作:当解析完多媒体数据流的至少一帧图像后,发送通知消息;当根据所述通知消息判断已解析完多媒体数据流的至少一帧图像时,绘制界面上的透明区域, 以及绘制所述多媒体数据流的播放窗口和所述多媒体数据流的至少一帧图像,所述透明区域和所述播放窗口重叠于不同的绘图层;在所述播放窗口显示所绘制的多媒体数据流的至少一帧图像。

请参考图7,渲染装置700,包括:

检测模块701,用于判断是否已解析完多媒体数据流的至少一帧图像,并将判断结果通知绘制模块;

绘制模块702,用于在已解析完多媒体数据流的至少一帧图像时绘制界面上的透明区域;

通知模块703,用于在已解析完多媒体数据流的至少一帧图像时指示进行多媒体数据流的播放窗口和多媒体数据流的至少一帧图像的绘制,透明区域和所述播放窗口重叠于不同的绘图层。

至少一帧图像可以包括首帧图像。

检测模块701根据预设标识的状态判断是否已解析完多媒体数据流的至少一帧图像;所述装置还包括:

监听模块(图中未示出),用于在监听到通知消息后修改预设标识的状态;通知消息在解析完多媒体数据流的至少一帧图像后被发送。

绘制模块702还用于在未解析完多媒体数据流的至少一帧图像时在界面绘制预定内容的图像。

图8中多媒体数据流的解码装置800,包括:

解码模块801,用于将多媒体数据流解析成帧图像;

通知模块802,用于当解析完多媒体数据流的至少一帧图像后,发送通知消息,所述通知消息用于通知已解析完多媒体数据流的至少一帧图像。

至少一帧图像可以包括首帧图像。

解码装置800位于多媒体数据播放服务中。

图9中,播放多媒体数据流的装置900,包括:

解码装置901,用于当解析完多媒体数据流的至少一帧图像后,发送通知消息;

渲染装置902,用于当根据通知消息判断已解析完多媒体数据流的至少一帧图像时,绘制界面上的透明区域,并通知多媒体数据播放装置;

多媒体数据播放装置903,用于接收渲染装置的通知后绘制所述多媒体数据流的播放窗口和多媒体数据流的至少一帧图像,透明区域和播放窗口重叠于不同的绘图层;

显示装置904,用于在播放窗口显示所绘制的多媒体数据流的至少一帧图像。

至少一帧图像可以包括首帧图像。

渲染装置902根据通知消息判断已解析完多媒体数据流的至少一帧图像可以包括:

启动第二线程监听到通知消息后修改预设标识的状态;

启动第一线程根据预设标识的状态判断已解析完多媒体数据流的至少一帧图像。

解码装置901可以通过扩展接口发送所述通知消息。

渲染装置902还可以用于:

如果未解析完多媒体数据流的至少一帧图像,则在界面绘制预定内容的图像。

渲染装置902还可以用于当未解析完所述多媒体数据流的至少一帧图像时,通知显示装置在所述界面上显示所述预定内容的图像。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性 劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!