一种Android WifiDisplay中显示帧处理方法及系统转让专利

申请号 : CN201510345293.1

文献号 : CN104951270B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李险峰金宝宝严娇娇

申请人 : 北京大学深圳研究生院

摘要 :

本发明提供一种Android WifiDisplay中显示帧处理方法及系统,属于显示帧处理领域。本发明显示帧处理方法包括以下步骤:帧合成模块把显示帧放在远端显示帧缓冲队列中;远端显示处理线程读取显示帧,放入帧共享对象中,发送帧就绪消息给帧中转线程;帧中转线程收到帧就绪消息,从帧共享对象中读取显示帧,开始处理显示帧,然后发送给编码模块进行编码;编码模块对显示帧进行编码,编码之后的显示帧交给打包发送进程;打包发送进程进行打包,发送给远端显示设备。本发明通过改变远端显示处理线程与帧中转线程的交互方式,有效改善了源端设备与远端显示设备进行显示数据传输时出现的延时现象,改善了用户体验。

权利要求 :

1.一种Android WifiDisplay中显示帧处理方法,其特征在于包括以下步骤:S1:源端设备处理显示帧开始;

S2:帧合成模块把显示帧放在远端显示帧缓冲队列中;

S3:远端显示处理线程从远端显示帧缓冲队列中读取显示帧,放入帧共享对象中,并发送帧就绪消息给帧中转线程,其中,远端显示处理线程发送的帧就绪消息是以条件变量实现的, 远端显示处理线程和帧中转线程共享一条件变量, 远端显示处理线程读到新显示帧帧就置位该条件变量,帧中转线程随即被触发,并且复位该条件变量;

S4:帧中转线程收到帧就绪消息,从帧共享对象中读取显示帧,开始处理显示帧,帧中转线程处理完显示帧,发送给编码模块进行编码;

S5:编码模块对帧中转线程发送的显示帧进行编码,编码之后的显示帧交给打包发送进程;

S6:打包发送进程对编码之后的显示帧进行打包,然后通过无线连接发送给远端显示设备;

S7:源端设备处理显示帧结束。

2.根据权利要求1所述的Android WifiDisplay中显示帧处理方法,其特征在于:在步骤S3中,远端显示处理线程处理显示帧包括以下步骤:S31:远端显示处理线程从远端显示帧缓冲队列中读取显示帧;

S32:判断是否取得显示帧,如果是,执行步骤S33;如果否,执行步骤S31;

S33:远端显示处理线程将显示帧放入帧共享对象中;

S34:远端显示处理线程向帧中转线程发送帧就绪消息通知帧中转线程显示帧已经准备好,让其处理;

S35:发送帧就绪消息完毕,返回执行步骤S31。

3.根据权利要求2所述的Android WifiDisplay中显示帧处理方法,其特征在于:步骤S34中,远端显示处理线程发送帧就绪消息用于触发帧中转线程。

4.根据权利要求1所述的Android WifiDisplay中显示帧处理方法,其特征在于:在步骤S4中,帧中转线程处理显示帧包括以下步骤:S41:帧中转线程收到远端显示处理线程发送的帧就绪消息;

S42:帧中转线程开始显示帧的处理;

S43:帧中转线程处理完显示帧;

S44:判断在处理显示帧期间是否收到远端显示处理线程发送的帧就绪消息,如果是,返回执行步骤S41;如果否,执行步骤S45;

S45:等待远端显示处理线程发送帧就绪消息,收到帧就绪消息返回执行步骤S41。

5.根据权利要求4所述的Android WifiDisplay中显示帧处理方法,其特征在于:帧中转线程被远端显示处理线程发送的帧就绪消息触发之后立即开始显示帧的处理。

6.根据权利要求1所述的Android WifiDisplay中显示帧处理方法,其特征在于:所述帧共享对象是远端显示处理线程与帧中转线程共享。

7.实现权利要求1-6任一项所述方法的系统,其特征在于:包括帧合成模块,用于把显示帧放在远端显示帧缓冲队列中;

远端显示处理模块,用于从远端显示帧缓冲队列中读取显示帧,放入帧共享对象中,并发送帧就绪消息给帧中转模块;

