一种动态调节丢帧阈值的方法及相关设备

文档序号:73234 发布日期:2021-10-01 浏览:15次 >En<

阅读说明:本技术 一种动态调节丢帧阈值的方法及相关设备 (Method for dynamically adjusting frame loss threshold and related equipment ) 是由 贾睿 于 2021-06-25 设计创作,主要内容包括:本申请公开了一种动态调节丢帧阈值的方法及相关设备。该方法包括:第二电子设备可以接收第一电子设备发送的视频帧,并记录接收该视频帧的时间;第二电子设备确定收帧时间差,该收帧时间差为接收该视频帧的时间与接收第M帧视频帧的时间的差值,该第M帧视频帧为第一电子设备在发送该视频帧之前发送的视频帧;若收帧时间差不小于丢帧阈值,第二电子设备可以调节丢帧阈值;另外,在调节丢帧阈值后,第二电子设备还可以进行阈值测试,即判断调节丢帧阈值后的解码时延及送显时延是否减小。上述方法不仅可以应对不同网络状况下及设备不同状态下的视频帧阻塞问题,还能及时反馈调节丢帧阈值的效果,保证当前的丢帧阈值可以有效解决视频帧阻塞的问题。(The application discloses a method for dynamically adjusting a frame loss threshold and related equipment. The method comprises the following steps: the second electronic equipment can receive the video frame sent by the first electronic equipment and record the time for receiving the video frame; the second electronic equipment determines a frame receiving time difference, wherein the frame receiving time difference is a difference value between the time of receiving the video frame and the time of receiving an Mth frame video frame, and the Mth frame video frame is a video frame sent by the first electronic equipment before the video frame is sent; if the frame receiving time difference is not less than the frame loss threshold, the second electronic device can adjust the frame loss threshold; in addition, after the frame loss threshold is adjusted, the second electronic device can also perform a threshold test, that is, whether the decoding delay and the display transmission delay after the frame loss threshold is adjusted are reduced or not is judged. The method not only can deal with the problem of video frame blockage under different network conditions and different states of equipment, but also can feed back and adjust the effect of the frame loss threshold value in time, and ensures that the current frame loss threshold value can effectively solve the problem of video frame blockage.)

一种动态调节丢帧阈值的方法及相关设备

技术领域

本申请涉及镜像投屏领域,尤其涉及一种动态调节丢帧阈值的方法及相关设备。

背景技术

随着互联网技术的不断发展,投屏技术得到了广泛应用,给人们的工作和生活带来了极大的便利。投屏分为镜像投屏和非镜像投屏两类,镜像投屏是指将一个设备的画面实时投放至另一个设备上进行显示,其在商务会议等场景下的作用尤其明显。

镜像投屏的过程中会有视频帧的传输,而视频帧的传输容易受网络影响,若网络状况不佳,需要接收视频帧的设备无法真正接收到视频帧,待后续网络恢复之后,该设备短时间内会接收大量视频帧,超出了该设备解码器的解码能力,使得大量视频帧积压在解码器内,解码器无法及时对这些视频帧进行解码,增大了投屏时延。

因此,如何在不同的网络状况及不同的设备状态下都能有效解决视频帧阻塞的问题是目前亟待解决的问题。

发明内容

本申请提供了一种动态调节丢帧阈值的方法,可以设定初始丢帧阈值,根据第二电子设备接收视频帧的时间差动态调节丢帧阈值,即根据接收视频帧的时间差判断当前网络状况并相应的调节丢帧阈值,然后进行丢帧操作,这样可以有效解决不同网络状况下的视频帧阻塞问题。另外,在丢帧完成后,判断调节丢帧阈值后的解码时延及送显时延是否减小,根据该判断结果确定是否需要再次调节丢帧阈值,使得丢帧阈值的效果可以及时得到反馈,保证当前的丢帧阈值可以有效解决视频帧阻塞的问题。

第一方面,本申请提供一种动态调节丢帧阈值的方法。该方法可以应用于第二电子设备。该方法可以包括:接收第一电子设备发送的视频帧;确定收帧时间差;收帧时间差为接收所述视频帧的时间与接收第M帧视频帧的时间的差值;第M帧视频帧为第一电子设备在发送所述视频帧之前发送的视频帧;在收帧时间差不小于丢帧阈值的情况下,若第一时长未达到预设时间,减小丢帧阈值;第一时长为上一次调整丢帧阈值到当前时刻的时长;丢帧阈值用于判断是否丢弃所述视频帧;或者,在收帧时间差不小于丢帧阈值的情况下,若第一时长达到预设时间,且丢帧阈值小于阈值上限,增大所述丢帧阈值;若第一时长达到预设时间,且所述丢帧阈值不小于所述阈值上限,减小所述丢帧阈值;所述阈值上限为所述丢帧阈值的最大值;记录在接收视频帧之后接收的N帧视频帧的解码时延和送显时延;解码时延为视频帧从到达解码器开始到完成解码的时间;送显时延为视频帧从完成解码开始到显示在显示屏上的时间;判断N是否等于预设帧数;若N等于预设帧数,判断调节后的丢帧阈值是否有效;若调节后的丢帧阈值无效,减小调节后的丢帧阈值,并停止阈值测试;阈值测试用于判断对丢帧阈值的调节是否有效。

在本申请提供的方案中,第二电子设备可以调节丢帧阈值以适应不同网络状况和设备状态下的视频帧阻塞问题。另外,在丢帧完成后,第二电子设备还可以进行阈值测试,即判断调节丢帧阈值后的解码时延及送显时延是否减小,根据该判断结果确定是否需要再次调节丢帧阈值,使得丢帧阈值的效果可以及时得到反馈,保证当前的丢帧阈值可以有效解决视频帧阻塞的问题。

结合第一方面,在第一方面的一种可能的实现方式中,所述视频帧为不用于阈值测试的视频帧。

在本申请提供的方案中,第二电子设备接收的第一电子设备发送的视频帧可以不用于阈值测试。此时,第二电子设备才可以根据接收视频帧的时间判断是否调整丢帧阈值,可以避免视频帧用于阈值测试时调整丢帧阈值而造成的阈值测试的不准确。

结合第一方面,在第一方面的一种可能的实现方式中,判断调节后的所述丢帧阈值是否有效,包括:确定当前全时间段内的平均解码时延和平均送显时延;当前全时间段为从接收第一个视频帧开始,到确定平均解码时延和平均送显时延为止的一段时间;若N帧视频帧的解码时延和送显时延,分别比平均解码时延和平均送显时延减少至少c%,确定调节后的丢帧阈值有效。

在本申请提供的方案中,第二电子设备可以根据当前全时间段内的平均解码时延和平均送显时延,以及调节丢帧阈值后接收的N帧视频帧的平均解码时延和平均送显时延,来判断调节后的丢帧阈值是否可以有效解决视频帧阻塞的问题,即是否可以降低解码时延和送显时延。

结合第一方面,在第一方面的一种可能的实现方式中,第二电子设备可以在收帧时间差小于丢帧阈值的情况下,丢弃所述视频帧。

在本申请提供的方案中,在收帧时间差小于丢帧阈值的情况下,第二电子设备判断在短时间内接收到了大量视频帧,因此可以直接丢弃刚刚接收到的视频帧。这样可以减少等待解码的时间,从而解决视频帧阻塞的问题。

结合第一方面,在第一方面的一种可能的实现方式中,第二电子设备接收第一电子设备发送的视频帧之后,还可以记录接收所述视频帧的时间,并对丢帧阈值进行初始化处理。可理解,第二电子设备记录接收所述视频帧的时间,与对丢帧阈值进行初始化处理的先后顺序不限定。

在本申请提供的方案中,第二电子设备可以记录接收所述视频帧的时间,以便后续计算收帧时间差。

结合第一方面,在第一方面的一种可能的实现方式中,所述记录接收视频帧的时间之后,第二电子设备还可以将接收所述视频帧的时间存储在第一队列中;第一队列中存储有第二电子设备接收第M帧视频帧的时间。

