获取视频帧的方法、电子设备及可读存储介质与流程

文档序号:31449876发布日期:2022-09-07 12:59阅读:97来源:国知局
获取视频帧的方法、电子设备及可读存储介质与流程

1.本技术涉及终端技术领域,特别涉及一种获取视频帧的方法、电子设备及可读存储介质。


背景技术:

2.随着终端技术的快速发展,多屏协同技术得到广泛的应用。多屏协同是指在第一电子设备(如手机)与第二电子设备(如平板电脑)建立连接的基础上,第二电子设备的显示窗口内镜像显示第一电子设备的画面,用户可以在该显示窗口内进行操作以使得第一电子设备执行相应的功能,譬如,在该显示窗口内触发第一电子设备中的即时通讯应用,以使第一电子设备发起视频通话。
3.在多屏协同的场景下,当进行视频通话时,第一电子设备除了可以使用自身配置的相机采集视频帧之外,还可以切换至通过第二电子设备的相机采集视频帧。在此过程中,通常在发生打开相机打开事件后,加载虚拟相机业务进程,以通过虚拟相机业务进程实现切流。
4.然而,虚拟相机业务进程加载后需要占用一定的内存,从而导致可能存在浪费内存资源的问题。


技术实现要素:

5.本技术提供了一种获取视频帧的方法、电子设备及可读存储介质,可以解决相关技术中可能存在浪费内存资源的问题。所述技术方案如下:
6.第一方面,提供了一种获取视频帧的方法,应用于第一电子设备,所述第一电子设备与所述第二电子设备连接,所述方法包括:
7.若通过本地相机进程接收到所述第一电子设备中的第一应用的相机打开指令,则通过所述本地相机进程打开所述第一电子设备的相机;
8.在所述相机打开成功的情况下,通过所述本地相机进程确定是否已开启相机虚拟化业务,所述相机虚拟化业务是指通过所述第一应用进行视频通话时使用所述第二电子设备的相机采集视频帧;
9.若通过所述本地相机进程确定已开启所述相机虚拟化业务,则通过所述本地相机进程控制虚拟相机业务进程加载;
10.通过所述虚拟相机业务进程获取所述视频帧。
11.如此,由于虚拟相机业务进程加载需要占用一定的存储空间,所以,本技术实施例中只有在视频通话中且开启相机虚拟化业务的情况下才加载该虚拟相机业务进程,也即只有在使用的时候才会加载该虚拟相机业务进程,不使用时不加载,在非相机虚拟化业务场景中不会占用大量的内存,节省一定的内存空间,避免内存资源浪费问题。
12.作为本技术的一个示例,所述通过所述本地相机进程确定是否已开启相机虚拟化业务,包括:
13.通过所述本地相机进程扫描是否已开启所述相机虚拟化业务。
14.作为本技术的一个示例,所述第一电子设备包括虚拟相机业务感知模块,所述通过所述本地相机进程扫描是否已开启所述相机虚拟化业务,包括:
15.通过所述本地相机进程控制所述虚拟相机业务感知模块扫描目标状态属性的状态值,所述用于指示是否已开启所述相机虚拟化业务;
16.若通过所述虚拟相机业务感知模块扫描到所述目标状态属性为第一状态值,则确定已开启所述相机虚拟化业务,所述第一状态值用于指示已开启所述相机虚拟化业务。
17.如此,通过虚拟相机业务感知模块扫描目标状态属性的状态值,从而根据该状态值确定是否已开启相机虚拟化业务,实现了感知目的。
18.作为本技术的一个示例,所述若通过本地相机进程接收到所述第一电子设备中的第一应用的相机打开指令,则通过所述本地相机进程打开所述第一电子设备的相机之后,还包括:
19.若通过所述虚拟相机业务进程接收到相机虚拟化业务开启通知,则通过所述虚拟相机业务进程将所述目标状态属性更新为所述第一状态值。
20.如此,在相机虚拟化业务开启的情况下,通过虚拟相机业务进程更新目标状态属性的状态值,以便于虚拟相机业务感知模块通过扫描目标状态属性的状态值可以确定相机虚拟化业务已开启。
21.作为本技术的一个示例,所述通过所述本地相机进程控制虚拟相机业务进程加载,包括:
22.通过所述本地相机进程通知所述虚拟相机业务进程启动;
23.在所述虚拟相机业务进程启动后,控制所述本地相机进程与所述虚拟相机业务进程建立用于传输数据的绑定关系。
24.如此,通过建立该绑定关系,便于后续在切流后本地相机进程与虚拟相机业务进程能够进行数据交互。
25.作为本技术的一个示例,所述若通过本地相机进程接收到所述第一电子设备中的第一应用的相机打开指令,则通过所述本地相机进程打开所述第一电子设备的相机之后,还包括:
26.若通过协同服务进程接收到使能通知,则通过所述协同服务进程触发虚拟相机适配进程加载,所述协同服务进程在所述第一电子设备与所述第二电子设备连接后启动,所述使能通知用于指示在视频通话中预使用所述第二电子设备的相机采集视频帧,所述虚拟相机适配进程用于对所述协同服务进程与所述虚拟相机业务进程之间传输的数据进行转换处理;
27.在所述虚拟相机适配进程加载完成后,控制所述协同服务进程与所述虚拟相机适配进程建立用于传输数据的绑定关系。
28.如此,通过建立该绑定关系,便于后续在切流后协同服务进程与虚拟相机适配进程能够进行数据交互。
29.作为本技术的一个示例,所述若通过所述本地相机进程确定已开启相机虚拟化业务,则通过所述本地相机进程控制虚拟相机业务进程加载之后,还包括:
30.在所述虚拟相机业务进程加载完成后,控制所述虚拟相机业务进程扫描所述虚拟
相机适配进程的加载情况;
31.若通过所述虚拟相机业务进程扫描到所述虚拟相机适配进程已完成加载,则控制所述虚拟相机业务进程与所述虚拟相机适配进程建立用于传输数据的绑定关系。
32.如此,通过建立该绑定关系,便于后续在切流后虚拟相机业务进程与虚拟相机适配进程能够进行数据交互。
33.作为本技术的一个示例,所述若通过所述虚拟相机业务进程扫描到所述虚拟相机适配进程已完成加载,则控制所述虚拟相机业务进程与所述虚拟相机适配进程建立用于传输数据的绑定关系之后,还包括:
34.通过所述虚拟相机适配进程向所述协同服务进程发送使能成功通知,所述使能通过通知用于指示已建立起所述协同服务进程与所述虚拟相机业务进程之间传输数据的通道;
35.通过所述协同服务进程开始接收所述视频帧;
36.所述通过所述虚拟相机业务进程获取所述视频帧,包括:
37.通过所述虚拟相机业务进程,使用所述通道,从所述协同服务进程中获取所述视频帧。
38.如此,在建立起协同服务进程与虚拟相机业务进程之间传输数据的通道后,即可开始接收第二电子设备发送的视频帧,从而实现视频流的切换。
39.作为本技术的一个示例,所述方法还包括:
40.若通过所述本地相机进程接收到所述第一应用的相机关闭指令,则通过所述本地相机进程向所述虚拟相机业务进程发送所述相机关闭指令,所述相机关闭指令用于指示通过所述虚拟相机业务进程终止接收所述视频帧;
41.控制所述本地相机进程解除与所述虚拟相机业务进程之间的绑定关系。
42.如此,在不需要使用虚拟相机业务进程的情况下,将虚拟相机业务进程释放,使得它恢复至未加载状态,从而可以节省一定的内存空间。
43.作为本技术的一个示例,所述若通过所述本地相机进程接收到所述第一应用的相机关闭指令,则通过所述本地相机进程向所述虚拟相机业务进程发送所述相机关闭指令之后,还包括:
44.在通过所述虚拟相机业务进程终止接收所述视频帧的情况下,控制所述虚拟相机业务进程解除与所述虚拟相机适配进程之间的绑定关系;
45.通过所述虚拟相机适配进程向所述协同服务进程发送去使能指令,所述去使能指令用于指示所述协同服务进程解除与所述虚拟相机适配进程之间的绑定关系;
46.控制所述协同服务进程解除与所述虚拟相机适配进程之间的绑定关系。
47.如此,在不需要使用虚拟相机业务进程的情况下,将虚拟相机适配进程释放,使得它恢复至未加载状态,进一步节省内存资源。
48.第二方面,提供了一种获取视频帧的装置,所述获取视频帧的装置具有实现上述第一方面中获取视频帧的方法行为的功能。所述获取视频帧的装置包括处理器和存储器,所述存储器用于存储支持所述装置执行上述第一方面所提供的方法的程序,以及存储用于实现上述第一方面所述的方法所涉及的数据。所述处理器被配置为:
49.若通过本地相机进程接收到所述第一电子设备中的第一应用的相机打开指令,则
通过所述本地相机进程打开所述第一电子设备的相机;
50.在所述相机打开成功的情况下,通过所述本地相机进程确定是否已开启相机虚拟化业务,所述相机虚拟化业务是指通过所述第一应用进行视频通话时使用所述第二电子设备的相机采集视频帧;
51.若通过所述本地相机进程确定已开启所述相机虚拟化业务,则通过所述本地相机进程控制虚拟相机业务进程加载;
52.通过所述虚拟相机业务进程获取所述视频帧。
53.作为本技术的一个示例,所述处理器被配置为:
54.通过所述本地相机进程扫描是否已开启所述相机虚拟化业务。
55.作为本技术的一个示例,所述第一电子设备包括虚拟相机业务感知模块,所述处理器被配置为:
56.通过所述本地相机进程控制所述虚拟相机业务感知模块扫描目标状态属性的状态值,所述用于指示是否已开启所述相机虚拟化业务;
57.若通过所述虚拟相机业务感知模块扫描到所述目标状态属性为第一状态值,则确定已开启所述相机虚拟化业务,所述第一状态值用于指示已开启所述相机虚拟化业务。
58.作为本技术的一个示例,所述处理器还被配置为:
59.若通过所述虚拟相机业务进程接收到相机虚拟化业务开启通知,则通过所述虚拟相机业务进程将所述目标状态属性更新为所述第一状态值。
60.作为本技术的一个示例,所述处理器被配置为:
61.通过所述本地相机进程通知所述虚拟相机业务进程启动;
62.在所述虚拟相机业务进程启动后,控制所述本地相机进程与所述虚拟相机业务进程建立用于传输数据的绑定关系。
63.作为本技术的一个示例,所述处理器还被配置为:
64.若通过协同服务进程接收到使能通知,则通过所述协同服务进程触发虚拟相机适配进程加载,所述协同服务进程在所述第一电子设备与所述第二电子设备连接后启动,所述使能通知用于指示在视频通话中预使用所述第二电子设备的相机采集视频帧,所述虚拟相机适配进程用于对所述协同服务进程与所述虚拟相机业务进程之间传输的数据进行转换处理;
65.在所述虚拟相机适配进程加载完成后,控制所述协同服务进程与所述虚拟相机适配进程建立用于传输数据的绑定关系。
66.处理器被配置为,所述处理器还被配置为:
67.在所述虚拟相机业务进程加载完成后,控制所述虚拟相机业务进程扫描所述虚拟相机适配进程的加载情况;
68.若通过所述虚拟相机业务进程扫描到所述虚拟相机适配进程已完成加载,则控制所述虚拟相机业务进程与所述虚拟相机适配进程建立用于传输数据的绑定关系。
69.作为本技术的一个示例,所述处理器还被配置为:
70.通过所述虚拟相机适配进程向所述协同服务进程发送使能成功通知,所述使能通过通知用于指示已建立起所述协同服务进程与所述虚拟相机业务进程之间传输数据的通道;
71.通过所述协同服务进程开始接收所述视频帧;
72.所述通过所述虚拟相机业务进程获取所述视频帧,包括:
73.通过所述虚拟相机业务进程,使用所述通道,从所述协同服务进程中获取所述视频帧。
74.作为本技术的一个示例,所述处理器还被配置为:
75.若通过所述本地相机进程接收到所述第一应用的相机关闭指令,则通过所述本地相机进程向所述虚拟相机业务进程发送所述相机关闭指令,所述相机关闭指令用于指示通过所述虚拟相机业务进程终止接收所述视频帧;
76.控制所述本地相机进程解除与所述虚拟相机业务进程之间的绑定关系。
77.作为本技术的一个示例,所述处理器还被配置为:
78.在通过所述虚拟相机业务进程终止接收所述视频帧的情况下,控制所述虚拟相机业务进程解除与所述虚拟相机适配进程之间的绑定关系;
79.通过所述虚拟相机适配进程向所述协同服务进程发送去使能指令,所述去使能指令用于指示所述协同服务进程解除与所述虚拟相机适配进程之间的绑定关系;
80.控制所述协同服务进程解除与所述虚拟相机适配进程之间的绑定关系。
81.第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
82.第四方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
83.上述第二方面、第三方面和第四方面所获得的技术效果与上述第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
附图说明
84.图1是根据一示例性实施例示出的一种电子设备的内部模块示意图;
85.图2是根据一示例性实施例示出的一种协同场景下的界面示意图;
86.图3是根据一示例性实施例示出的一种电子设备的结构示意图;
87.图4是根据一示例性实施例示出的一种电子设备的软件架构示意图;
88.图5是根据一示例性实施例示出的一种平板电脑的界面示意图;
89.图6是根据一示例性实施例示出的一种手机的界面示意图;
90.图7是根据另一示例性实施例示出的一种平板电脑的界面示意图;
91.图8是根据另一示例性实施例示出的一种手机的界面示意图;
92.图9是根据一示例性实施例示出的一种平板电脑的示意图;
93.图10是根据一示例性实施例示出的一种协同场景下的界面示意图;
94.图11是根据另一示例性实施例示出的一种协同场景下的界面示意图;
95.图12是根据一示例性实施例示出的一种获取视频帧的方法流程示意图;
96.图13是根据一示例性实施例示出的一种虚拟相机适配进程的初始化示意图;
97.图14是根据一示例性实施例示出的一种协同服务进程与虚拟相机适配进程建立绑定关系的示意图;
98.图15是根据一示例性实施例示出的一种本地相机进程与虚拟相机业务进程之间
的交互流程示意图;
99.图16是根据一示例性实施例示出的一种虚拟相机业务进程与虚拟相机适配进程建立绑定关系的示意图;
100.图17是根据一示例性实施例示出的一种获取视频帧的方法流程示意图;
101.图18是根据另一示例性实施例示出的一种获取视频帧的方法流程示意图;
102.图19是根据另一示例性实施例示出的一种获取视频帧的方法流程示意图;
103.图20是根据一示例性实施例示出的一种获取视频帧的装置结构示意图。
具体实施方式
104.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术的实施方式作进一步地详细描述。
105.应当理解的是,本技术提及的“多个”是指两个或两个以上。在本技术的描述中,除非另有说明,“/”表示或的意思,比如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,比如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,为了便于清楚描述本技术的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
106.在本技术说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
107.在一种可能的家居场景中,第一用户在第一房间通过手机与第二用户进行视频通话,在此过程中,若第二用户想要看第三用户在做些什么,如果第三用户在第二房间内,需要第一用户手持手机从第一房间移动到第二房间,然后始终将镜头对着第三用户。如此以来,第一用户与第二用户在视频通话中聊天可能会影响到第三用户做事。
108.在一种可能的会议场景中,第一员工通过手机与其他地区分公司的第二员工进行视频通话,在此过程中,当第一员工想要向第二员工分享某个板报的内容时,需要第一员工手持手机并始终将镜头对准板报,如此,使得用户体验较差。
109.随着多屏协同技术的推广,在手机与平板电脑建立多屏协同的连接的情况下,手机在视频通话过程中可以借助平板电脑的摄像头来采集视频帧,以避免需要用户手持手机并始终将镜头对着目标进行拍摄。
110.在多屏协同的场景下,可以将手机在视频通话中通过平板电脑采集视频流称为相机虚拟化业务。目前,相机虚拟化业务的实现一般由协同服务进程和硬件抽象层的多个模块协作完成,请参考图1中的(a)图,该多个模块至少包括本地相机模块和虚拟相机业务模块。在相机虚拟化业务开启后,协同服务进程用于接收并缓存平板电脑的相机采集的视频流,虚拟相机业务模块用于从协同服务进程获取平板电脑的相机采集的视频流,并利用该
视频流替换掉本地相机模块从手机的相机获取的视频流,本地相机模块将替换后的视频流反馈给应用层。然而,由于本地相机模块和虚拟相机业务模块运行于同一个进程中,彼此有耦合依赖,所以,如果虚拟相机业务模块异常中断,就会引起本地相机模块出现异常。
111.为此,在一些实施例中,将本地相机模块和虚拟相机业务模块进行解耦,譬如请参考图1中的(b)图所示,将上述两个模块的功能分别通过单独的进程来执行,该两个进程分别是本地相机进程和虚拟相机业务进程,该两个进程之间通过虚拟相机接口层建立通信连接。其中,本地相机进程用于执行本地相机模块的功能,虚拟相机业务进程用于执行虚拟相机业务模块的功能,如此,将两个模块进行解耦,可以避免因虚拟相机业务模块异常中断引起本地相机模块异常的问题。
112.然而,只要检测到手机打开相机,即使不需要使用虚拟相机业务进程,手机也会加载虚拟相机业务进程,譬如当用户使用手机中的镜子应用时,手机会打开相机,此时手机就会加载虚拟相机业务进程。如此以来导致消耗一定的内存,从而浪费内存资源。
113.为此,本技术实施例提供了一种方法,该方法在确定需要使用虚拟相机业务进程时再加载虚拟相机业务进程,从而避免虚拟相机业务进程加载时机不当导致内存资源浪费的问题。
114.在对本技术实施例提供的方法进行详细介绍之前,先对本技术实施例涉及的执行主体进行介绍。本技术实施例提供的方法可以由电子设备执行。电子设备支持视频通话功能,譬如电子设备中安装有即时通讯应用,通过即时通讯应用可以实现视频通话。电子设备可以配置有一个或者多个摄像头,在视频通话过程中可以通过配置的摄像头采集视频帧。在一个实施例中,当电子设备包括的摄像头的数量是多个时,多个摄像头可以包括前置摄像头和后置摄像头,前置摄像头的数量可以是一个或者多个,后置摄像头的数量也可以是一个或者多个。
115.另外,电子设备具有多屏协同能力,能够与其他电子设备建立多屏协同的关系。作为示例而非限定,该电子设备可以包括但不限于手机、平板电脑、笔记本电脑、智能手表。在一个示例中,请参考图2,以电子设备是手机、其他电子设备是平板电脑为例,手机与平板电脑建立多屏协同的关系后,手机可以将显示画面投屏至平板电脑上,在视频通话过程中,手机可以通过平板电脑的摄像头采集视频流,并将视频流发送给与手机进行视频通话的对端设备。
116.图3是本技术实施例提供的一种电子设备的结构示意图。参见图3,电子设备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等。
117.可以理解的是,本技术实施例示意的结构并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部
件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
118.处理器110可以包括一个或多个处理单元,比如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
119.其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
120.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从该存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
121.在一些实施例中,处理器110可以包括一个或多个接口,如可以包括集成电路(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识进程(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。
122.电子设备100的无线通信功能可以通过天线1,天线2,移动通信进程150,无线通信进程160,调制解调处理器以及基带处理器等实现。
123.天线1和天线2用于发射和接收电磁波信号。
124.移动通信进程150可以提供应用在电子设备100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信进程150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信进程150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信进程150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。
125.调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170a,受话器170b等)输出声音信号,或通过显示屏194显示图像或视频。
126.无线通信进程160可以提供应用在电子设备100上的包括无线局域网(wireless local 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转为电磁波辐射出去。
127.在一些实施例中,电子设备100的天线1和移动通信进程150耦合,天线2和无线通信进程160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。
128.电子设备100可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。
129.isp用于处理摄像头193反馈的数据。比如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将电信号传递给isp处理,转化为肉眼可见的图像。isp还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp可以设置在摄像头193中。
130.摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv等格式的图像信号。在一些实施例中,电子设备100可以包括1个或n个摄像头193,n为大于1的整数。
131.数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。
132.视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,比如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg4等。
133.外部存储器接口120可以用于连接外部存储卡,比如micro sd卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。比如将音乐,视频等文件保存在外部存储卡中。
134.内部存储器121可以用于存储计算机可执行程序代码,计算机可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,来执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100在使用过程中所创建的数据(比如音频数据,电话本等)等。
135.接下来对电子设备100的软件系统予以说明。
136.电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本技术实施例以分层架构的安卓(android)系统为例,对电子设备100的软件系统进行示例性说明。
137.图4是本技术实施例提供的一种电子设备100的软件系统的框图。参见图4,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,android系统从上至下分为应用程序层,应用程序框架层,系统层、扩展层以及内核层。
138.应用程序层可以包括一系列应用程序包。如图4所示,应用程序包可以包括但不限
于即时通讯应用,多屏协同,相机、蓝牙、通话。即时通讯应用能够用于实现视频通话;多屏协同用于开启多屏协同的功能。
139.应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。如图4所示,应用程序框架层可以包括服务发现进程、协同助手进程、协同服务进程。
140.服务发现进程用于在蓝牙或nfc开启后监听用于指示进行多屏协同的连接指令,并在监听到该连接指令后通知协同助手进程。协同助手进程用于在接收到服务发现进程的通知后,通过与其他电子设备中的协同助手进程之间相互交换信息建立协同连接。为了便于描述,下文将与本端建立有多屏协同连接的其他电子设备称为协同电子设备。
141.作为本技术的一个示例,在视频通话的过程中,如果是在多屏协同的场景下,协同服务进程用于接收并缓存协同电子设备发送的视频流,并根据底层的请求为底层提供相应的相机虚拟化服务。
142.在一个示例中,协同服务进程中包括处理模块、通道配置模块、流量控制模块和能力采集模块。处理模块可以用于根据底层的需求对视频帧进行处理,譬如进行格式转换等处理;通道配置模块用于对传输通道进行配置;流量控制模块用于缓存视频流;能力采集模块用于采集本端电子设备和协同电子设备的相机能力,以便于根据采集的相机能力,将本端电子设备的相机(或称摄像头)与协同电子设备的相机进行匹配。譬如,在根据收集的相机能力确定本端电子设备和协同电子设备均包括前置摄像头和后置摄像头的情况下,将本端电子设备的前置摄像头与协同电子设备的前置摄像头对应,以及将本端电子设备的后置摄像头与协同电子设备的后置摄像头对应。
143.作为示例而非限定,系统层包括虚拟相机适配进程、多媒体平台等。其中,虚拟相机适配进程主要用于对协同服务进程与扩展层的虚拟相机业务进程之间传输的数据进行格式转换处理,可以理解为,虚拟相机适配进程是协同服务进程与虚拟相机业务进程之间数据传输的桥梁。示例性地,当协同服务进程需要将数据传输给虚拟相机业务进程时,协同服务进程先将数据发送给虚拟相机适配进程,由虚拟相机适配进程进行格式转换,以将数据转换成虚拟相机业务进程能够识别和处理的数据格式,然后将转换后的数据发送给虚拟相机业务进程。反之,当虚拟相机业务进程需要将数据传输给协同服务进程时,虚拟相机业务进程先将数据发送给虚拟相机适配进程,虚拟相机适配进程对数据进行格式转换,以将数据转换成协同服务进程能够识别和处理的数据格式,然后将转换后的数据发送给协同服务进程。如此,由于虚拟相机适配进程的存在,虚拟相机业务进程无需关注上层逻辑,协同服务进程也无需关注底层芯片的特性。
144.在一个示例中,虚拟相机适配进程包括第一服务、转换器和第二服务。
145.第一服务用于对上提供服务,支持第一数据格式,第一数据格式可以由技术人员根据实际需求进行设置。譬如第一服务为channel服务,若协同服务进程需要向底层的虚拟相机业务进程发送数据,则可以先将数据按照第一数据格式进行转换,然后通过channel服务将转换后的数据发送给虚拟相机适配进程,以通过虚拟相机适配进程发送给虚拟相机业务进程。
146.转换器用于对数据进行格式转换,具体地,将底层的数据转换成上层能够识别和处理的数据格式,或者,将上层的数据转换成底层能够识别和处理的数据格式。
147.第二服务用于对下提供服务,支持第二数据格式,第二数据格式可以由技术人员根据实际需求进行设置。譬如第二服务为translator服务,若虚拟相机业务进程需要向上层的协同服务进程发送数据,则可以先将数据按照第二数据格式进行转换,然后,虚拟相机业务进程通过translator服务将转换后的数据发送给虚拟相机适配进程,以通过虚拟相机适配进程发送给协同服务进程。
148.作为本技术的一个示例,扩展层主要包括本地相机进程和虚拟相机业务进程,本地相机进程和虚拟相机业务进程位于hal(hardware abstract layer,硬件抽象层)中。在一个示例中,当应用程序层的即时通讯应用需要进行视频通话时,向本地相机进程发送用于请求打开相机的相机打开指令,作为示例而非限定,本地相机进程是在开机后启动的。相应的,本地相机进程打开本地相机,以通过本地相机采集视频帧。在多屏协同的场景下,电子设备通过虚拟相机业务进程从协同服务进程中请求获取协同电子设备采集的视频流,并利用该视频流替换掉本地的视频流,从而实现视频流切换。
149.需要说明的是,上述是以系统层包括虚拟相机适配进程为例进行说明,在另一实施例中,系统层也可以不包括虚拟相机适配进程。该种情况下,由于在不同类型的平台上,虚拟相机业务进程的实现内容差异较大,所以虚拟相机业务进程需要根据各个平台的差异进行代码适配,以便于能够与协同服务进程之间能够进行数据交互。在一个示例中,此时虚拟相机业务进程中提供有第三服务,协同服务进程获取第三服务的服务句柄后,即可通过第三服务与虚拟相机业务进程进行数据传输。
150.内核层是硬件和软件之间的层。内核层至少包含显示驱动,相机驱动,音频驱动,传感器驱动等。其中,相机驱动用于驱动摄像头硬件,以使得摄像头启动,如此,电子设备即可通过摄像头采集图像。
151.需要说明的是,协同电子设备(例如平板电脑)的内部结构与上述电子设备(例如手机)的内部结构相同,本技术不做详细赘述。
152.为了便于理解,接下来以手机和平板电脑进行协同为例,先对多屏协同的几种可能的连接方式进行介绍。
153.1.通过蓝牙建立连接。
154.在一个实施例中,当用户想要将手机与平板电脑进行多屏协同时,可以将手机和平板电脑中的蓝牙均开启。此外,在手机中,用户手动开启多屏协同的功能,譬如用户可以通过“设置
”‑“
更多连接
”‑“
多设备协同”的路径找到“多设备协同”的开关,将该开关设于开启状态,如此就开启了手机的多屏协同功能。
155.请参考图5中的(a)图,用户从平板电脑的状态栏下滑出通知面板,通知面板中包括“多屏协同”选项51。用户可以点击“多屏协同”选项51,响应于用户对“多屏协同”选项51的触发操作,平板电脑展示第一提示窗口,第一提示窗口中包括用于指示用户如何操作的第一操作提示信息。示例性地,如图5中的(b)图所示,第一操作提示信息包括“1.将您的手机蓝牙开启并靠近本机,发现本机后点击“连接”。2.连接后,您可在平板电脑上操作手机,实现设备间数据共享。”的提示内容。如此,用户可以根据第一提示窗口中的第一操作提示信息进行操作。譬如,将手机靠近平板电脑。
156.在一个示例中,在手机靠近平板电脑的过程中,当手机发现平板电脑时,手机显示第二提示窗口,譬如请参考图6中的(a)图,第二提示窗口中包括“连接”选项61和“取消”选
项62。当用户点击“连接”选项61时,说明用户确认要建立连接,此时,响应于用户对“连接”选项61的触发操作,手机通过蓝牙与平板电脑建立连接。当用户点击“取消”选项62时,说明用户想要取消建立连接,此时响应于用户对“取消”选项62的触发操作,手机不执行建立连接的操作。在另一个示例中,在手机靠近平板电脑的过程中,当手机发现平板电脑时,也可以不显示第二提示窗口,而是自动通过蓝牙与平板电脑建立连接。
157.作为示例而非限定,在手机通过蓝牙与平板电脑建立连接的过程中,为了显示建立连接的进度,手机还可以显示用于指示正在连接的第三提示窗口,譬如,第三提示窗口如图6中的(b)图所示。可选地,第三提示窗口中包括有“取消”选项,以便于用户在需要的情况下可以在建立连接的过程中取消连接。
158.2.通过扫码的方式建立连接。
159.在平板电脑端,用户可以根据“我的手机
”‑“
立即连接
”‑“
扫码连接”路径,在平板电脑上操作,响应于用户的操作,平板电脑显示用于建立连接的二维码,示例性地,显示结果如图7所示。可选地,平板电脑还可以显示用于提示用户如何操作的第二操作提示信息,譬如第二操作提示信息为“使用手机浏览器扫码连接”。
160.在手机端,可以在浏览器(或者智慧视觉)中进入包括“扫一扫”选项的界面,譬如,请参考图8中的(a)图,进入浏览器的界面,该界面中包括“扫一扫”选项81。用户可以点击“扫一扫”选项81,响应于用户对“扫一扫”选项81的触发操作,手机启动摄像头,如图8中的(b)图所示,如此用户即可将摄像头对准平板电脑端显示的二维码进行扫码操作。
161.在一个示例中,手机扫码成功后,向平板电脑发送建立连接的请求。平板电脑接收到手机的请求后,可以显示第四提示窗口,第四提示窗口中包括用于提示用户是否同意建立连接的提示信息,譬如该提示信息为“xx设备请求与本端建立连接,是否同意建立连接?”,此外,第四提示窗口中还可以包括“同意”选项和“拒绝”选项。当用户点击“同意”选项时,说明用户允许手机与平板电脑建立连接,此时响应于用户对“同意”选项的触发操作,平板电脑与手机建立连接。当用户点击“拒绝”选项时,说明用户不允许手机与平板电脑建立连接,此时响应于用户对“拒绝”选项的触发操作,平板电脑通知手机建立连接失败。
162.需要说明的是,上述仅是以在平板电脑端通过“我的手机
”‑“
立即连接
”‑“
扫码连接”路径打开二维码为例进行说明。在另一实施例中,还可以通过其他路径打开二维码。示例性地,请参考图5中的(b)图,第一提示窗口中除了包括第一操作提示信息之外,还包括第二操作提示信息,第二操作提示信息为“发现不了本机?您也可扫码连接”,其中“扫码连接”四个字设为是可触发的。用户可以点击第一提示窗口中的“扫码连接”内容。响应于用户对“扫码连接”的触发操作,平板电脑展示如图7所示的二维码的界面,如此,用户即可通过手机扫描平板电脑上的二维码,从而通过扫码的方式建立连接。
163.3.通过碰一碰的方式建立连接。
164.用户可以在手机和平板电脑中分别开启nfc和多屏协同功能。之后,用户将手机背部的nfc区域(手机背部摄像头周围)触碰键盘的nfc区域(通常位于平板电脑的右下角区域,如图9中的91所示),响应于用户的该操作,手机和平板电脑之间通过nfc建立连接。可选地,在通过nfc建立连接之前,还可以分别在平板电脑和手机上提示用户是否同意建立连接,在用户同意建立连接后,手机和平板电脑执行建立连接的操作。在一个示例中,当手机与平板电脑连接上时,手机还可以通过振动或响铃的方式对用户进行提示。
165.需要说明的是,上述几种可能的连接方式均是以通过无线方式实现为例进行说明。在另一实施例中,还可以通过有线方式进行投屏,譬如通过type-c转高清晰度多媒体接口(high definition multimedia interface,hdmi)的连接线实现投屏,本技术实施例对此不作限定。
166.手机与平板电脑连接成功后,平板电脑的显示窗口中会镜像显示手机的画面,譬如请参考图10所示。如此,用户即可根据需求在该窗口内进行操作。在一个示例中,当用户想要通过即时通讯应用进行视频通话时,可以在平板电脑的该窗口中点击即时通讯应用的图标,以打开即时通讯应用,然后在即时通讯应用中点击“视频通话”选项。响应于用户对“视频通话”选项的触发操作,平板电脑向手机发送视频通话控制指令,手机在接收到视频通话控制指令后,发起视频通话请求,与其他用户进行视频通话。请参考图2,在此过程中,手机和平板电脑的窗口的画面同步显示。
167.在一个实施例中,请参考图11,下拉平板电脑的通知栏后,平板电脑的多屏协同通知栏中显示已协同到手机上。另外,该多屏协同通知栏中包括视频协同开关,用户可以根据需求调整该视频协同开关的开闭。譬如,若在视频通话中用户想通过平板电脑的摄像头采集画面,则可以将该视频协同开关调为开启状态,此时视频协同开关为“音视频切换到手机上”,也即在该种情况下,手机进行视频通话时的画面由平板电脑的摄像头采集得到。当然,若用户仅想使用手机自身的摄像头采集画面,则可以将该视频协同开关调为关闭状态,如此,手机在视频通话过程中的画面由手机的摄像头采集得到。其具体实现原理可以参见如下实施例。
168.基于上述图4提供的软件架构图,接下来对本技术实施例提供的方法流程进行详细介绍。请参考图12,图12是根据一示例性实施例示出的一种获取视频帧的方法流程示意图,作为示例而非限定,这里以该方法应用于手机中为例进行说明,该手机通过图4中所示的多个进程的交互实现。假设手机与平板电脑之间建立协同连接,系统层包括虚拟相机适配进程。该方法可以包括如下部分或者全部内容:
169.步骤a1:手机的服务发现进程开启指令监听功能。
170.作为本技术的一个示例,当用户想要将手机与平板电脑进行多屏协同时,可以开启手机中的蓝牙,以及开启平板电脑中的蓝牙。对于手机和平板电脑中的任意一个电子设备来说,在蓝牙开启的情况下,服务发现进程开启指令监听功能。也即手机的服务发现进程在检测到蓝牙开启的情况下,开始执行指令监听功能。对于平板电脑亦是同理,在检测到蓝牙开启的情况下,平板电脑的服务发现进程开始执行指令监听功能。
171.步骤a2:当手机的服务发现进程监听到连接指令时,将该连接指令发送给协同助手进程。
172.在一个示例中,当用户触发平板电脑侧的“多屏协同”选项时,平板电脑中的多屏协同向应用程序框架层的服务发现进程发送连接指令。服务发现进程监听到该连接指令后对该连接指令进行广播,如此,手机在靠近平板电脑的过程中,手机的服务发现进程即可监听到该连接指令。
173.在一个示例中,手机的服务发现进程监听到该连接指令后,将该连接指令发送给手机的协同助手进程。
174.在另一个示例中,请参考图6中的(a)图,手机的服务发现进程监听到该连接指令
后,可以在手机上显示第二提示窗口,以通过第二提示窗口使得用户在手机上确认是否同意手机与平板电脑之间建立协同连接。当基于第二提示窗口接收到用户的确认指示时,说明用户同意建立协同连接,该种情况下,手机的服务发现进程将该连接指令发送给手机的协同助手进程。
175.步骤a3:手机的协同助手进程与平板电脑的协同助手进程交换设备信息。
176.示例性地,交换的设备信息可以包括但不限于设备方位信息、设备能力信息。其中,设备方位信息可以是坐标信息,用于手机和平板电脑建立数据传输通道。手机的设备能力信息可以包括相机数量、每个相机的属性以及每个相机的能力信息,相机数量是指手机中的摄像头的数量,相机的属性可以包括前置摄像头或后置摄像头,相机的能力信息可以包括用于描述相机能够支持的分辨率、帧率等信息。同理,平板电脑的设备能力信息也可以包括平板电脑的相机数量、每个相机的属性以及每个相机的能力信息。
177.也即,手机将自身的坐标信息和设备能力信息发送给平板电脑的协同助手进程。平板电脑的协同助手进程接收到手机发送的设备信息后,将自身的坐标信息和设备能力信息发送给手机。如此,两者相互完成设备信息的交换。
178.步骤a4:手机的协同助手进程通知协同服务进程启动。
179.在一个示例中,手机的协同助手进程可以向手机的协同服务进程发送启动通知,以拉起手机的协同服务进程。
180.此外,在相互交换设备信息后,平板电脑的协同助手进程也可以向平板电脑的协同服务进程发送启动通知,以拉起平板电脑的协同服务进程。
181.步骤a5:协同服务进程进行初始化配置。
182.在实施中,手机的协同服务进程接收到启动通知后,协同服务进程开始进行初始化配置操作,以便为后续的相机虚拟化服务建立基础。
183.在一个示例中,协同服务进程的初始化配置操作包括:收集平板电脑的设备能力信息和手机的设备能力信息。如前文所述,由于手机的协同助手进程与平板电脑的协同助手进程已进行了设备信息的交换,所以,可以由手机的协同助手进程为协同服务进程提供手机和平板电脑的设备能力信息。
184.在一个示例中,协同服务进程的初始化配置操作还包括预使能音频和通话模块,以使得音频和通话模块是可使用状态,从而为视频通话的实现提供基础条件。此外,手机的协同服务进程与平板电脑的协同服务进程建立数据传输通道,该数据传输通道用于进行互联服务。
185.上述是以手机中多个进程的交互为例,对手机与平板电脑之间建立协同连接的过程进行介绍,该过程是本技术实施例的可选实施例。基于上述建立的协同连接,接下来对视频通话过程中的进程间的绑定过程进行介绍。
186.步骤a6:即时通讯应用向本地相机进程发送相机打开指令。
187.在一个示例中,用户触发即时通讯应用中的“视频通话”选项。即时通讯应用检测到用户的该触发操作,说明用户请求进行视频通话,响应于用户对“视频通话”选项的触发操作,手机的即时通讯应用发起视频通话请求,并请求本地相机进程打开相机,譬如向本地相机进程发送相机打开指令。
188.步骤a7:本地相机进程控制相机驱动打开相机。
189.本地相机进程接收到相机打开指令后,控制相机驱动加载相机。示例性地,本地相机进程向相机驱动发送打开相机的指令,相机驱动在接收到该指令后,驱动摄像头加载,从而完成打开相机的操作。
190.步骤a8:在发生相机打开事件的情况下,如果视频协同开关处于开启状态,则协同助手进程通知协同服务进程和虚拟相机业务进程。
191.作为示例而非限定,手机中存在第一监听进程,第一监听进程用于在监听到相机打开事件后,向监听列表中注册过的进程发送相机打开通知。所以,协同助手进程可以预先在该监听列表中进行注册。如此,当第一监听进程监听到相机打开事件时,会向协同助手进程发送相机打开通知,如此,协同助手进程就可以获知存在相机打开事件。
192.此时,对于协同助手进程来说,如果确定当前的视频协同开关处于开启状态,则确定已开启相机虚拟化业务,也即确定手机要采用平板电脑的本地相机采集视频流。为此,协同助手进程通知协同服务进程和虚拟相机业务进程。协同服务进程接收到通知后进入如下步骤a9。虚拟相机业务进程接收到协同助手进程的通知后进入如下步骤a12。
193.步骤a9:协同服务进程拉起虚拟相机适配进程。
194.协同服务进程接收到相机打开通知后,协同服务进程向虚拟相机适配进程发送加载通知,以使得虚拟相机适配进程开始加载。
195.此外,协同服务进程在接收到协同助手进程的相机打开通知后,还通过预先建立的用于互联服务的数据传输通道,向平板电脑的协同服务进程发送相机打开通知。相应的,平板电脑的协同服务进程接收到相机打开通知后,调用平板电脑的相机驱动打开平板电脑的相机。
196.步骤a10:虚拟相机适配进程进行初始化。
197.在一个示例中,请参考图13,虚拟相机适配进程启动后,将对上的channel服务130与对下的translator服务131通过中间的cswitch实例132对象绑定,从而便于进行双向通信,也即是,在channel服务130和translator服务131之间建立数据传输的通道。
198.步骤a11:虚拟相机适配进程初始化结束后,协同服务进程与虚拟相机适配进程建立绑定关系。
199.在一个示例中,请参考图14,协同服务进程与虚拟相机适配进程建立绑定关系包括如下内容:在141中.协同服务进程向虚拟相机适配进程获取channel服务130的服务句柄;在142中.协同服务进程向虚拟相机适配进程注册第一回调函数。之后,在143中,协同服务进程即可获取channel服务130。也即是,后续协同服务进程可以利用该服务句柄,获取channel服务130,从而便于通过channel服务130向虚拟相机适配进程发送数据。此外,后续虚拟相机适配进程可以通过回调的方式,利用第一回调函数将数据传输给协同服务进程。
200.步骤a12:虚拟相机业务进程更新目标状态属性为第一状态值。
201.目标状态属性用于指示是否已开启相机虚拟化业务。当目标状态属性是第一状态值时用于指示已开启相机虚拟化业务,当目标状态属性是第二状态值时用于指示未开启相机虚拟化业务。作为本技术的一个示例,目标状态属性存在于系统属性中,是一个全局属性。示例性地,第一状态值是1,第二状态值是0。
202.也即虚拟相机业务进程在接收到协同助手进程的通知后,将目标状态属性更新为第一状态值,以指示当前是在视频通话中已开启了相机虚拟化业务。示例性地,虚拟相机业
务进程可以通过channel服务130修改目标状态属性的状态值。
203.步骤a13:当本地相机进程感知到目标状态属性为第一状态值时,拉起虚拟相机业务进程。
204.在一个实施例中,本地相机进程与虚拟相机业务进程之间可以通过虚拟相机接口层连接,虚拟相机接口层中包括虚拟相机业务感知模块。请参考图15,虚拟相机业务进程的加载过程可以包括:1.协同助手进程通知虚拟相机业务进程相机虚拟化业务已开启。2.虚拟相机业务进程更新目标状态属性为第一状态值。3.本地相机进程通过虚拟相机业务感知模块扫描目标状态属性的状态值。4.当通过虚拟相机业务感知模块感知到目标状态属性是第一状态值时,本地相机进程通过虚拟相机接口层拉起虚拟相机业务进程。
205.其中,步骤3与步骤1之间没有严格的先后执行顺序,在本地相机进程打开本地相机后,可以通知虚拟相机业务感知模块开启感知功能,相应的,虚拟相机业务感知模块扫描目标状态属性的状态值。在一个示例中,虚拟相机业务功感知模块每隔周期时长阈值,扫描一次目标状态属性的状态值,譬如可以通过调用系统接口获取目标状态属性的状态值,从而实现扫描操作,该系统接口可以是propertyget接口。如此,本地相机进程即可通过虚拟相机业务感知模块感知到目标状态属性的状态值。其中,周期时长阈值可以根据实际需求进行设置,譬如周期时长阈值可以是100毫秒。
206.在一种情况下,若本地相机进程感知到目标状态属性是第一状态值,说明手机需要使用虚拟相机业务进程,所以,本地相机进程通过虚拟相机接口层向虚拟相机业务进程发送加载指令,以拉起虚拟相机业务进程。
207.在另一种情况下,若本地相机进程感知到目标状态属性是第二状态值,说明当前上层未触发相机虚拟化业务,也即视频协同开关处于关闭状态。具体地,在视频协同开关处于关闭状态的情况下,协同助手进程在接收到相机打开通知后,不会通知虚拟相机业务进程将目标状态属性更新为第一状态值,所以,此时本地相机进程感知到的目标状态属性是第二状态值。该种情况下,视频通话中的视频画面由本地相机进程从本地相机获取。
208.步骤a14:虚拟相机业务进程开始进行初始化。
209.虚拟相机业务进程接收到本地相机进程的加载指令后,开启执行初始化操作,初始化的主要目的是与本地相机进程通过虚拟相机接口层建立绑定关系。譬如请参考图15中的步骤5,本地相机进程获取虚拟相机业务进程的服务,以与虚拟相机业务进程建立绑定关系。如此以便于后续通过该绑定关系,本地相机进程与虚拟相机业务进程进行数据交互。
210.步骤a15:虚拟相机业务进程与虚拟相机适配进程建立绑定关系。
211.也即虚拟相机业务进程在启动后,除了与本地相机进程建立绑定关系,还与虚拟相机适配进程建立绑定关系。作为本技术的一个示例,为了确定虚拟相机适配进程是否已完成初始化,可以由虚拟相机业务进程在启动后,开启线程扫描操作,以通过线程扫描操作扫描虚拟相机适配进程的初始化情况。如果通过线程扫描确定虚拟相机适配进程未完成初始化,则虚拟相机业务进程进入等待状态,一旦扫描到虚拟相机适配进程完成初始化,则虚拟相机业务进程主动向虚拟相机适配进程请求建立绑定关系。
212.在一个示例中,请参考图16,虚拟相机业务进程与虚拟相机适配进程建立绑定关系包括:在161中.虚拟相机业务进程向虚拟相机适配进程请求获取translator服务131的服务句柄;在162中.虚拟相机业务进程向虚拟相机适配进程注册第二回调函数。在163中,
虚拟相机业务进程即可获取translator服务131。如此,以便于后续利用该服务句柄,获取translator服务131,从而便于通过translator服务131向虚拟相机适配进程发送数据。另外,后续虚拟相机适配进程通过回调的方式,利用第二回调函数将数据传输给虚拟相机业务进程。
213.在上下两端的绑定都建立完成后,也即在协同服务进程与虚拟相机适配进程建立绑定关系,以及虚拟相机业务进程与虚拟相机适配进程建立绑定关系后,虚拟相机适配进程向协同服务进程返回使能成功通知,使能成功通知用于指示已建立起上下层之间的数据传输的通道。协同服务进程在接收到使能成功通知后,向平板电脑的协同服务进程发送使能成功通知。平板电脑的协同服务进程接收到使能成功通知后,调用相机驱动持续获取视频流,并通过与手机的协同服务进程之间建立的用于互联服务的数据传输通道,将视频流发送给手机的协同服务进程。相应的,手机的协同服务进程接收并缓存平板电脑发送的视频流。
214.在另一个实施例中,可能由于虚拟相机业务进程未扫描到虚拟相机适配进程已初始化结束等原因,使得虚拟相机业务进程始终未向虚拟相机适配进程发起绑定的请求。对于虚拟相机适配进程来说,如果在预设时长内未接收到虚拟相机业务进程的绑定请求,则会向协同服务进程返回使能失败通知。协同服务进程接收到使能失败通知后,向平板电脑的协同服务进程发送使能失败通知。平板电脑的协同服务进程接收到使能失败通知后,调用相机驱动关闭平板电脑的相机。
215.其中,上述预设时长可以根据实际需求进行设置。示例性地,预设时长可以为3秒。
216.在一个实施例中,如果在视频通话中用户将视频协同开关从开启状态调整为关闭状态,说明此时用户只需要使用手机的摄像头采集视频帧,该种情况下,手机暂不需要使用虚拟相机业务进程、虚拟相机适配进程和协同服务进程。此时,请参见图15中的步骤6,协同助手进程通知虚拟相机业务进程相机虚拟化业务已关闭。相应的,虚拟相机业务进程接收到该通知后,如图15中的步骤7所示,虚拟相机业务进程将目标状态属性从第一状态值更新为第二状态值,譬如虚拟相机业务进程通过channel服务130将目标状态属性的状态值更新为第二状态值。
217.在一个实施例中,如果在视频通话中用户结束视频通话,此时即时通讯应用会请求本地相机进程关闭相机。本地相机进程调用相机驱动,以通过相机驱动关闭相机。在相机关闭后,本地相机进程向虚拟相机业务进程发送相机关闭指令,相机关闭指令用于指示通过虚拟相机业务进程终止接收视频帧,并且,本地相机进程释放掉虚拟相机业务进程的服务,从而解除与虚拟相机业务进程之间的绑定关系。对于虚拟相机业务进程来说,在接收到相机关闭指令的情况下,将目标状态属性从第一状态值更新为第二状态值,并且,虚拟相机业务进程指示协同服务进程不再接收第二电子设备发送的视频流,之后,虚拟相机业务进程通知虚拟相机适配进程相机虚拟化业务已关闭,并且,虚拟相机业务进程释放掉translator服务131,从而解除与虚拟相机适配进程之间的绑定关系。对于虚拟相机适配进程来说,在接收到相机虚拟化业务已关闭的通知后,通知协同服务进程。相应的,协同服务进程释放掉虚拟相机适配进程的channel服务130,从而解除与虚拟相机适配进程之间的绑定关系。如此,虚拟相机适配进程恢复至未加载状态。
218.值得一提的是,由于虚拟相机适配进程和虚拟相机业务进程加载后均需要占用一
定的内存空间,所以本技术实施例中只有在使用的时候才会加载这两个进程,不使用时不加载,使得在非相机虚拟化业务场景中这两个进程不会占用大量的内存,进程间解耦度较高,如此可以节省一定的内存空间。
219.在一个示例中,若虚拟相机业务进程关闭,但本地相机进程未关闭,则本地相机进程再次开启虚拟相机业务感知模块,以检测相机虚拟化业务是否又被启动。
220.作为本技术的一个示例,当手机在视频通话过程中使用平板电脑采集视频流时,在相机虚拟化操作完成后,可以在各层中设置状态标签,该状态标签为虚拟状态,此时意味着手机中各层传输的视频流不是手机的相机采集的,而是通过协同的平板电脑采集的。而当使用本地相机采集视频帧时,可以将该状态标签设为物理状态,此时意味着视频通话过程中使用的视频流是手机的相机采集的。
221.另外,在本技术实施例中,在视频通话时如果需要使用平板电脑的摄像头采集的视频流,则先打通协同服务进程、虚拟相机适配进程、协同服务进程之间数据传输的通道,以实现相机虚拟化操作,从而便于视频帧能够从协同服务进程传输到扩展层的本地相机进程并显示出来。
222.需要说明的是,图12实施例是以手机包括虚拟相机适配进程为例进行说明,所以上述涉及虚拟相机适配进程的操作是可选的。
223.上述实施例是对通道的搭建流程进行介绍,该过程只要在数据传输之前完成即可,上述实现方式是可选的。在上述实施例中的基础上,接下来对数据传输的流程进行详细介绍,具体包括如何通过虚拟相机业务进程获取视频帧。请参考图17。图17是根据一示例性实施例示出的一种获取视频帧的方法流程示意图。作为示例而非限定,这里以该方法应用于手机中,手机通过多个进程的交互实现为例进行介绍。该方法可以包括如下内容:
224.步骤b1:虚拟相机业务进程按照虚拟相机适配进程定义的第一数据格式对第一指令进行转换。
225.作为本技术的一个示例,第一指令可以包括但不限于图像获取指令、配置指令、关闭指令、刷流指令。其中,图像获取指令用于请求获取视频帧,配置指令用于请求配置视频参数,譬如配置分辨率、帧率等。关闭指令用于指示关闭相机。刷流指令用于指示将已经缓存的指令冲刷掉。
226.示例性地,在手机通过即时通讯应用进行视频通话的过程中,即时通讯应用向本地相机进程请求获取视频帧,本地相机进程向虚拟相机业务进程发送图像获取指令。虚拟相机业务进程将图像获取指令按照虚拟相机适配进程定义的通用数据格式进行转换处理,以便于得到translator服务131支持的数据。
227.在一个示例中,translator服务131可以是基于安卓(android)的硬件抽象层接口定义语言(hardware abstract layer interface definition language,hidl)接口二次开发的,具有良好的兼容性和可扩展性。
228.步骤b2:虚拟相机业务进程将转换后的第一指令发送给虚拟相机适配进程。
229.在一个实施例中,虚拟相机业务进程获取translator服务131的服务句柄,根据该服务句柄,获取translator服务131,然后通过该translator服务131,将转换后的第一指令发送给虚拟相机适配进程。
230.在一个示例中,translator服务131定义若干种请求访问接口,虚拟相机业务进程
可以根据第一指令的类型(譬如图像获取指令或配置指令),调用相应的请求访问接口,以将转换后的第一指令通过调用的请求访问接口发送给虚拟相机适配进程。
231.步骤b3:虚拟相机适配进程对转换后的第一指令进行转换处理。
232.在一个示例中,虚拟相机适配进程接收转换后的第一指令后,对第一指令进行格式转换或逻辑转换,以将第一指令转换成协同服务进程能够识别和处理的数据格式。
233.步骤b4:虚拟相机适配进程将转换处理后得到的第一指令发送给协同服务进程。
234.如前文所述,在绑定过程中,协同服务进程向虚拟相机适配进程注册了第一回调函数。所以,当虚拟相机适配进程需要将数据发送给协同服务进程时,可以采用回调的方式,通过第一回调函数将转换处理后得到的第一指令发送给协同服务进程。
235.步骤b5:协同服务进程执行第一指令对应的操作。
236.示例性地,假设第一指令是图像获取指令,则协同服务进程根据第一指令请求的画面,从缓存的视频流中获取与之对应的视频帧。
237.步骤b6:协同服务进程对响应数据按照第二数据格式进行转换处理。
238.在一个示例中,响应数据是步骤b5中获取的视频帧。
239.在实施中,协同服务进程将响应数据转换成channel服务130支持的数据格式,以便于能够通过虚拟相机适配进程,将响应数据传输给虚拟相机业务进程。
240.在一个示例中,channel服务130可以是基于安卓的hidl接口二次开发的,具有良好的兼容性和可扩展性。
241.需要说明的是,手机的协同服务进程可能不是在执行第一指令对应的操作后,立即执行步骤b6,也就是说可能不是立即反馈响应数据,而是在相隔一定时长后再反馈响应数据,具体可以根据实际需求进行设置。
242.步骤b7:协同服务进程将转换后的响应数据发送给虚拟相机适配进程。
243.示例性地,协同服务进程获取channel服务130的服务句柄,然后基于该服务句柄,获取channel服务130,并通过该channel服务130,将转换后的响应数据发送给虚拟相机适配进程。
244.步骤b8:虚拟相机适配进程对接收的响应数据进行转换处理。
245.虚拟相机适配进程将响应数据转换成虚拟相机业务进程能够识别和处理的数据格式。
246.步骤b9:将转换处理后的响应数据发送给虚拟相机业务进程。
247.如前文所述,在绑定过程中,虚拟相机业务进程向虚拟相机适配进程注册了第二回调函数,所以,虚拟相机适配进程可以通过回调的方式,利用虚拟相机业务进程预先注册的第二回调函数,将响应数据发送给虚拟相机业务进程。
248.步骤b10:虚拟相机业务进程对响应数据进行处理。
249.在一个示例中,以响应数据是视频帧为例,虚拟相机业务进程对视频帧进行格式转换处理,以得到本地相机进程能够处理的数据。之后,虚拟相机业务进程将处理后得到的数据发送给本地相机进程,由本地相机进程对数据进行填充,并将填充后的数据发送给应用层,譬如,本地相机进程将填充后的数据发送给应用层的即时通讯应用,从而实现视频通话业务。
250.作为示例而非限定,在视频流切换至通过平板电脑的相机采集的情况下,本地相
机进程可以关闭手机的相机,譬如控制相机驱动使得相机关闭,以避免占用相机资源。进一步地,若视频流切换回手机的相机,譬如用户关闭视频协同开关,则协同助手进程可以通知本地相机进程已关闭相机虚拟业务,但若视频通话仍在进行,也即本地相机进程未接收到即时通讯应用指示关闭相机的指令,则本地相机进程再次通过相机驱动打开本地的相机,以通过本地的相机采集视频流。
251.作为本技术的一个示例,虚拟相机业务进程、虚拟相机适配进程、协同服务进程各自控制自身的生命周期和进行异常处理,当这三者中任意一个进程出现异常时,与其绑定的其他进程主动解除与该异常进程的绑定关系。示例性地,手机中存在第二监听进程,第二监听进程用于监听各个进程的运行状态。当第二监听进程监测到虚拟相机业务进程出现异常时,第二监听进程通知给与虚拟相机业务进程具有绑定关系的虚拟相机适配进程,如此,虚拟相机适配进程就会接收到异常通知。虚拟相机适配进程接收到异常通知后,释放掉虚拟相机进程注册的回调,以解除与虚拟相机业务进程之间的绑定关系。另外,虚拟相机适配进程将状态标签修改为物理状态。
252.同理,当虚拟相机适配进程出现异常时,第二监听进程会通知虚拟相机业务进程。虚拟相机业务进程主动解除与虚拟相机适配进程之间的绑定关系。再如,当虚拟相机适配进程出现异常时,协同服务进程主动解除与虚拟相机适配进程之间的绑定关系。当协同服务进程出现异常时,虚拟相机适配进程解除与该协同服务进程之间的绑定关系。
253.值得一提的是,各个进程各自控制自身的生命周期和异常处理,如此避免一个进程异常导致影响另一个进程。譬如,当虚拟相机业务进程出现异常时,不影响虚拟相机适配进程,虚拟相机适配进程在检测到异常后,恢复初始状态。虚拟相机适配进程出现异常时不影响虚拟相机业务进程,出现异常时,虚拟相机业务进程提供的虚拟相机业务关闭,同时虚拟相机业务进程需要恢复到物理状态。
254.在本技术实施例中,虚拟相机业务进程不需要关注上层逻辑,只需要将数据按照虚拟相机适配进程定义的通用数据格式进行转换后,交由给虚拟相机适配进程,由虚拟相机适配进程根据上层需求进行转换处理后发送给协同服务进程。同理,对于协同服务进程,不需要关注底层逻辑,只需要将数据按照虚拟相机适配进程定义的通用数据格式进行转换后,交由给虚拟相机适配进程,由虚拟相机适配进程根据下层需求进行转换处理后发送给虚拟相机业务进程。如此,避免需要做大量的代码适配工作,从而可以减小开发成本。
255.另外,本技术实施例提供的方法可以适用于各种类型芯片的hal层,如果新增其他类型芯片厂商,仅需要在hal层对虚拟相机模块的数据接口进行处理,将数据转换为虚拟相机适配进程支持的通用格式,完成translator服务131的获取与回调注册,无需再对虚拟相机适配模块做额外的修改。
256.需要说明的是,图17实施例是以手机包括虚拟相机适配进程为例进行说明,所以上述涉及虚拟相机适配进程的操作是可选的。
257.作为本技术的一个示例,系统层不包括虚拟相机适配进程,在该种情况下,请参考图18,图18是根据一示例性实施例示出的一种数据传输方法的流程示意图。作为示例而非限定,该方法应用于手机中,手机通过多个进程的交互实现。该方法可以包括如下部分或者全部的内容:
258.c1-c7可以参见上述图12所示实施例中的步骤a1-a7。
259.步骤c8:在发生相机打开事件的情况下,如果视频协同开关处于开启状态,则协同助手进程通知虚拟相机业务进程。
260.其具体实现可以参见图12所示实施例中的步骤a8。
261.对于虚拟相机业务进程来说,在接收到协同助手进程的通知后进入如下步骤c9。
262.步骤c9:虚拟相机业务进程更新目标状态属性为第一状态值。
263.目标状态属性用于指示是否已开启相机虚拟化业务。当目标状态属性是第一状态值时用于指示已开启相机虚拟化业务,当目标状态属性是第二状态值时用于指示未开启相机虚拟化业务。作为本技术的一个示例,目标状态属性存在于系统属性中,是一个全局属性。
264.请参考图15,也即虚拟相机业务进程在接收到协同助手进程的通知后,更新目标状态属性。在一个示例中,虚拟相机业务进程通过第三服务,将目标状态属性的状态值更新为第一状态值。
265.步骤c10:当本地相机进程感知到目标状态属性为第一状态值时,拉起虚拟相机业务进程。
266.其具体实现可以参见图12所示实施例中的步骤a13。
267.步骤c11:虚拟相机业务进程开始进行初始化。
268.其具体实现可以参见图12所示实施例中的步骤a14。
269.在一个示例中,虚拟相机业务进程初始化成功后,可以通知协同服务进程。在一个示例中,协同服务进程在虚拟相机业务进程初始化结束后,可以获取虚拟相机业务进程的第三服务,以便于后续通过第三服务与虚拟相机业务进程进行数据交互。
270.步骤c12:协同服务进程开始接收并缓存平板电脑发送的视频流。
271.在实施中,协同服务进程接收到虚拟相机业务进程发送的初始化成功的通知后,说明虚拟相机业务进程能够提供相机虚拟化服务,该种情况下,协同服务进程可以指示平板电脑开始采集视频流。相应的,平板电脑的协同服务进程调用相机驱动持续获取视频流,并通过与手机的协同服务进程之间建立的用于互联服务的数据传输通道,将视频流发送给手机的协同服务进程。
272.如此,虚拟相机业务进程即可根据即时通讯应用的指示,请求协同服务进程中执行相应的操作。譬如,虚拟相机业务进程向协同服务进程请求获取视频帧等。需要说明的是,该种场景下针对不同类型的平台,虚拟相机业务进程在进行代码适配后,直接通过第三服务与协同服务进程之间进行数据交互。
273.在一个示例中,如果在视频通话中用户将视频协同开关从开启状态调整为关闭状态,说明此时用户只需要使用手机的摄像头采集视频帧,该种情况下,手机暂不再需要使用虚拟相机业务进程。此时,协同助手进程通知虚拟相机业务进程已切换回本地相机。相应的,虚拟相机业务进程接收到该通知后,将目标状态属性从第一状态值更新为第二状态值。
274.在另一个示例中,如果在视频通话中用户结束视频通话,此时即时通讯应用会请求本地相机进程关闭相机。本地相机进程调用相机驱动,以通过相机驱动关闭相机。在相机关闭后,本地相机进程向虚拟相机业务进程发送相机关闭指令,相机关闭指令用于指示通过虚拟相机业务进程终止接收视频帧,并且,本地相机进程释放掉虚拟相机业务进程的服务,从而解除与虚拟相机业务进程之间的绑定关系。对于虚拟相机业务进程来说,在接收到
相机关闭指令的情况下,将目标状态属性从第一状态值更新为第二状态值,并且,虚拟相机业务进程指示协同服务进程不再接收第二电子设备发送的视频流。相应的,协同服务进程释放掉虚拟相机业务进程的第三服务。如此,使得虚拟相机业务进程恢复至未加载状态。
275.在一个示例中,若虚拟相机业务进程关闭,但本地相机进程未关闭,则本地相机进程再次开启虚拟相机业务感知模块,以检测相机虚拟化业务是否又被启动。
276.值得一提的是,由于虚拟相机业务进程加载需要占用一定的存储空间,所以,本技术实施例中只有在使用的时候才会加载该虚拟相机业务进程,不使用时不加载,在非相机虚拟化业务场景中不会占用大量的内存,节省一定的内存空间,避免内存资源浪费问题。
277.图19是根据另一个示例性实施例示出的一种获取视频帧的方法流程示意图。作为示例而非限定,该方法应用于第一电子设备中,第一电子设备与第二电子设备连接。第一电子设备可以是上述各个实施例中的手机,第二电子设备可以是上述各个实施例中的平板电脑,第一电子设备与第二电子设备之间的连接可以是上文所述的协同连接。该方法可以包括如下步骤:
278.步骤1910:若通过本地相机进程接收到第一电子设备中的第一应用的相机打开指令,则通过本地相机进程打开第一电子设备的相机。
279.第一应用是能够用于进行视频通话的应用。譬如第一应用又称为即时通讯应用。
280.步骤1910的具体实现可以参见上述图12所示实施例中的步骤a6和步骤a7。
281.在一个实施例中,若通过本地相机进程接收到第一电子设备中的第一应用的相机打开指令,则通过本地相机进程打开第一电子设备的相机之后,若通过虚拟相机业务进程接收到相机虚拟化业务开启通知,则通过虚拟相机业务进程将目标状态属性更新为第一状态值。
282.在一个实施例中,若通过本地相机进程接收到第一电子设备中的第一应用的相机打开指令,则通过本地相机进程打开第一电子设备的相机之后,若通过协同服务进程接收到使能通知,则通过协同服务进程触发虚拟相机适配进程加载,协同服务进程在第一电子设备与第二电子设备连接后启动,使能通知用于指示在视频通话中预使用第二电子设备的相机采集视频帧,虚拟相机适配进程用于对协同服务进程与虚拟相机业务进程之间传输的数据进行转换处理。在虚拟相机适配进程加载完成后,控制协同服务进程与虚拟相机适配进程建立用于传输数据的绑定关系。
283.步骤1920:在相机打开成功的情况下,通过本地相机进程确定是否已开启相机虚拟化业务,相机虚拟化业务是指通过第一应用进行视频通话时使用第二电子设备的相机采集视频帧。
284.在一个实施例中,通过本地相机进程确定是否已开启相机虚拟化业务的实现方式可以包括:通过本地相机进程扫描是否已开启相机虚拟化业务。
285.在一个实施例中,通过本地相机进程扫描是否已开启相机虚拟化业务的具体实现可以包括:通过本地相机进程控制虚拟相机业务感知模块扫描目标状态属性的状态值,用于指示是否已开启相机虚拟化业务。若通过虚拟相机业务感知模块扫描到目标状态属性为第一状态值,则确定已开启相机虚拟化业务,第一状态值用于指示已开启相机虚拟化业务。
286.步骤1920的具体描述可以参见步骤a13。
287.步骤1930:若通过本地相机进程确定已开启相机虚拟化业务,则通过本地相机进
程控制虚拟相机业务进程加载。
288.作为本技术的一个示例,通过本地相机进程控制虚拟相机业务进程加载的实现可以包括:通过本地相机进程通知虚拟相机业务进程启动。在虚拟相机业务进程启动后,控制本地相机进程与虚拟相机业务进程建立用于传输数据的绑定关系。其具体实现可以参见步骤a13和步骤a14。
289.在一个实施例中,若通过本地相机进程确定已开启相机虚拟化业务,则通过本地相机进程控制虚拟相机业务进程加载之后,在虚拟相机业务进程加载完成后,控制虚拟相机业务进程扫描虚拟相机适配进程的加载情况。若通过虚拟相机业务进程扫描到虚拟相机适配进程已完成加载,则控制虚拟相机业务进程与虚拟相机适配进程建立用于传输数据的绑定关系。
290.在一个实施例中,若通过虚拟相机业务进程扫描到虚拟相机适配进程已完成加载,则控制虚拟相机业务进程与虚拟相机适配进程建立用于传输数据的绑定关系之后,通过虚拟相机适配进程向协同服务进程发送使能成功通知,使能通过通知用于指示已建立起协同服务进程与虚拟相机业务进程之间传输数据的通道。通过协同服务进程开始接收视频帧。
291.步骤1940:通过虚拟相机业务进程获取视频帧。
292.在一个实施例中,若协同服务进程与虚拟相机业务进程之间建立起用于传输数据的通道,则通过虚拟相机业务进程,使用通道,从协同服务进程中获取视频帧。其具体实现可以参见图17所示实施例,或者可以参见步骤c12。
293.在一个实施例中,若通过本地相机进程接收到第一应用的相机关闭指令,则通过本地相机进程向虚拟相机业务进程发送相机关闭指令,相机关闭指令用于指示通过虚拟相机业务进程终止接收视频帧。控制本地相机进程解除与虚拟相机业务进程之间的绑定关系。
294.在一个实施例中,若通过本地相机进程接收到第一应用的相机关闭指令,则通过本地相机进程向虚拟相机业务进程发送相机关闭指令之后,在通过虚拟相机业务进程终止接收视频帧的情况下,控制虚拟相机业务进程解除与虚拟相机适配进程之间的绑定关系。通过虚拟相机适配进程向协同服务进程发送去使能指令,去使能指令用于指示协同服务进程解除与虚拟相机适配进程之间的绑定关系。控制协同服务进程解除与虚拟相机适配进程之间的绑定关系。
295.在本技术实施例中,由于虚拟相机业务进程加载需要占用一定的存储空间,所以,本技术实施例中只有在视频通话中且开启相机虚拟化业务的情况下才加载该虚拟相机业务进程,也即只有在使用的时候才会加载该虚拟相机业务进程,不使用时不加载,在非相机虚拟化业务场景中不会占用大量的内存,节省一定的内存空间,避免内存资源浪费问题。
296.图20是本技术实施例提供的一种获取视频帧的装置的结构示意图,该装置可以由软件、硬件或者两者的结合实现成为电子设备的部分或者全部,该电子设备可以为图3所示的电子设备。参见图20,该装置可以包括:处理器2010和存储器2020,所述存储器2020用于存储支持所述装置执行获取视频帧的方法的程序,以及存储用于实现获取视频帧的方法所涉及的数据。所述电子设备还可以包括通信总线2030,所述通信总线2030用于在所述处理器2010与所述存储器2020之间建立连接。所述处理器2010的数量可以是一个或者多个。所
述处理器2010被配置为:
297.若通过本地相机进程接收到所述第一电子设备中的第一应用的相机打开指令,则通过所述本地相机进程打开所述第一电子设备的相机;
298.在所述相机打开成功的情况下,通过所述本地相机进程确定是否已开启相机虚拟化业务,所述相机虚拟化业务是指通过所述第一应用进行视频通话时使用所述第二电子设备的相机采集视频帧;
299.若通过所述本地相机进程确定已开启所述相机虚拟化业务,则通过所述本地相机进程控制虚拟相机业务进程加载;
300.通过所述虚拟相机业务进程获取所述视频帧。
301.作为本技术的一个示例,所述处理器2010被配置为:
302.通过所述本地相机进程扫描是否已开启所述相机虚拟化业务。
303.作为本技术的一个示例,所述第一电子设备包括虚拟相机业务感知模块,所述处理器2010被配置为:
304.通过所述本地相机进程控制所述虚拟相机业务感知模块扫描目标状态属性的状态值,所述用于指示是否已开启所述相机虚拟化业务;
305.若通过所述虚拟相机业务感知模块扫描到所述目标状态属性为第一状态值,则确定已开启所述相机虚拟化业务,所述第一状态值用于指示已开启所述相机虚拟化业务。
306.作为本技术的一个示例,所述处理器2010还被配置为:
307.若通过所述虚拟相机业务进程接收到相机虚拟化业务开启通知,则通过所述虚拟相机业务进程将所述目标状态属性更新为所述第一状态值。
308.作为本技术的一个示例,所述处理器2010被配置为:
309.通过所述本地相机进程通知所述虚拟相机业务进程启动;
310.在所述虚拟相机业务进程启动后,控制所述本地相机进程与所述虚拟相机业务进程建立用于传输数据的绑定关系。
311.作为本技术的一个示例,所述处理器2010还被配置为:
312.若通过协同服务进程接收到使能通知,则通过所述协同服务进程触发虚拟相机适配进程加载,所述协同服务进程在所述第一电子设备与所述第二电子设备连接后启动,所述使能通知用于指示在视频通话中预使用所述第二电子设备的相机采集视频帧,所述虚拟相机适配进程用于对所述协同服务进程与所述虚拟相机业务进程之间传输的数据进行转换处理;
313.在所述虚拟相机适配进程加载完成后,控制所述协同服务进程与所述虚拟相机适配进程建立用于传输数据的绑定关系。
314.作为本技术的一个示例,所述处理器2010还被配置为:
315.在所述虚拟相机业务进程加载完成后,控制所述虚拟相机业务进程扫描所述虚拟相机适配进程的加载情况;
316.若通过所述虚拟相机业务进程扫描到所述虚拟相机适配进程已完成加载,则控制所述虚拟相机业务进程与所述虚拟相机适配进程建立用于传输数据的绑定关系。
317.作为本技术的一个示例,所述处理器2010还被配置为:
318.通过所述虚拟相机适配进程向所述协同服务进程发送使能成功通知,所述使能通
过通知用于指示已建立起所述协同服务进程与所述虚拟相机业务进程之间传输数据的通道;
319.通过所述协同服务进程开始接收所述视频帧;
320.所述通过所述虚拟相机业务进程获取所述视频帧,包括:
321.通过所述虚拟相机业务进程,使用所述通道,从所述协同服务进程中获取所述视频帧。
322.作为本技术的一个示例,所述处理器2010还被配置为:
323.若通过所述本地相机进程接收到所述第一应用的相机关闭指令,则通过所述本地相机进程向所述虚拟相机业务进程发送所述相机关闭指令,所述相机关闭指令用于指示通过所述虚拟相机业务进程终止接收所述视频帧;
324.控制所述本地相机进程解除与所述虚拟相机业务进程之间的绑定关系。
325.作为本技术的一个示例,所述处理器2010还被配置为:
326.在通过所述虚拟相机业务进程终止接收所述视频帧的情况下,控制所述虚拟相机业务进程解除与所述虚拟相机适配进程之间的绑定关系;
327.通过所述虚拟相机适配进程向所述协同服务进程发送去使能指令,所述去使能指令用于指示所述协同服务进程解除与所述虚拟相机适配进程之间的绑定关系;
328.控制所述协同服务进程解除与所述虚拟相机适配进程之间的绑定关系。
329.在本技术实施例中,由于虚拟相机业务进程加载需要占用一定的存储空间,所以本技术实施例中只有在视频通话中且开启相机虚拟化业务的情况下才加载该虚拟相机业务进程,也即只有在使用的时候才会加载该虚拟相机业务进程,不使用时不加载,在非相机虚拟化业务场景中不会占用大量的内存,节省一定的内存空间,避免内存资源浪费问题。
330.需要说明的是:上述实施例提供的获取视频帧的装置在获取视频帧时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
331.上述实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术实施例的保护范围。
332.上述实施例提供的获取视频帧的装置与获取视频帧的方法实施例属于同一构思,上述实施例中单元、模块的具体工作过程及带来的技术效果,可参见方法实施例部分,此处不再赘述。
333.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,比如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(比如:同轴电缆、光纤、数据用户
线(digital subscriber line,dsl))或无线(比如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(比如:软盘、硬盘、磁带)、光介质(比如:数字通用光盘(digital versatile disc,dvd))或半导体介质(比如:固态硬盘(solid state disk,ssd))等。
334.以上所述为本技术提供的可选实施例,并不用以限制本技术,凡在本技术的揭露的技术范围之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1