帧中转模块,从帧共享对象中读取显示帧,开始处理显示帧,帧中转线程处理完显示帧,发送给编码模块进行编码;

编码模块,用于对帧中转模块发送的显示帧进行编码,编码之后的显示帧交给打包发送模块;

打包发送模块:用于对编码之后的显示帧进行打包,然后通过无线连接发送给远端显示设备。

8.根据权利要求7所述的Android WifiDisplay中显示帧处理系统,其特征在于:远端显示处理模块中,远端显示处理模块发送帧就绪消息用于触发帧中转模块。

9.根据权利要求7所述的Android WifiDisplay中显示帧处理系统,其特征在于:帧中转模块中,帧中转模块被远端显示处理模块发送的帧就绪消息触发之后立即开始显示帧的处理。

说明书 :

一种Android WifiDisplay中显示帧处理方法及系统

技术领域

[0001] 本发明涉及显示帧处理领域,尤其涉及一种Android WifiDisplay中显示帧处理方法及系统。

背景技术

[0002] 以智能手机和平板电脑为代表的智能终端设备的迅速普及,给人们的生活带来了极大的便利。消费者在享受智能终端设备多样化带来的良好体验的同时,也产生了在不同设备之间进行显示内容共享的需求。在不同的显示终端之间,通过WiFi网络,进行多媒体内容传输,以实现在不同平台设备上共享显示内容的多屏互动技术极大的满足了这一需求。
[0003] 在众多的多屏互动解决方案中,WifiDisplay(也称Miracast)是当前效果较好也是支持厂家较多的一种技术,它是WiFi联盟制定的一种点到点的显示内容分享协议,在不同设备之间建立和维持一个基于WiFi的连接,并且利用这个连接将源端设备的视频和音频发送到目标设备进行呈现。具体可以参考“Wi-Fi Display Technical Specification v1.1”(Wi-Fi Alliance,2012)。
[0004] Android系统从4.2版本开始支持WifiDisplay,本专利中称其为Android WifiDisplay。Android WifiDisplay在为基于Android操作系统的设备间的显示内容共享提供极大便利的同时,其存在的不足也是不容忽视的,尤其是源端设备与目标设备进行显示数据传输时,会出现较大的延时,从而显著影响用户的观看体验。而源端设备处理显示帧所花费的时间是引起这一延时的一大因素。
[0005] Android WifiDisplay源端设备的帧中转线程以时间T周期性的从帧共享对象中读取显示帧完成自己的处理,然后交给后续流程处理。由于远端显示处理线程从远端显示缓冲队列中读取显示帧的时间是不定的,而帧中转线程以固定周期T进行工作,所以在这种实现机制中,从远端显示处理线程读取显示帧放入帧共享对象中,到帧中转线程从帧共享对象中取走显示帧,需要0~T时长。在Android系统原有的实现中T为33.3毫秒,所以该过程最大需花费33.3ms,这会显著增加帧延时,影响用户体验。而如果简单的减小周期T则会占据过多的CPU时间,影响性能。

发明内容