在本申请提供的方案中,可以设置一个队列存储第二电子设备接收视频帧的时间,便于对第二电子设备接收视频帧的时间进行处理。

结合第一方面,在第一方面的一种可能的实现方式中,所述记录在接收所述视频帧之后接收的N帧视频帧的解码时延和送显时延之前,第二电子设备还可以去除所述第一队列中最先写入的元素,并将接收所述视频帧的时间写入所述第一队列。

在本申请提供的方案中,第二电子设备可以及时调整第一队列,便于下一次计算收帧时间差。

第二方面,本申请提供一种电子设备,该电子设备可以包括显示屏、存储器、一个或多个处理器,其特征在于,所述存储器用于存储计算机程序;所述处理器用于调用所述计算机程序,使得所述电子设备执行:接收第一电子设备发送的视频帧;确定收帧时间差;收帧时间差为接收所述视频帧的时间与接收第M帧视频帧的时间的差值;第M帧视频帧为第一电子设备在发送所述视频帧之前发送的视频帧;在收帧时间差不小于丢帧阈值的情况下,若第一时长未达到预设时间,减小丢帧阈值;第一时长为上一次调整丢帧阈值到当前时刻的时长;丢帧阈值用于判断是否丢弃所述视频帧;或者,在收帧时间差不小于丢帧阈值的情况下,若第一时长达到预设时间,且丢帧阈值小于阈值上限,增大所述丢帧阈值;若第一时长达到预设时间,且所述丢帧阈值不小于所述阈值上限,减小所述丢帧阈值;所述阈值上限为所述丢帧阈值的最大值;记录在接收视频帧之后接收的N帧视频帧的解码时延和送显时延;解码时延为视频帧从到达解码器开始到完成解码的时间;送显时延为视频帧从完成解码开始到显示在显示屏上的时间;判断N是否等于预设帧数;若N等于预设帧数,判断调节后的丢帧阈值是否有效;若调节后的丢帧阈值无效,减小调节后的丢帧阈值,并停止阈值测试;阈值测试用于判断对丢帧阈值的调节是否有效。

结合第二方面,在第二方面的一种可能的实现方式中,所述视频帧为不用于阈值测试的视频帧。

结合第二方面,在第二方面的一种可能的实现方式中,所述处理器用于调用所述计算机程序,使得所述电子设备执行判断调节后的所述丢帧阈值是否有效时,具体用于调用所述计算机程序,使得所述电子设备执行:确定当前全时间段内的平均解码时延和平均送显时延;当前全时间段为从接收第一个视频帧开始,到确定平均解码时延和平均送显时延为止的一段时间;若N帧视频帧的解码时延和送显时延,分别比平均解码时延和平均送显时延减少至少c%,确定调节后的丢帧阈值有效。

结合第二方面,在第二方面的一种可能的实现方式中,所述处理器,还可以用于在收帧时间差小于丢帧阈值的情况下,丢弃所述视频帧。

结合第二方面,在第二方面的一种可能的实现方式中,所述处理器,在用于调用所述计算机程序,使得所述电子设备执行接收第一电子设备发送的视频帧之后,还可以用于调用所述计算机程序,使得所述电子设备执行:记录接收视频帧的时间;对丢帧阈值进行初始化处理。

结合第二方面,在第二方面的一种可能的实现方式中,所述处理器,在用于调用所述计算机程序,使得所述电子设备执行记录接收所述视频帧的时间之后,还可以用于调用所述计算机程序,使得所述电子设备执行:将接收视频帧的时间存储在第一队列中;第一队列中存储有第二电子设备接收第M帧视频帧的时间。

结合第二方面,在第二方面的一种可能的实现方式中,所述处理器,在用于调用所述计算机程序,使得所述电子设备执行记录在接收所述视频帧之后接收的N帧视频帧的解码时延和送显时延之前,还可以用于调用所述计算机程序,使得所述电子设备执行:去除第一队列中最先写入的元素,将接收视频帧的时间写入第一队列。

第三方面,本申请提供一种计算机存储介质,包括指令,当上述指令在电子设备上运行时,使得上述电子设备执行上述第一方面中任一种可能的实现方式。

第四方面,本申请实施例提供一种芯片,该芯片应用于电子设备,该芯片包括一个或多个处理器,该处理器用于调用计算机指令以使得该电子设备执行上述第一方面中任一种可能的实现方式。

第五方面,本申请实施例提供一种包含指令的计算机程序产品,当上述计算机程序产品在设备上运行时,使得上述电子设备执行上述第一方面中任一种可能的实现方式。

可以理解地,上述第二方面提供的电子设备、第三方面提供的计算机存储介质、第四方面提供的芯片、第五方面提供的计算机程序产品均用于执行本申请实施例所提供的方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。

附图说明

图1为本申请实施例提供的一种镜像投屏的示意图;

图2为本申请实施例提供的一种镜像投屏的流程示意图;

图3A为本申请实施例提供的一种网络状况良好时的解码示意图;

图3B为本申请实施例提供的一种网络状况不佳时的解码示意图;

图3C为本申请实施例提供的一种丢帧后的解码示意图;

图4为本申请实施例提供的一种动态调节丢帧阈值的方法的流程图;

图5为本申请实施例提供的又一种动态调节丢帧阈值的方法的流程图;

图6为本申请实施例提供的一种调节丢帧阈值的流程图;

图7A为本申请实施例提供的一种调节丢帧阈值的示意图;

图7B为本申请实施例提供的又一种调节丢帧阈值的示意图;

图7C为本申请实施例提供的又一种调节丢帧阈值的示意图;

图8为本申请实施例提供的一种音视频同步的流程示意图;

图9为本申请实施例提供的又一种动态调节丢帧阈值的方法的流程图;

图10是本发明实施例提供的一种电子设备100的硬件结构示意图;

图11是本发明实施例提供的一种电子设备100的软件结构示意图。

具体实施方式

下面结合附图对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

首先,对本申请中所涉及的部分用语和相关技术进行解释说明,以便于本领域技术人员理解。

应用程序(Application,APP),一般指手机软件,主要指安装在智能手机上的软件,完善原始系统的不足与个性化。使手机完善其功能,为用户提供更丰富的使用体验的主要手段。手机软件的运行需要有相应的手机系统,截至2017年6月1日,主要的手机系统:苹果公司的iOS、谷歌公司的Android(安卓)系统、塞班平台和微软平台。

Window类代表着一个视图的顶层窗口,它管理着这个视图中最顶层的View,提供了一些背景、标题栏、默认按键等标准的UI处理策略。同时,它拥有唯一一个用以绘制自己的内容的Surface,当app通过WindowManager创建一个Window时,WindowManager会为每一个Window创建一个Surface,并把该Surface传递给app以便应用在上面绘制内容。简单来说,可以认为Window与Surface之前存在着一对一的关系。

窗口管理服务(WindowManagerService,WMS)是一个系统级服务,由SystemService启动,实现了IWindowManager.AIDL接口。

WindowManager会控制窗口对象,它们是用于容纳视图对象的容器。窗口对象始终由Surface对象提供支持。WindowManager会监督生命周期、输入和聚焦事件、屏幕方向、转换、动画、位置、变形、Z轴顺序以及窗口的许多其他方面。WindowManager会将所有窗口元数据发送到SurfaceFlinger,以便SurfaceFlinger可以使用这些数据在屏幕上合成Surface。

Surface通常表示由SurfaceFlinger消耗的缓冲区队列的生产方。当渲染到Surface上时,产生的结果将进入相关缓冲区,该缓冲区被传递给消耗方。简单来说,可以把Surface当做是一层视图,在Surface上绘制图像,来往其中的BufferQueue生产视图数据,进而交给其消耗方SurfaceFlinger来与其他视图层合成,最终显示到屏幕上。