[0006] 为解决现有技术中存在的问题,本发明提供一种Android WifiDisplay中显示帧处理方法及系统。
[0007] 本发明Android WifiDisplay中显示帧处理方法包括以下步骤:
[0008] S1:源端设备处理显示帧开始;
[0009] S2:帧合成模块把显示帧放在远端显示帧缓冲队列中;
[0010] S3:远端显示处理线程从远端显示帧缓冲队列中读取显示帧,放入帧共享对象中,并发送帧就绪消息给帧中转线程;
[0011] S4:帧中转线程收到帧就绪消息,从帧共享对象中读取显示帧,开始处理显示帧,帧中转线程处理完显示帧,发送给编码模块进行编码;
[0012] S5:编码模块对帧中转线程发送的显示帧进行编码,编码之后的显示帧交给打包发送进程;
[0013] S6:打包发送进程对编码之后的显示帧进行打包,然后通过无线连接发送给远端显示设备;
[0014] S7:源端设备处理显示帧结束。
[0015] 本发明作进一步改进,在步骤S3中,远端显示处理线程处理显示帧包括以下步骤:
[0016] S31:远端显示处理线程从远端显示帧缓冲队列中读取显示帧;
[0017] S32:判断是否取得显示帧,如果是,执行步骤S33;如果否,执行步骤S31;S33:远端显示处理线程将显示帧放入帧共享对象中;
[0018] S34:远端显示处理线程向帧中转线程发送帧就绪消息通知帧中转线程显示帧已经准备好,让其处理;
[0019] S35:发送帧就绪消息完毕,返回执行步骤S31。
[0020] 本发明作进一步改进,步骤S34中,远端显示处理线程发送帧就绪消息用于触发帧中转线程。
[0021] 本发明作进一步改进,在步骤S4中,帧中转线程处理显示帧包括以下步骤:
[0022] S41:帧中转线程收到远端显示处理线程发送的帧就绪消息;
[0023] S42:帧中转线程开始显示帧的处理;
[0024] S43:帧中转线程处理完显示帧;
[0025] S44:判断在处理显示帧期间是否收到远端显示处理线程发送的帧就绪消息,如果是,返回执行步骤S41;如果否,执行步骤S45;
[0026] S45:等待远端显示处理线程发送帧就绪消息,收到帧就绪消息返回执行步骤S41。
[0027] 本发明作进一步改进,帧中转线程被远端显示处理线程发送的帧就绪消息触发之后立即开始显示帧的处理。
[0028] 本发明作进一步改进,所述帧共享对象是远端显示处理线程与帧中转线程 共享。
[0029] 本发明作进一步改进,远端显示处理线程发送的帧就绪消息是以条件变量实现的,远端显示处理线程和帧中转线程共享一条件变量,远端显示处理线程读到新显示帧帧就置位该条件变量,帧中转线程随即被触发,并且复位该条件变量。
[0030] 本发明还提供了一种Android WifiDisplay中显示帧处理系统,包括帧合成模块,用于把显示帧放在远端显示帧缓冲队列中;远端显示处理模块,用于从远端显示帧缓冲队列中读取显示帧,放入帧共享对象中,并发送帧就绪消息给帧中转模块;帧中转模块,从帧共享对象中读取显示帧,开始处理显示帧,帧中转线程处理完显示帧,发送给编码模块进行编码;编码模块,用于对帧中转模块发送的显示帧进行编码,编码之后的显示帧交给打包发送模块;打包发送模块:用于对编码之后的显示帧进行打包,然后通过无线连接发送给远端显示设备。
[0031] 本发明做进一步改进,远端显示处理模块中,远端显示处理模块发送帧就绪消息用于触发帧中转模块。
[0032] 本发明做进一步改进,帧中转模块中,帧中转模块被远端显示处理模块发送的帧就绪消息触发之后立即开始显示帧的处理。
[0033] 与现有技术相比,本发明的有益效果是:通过改变远端显示处理线程与帧中转线程的交互方式,显著减少了远端显示处理线程准备好显示帧,而帧中转线程没有及时处理该显示帧所引入的延时,有效改善了源端设备与远端显示设备进行显示数据传输时出现的延时现象,改善了用户体验,提高了显示数据传输效率。

附图说明

[0034] 图1为本发明Android WifiDisplay中显示帧处理方法流程图;
[0035] 图2为本发明远端显示处理线程处理显示帧流程图;
[0036] 图3为本发明帧中转线程处理显示帧流程图;
[0037] 图4为本发明基于帧就绪消息的框图;
[0038] 图5为本发明帧就绪消息的具体实现框图。

具体实施方式