SurfaceFlinger是Android的一个服务,其负责管理应用端的Surface,将所有的Surface复合。SurfaceFlinger是介于图形库和应用之间的一层,其作用是接受多个来源的图形显示数据,将他们合成,然后发送到显示设备。比如打开应用,常见的有三层显示,顶部的statusbar底部或者侧面的导航栏以及应用的界面,每个层是单独更新和渲染,这些界面都是由SurfaceFlinger合成一个刷新到硬件显示。在显示过程中使用到了bufferqueue,SurfaceFlinger作为consumer方,比如WindowManager管理的Surface作为生产方产生页面,交由SurfaceFlinger进行合成。

(Hardware Composer,HWC)用于确定通过可用硬件来合成缓冲区的最有效方法。作为HAL,其实现是特定于设备的,而且通常由显示设备硬件原始设备制造商(OEM)完成。

显示子系统(Display Sub System,DSS)是一个专门做图像合成的硬件,手机主屏的图像使用DSS合成。

VirtualDisplay指的是虚显,虚显是Android支持的多个屏幕中的一个(Android支持的屏幕有:主显,外显,和虚显)。VirtualDisplay的使用场景很多,比如录屏,WFD显示等。其作用就是抓取屏幕上显示的内容。VirtualDisplay抓取屏幕内容,其实现方式有很多。在API中就提供了ImageReader进行读取VirtualDisplay里的内容。

MediaCodec可以用来获得安卓底层的多媒体编码,可以用来编码和解码,它是安卓low-level多媒体基础框架的重要组成部分。MediaCodec的作用是处理输入的数据生成输出数据。首先生成一个输入数据缓冲区,将数据填入缓冲区提供给codec,codec会采用异步的方式处理这些输入的数据,然后将填满输出缓冲区提供给消费者,消费者消费完后将缓冲区返还给codec。

传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。TCP旨在适应支持多网络应用的分层协议层次结构。连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。

网际互连协议是(Internet Protocol,IP)的缩写,是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。

包(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”。

实时传送协议(Real-time Transport Protocol,RTP/RTTP)是一个网络传输协议。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。它一开始被设计为一个多播协议,但后来被用在很多单播应用中。RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础。RTP协议和RTP控制协议RTCP一起使用,而且它是建立在用户数据报协议上的。

RTP本身并没有提供按时发送机制或其它服务质量(Quality of Service,QoS)保证,它依赖于低层服务去实现这一过程。RTP并不保证传送或防止无序传送,也不确定底层网络的可靠性。RTP实行有序传送,RTP中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置,例如:在视频解码中,就不需要顺序解码。

RTP标准定义了两个子协议,RTP和RTCP。

数据传输协议RTP,用于实时传输数据。该协议提供的信息包括:时间戳(用于同步)、序列号(用于丢包和重排序检测)、以及负载格式(用于说明数据的编码格式)。

控制协议RTCP,用于QoS反馈和同步媒体流,即RTCP用于监控服务质量并传送正在进行的会话参与者的相关信息。相对于RTP来说,RTCP所占的带宽非常小,通常只有5%。RTCP第二方面的功能对于“松散受控”会话是足够的,也就是说,在没有明确的成员控制和组织的情况下,它并不非得用来支持一个应用程序的所有控制通信请求。

在TCP节点之间的信息传递,每次传送的内容是结构体,所以每次在传送的时候,要将结构体中的数据进行封包,然后当一端接收到数据之后,要对接收到的buf参数中的数据进行解包。

每秒渲染帧数(Frames Per Second,FPS)是图像领域中的定义,是指芯片每秒可以或实际渲染的帧数,通俗来讲就是指视觉上动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数越多,所显示的动作就会越流畅。通常,要避免动作不流畅的最低是30。某些计算机视频格式,每秒只能提供15帧。

PTS(Presentation Time Stamp):即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧的数据。

垂直同步(Vertical synchronization,VSYNC)又称场同步,从CRT(Cathode RayTube)显示器的显示原理来看,单个像素组成了水平扫描线,水平扫描线在垂直方向的堆积形成了完整的画面。显示器的刷新率受显卡DAC(数模转换器,又称D/A转换器)控制,显卡DAC完成一帧的扫描后就会产生一个垂直同步信号。我们平时所说的打开垂直同步指的是将该信号送入显卡3D图形处理部分,从而让显卡在生成3D图形时受垂直同步信号的制约。

在日常生活中,镜像投屏给用户的工作和生活带来了极大的便利,例如,在会议场景下,用户可以通过镜像投屏将其电脑、手机等个人电子设备上的内容投射到大屏幕上,以便其他参会者观看,无需再对大屏幕进行相应的操作,大大提升了用户体验。

图1为本申请实施例提供的一种镜像投屏的示意图,该镜像投屏过程具体是将第一电子设备上显示的内容投屏到第二电子设备上显示。在第一电子设备的设置界面可以找到“无线投屏”选项,将“无线投屏”打开,当第一电子设备与其它设备(例如,第二电子设备)建立通信连接后即可进行镜像投屏。如图1所示,第一电子设备为手机,第二电子设备为智慧屏,当手机与智慧屏建立通信连接后,可以将手机上播放的视频镜像投屏到智慧屏上显示。可理解,若后续过程中因为一些用户操作导致手机界面(手机显示屏上显示的画面)发生变化,智慧屏上的界面也相应地变化。

可理解,第一电子设备可以为手机、平板电脑、PC等电子设备中的一个,第二电子设备可以为平板电脑、PC、智慧屏等电子设备中的一个。

另外,可以通过多种方式在第一电子设备与第二电子设备之间建立通信连接。可选的,可以利用无线通信技术在第一电子设备与第二电子设备之间建立通信连接,例如,通过无线保真(Wireless Fidelity,Wi-Fi)网络连接第一电子设备和第二电子设备;还可以利用有线通信技术在第一电子设备与第二电子设备之间建立通信连接,例如,利用同轴电缆、双绞线、光纤等介质连接第一电子设备与第二电子设备。

下面根据图2来介绍镜像投屏的具体过程。

图2为本申请实施例提供的一种镜像投屏的流程示意图,如图1所示,该镜像投屏过程是将第一电子设备上所显示的内容镜像投屏到第二电子设备上。

首先,在第一电子设备侧,需要进行两方面的操作:

一是显示画面。

具体地,第一电子设备上的APP通过WMS创建Window,并且会为每一个Window创建一个Surface,以及把相应的Surface传递给应用程序,以便应用程序将图形数据绘制到Surface上,也就是说,通过WMS来呈现图层。WMS为SurfaceFlinger提供缓冲区和窗口元数据(绘制好的Surface),而SurfaceFlinger可使用这些信息合成Surface,得到合成后的图像,再通过自身的显示系统(HWC/DSS)将合成的图像显示到第一电子设备的屏幕上,即用户能看到的第一电子设备上的图像。

二是将需要投屏的画面传输给第二电子设备。

具体地,SurfaceFlinger合成图像后,需要通过VirtualDisplay抓取屏幕内容来进行虚拟显示,可理解,抓取的屏幕内容可以为音视频数据,例如H.264数据、H.265数据、VP9数据、AV1数据、AAC数据等。然后通过编码器(例如,MediaCodec等)对抓取的音视频数据进行编码,再进行加密(Encryption)和多层封包,例如,进行RTP封包以及VTP/TCP封包,最后将封包后得到的数据包发送给第二电子设备。

可理解,可以通过无线通信方式(例如,WiFi)将数据包发送给第二电子设备,还可以通过有线通信方式将数据包发送给第二电子设备。

需要说明的是,第一电子设备向第二电子设备发送的数据包中包括音频数据或视频数据,即音频数据和视频数据是独立传输的,其中,音频数据可以包括音频帧,视频数据可以包括视频帧。因此,第一电子设备向第二电子设备发送数据包的过程即为第一电子设备向第二电子设备发送视频帧和音频帧的过程。

其次,第二电子设备侧也需要进行相关操作,才能成功投屏。

具体地,第二电子设备接收第一电子设备发送的数据包后,进行相应的拆包(RTP拆包和VTP/TCP拆包)操作、解密操作以及解码(MediaCodec解码)操作,然后将得到的音频数据和视频数据进行同步,再进行MediaCodec送显,最后由SurfaceFlinger进行图层合成并显示在第二电子设备的屏幕上。

需要说明的是,相应的,第二电子设备接收第一电子设备发送的数据包的过程即为第二电子设备接收第一电子设备发送的视频帧和音频帧。

可理解,数据包的传输是镜像投屏的重要一环,第一电子设备能否将数据包顺利且及时地发送给第二电子设备,直接影响了投屏效果。由于音频数据的传输比较稳定(在网络状况不佳的情况下也能较为稳定地传输),所以本申请主要考虑视频数据的传输问题,即视频帧的传输问题。

若出现网络状况不佳的情况,例如,网络出现波动或短暂网弱等,第二电子设备可能无法及时接收第一电子设备发送的视频帧,等网络恢复稳定状态后,第二电子设备短时间内会接收很多视频帧,由于解码器是串行解码,且解码需要的时间比拆包和解密需要的时间长,所以后面接收的视频帧只能等待前面接收的视频帧解码完成才能进行解码,可能出现视频帧阻塞的问题。

下面介绍在不同网络环境下第二电子设备处理视频帧的差异(图3A-图3C)。如图3A所示,网络状况良好时,第二电子设备以稳定速率接收视频帧A、B、C、D(接收视频帧的时间差较稳定),也会以稳定速率依次对接收的视频帧A、B、C、D进行解码,并且,解码时间与实际解码时间相等。其中,解码时间指的是第二电子设备真正开始对视频帧解码到完成解码所需的时间;实际解码时间指的是从第二电子设备接收到视频帧到解码完成的时间。例如,若第二电子设备从接收视频帧开始到完成对视频帧的解码所用的时间为30毫秒(ms),而从真正开始对视频帧进行解码到解码完成所需的时间为10ms,则解码时间为10ms,实际解码时间为30ms。解码完成之后,第二电子设备可以再以稳定速率将解码后的视频帧A、B、C、D与音频帧进行同步,并将同步后的视频帧送显,即将视频帧传送到显示屏上进行显示。一般的,在送显之后可以通过送显回调来查看视频帧的显示情况。如图3A所示,在网络状况良好的情况下,视频帧可以以稳定的速率显示在第二电子设备的显示屏上。

网络状况不佳时,视频帧无法及时传输至第二电子设备,而当网络恢复稳定时,第二电子设备很可能短时间内接收多个视频帧,从而无法及时对其进行解码,也就是说,当前的视频帧还未完成解码时,下一个视频帧已经被第二电子设备接收,较晚接收的视频帧只能等待前一个视频帧完成解码后才能开始解码。

示例性的,如图3B所示,第二电子设备短时间内接收视频帧A、B、C,由于最先接收的是视频帧A,所以最先对视频帧A进行解码。然而,在对视频帧A进行解码的过程中,第二电子设备接收视频帧B,本来紧接着应该对视频帧B进行解码,但是由于对视频帧A的解码还未完成,所以视频帧B只能暂时等待。当视频帧A解码完成后,再对视频帧B进行解码。类似的,视频帧C也需要等待视频帧B解码完成后再进行解码。

在这种情况下,视频帧A、B、C的解码时间是一样的,但是实际解码时间却不相同。由于视频A是第二电子设备接收的第一帧,所以无需等待就可以进行解码,因此,视频帧A的解码时间和实际解码时间是一样的。然而,视频帧B需要等待视频帧A解码完成后才能开始解码,所以,视频帧B的实际解码时间要比视频帧A的实际解码时间长一些。类似的,视频帧C的实际解码时间中也包括等待解码的时间。换而言之,实际解码时间指电子设备从接收到视频帧到解码完成所需要的时间。

可理解,网络状况不佳时,会增加视频帧的送显时延(如图3B所示),使得视频帧无法及时显示在第二电子设备上。

可理解,等待解码的过程会增加解码时延,从而导致该视频帧延迟显示。整体上,镜像投屏的时延会增加。也就是说,第一电子设备上显示的画面可能与第二电子设备上显示的画面不同步。例如,当第一电子设备上显示的是视频的第5秒(s)时,第二电子设备上显示的是视频的第3s。从用户角度看,上述现象很影响用户体验。

为了解决上述问题,可以设置一个丢帧阈值,通过判断第二电子设备接收视频帧的时间差和丢帧阈值的关系,有选择地丢帧,从而减少视频帧等待解码的时间。例如,如图3C所示,当接收视频帧A和视频帧B的时间差小于既定阈值时,可以选择丢掉视频帧B。在这种情况下,视频帧也可以及时显示在第二电子设备的显示屏上。

上述方法可以改善视频帧阻塞情况,还存在进一步优化的空间。一方面,由于没有建立反馈机制,所以无法确定设置的丢帧阈值是否可以有效解决视频帧阻塞的问题,即无法量化丢帧带来的解码时延和送显时延的收益;另一方面,预先设置的丢帧阈值不一定能有效解决不同网络状况下及设备不同状态下的视频帧阻塞问题。

基于上述内容,本申请提供了一种动态调节丢帧阈值的方法及相关设备,可以设定初始丢帧阈值,根据第二电子设备接收视频帧的时间差动态调节丢帧阈值,即根据接收视频帧的时间差判断当前网络状况并相应的调节丢帧阈值,然后进行丢帧操作,这样可以有效解决不同网络状况下的视频帧阻塞问题。另外,在丢帧完成后,判断调节丢帧阈值后的解码时延及送显时延是否减小,根据该判断结果确定是否需要再次调节丢帧阈值,使得丢帧阈值的效果可以及时得到反馈,保证当前的丢帧阈值可以有效解决视频帧阻塞的问题。

可理解,在进行如图1所示的镜像投屏之前,用户需要触发镜像投屏。

示例性的,用户触发第一电子设备上的设置应用程序控件,响应于该用户操作,第一电子设备显示设置界面,该设置界面包括无线投屏控件。第一电子设备可以检测到作用于无线投屏控件上的用户操作,响应于该用户操作,第一电子设备可以显示无线投屏界面。该无线投屏界面上包括一个或多个控件,这些控件用于表示可以与第一电子设备进行镜像投屏的设备。第一电子设备可以检测到作用于第一控件的用户操作,响应于该用户操作,第一电子设备可以与第二电子设备进行镜像投屏。第一电子设备不仅在本设备的显示屏上显示画面,还将视频帧发送给第二电子设备,使得第二电子设备上也可以显示第一电子设备上显示的画面。

需要说明的是,第二电子设备需要经过一系列处理,才能将第一电子设备发送的视频帧显示在显示屏上。第二电子设备的处理过程可参考下面的实施例。

图4示例性示出了本申请实施例提供的一种动态调节丢帧阈值方法的流程图。

S401:接收视频帧。

第二电子设备接收第一电子设备发送的视频帧,将接收的视频帧记为A。在本申请的一个实施例中,由第二电子设备中的TCP/VTP模块接收第一电子设备发送的视频帧。

可理解,第一电子设备和第二电子设备之间传输视频帧的方式包括但不限于通过无线局域网(Wireless Local Area Networks,WLAN)等无线通信方式发送,例如,通过无线保真(Wireless Fidelity,Wi-Fi)网络发送,以及通过有线通信方式发送,例如,利用同轴电缆、双绞线、光纤等介质发送。

S402:判断是否需要执行丢帧操作。

第二电子设备确定接收的视频帧(A)的时间与之前接收的视频帧的接收时间的差值。当该差值小于丢帧阈值时,执行丢帧操作,即丢弃视频帧A。当该差值不小于丢帧阈值时,判断是否调节丢帧阈值。

可理解,判断是否进行丢帧操作的过程,以及调节丢帧阈值的过程会在后续实施例中具体说明,在此先不展开说明。

S403:解码及送显。

若不丢弃接收的视频帧,将该视频帧传输到解码器进行解码,待解码完成后再送显,使得该视频帧显示到第二电子设备的显示屏上。

图5示例性示出了本申请实施例提供的又一种动态调节丢帧阈值方法的流程图。

S501:接收视频帧。

具体地,第二电子设备接收第一电子设备发送的视频帧。在本申请的一个实施例中,由第二电子设备中的TCP/VTP模块接收第一电子设备发送的视频帧。

可理解,第一电子设备和第二电子设备之间传输视频帧的方式包括但不限于通过无线局域网(Wireless Local Area Networks,WLAN)等无线通信方式发送,例如,通过无线保真(Wireless Fidelity,Wi-Fi)网络发送,以及通过有线通信方式发送,例如,利用同轴电缆、双绞线、光纤等介质发送。

S502:记录接收视频帧的时间。

具体地,第二电子设备可以记录视频帧到达的时间,即第二电子设备接收视频帧的时间。在本申请的一个实施例中,第二电子设备还可以给接收的视频帧设置编号,并将该编号和该视频帧到达的时间都记录下来。例如,第二电子设备接收第N帧视频帧的时间为T,第二电子设备根据编号N就可以查找到T为该编号所对应的视频帧的到达时间。

可理解,可以用数字或其他形式表示视频帧到达的时间,这里所说的视频帧到达的时间不一定为第二电子设备接收视频帧时的真实时间。

示例性的,第二电子设备记录接收某一帧视频帧的时间为20210511235643。

示例性的,可以将第二电子设备接收第一个视频帧的时间设置为第1ms,后续接收视频帧的时间以接收第一帧的时间为基准来计算。

在本申请的一个实施例中,第二电子设备还可以设置一个队列来存储视频帧到达的时间和/或视频帧的编号。即该队列元素表示的是第二电子设备接收视频帧的时间。可理解,可以将该队列记为第一队列。

可理解,所设置的队列可以是一种先进先出的线性表,它只允许在表的一端进行插入,而在另一端删除元素。队列元素是指队列中的数据元素或指数据元素使用队列数据结构进行有关操作。队列数据元素的数据类型可以采用已有数据类型或自定义的数据类型。例如,若将第二电子设备接收第一个视频帧的时间设置为第1ms,相应的队列元素可以为1。

另外,可以在设置队列时确定队列的长度,即确定队列能容纳的最多的元素个数,而当队列中的元素个数达到队列能容纳的上限(队列已满)时,需要将队列中最先写入的元素移出,才能将新的元素写入队列。

在本申请的一个实施例中,队列的长度为3,即队列中可容纳的元素的个数最多为3个,也就是说,这个队列最多可以包含三个视频帧的接收时间。

S503:初始化丢帧阈值。

具体地,第二电子设备初始化丢帧阈值,丢帧阈值用于判断视频帧是否被丢弃。

在本申请的一个实施例中,初始丢帧阈值可以设置为mThreshold。示例性的,mThreshold=1*VsyncDuration,VsyncDuration指的是在预设帧率下传输相邻两个视频帧所间隔的时间。例如,当预设帧率为60FPS时,传输相邻两个视频帧间隔的时间为1000/60=16.67ms。

可理解,预设帧率指的是第一电子设备向第二电子设备发送视频帧的速率,即第一电子设备每秒钟向第二电子设备发送视频帧的数量,在第一电子设备和第二电子设备建立通信连接时确定。

另外,可以设置丢帧阈值的调节范围,例如,设置丢帧阈值的调节范围为:1*VsyncDuration≤mThreshold≤2*VsyncDuration。

S504:判断队列是否已满。

具体地,若第二电子设备设置了一个队列来记录第二电子设备接收视频帧的时间(如步骤S502),第二电子设备还需要判断队列是否已满,即判断队列内容纳的元素个数是否达到上限。若队列已满,继续执行步骤S505,若队列未满,将记录下的视频帧的接收时间写入队列(步骤S507)。

换而言之,队列里面的数据是用于判断和调整丢帧阈值。在一些实施例中,当队列已满才开始调整丢帧阈值。在另一些实施例中,也可以在队列未满的情况下就根据已有时间调整丢帧阈值。

S505:判断平均帧率是否比最小帧率大。

具体地,将平均帧率和最小帧率进行比较。若平均帧率小于最小帧率,说明原始帧率较小或丢帧过多,为避免对投屏画面的连贯性造成影响,不丢弃接收的视频帧,直接将该接收的视频帧传送至解码器等待解码,并将队列中最先写入的元素移除,再将该视频帧的接收时间写入队列(步骤S507);若平均帧率不小于最小帧率,计算接收视频帧的时间与第二电子设备接收第M帧视频帧的时间的差值,将该差值记为a。

在本申请的一些实施例中,第M帧视频帧的时间可以为第一队列中最先写入的元素。

一般来说,帧率是指每秒钟刷新的图片的帧数,在这里可以将其理解为:将第一电子设备的视频帧镜像投屏到第二电子设备上时,第二电子设备的屏幕每秒钟刷新的视频帧的数量,因此,帧率指的是在第二电子设备屏幕上每秒钟显示的视频帧的数量。

上文提到的平均帧率指的是一段时间内帧率的平均数,这段时间不一定为1s。例如,平均帧率可以为第二电子设备在10s内接收第一电子设备发送的视频帧的平均速率。

在本申请的一个实施例中,平均帧率可以为从第二电子设备接收第一电子设备发送的第一帧视频帧开始,到第二电子设备接收第一电子设备发送的最新一帧视频帧为止的平均帧率。在本申请的又一个实施例中,平均帧率还可以为第二电子设备接收第一电子设备最近发送的N帧视频帧的平均帧率。

需要说明的是,若第二电子设备丢弃过第一电子设备发送的视频帧,在平均帧率的计算过程中可以不计算丢弃的视频帧。

另外,最小帧率是为了保证投屏画面的连贯性而设置的,因为当帧率过低时,投屏的画面不流畅,非常影响用户体验,所以根据实际需要可以预先设置最小帧率,在丢帧前判断平均帧率和最小帧率的关系,从而避免连续丢帧可能造成的帧率过低的问题。

需要说明的是,为了保证投屏到第二电子设备上的画面的连贯性,连续丢帧的数量不能过多,执行步骤S505后,还可以根据连续丢帧的数量判断能否进行丢帧操作,若连续丢帧的数量超过预设丢帧数时,不能进行丢帧操作,也不调整丢帧阈值,此时,直接将接收的视频帧传送至解码器等待解码,并将连续丢帧的数量清零,移除队列中最先写入的元素,然后将该视频帧的接收时间写入队列(步骤S507)。

示例性的,预设丢帧数可以为2,也就是说,当连续丢帧的数量超过2时,第二电子设备不能丢掉接收的视频帧,而是直接将该视频帧传送至解码器等待解码,并且将连续丢帧的数量清零。

可选的,还可以设置一个参数来表示丢帧操作的可行性,例如,设置参数Adiust来表示丢帧操作的可行性,即根据Adjust的值来判断是否可以执行丢帧操作及调节丢帧阈值(步骤S506),具体地,执行步骤S505后,查看Adjust的值,并根据Adjust的值判断是否可以进行丢帧操作,当Adjust=0时,表示此时不能调节丢帧阈值,以及不能进行丢帧操作,直接将视频帧传送至解码器等待解码,并将队列中最先写入的元素移除,再将该视频帧的接收时间写入队列(步骤S507);当Adjust=1时,可以执行后续步骤(如步骤S506),是否进行丢帧操作还需要在后续步骤(步骤S506)中进行具体判断。再如,设置当Adjust=false时,不能调节丢帧阈值,以及不能进行丢帧操作;当Adjust=true时,可以执行后续步骤(如步骤S506)。可理解,还可以有其他的判断方式,本申请对此不作限制。

S506:调节丢帧阈值。

具体地,判断a和丢帧阈值mThreshold的大小关系,并根据其大小关系来调节丢帧阈值,有如下2种情况:

l、a<mThreshold。

这种情况下,第二电子设备短时间内接收的视频帧的数量过多,直接丢掉接收的视频帧,然后统计连续丢帧的数量,并计算平均帧率。可理解,此处计算平均帧率时可以不将第二电子设备接收但丢弃的视频帧计算在内。若连续丢帧的数量超过预设丢帧数,不对接下来接收的一个视频帧执行丢帧操作,也不调节丢帧阈值,而是直接将该视频帧传送至解码器等待解码。

另外,当设置一个参数来表示丢帧操作的可行性时,可以在确定a<mThreshold并统计连续丢帧的数量之后更新该参数的值,例如,当设置参数Adjust来表示丢帧操作的可行性时,确定a<mThreshold并统计连续丢帧的数量之后,若连续丢帧的数量超过丢帧阈值,将Adjust的值更新为零,即Adjust=0,表示第二电子设备不能丢掉接下来接收的一个视频帧。

2、a≥mThreshold。

结合图6对a≥mThreshod情况下的丢帧阈值的调节进行具体说明:

S601:判断第二电子设备是否正在进行阈值测试。

首先对阈值测试进行简单说明。阈值测试指的是:在进行阈值调节之后,第二电子设备根据接下来接收的N个视频帧的解码时延和送显时延判断该调节是否有效,当该调节有效时,保持调节后的丢帧阈值,否则,再次调节阈值。

正在进行阈值测试说明当前还无法得知上次阈值调节是否有效,所以此时不会再次调节阈值以避免干扰对上次阈值调节的效果的判断。

因此,若第二电子设备正在进行阈值测试,直接将接收的视频帧传输至解码器等待解码,并移除队列中最先写入的元素,再将该视频帧的接收时间写入队列(如步骤S507);若第二电子设备并非正在进行阈值测试,继续执行步骤S602。

S602:判断是否在预设时间内未调整丢帧阈值。

若在预设时间内丢帧阈值未调整,可能是由于丢帧阈值太大,所以在预设时间内a总是满足a<mThreshold(情况1),可以考虑将阈值减小。若在预设时间内调节过丢帧阈值,继续执行步骤S603。

需要说明的是,预设时间可以根据实际需要进行设置,在本申请的一个实施例中,预设时间可以设置为1.5s。

S603:判断丢帧阈值是否小于阈值上限。

如步骤S503所示,可以对丢帧阈值设置调节范围,即对丢帧阈值设置调节的上限和/或下限,在本申请的一个实施例中,设定丢帧阈值的阈值下限为1*VsyncDuration,阈值上限为2*VsyncDuration。

若丢帧阈值不小于阈值上限,说明丢帧阈值已经达到可调节的上限(因为对丢帧阈值的调节不能超过调节范围),可以考虑减小丢帧阈值。若丢帧阈值小于阈值上限,可以考虑继续增大丢帧范围以缓解视频帧阻塞,即增大丢帧阈值(如步骤S604所示)。

需要说明的是,完成丢帧阈值的调节(以某个步长增大或减小)之后,可以理解为阈值测试就开始进行了。

S604:增加丢帧阈值。

调节丢帧阈值的具体方式可以为:以某个步长增加丢帧阈值,将该步长记为b,则调整后的丢帧阈值为:mThreshold=mThreshold+b。

可理解,可以根据实际情况设置b的值,示例性的,将b设置为0.1*VsyncDuration,此时,丢帧阈值为:mThreshold=mThreshold-0.1*VsyncDuration。需要注意的是,若已经设置丢帧阈值的调节范围(如步骤S503),那么只能在这个范围内调节丢帧阈值。

S605:减小丢帧阈值。

调节丢帧阈值的具体方式可以为:以某个步长减少丢帧阈值,将该步长记为b,则调整后的丢帧阈值为:mThreshold=mThreshold-b。

可理解,可以根据实际情况设置b的值,示例性的,将b设置为0.1*VsyncDuration,此时,丢帧阈值为:mThreshold=mThreshold-0.1*VsyncDuration。需要注意的是,若已经设置丢帧阈值的调节范围(如步骤S503),那么只能在这个范围内调节丢帧阈值。

示例性的,结合图7A-图7C,对丢帧阈值的调整进行说明。在步骤S503中,对丢帧阈值进行初始化处理,初始化处理后的丢帧阈值为mThreshold=1*VsyncDuration,如图7A所示,当a<mThreshold时,进行丢帧处理。当调节丢帧阈值的方式为以某个步长增加丢帧阈值(如图7B所示)时,若将步长设置为0.1*VsyncDuration,则更新后的丢帧阈值为mThreshold=1.1*VsyncDuration,如图7C所示,当a<mThreshold时,进行丢帧处理,即当a<1.1*VsyncDuration时,进行丢帧处理。可理解,如图7A-图7C所示,丢帧阈值可调节的上限为2*VsyncDuration,即mThreshold<2*VsyncDuration。

S507:调整队列。

具体地,若第二电子设备设置了一个队列来记录第二电子设备接收视频帧的时间(如步骤S502),在执行步骤S506之后,第二电子设备可以移除队列中最先写入的元素,将接收视频帧的时间(步骤S502中记录的视频帧的接收时间)写入该队列。

示例性的,队列为{1,5,10},即该队列存储的三个视频帧的接收时间分别为第1ms、第5ms和第10ms,其中,1是最先写入队列的元素,10是最后写入队列的元素,移除队列中最先写入的元素——1,将接收视频帧的时间写入该队列,若接收视频帧的时间为第16ms,则将16写入该队列,调整后的队列为{5,10,16}。

示例性的,队列为{3,4,5},即该队列存储的是第二电子设备接收的第3、4、5帧视频帧的编号。通过这些编号,第二电子设备可以查找到第二电子设备接收第3、4、5帧视频帧的接收时间。

示例性的,队列为{20210511235643,20210511235666,20210511235733},队列中存储的这三串数字表示的是第二电子设备接收的三帧视频帧的时间。

S508:解码。

具体地,第二电子设备中的解码器对接收的视频帧进行解码,并记录解码时延。可理解,解码时延指的是从视频帧被传送至解码器开始,到该视频帧解码完成的这一段时间。

S509:音视频同步处理及送显。

具体地,根据前面步骤中的丢帧情况,相应地调整音频帧,并判断是否将视频帧送显。

如图8所示,第二电子设备可以判断是否存在丢帧操作(步骤S801),如果在某一个将要同步的视频帧(接收的视频帧)之前接收的视频帧已经被丢弃,那么也需要丢弃与被丢弃的视频帧数量相同的音频帧(步骤S802),才能得到与该视频帧相对应的音频帧,否则会导致视频帧和音频帧不能一一对应,显示到第二电子设备的屏幕上时音画不同步。如果不存在丢帧操作,或者,已经丢弃相同数量的音频帧(步骤S802),需要计算所有已送显的视频帧的平均PTS间隔,将其记为c,然后预估下一个视频帧的送显时间(步骤S803),预估的视频帧PTS=前一个视频帧的实际PTS+c。可理解,前一个视频帧的实际PTS指的是前一个视频帧真正的送显时间。若预估的视频帧PTS与真实的送显时间不一样,当二者差值小于第一预设阈值时,将视频帧以预估的视频帧PTS送显,由于只有在VSYNC时间点将视频帧送显,视频帧才能显示,所以需要寻找距离送显时间点(预估的视频帧PTS)最近的VSYNC时间点(步骤S804)。找到相应的VSYNC时间点之后,判断该VSYNC时间点与音频帧送显时间点之间的差值是否小于第二预设阈值(步骤S805),若VSYNC时间点与音频帧送显时间点之间的差值不小于第二预设阈值,不将该视频帧送显(步骤S806),否则,将该视频帧送显(步骤S807),使得视频帧最终显示在第二电子设备的屏幕上。

可理解,第一预设阈值和第二预设阈值都可以根据实际需要进行设置,本申请对此不作限制。

需要说明的是,送显完成后,第二电子设备的上层应用会收到MediaCodec的送显完成的回调信息(如图2所示),更新解码时延和送显时延,并更新平均帧率。可理解,送显时延指的是视频帧解码完成到真正显示到第二电子设备屏幕上所需的时间。

S510:测试丢帧阈值是否有效。

若在上述步骤中对丢帧阈值进行了调节,第二电子设备需要进行阈值测试,来测试对丢帧阈值的调节是否为有效调节。具体地,第二电子设备监测后续接收的N个视频帧的解码时延和送显时延,若丢帧阈值调节之后第二电子设备接收的N个视频帧的解码时延和送显时延,分别比当前全时间段内的平均解码时延和平均送显时延减少至少c%,则判断上述步骤中对丢帧阈值的调节为有效调节,继续使用调节后的丢帧阈值;否则,判断丢帧阈值调整效果不佳,以某个步长减少丢帧阈值mThreshold,详细内容可参考步骤S506,在此不再赘述。

可理解,当前全时间段指的是从第二电子设备接收第一个视频帧开始,到计算平均解码时延和平均送显时延为止的一段时间。

需要说明的是,c可以根据实际需要进行调整,例如,c可以为10,在该条件下,若丢帧阈值调整后第二电子设备接收的N个视频帧的解码时延和送显时延,分别比当前全时间段的平均解码时延和平均送显时延减少至少10%,则判断对丢帧阈值的调节为有效调节。

图9示例性示出了本申请实施例提供的又一种动态调节丢帧阈值方法的流程图。

S901:接收视频帧。

第二电子设备接收第一电子设备发送的视频帧。在本申请的一个实施例中,由第二电子设备中的TCP/VTP模块接收第一电子设备发送的视频帧。

可理解,步骤S901的具体实现方式可参考步骤S501,在此不再赘述。

S902:记录接收视频帧的时间并初始化丢帧阈值。

第二电子设备接收第一电子设备发送的视频帧后,记录该视频帧的接收时间,并初始化丢帧阈值。可理解,步骤S902的具体实现方式可参考步骤S502和步骤S503,在此不再赘述。

S903:判断队列是否已满。

第二电子设备可以设置一个队列用于存储视频帧的接收时间,在将视频帧的接收时间写入队列之前,第二电子设备可以判断队列是否已满,具体判断过程可参考步骤S504,在此不再赘述。

S904:判断平均帧率是否比最小帧率大。

为了视频帧可以以合适的帧率显示在第二电子设备上,保证第二电子设备上显示的画面的连贯性,第二电子设备可以判断平均帧率是否比最小帧率大。可理解,步骤S904的具体实现方式可参考步骤S505,在此不再赘述。

S905:计算当前视频帧的到达时间与队列首元素的差值,将该差值记为a。

第二电子设备计算接收的当前视频帧的时间与队列中最先写入的元素的差值,将该差值记为a。

S906:判断是否可以调整丢帧阈值。

具体地,第二电子设备可以设置一个参数来表示调节丢帧阈值的可行性。例如,第二电子设备可以根据Adjust的值来判断是否可以调节丢帧阈值。当Adjust=0时,表示此时不能进行丢帧操作,直接将视频帧传送至解码器等待解码,并将队列中最先写入的元素移除,再将该视频帧的接收时间写入队列(如步骤S915);当Adjust=1时,可以执行后续步骤(如步骤S506),是否进行丢帧操作还需要在后续步骤(如步骤S907)中进行具体判断。

可理解,步骤S906的具体实现方式可参考步骤S505,在此不再赘述。

S907:判断a是否小于丢帧阈值。

第二电子设备可以判断a是否小于丢帧阈值。若a小于丢帧阈值,直接丢帧并统计连续丢帧的数量(如步骤S908);若a不小于丢帧阈值,判断是否正在进行阈值测试(如步骤S909)。

S908:直接丢帧并统计连续丢帧数。

可理解,步骤S908的具体实现方式可参考步骤S506,在此不再赘述。

S909:判断是否正在进行阈值测试。

第二电子设备可以判断是否正在进行阈值测试。若正在进行阈值测试,直接执行步骤S914;若不是正在进行阈值测试,继续执行步骤S910。

可理解,步骤S909的具体实现方式可参考步骤S601,在此不再赘述。

S910:判断是否在预设时间内未调整丢帧阈值。

第二电子设备可以判断是否在预设时间内未调整丢帧阈值。若第二电子设备在预设时间内调整了丢帧阈值,直接执行步骤S911;若第二电子设备在预设时间内没有调整丢帧阈值,继续执行步骤S913。

可理解,步骤S910的具体实现方式可参考步骤S602,在此不再赘述。

S911:判断丢帧阈值是否小于阈值上限。

第二电子设备可以判断丢帧阈值是否小于阈值上限。若丢帧阈值小于阈值上限,继续执行步骤S912;若丢帧阈值不小于阈值上限,执行步骤S913。

可理解,步骤S911的具体实现方式可参考步骤S603,在此不再赘述。

S912:将丢帧阈值增加一个步长并开始进行阈值测试。

可理解,步骤S912的具体实现方式可参考步骤S604,在此不再赘述。

S913:将丢帧阈值减小一个步长并开始进行阈值测试。

可理解,步骤S913的具体实现方式可参考步骤S605,在此不再赘述。

S914:移除队列首元素。

可理解,步骤S914的具体实现方式可参考步骤S507,在此不再赘述。

S915:将接收的视频帧的时间写入队列。

可理解,步骤S915的具体实现方式可参考步骤S507,在此不再赘述。

S916:解码并统计解码时延。

可理解,步骤S916的具体实现方式可参考步骤S508,在此不再赘述。

S917:音视频同步及送显。

可理解,步骤S917的具体实现方式可参考步骤S509,在此不再赘述。

S918:送显回调并更新解码时延、送显时延以及平均帧率。

第二电子设备可以通过送显回调来查看视频帧在第二电子设备上的显示情况,具体可参考步骤S509,在此不再赘述。

S919:判断是否正在进行阈值测试

可理解,步骤S919-步骤S923的具体内容可参考步骤S510,在此不再赘述。

S920:统计视频帧的解码时延和送显时延。

可理解,在调节丢帧阈值后,第二电子设备可以检测后续接收的视频帧的解码时延和送显时延。

S921:判断是否达到60帧视频帧。

可理解,第二电子设备可以在接收60帧视频帧后判断对丢帧阈值的调节是否为有效调节。因此,第二电子设备需要判断调节丢帧阈值之后,其接收的视频帧是否达到60帧。

S922:判断对丢帧阈值的调节是否为有效调节。

可理解,具体判断方法可参考步骤S510,在此不再赘述。

S923:将丢帧阈值减小一个步长。

可理解,步骤S923的具体实现方式可参考步骤S605,在此不再赘述。

下面介绍本申请实施例涉及的装置。

图10为本申请实施例提供的一种电子设备100的硬件结构示意图。

可理解,电子设备100可以执行图4、图5和图9所示的动态调节丢帧阈值的方法。可理解,上述第一电子设备和第二电子设备可以为电子设备100。

电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(Universal Serial Bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(Subscriber Identification Module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。

可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。

处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(Application Processor,AP),调制解调处理器,图形处理器(Graphics Processingunit,GPU),图像信号处理器(Image Signal Processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(Digital Signal Processor,DSP),基带处理器,和/或神经网络处理器(Neural-network Processing Unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。

在本申请的一个实施例中,第一电子设备可以为电子设备100,第一电子设备显示画面的具体过程为:由处理器110完成对多个屏幕图层的合成(WMS图层显示,以及SurfaceFlinger图层合成),然后送给显示模块194进行显示屏的显示(HWC/DSS显示,以及主屏幕送显)。此外,第一电子设备的处理器110还完成了对视频帧的编码和打包(VirtualDisplay虚拟显示,以及VTP/TCP封包),最终这些打包后的视频帧将会通过无线通信模块160发送给第二电子设备。

在本申请的又一个实施例中,第二电子设备,即接收视频帧的设备,可以为电子设备100。第二电子设备的无线通信模块160接收第一电子设备发来的视频帧数据。这些视频帧数据会由处理器110进行一系列反向拆包(VTP/TCP拆包,以及RTP拆包)和解码(MediaCodec解码)工作,即可得到真正可以用来显示的视频帧数据。这些视频帧数据也同样会经过送显(MediaCodec送显)以及图层合成(SurfaceFlinger图层合成),最终送到显示屏194进行显示(主屏幕送显)。

可理解,音频数据的处理流程与视频数据(视频帧)类似,在此不再赘述。

其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。

处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。

在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(Inter-Integrated Circuit,I2C)接口,集成电路内置音频(Inter-Integrated CircuitSound,I2S)接口,脉冲编码调制(Pulse Code Modulation,PCM)接口,通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)接口,移动产业处理器接口(Mobile Industry Processor Interface,MIPI),通用输入输出(General-PurposeInput/Output,GPIO)接口,用户标识模块(Subscriber Identity Module,SIM)接口,和/或通用串行总线(Universal Serial Bus,USB)接口等。

I2C接口是一种双向同步串行总线,包括一根串行数据线(Serial Data Line,SDA)和一根串行时钟线(Serial Clock Line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。

I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。

PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。

UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。

MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(Camera Serial Interface,CSI),显示屏串行接口(DisplaySerial Interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。

GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。

USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备100,例如AR设备等。

可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。

充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备100供电。

电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。

电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。

天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。

移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(Low Noise Amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。

调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。

无线通信模块160可以提供应用在电子设备100上的包括无线局域网(WirelessLocal Area Networks,WLAN)(如无线保真(Wireless Fidelity,Wi-Fi)网络),蓝牙(Bluetooth,BT),全球导航卫星系统(Global Navigation Satellite System,GNSS),调频(Frequency Modulation,FM),近距离无线通信技术(Near Field Communication,NFC),红外技术(Infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。

在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(Global System for Mobile Communications,GSM),通用分组无线服务(General Packet Radio Service,GPRS),码分多址接入(CodeDivision Multiple Access,CDMA),宽带码分多址(Wideband Code Division MultipleAccess,WCDMA),时分码分多址(Time-Division Code Division Multiple Access,TD-SCDMA),长期演进(Long Term Evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(Global Positioning System,GPS),全球导航卫星系统(Global Navigation Satellite System,GLONASS),北斗卫星导航系统(BeidouNavigation Satellite System,BDS),准天顶卫星系统(Quasi-Zenith SatelliteSystem,QZSS)和/或星基增强系统(Satellite Based Augmentation Systems,SBAS)。

在本申请的一个实施例中,第一电子设备与第二电子设备之间的通信可以通过无线通信模块760实现。可理解,第一电子设备与第二电子设备之间可以采取点对点的通信方式,或者,通过服务器进行通信。

电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。

显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(Liquid Crystal Display,LCD),有机发光二极管(Organic Light-EmittingDiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(Active-MatrixOrganic Light Emitting Diode的,AMOLED),柔性发光二极管(Flex Light-EmittingDiode,FLED),Mini LED,Micro LED,Micro-OLED,量子点发光二极管(Quantum Dot LightEmitting Diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。

电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现获取功能。

ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像或视频。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。

摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(Charge Coupled Device,CCD)或互补金属氧化物半导体(Complementary Metal-Oxide-Semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像或视频信号。ISP将数字图像或视频信号输出到DSP加工处理。DSP将数字图像或视频信号转换成标准的RGB,YUV等格式的图像或视频信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。例如,在一些实施例中,电子设备100可以利用N个摄像头193获取多个曝光系数的图像,进而,在视频后处理中,电子设备100可以根据多个曝光系数的图像,通过HDR技术合成HDR图像。

数字信号处理器用于处理数字信号,除了可以处理数字图像或视频信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。

视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(Moving Picture Experts Group,MPEG)1,MPEG2,MPEG3,MPEG4等。

NPU为神经网络(Neural-Network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。

外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。

内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像视频播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(Universal Flash Storage,UFS)等。

电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。

音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。

扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。

受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。

麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。

耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3。5mm的开放移动电子设备平台(Open Mobile Terminal Platform,OMTP)标准接口,美国蜂窝电信工业协会(Cellular Telecommunications Industry Association of the USA,CTIA)标准接口。

传感器模块180可以包括1个或多个传感器,这些传感器可以为相同类型或不同类型,可理解,图1所示的传感器模块180仅为一种示例性的划分方式,还可能有其他划分方式,本申请对此不作限制。

压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。

陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。

气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。

磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。

加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备100姿态,应用于横竖屏切换,计步器等应用。

距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。

接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。

环境光传感器180L用于感知环境光亮度。

指纹传感器180H用于获取指纹。电子设备100可以利用获取的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。

温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。

触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。

骨传导传感器180M可以获取振动信号。

按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。

马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。

指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。

SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。

图11为本申请实施例提供的一种电子设备100的软件结构示意图。

分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将系统分为四层,从上至下分别为应用程序层,应用程序框架层,运行时(Runtime)和系统库,以及内核层。

应用程序层可以包括一系列应用程序包。

如图11所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序(也可以称为应用)。

在本申请的一个实施例中,应用程序包还可以包括另一应用程序,用户可以在以触摸、点击、手势、语音等方式触发该应用程序后完成镜像投屏,在镜像投屏的过程中,电子设备100可以作为发送视频帧和音频帧的设备(例如,第一电子设备),也可以作为接收视频帧和音频帧的设备(例如,第二电子设备)。可理解,该应用程序的名称可以为“无线投屏”,本申请对此不作限制。

应用程序框架层为应用程序层的应用程序提供应用编程接口(ApplicationProgramming Interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。

如图11所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。

窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。

内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。

视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。

电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。

资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。

通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话界面形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。

运行时(Runtime)包括核心库和虚拟机。Runtime负责系统的调度和管理。

核心库包含两部分:一部分是编程语言(例如,java语言)需要调用的功能函数,另一部分是系统的核心库。

应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的编程文件(例如,java文件)执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。

系统库可以包括多个功能模块。例如:表面管理器(Surface Manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),二维图形引擎(例如:SGL)等。

表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了二维(2-Dimensional,2D)和三维(3-Dimensional,3D)图层的融合。

媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。

三维图形处理库用于实现3D图形绘图,图像渲染,合成,和图层处理等。

2D图形引擎是2D绘图的绘图引擎。

内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动,虚拟卡驱动。

下面结合镜像投屏场景,示例性说明电子设备100软件以及硬件的工作流程。

若电子设备100为镜像投屏过程中发送视频帧和音频帧的设备(例如,第一电子设备),当触摸传感器180K接收到触摸操作,相应的硬件中断被发给内核层。内核层将触摸操作加工成原始输入事件(包括触摸坐标,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。应用程序框架层从内核层获取原始输入事件,识别该输入事件所对应的控件。以该触摸操作是触摸单击操作,该单击操作所对应的控件为无线投屏图标的控件为例,无线投屏应用调用应用框架层的接口,启动无线投屏应用,进而调用内核层来启动驱动,从而通过无线通信模块160将视频帧和音频帧传输到另一设备(镜像投屏过程中接收视频帧和音频帧的设备,例如,第二电子设备)。

可理解,被投屏的设备(例如,第二电子设备)可以默认开启无线投屏应用,或者,在接收其他设备发送的镜像投屏请求时开启无线投屏应用。而第一电子设备在启动无线投屏应用时可以选择已经开启无线投屏应用的第二电子设备,所以当第一电子设备选择完毕并与第二电子设备建立通信连接后,就可以开始进行镜像投屏。

需要说明的是,可以通过图10中无线通信模块160所提供的无线通信技术在第一电子设备与第二电子设备之间建立通信连接。

若电子设备100为镜像投屏中接收视频帧和音频帧的设备(例如,第二电子设备),相应地,启动无线投屏应用,通过无线通信模块160接收视频帧和音频帧,并且调用内核层来启动显示驱动和音频驱动,将接收的视频帧通过显示屏194显示,将接收的音频帧通过扬声器170A播放。

在上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

应理解,本文中涉及的第一、第二、第三、第四以及各种数字编号仅为描述方便进行的区分,并不用来限制本申请的范围。

应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

还应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。

本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

41页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种利用第三方应用实现频道切换的方法及显示设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类