[0039] 下面结合附图和实施例对本发明做进一步详细说明。
[0040] 如图1所示,本发明的Android WifiDisplay中显示帧处理方法包括以下步骤:
[0041] S1:源端设备处理显示帧开始;
[0042] S2:帧合成模块把显示帧放在远端显示帧缓冲队列中;
[0043] S3:远端显示处理线程从远端显示帧缓冲队列中读取显示帧,放入帧共享对象中,并发送帧就绪消息给帧中转线程;
[0044] S4:帧中转线程收到帧就绪消息,从帧共享对象中读取显示帧,开始处理显示帧,帧中转线程处理完显示帧,发送给编码模块进行编码;
[0045] S5:编码模块对帧中转线程发送的显示帧进行编码,编码之后的显示帧交给打包发送进程;
[0046] S6:打包发送进程对编码之后的显示帧进行打包,然后通过无线连接,比如WIFI网络发送给远端显示设备;
[0047] S7:源端设备处理显示帧结束。
[0048] 至此完成源端设备对一帧显示帧的处理。为了更清楚的说明本发明中远端显示处理线程和帧中转线程的工作方式,下面将结合图2和图3分别对远端显示处理线程和帧中转线程的工作方式进行说明。
[0049] 如图2所示,本发明远端显示处理线程处理显示帧的详细工作流程包括以下步骤:
[0050] S31:远端显示处理线程从远端显示帧缓冲队列中读取显示帧;
[0051] S32:判断是否取得显示帧,如果是,执行步骤S33;如果否,执行步骤S31;
[0052] S33:远端显示处理线程将显示帧放入帧共享对象中;
[0053] S34:远端显示处理线程向帧中转线程发送帧就绪消息通知帧中转线程显示帧已经准备好,让其处理;
[0054] S35:发送帧就绪消息完毕,返回执行步骤S31。
[0055] 其中,在步骤S34中,远端显示处理线程发送帧就绪消息用于触发帧中转线程。需要说明的是在图2所示的流程中,步骤S34是非常重要的,该步骤向帧中转线程发送帧就绪消息,通知帧中转线程处理显示帧,这是保证在远端显示处理线程准备好显示帧之后帧中转线程及时对显示帧进行处理,从而减少处理一帧所需时间的关键。
[0056] 在远端显示处理线程向帧中转线程发送完帧就绪消息之后,帧的处理就交到了帧中转线程手里,如图3所示,帧中转线程处理显示帧的详细工作流程包括以下步骤:
[0057] S41:帧中转线程收到远端显示处理线程发送的帧就绪消息;
[0058] S42:帧中转线程开始显示帧的处理;
[0059] S43:帧中转线程处理完显示帧;
[0060] S44:判断在处理显示帧期间是否收到远端显示处理线程发送的帧就绪消息,如果是,返回执行步骤S41;如果否,执行步骤S45;
[0061] S45:等待远端显示处理线程发送帧就绪消息,收到帧就绪消息返回执行步骤S41。
[0062] 其中,帧中转线程被远端显示处理线程发送的帧就绪消息触发之后立即开始显示帧的处理。
[0063] 如图4和图5所示,帧共享对象是由远端显示处理线程与帧中转线程共享。远端显示处理线程发送的帧就绪消息是以条件变量实现的,远端显示处理线程和帧中转线程共享一条件变量,远端显示处理线程读到新显示帧帧就置位该条件变量,帧中转线程随即被触发,并且复位该条件变量。
[0064] 其中条件变量的取值及意义如表1所示:
[0065]条件变量值 意义
1 有视频帧
0 无视频帧
[0066] 表1
[0067] 条件变量的操作及结果如表2所示:
[0068]操作 条件变量值
置位 1
复位 0
[0069] 表2
[0070] 同时,本发明还提供了一种实现上述Android WifiDisplay中显示帧处理方法的系统,该系统属于源端设备,包括帧合成模块,用于把显示帧放在远端显示帧缓冲队列中;远端显示处理模块,用于从远端显示帧缓冲队列中读取显示帧,放入帧共享对象中,并发送帧就绪消息给帧中转模块;帧中转模块,从帧共享对象中读取显示帧,开始处理显示帧,帧中转线程处理完显示帧,发送给编码模块进行编码;编码模块,用于对帧中转模块发送的显示帧进行编码,编码之后的显示帧交给打包发送模块;打包发送模块:用于对编码之后的显示帧进行打包,然后通过无线连接,比如WIFI网络发送给远端显示设备。
[0071] 在远端显示处理模块中,远端显示处理模块发送帧就绪消息用于触发帧中转模块,在帧中转模块中,帧中转模块被远端显示处理模块发送的帧就绪消息触发之后立即开始显示帧的处理。
[0072] 以上所述之具体实施方式为本发明的较佳实施方式,并非以此限定本发明的具体实施范围,本发明的范围包括并不限于本具体实施方式,凡依照本发明所作的等效变化均在本发明的保护范围内。