Multi-device video calling experience

JP2025507922A5Pending Publication Date: 2026-01-06QUALCOMM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024552263
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-03-04
Filing Date
2023-01-03
Publication Date
2026-01-06

AI Technical Summary

Technical Problem

Existing video calling systems face challenges in maintaining stable video call experiences due to network issues and camera placement problems, which can result in dropped frames, exclusion of participants from the camera's field of view, and inclusion of unwanted distractions.

Method used

A system and method for video call experiences that involve establishing a video call, displaying previews of multiple camera feeds, allowing users to select which objects or participants to include or exclude from the video frame, and generating a single frame that combines the selected camera feeds to ensure all participants are visible and included in the video call.

Benefits of technology

This solution enhances video call stability and participant visibility by allowing for real-time selection and combination of camera feeds, mitigating network issues and camera placement problems, and providing a seamless multi-participant video call experience.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Systems, methods, and computer-readable media for video calling are provided. An exemplary method can include establishing a video call between a first device and a second device, displaying a preview of a first camera feed and a second camera feed, where the first camera feed includes a first video frame captured by a first image capture device of the first device and a second video frame captured by a second image capture device of the first device, the first video frame and the second video frame being visually separated in the preview, receiving a selection of a set of objects depicted in the preview, and generating a single frame depicting the set of objects based on the first camera feed and the second camera feed.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] TECHNICAL FIELD The present disclosure relates generally to video calling systems. For example, aspects of the present disclosure relate to a video calling experience for multiple targets on one device. [Background technology]

[0002] Telephone systems have become a ubiquitous tool for remote users to communicate. Today, telephone systems typically support several common features such as voice communication, video communication, call waiting, call hold, and conferencing, among others. In general, the performance quality of a video call may depend on the quality of the network connection used to establish and execute the video call. However, even though faster and more reliable communication protocols and technologies are becoming increasingly common and available, network problems still occur frequently. For example, the stability / continuity of video calls is often hindered by network problems. Network problems may result in frames being dropped during a call (e.g., a call between two users, a conference call, etc.), which may cause the call to be interrupted and force the users on the call to wait for the problem to be resolved in order to continue the call.

[0003] In addition to connection / network issues, the placement of a camera used during a video call can cause issues, such as a call participant being outside the field of view (FOV) of the camera and therefore excluded from the video frames captured by the camera, thereby preventing the user on the other end of the call from seeing that call participant. As another example, the placement of the camera may cause the camera to capture other users or distractions that are unintentionally captured and included in the video frames transmitted during the call. Summary of the Invention

[0004] A system, method, and computer-readable medium for a video calling experience for multiple objects on a device are disclosed. According to at least one example, a method for a video calling experience for multiple objects on a device is provided. The method can include establishing a video call between a device and a remote device, displaying a preview of a first camera feed and a second camera feed, the first camera feed including a first video frame captured by a first image capture device of the device and a second video frame captured by a second image capture device of the device, the first video frame and the second video frame being visually separated in the preview, receiving a selection of a set of objects depicted in the preview, and generating a single frame depicting the set of objects based on the first camera feed and the second camera feed.

[0005] According to at least one example, an apparatus is provided for a video calling experience for multiple objects on the apparatus, the apparatus may include a memory and one or more processors coupled to the memory, the one or more processors configured to: establish a video call between the device and a remote device; display a preview of a first camera feed and a second camera feed, the first camera feed including a first video frame captured by a first image capture device of the device and a second video frame captured by a second image capture device of the device, the first video frame and the second video frame being visually separated in the preview; receive a selection of a set of objects depicted in the preview; and generate a single frame depicting the set of objects based on the first camera feed and the second camera feed.

[0006] According to at least one example, another apparatus is provided for a video calling experience for multiple objects on a device. The apparatus may include: establishing a video call between the device and a remote device; displaying a preview of a first camera feed and a second camera feed, the first camera feed including a first video frame captured by a first image capture device of the device and a second video frame captured by a second image capture device of the device, the first video frame and the second video frame being visually separated in the preview; receiving a selection of a set of objects depicted in the preview; and generating a single frame depicting the set of objects based on the first camera feed and the second camera feed.

[0007] According to at least one example, a non-transitory computer-readable medium for a video calling experience for multiple objects on a device is provided. The non-transitory computer-readable medium can include instructions that, when executed by one or more processors, cause the one or more processors to establish a video call between the device and a remote device, display a preview of a first camera feed and a second camera feed, the first camera feed including a first video frame captured by a first image capture device of the device and a second video frame captured by a second image capture device of the device, the first video frame and the second video frame being visually separated in the preview, receive a selection of a set of objects depicted in the preview, and generate a single frame depicting the set of objects based on the first camera feed and the second camera feed.

[0008] In some aspects, the methods, non-transitory computer-readable media, and apparatus described above may capture a first video frame from a first image capture device and a second video frame from a second image capture device.

[0009] In some examples, the first video frame and the second video frame depict a plurality of objects comprising the set of objects, and selecting the set of objects can include a first input selecting the set of objects as a subset of the plurality of objects to be included in the single frame, and / or a second input selecting one or more objects of the plurality of objects to be excluded from the single frame. In some examples, the one or more objects can be different from the set of objects.

[0010] In some examples, generating the single frame may include excluding one or more objects of the plurality of objects from the single frame based on the first input and / or the second input, and transmitting the single frame to a remote device. In some examples, excluding one or more objects from the single frame may include removing the one or more objects from the preview, the first video frame, the second video frame, and / or the single frame.

[0011] In some aspects, generating the single frame can include combining at least a portion of the first video frame and at least a portion of the second video frame into the single frame. In some examples, combining at least a portion of the first video frame and at least a portion of the second video frame into the single frame can include disposing at least a portion of the first video frame and at least a portion of the second video frame within respective frame regions of the single frame. In some examples, each frame region can depict a respective object from the set of objects.

[0012] In some examples, the first video frame can include one or more first objects from the set of objects, and the second video frame can include one or more second objects from the set of objects. In some aspects, generating the single frame can include determining a respective position of each of the one or more first objects in the first video frame based on first metadata associated with the first video frame, determining a respective position of each of the one or more second objects in the second video frame based on second metadata associated with the second video frame, and determining a first portion of the first video frame depicting the one or more first objects and a second portion of the second video frame depicting the one or more second objects based on the respective positions of each of the one or more first objects in the first video frame and the respective positions of each of the one or more second objects in the second video frame. In some examples, the first metadata can include coordinates associated with the one or more first objects. In some examples, the second metadata can include coordinates associated with the one or more second objects.

[0013] In some examples, generating the single frame can include combining a first portion of the first video frame and a second portion of the second video frame into the single frame. In some cases, combining the first portion of the first video frame and the second portion of the second video frame into the single frame can include disposing the first portion of the first video frame and the second portion of the second video frame within respective frame regions of the single frame. In some examples, the first region of the respective frame regions depicts one or more first objects and the second region of the respective frame regions depicts one or more second objects.

[0014] In some examples, generating the single frame can include rendering at least a portion of the first video frame and at least a portion of the second video frame in the single frame. In some cases, at least a portion of the first video frame and at least a portion of the second video frame are visually separated. In some cases, at least a portion of the first video frame and at least a portion of the second video frame are visually separated by a visual marker. In some examples, the visual marker can include a line, an outline, a box, a highlight, a label, a color, a shade, and / or a visual indicia.

[0015] In some aspects, the methods, non-transitory computer-readable media, and apparatus described above can determine that one or more objects are within a field of view (FOV) of a first image capture device and trigger the first image capture device to capture a first video frame. In some examples, the first video frame depicts the one or more objects.

[0016] In some aspects, the methods, non-transitory computer-readable media, and apparatus described above may track one or more objects based on one or more video frames captured by the first image capture device, determine based on the tracking that the one or more objects are no longer within the FOV of the first image capture device, and determine to stop transmitting video data from the first image capture device to the remote device based on determining that the one or more objects are no longer within the FOV of the first image capture device.

[0017] In some aspects, the methods, non-transitory computer-readable media, and apparatus described above may, in response to determining that the at least one object is within the FOV of the second image capture device, capture a third video frame depicting the at least one object via the second image capture device and transmit the third video frame to a remote device.

[0018] In some aspects, the devices described above may include one or more sensors. In some examples, the devices described above may include a mobile phone, a conference system, a telephone system, a wearable device, a display device, a mobile computer, a head mounted display, and / or a camera.

[0019] In some aspects, one or more of the devices described above may be, be part of, or include an Internet of Things (IoT) device, and / or an Extended Reality (XR) device (e.g., a Virtual Reality (VR) device, an Augmented Reality (AR) device, or a Mixed Reality (MR) device). In some examples, the device may include, or be part of, a vehicle, a mobile device (e.g., a mobile phone or a so-called "smartphone" or other mobile device), a wearable device, a personal computer, a laptop computer, a tablet computer, a server computer, a robotics device or system, an aviation system, or other device. In some aspects, the device includes an image sensor (e.g., a camera) or multiple image sensors (e.g., multiple cameras) for capturing one or more images. In some aspects, the device includes one or more displays for displaying one or more images, notifications, and / or other displayable data. In some aspects, the device includes one or more speakers, one or more light emitting devices, and / or one or more microphones. In some aspects, the devices described above may include one or more sensors. For example, the one or more sensors may include at least one of a light sensor, an audio sensor, a motion sensor, a temperature sensor, a humidity sensor, an image sensor, an accelerometer, a gyroscope, a pressure sensor, a touch sensor, and a magnetometer. In some cases, the one or more sensors can be used to determine a location of the device, a state of the device, and / or for other purposes.

[0020] This Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used independently to determine the scope of the claimed subject matter, which subject matter should be understood by reference to the entire specification of this patent, any or all drawings, and appropriate portions of each claim.

[0021] The above, together with other features and aspects, will become more apparent with reference to the following specification, claims, and accompanying drawings.

[0022] Illustrative examples of the present application are described in detail below with reference to the following figures: [Brief description of the drawings]

[0023] [Figure 1A] FIG. 2 illustrates an exemplary video call between users, in accordance with some examples of the present disclosure. [Figure 1B] FIG. 2 illustrates an exemplary video conference between users, according to some examples of the present disclosure. [Diagram 2] 1 illustrates an example of an endpoint capable of conducting a video calling experience, according to some examples of the present disclosure. [Diagram 3] FIG. 2 illustrates an example pipeline for providing an example video calling experience, in accordance with certain examples of the present disclosure. [Figure 4] 1 illustrates an example video call interface depicting merged camera frames rendered at a receiving endpoint, according to some examples of the present disclosure. [Diagram 5] 1 illustrates another example video calling interface depicting merged camera frames rendered at a receiving endpoint, according to some examples of the present disclosure. [Figure 6A] 1 illustrates an example user interface depicting an example preview generated by a sending endpoint, according to some examples of the present disclosure. [Figure 6B]1 illustrates an example user interface depicting a merged frame received from a transmitting endpoint, according to some examples of the present disclosure. [Figure 7] 1 is a flowchart illustrating an example process for generating video frames for a video call, according to some examples of the present disclosure. [Figure 8] 1 illustrates an exemplary computing device architecture, according to some examples of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0024] Specific aspects of the present disclosure are provided below. As will be apparent to those skilled in the art, some of these aspects can be applied independently, and some of them can be applied in combination. In the following description, for the purposes of explanation, specific details are set forth to provide a thorough understanding of the aspects of the present application. However, it will be apparent that the various aspects can be practiced without these specific details. The figures and descriptions are not intended to be limiting.

[0025] The following description provides only exemplary embodiments and is not intended to limit the scope, applicability, or configuration of the present disclosure. Rather, the following description of exemplary embodiments provides those skilled in the art with an enabling description for implementing the exemplary embodiments. It should be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the present application as set forth in the appended claims.

[0026] As previously described, the quality, reliability, performance, etc. of a video call can be adversely affected by several things, such as network issues, camera placement, camera performance, etc. In one illustrative example, during a video call between user A and user B, user C walks into user B's room / space and wants to be part of the video call conversation between user A and user B. In this example, user B must then accommodate user C by ensuring that user C is within the field of view (FOV) of a particular camera (e.g., a front-facing camera) on user B's device such that both user B and user C can be captured by recorded video from the camera of user B's device. Alternatively, user B can turn on (e.g., activate and / or utilize for capture, recording, and / or transmission purposes) or transition to an additional camera (e.g., a rear-facing camera) on user B's device, in which case only user C is part of the video and can be seen by user A on the other end of the video call. This can be detrimental to User A's video calling experience because User A cannot have an intended conversation with both User B and User C, whereby both User B and User C are visible to User A at the same time (e.g., in the same video frame or in video frames displayed simultaneously during the video call).

[0027] As another example, during a video call between user A and user B, if user A wants to move around while user A's device is held in a stationary position, user A may no longer be within the FOV of a particular camera on user A's device. Thus, user A will not be captured in the recorded video frames sent to user B, and user B will not be able to see user A in the video from the call. When user A moves from the FOV of a first camera (e.g., the FOV of a front-facing camera) to the FOV of a second camera (e.g., the FOV of a rear-facing camera on user A's device), user A must manually switch the camera to the second camera for the video call so that user A is captured by the video frames from the second camera. Alternatively, user A can return to an area within the FOV of the first camera that should be captured by the recorded video frames from the first camera on user A's device. For example, if User A moves completely out of the FOV of all cameras (e.g., front and back cameras) on User A's device but desires to continue the conversation (e.g., using a headset), User A will be able to continue the audio conversation but will not be captured in the video frames recorded by User A's device and will therefore be invisible to any user on the other end of the video call (e.g., User B).

[0028] Described herein are systems, apparatuses, processes (also referred to as methods), and computer-readable media (collectively referred to herein as "systems and techniques") for an improved video calling experience for multiple subjects participating in a video call using the same device. In some examples, the systems and techniques described herein can turn on (and / or keep on) multiple cameras (e.g., front and back cameras) of a device shared by multiple users during a video call to enable the cameras (e.g., front and back cameras) to capture both users on the video call from the same device. In some examples, the device can track any of the users and make any adjustments to ensure that both users are captured by the recorded video frames even if one or more of the users move during the video call.

[0029] In some examples, the systems and techniques described herein can use lower power face tracking modes (e.g., versus higher power face tracking modes available in devices that use higher power resources and / or implement higher power / complexity software components) to track users during a video call. To illustrate, in the previous example where user C walks into user B's room / space during a video call and wants to join the video call, the system can capture frames of both user B and user C, merge or combine the frames depicting user B and user C into a single frame, and send the single frame to user A's device on the other end of the video call. For example, the system can position the frames of user B and user C such that one frame (e.g., the frame capturing user B) is above the other frame (e.g., the frame capturing user C). The system can then send the resulting frame to user A's device (e.g., as part of the video call). In some examples, the system can stitch the frames into a single frame to accommodate both subjects (e.g., user B and user C) joining the video call from the same device.

[0030] In some cases, if two objects are present within the FOV of a first camera (e.g., a rear-facing camera) of user B's device, the system can separate frames from the first camera and transmit them as separate frames stitched together with frames capturing objects within the FOV of a second camera (e.g., a front-facing camera) of user B's device. For example, if user C and user D move within the FOV of the first camera (e.g., a rear-facing camera) of the device while user B is within the FOV of the second camera (e.g., a front-facing camera), user B will generally need to switch the video from the second camera to the first camera to show user C and user D. In this exemplary scenario, if user C and user D are far away (e.g., user C and user D are not within the FOV of a particular camera), some facial features of user C and user D may not be captured and displayed in the video call. However, the systems and techniques described herein can separate frames depicting user C and user D into separate characters, as described further herein.

[0031] In some cases, a user using a device to participate in a video call can invoke (e.g., trigger, request, initiate, etc.) a camera switching video call user interface (UI). The device's multiple cameras (e.g., front and back cameras) may be turned on and the captured frames can be sent to a processor (e.g., digital signal processor, etc.) of the device, which can then send the captured frames to a display for the sender to preview the frames (e.g., using the camera switching invocation UI). In some examples, the device can send feeds from both cameras in a separated manner (e.g., separated by lines, characters, objects, shapes, etc.). The system can implement a frame separator that separates the captured users (or the users' faces) and shows them on the preview UI.

[0032] In some examples, the sender (e.g., a user sending a video feed to the other user(s) on the video call) can provide user input to the system indicating a selection of which users or faces the sender wants to include in a given frame and / or send a preview to a particular side or area of ​​the preview UI. In some cases, the system can output (e.g., display, play audio, or otherwise output) a permission message asking the sender to confirm the entered users or faces. Image data corresponding to the selected users or faces can then be provided to an encoder for encoding and transmission through the video call pipeline to the receiver. The receiver can receive video frames depicting the sender as well as additional users participating in the video call via the same device as the sender.

[0033] In some examples, the first camera (e.g., a front-facing camera) and the second camera (e.g., a rear-facing camera) feeds can be conditioned using a conditioned component. For example, the conditioned component can reduce the workload of the encoder by checking the frames for a subject and sending the camera feed only when the subject is present. In some cases, the camera feed can include a timestamp, buffer information, and / or metadata. In some examples, the metadata can include face coordinates and / or face coordinate metadata tags. The face coordinates can be used to separate faces in a video call. Before using the video feed, the system can invoke a user input pipeline to determine which faces the user wants to send from the user's available FOV on the camera of the user's device. This information can be relayed to the conditioned and the frame separator. The conditioned can conditioned the video call by filtering out faces that the user does not want to include in the call, and the frame separator can reassemble multiple frames into a single frame depending on the number of faces included. In some examples, two faces can be arranged or rearranged within a single frame, three faces can be arranged such that one face is on a first region (e.g., the top region) and the other two faces are in one or more other regions (e.g., the bottom region or any other arrangement), and so on.

[0034] In some cases, the systems and techniques described herein may implement an object tracking mode. For example, the system may transmit frames only when the user is present within the FOV of any / any camera of the user's device (e.g., a first camera such as a front-facing camera, a second camera such as a rear-facing camera, etc.). This may involve object tracking. When the system detects facial features, the camera may stop transmitting frames from one camera (e.g., a first camera such as a front-facing camera) when the user moves within the FOV of another camera (e.g., a second camera such as a rear-facing camera). Thus, the system may transmit frames captured from one camera when the user is within the FOV of that camera and transmit frames captured by a different camera when the user moves within the FOV of the different camera.

[0035] 1A illustrates an exemplary video call 100 between a user 112 and a user 114. The video call 100 may include and / or support one or more calling features, such as, for example, audio, video, call hold, call waiting, conferencing, interactive voice response (IVR), dual-tone multi-frequency signaling (DTMF), screen sharing, side chat, and / or any other calling feature.

[0036] A user 112 can communicate with a user 114 on a video call 100 via an endpoint 102, and a user 114 can communicate with a user 112 via an endpoint 104. Each of the endpoints 102 and 104 may include any computing device or telephone system, such as, for example, a smartphone, a smart wearable device (e.g., a smart watch, smart goggles), a smart television, a gaming system, a tablet computer, an IP (Internet Protocol) phone, a laptop computer, a car phone, a desk phone, an IoT (Internet of Things) device, etc.

[0037] The endpoints 102 and 104 may support video and voice / audio. In some cases, the endpoints 102 and 104 may also support other features such as, for example, but not limited to, face detection / recognition, object detection / recognition, tracking, DTMF, automatic speech processing (ASR), keyword detection, active speaker detection, and / or any other call and / or image processing functionality. In some examples, the endpoints 102 and 104 may support one or more other call and / or multimedia functionality such as, for example, conference calling, call waiting, voicemail, and / or any other call or multimedia functionality.

[0038] Endpoints 102 and 104 can establish the video call 100 over a network 110. Network 110 can represent one or more public and / or private networks. Network 110 can include, for example, a public switched telecommunications network (PTSN), a wireless network (e.g., a cellular network, a wireless local area network, a satellite network, a microwave network, etc.), an Internet Protocol (IP) network, a call provider network, a cloud network hosting calling and / or conferencing services, an integrated services digital network (ISDN), a virtual network, a telephone operator network, a landline network, and / or any other type of network.

[0039] 1B illustrates an exemplary conference call 120 between users 112-116. The conference call 120 may include and / or support one or more calling features, such as, for example, audio, video, call hold, voice messaging, call waiting, IVR, DTMF, screen sharing, call recording, and / or any other calling features described herein. In some examples, the conference call 120 may include and / or support other features, such as, for example, content sharing, instant messaging, desktop or screen sharing, chat, presence sharing, object detection / recognition, face detection / recognition, tracking, image processing, and / or other types of media and communication.

[0040] Users 112-116 can communicate with each other on a conference call 120 using their respective endpoints 102-106. Each of the endpoints 102-106 can include any computing device or telephone system and can support a number of calling features, such as those previously described with respect to FIGURE 1A. The endpoints 102-106 can be connected to the conference call 120 via a network 110. In some examples, the conference call 120 can be hosted and managed by a conference service 122.

[0041] The conference service 122 can manage various aspects of the conference call 120, such as content, communications, data, state, settings, features, routing, bridging, etc. In some examples, the conference service 122 can host concurrent conferences, persistent conferences, and any other type or combination of conferences. The conference service 122 can host one or more conferences at any time or period (e.g., an hour, a day, a week, a month, etc.), with each participant connecting via their endpoint from a different geographic location, network, etc. In some cases, the number and / or type of participants in the conference call 120 can fluctuate and may change dynamically. For example, the number of participants in the conference call 120 can change during the conference call 120 as participants may dynamically join or leave the conference.

[0042] The conference service 122 may include one or more servers, bridges, server applications, cloud services, routers, conference bridges, gateways, multipoint control units, conference applications, etc. Additionally, the infrastructure of the conference service 122 may vary in different deployments. For example, the conference service 122 may be deployed via an on-premise conference infrastructure for an organization or enterprise, as a cloud-based service hosted on one or more cloud computing environments or data centers, in a hybrid infrastructure including on-premise conference infrastructure and cloud-based services, etc. In some cases, the conference service 122 may be a cloud-based conference service or infrastructure.

[0043] The conference service 122 may support different conference clients / endpoints and technologies. For example, the conference service 122 may support SIP (Session Initiation Protocol) endpoints, H.323 videoconferencing endpoints, video participants, audio-only participants, VoIP (Voice over Internet Protocol) endpoints, PSTN endpoints, etc. In some examples, the endpoints 102-106 may execute specific software that allows the users 112-116 to participate in a conference call 120 hosted by the conference service 122. For example, the users 112-116 may use a conference application running on the endpoints 102-106 to join and participate in a conference call 120 hosted by the conference service 122. The conference application may function as a conference client on the endpoints 102-106. The conference application may be a native client application specifically configured for conferences hosted by the conference service 122, a web browser or browser plug-in / component / application with specific functionality for web conferencing, a client application supporting one or more conferencing technologies or protocols, or any other software application suitable for conferencing.

[0044] In some examples, the endpoints 102-106 and / or the conferencing applications on the endpoints 102-106 may include various tools and capabilities (including software and / or hardware) for conferencing, such as network capabilities, video capabilities, audio capabilities, compression capabilities, NAT / firewall traversal capabilities, one or more codecs, etc. Non-limiting examples of technologies that may be used by the endpoints 102-106 and / or the conferencing applications on the endpoints 102-106 to join, create or establish, manage, or support a conference call 120 hosted on the conferencing service 122 include SIP, H.263, H.264, H.264 High Profile, H.264 SVC (SSL VPN Client), H.239, H.320, H.323 SIP, VoIP, G.711, G.722, G.729, T.120, VP8, RTP, TCP / IP, HD Video Conferencing, Remote Frame Buffer Protocol, Real Time Protocol, etc.

[0045] 2 illustrates an example of an endpoint 102 capable of implementing the video calling aspects described herein. The endpoint 102 may include any computing device or telephone system capable of establishing a video call. For example, the endpoint 102 may include a smartphone, a smart wearable device (e.g., a smart watch, smart goggles, etc.), a smart television, a gaming system, a tablet computer, an IP phone, a laptop computer, a car phone, a desk phone, an IoT device, an XR device, or any other communication device capable of participating in a video call. The endpoint 102 may support video and voice / audio, as further described herein.

[0046] In the example shown in Figure 2, the endpoint 102 may include one or more communication components 202, one or more computing components 204, one or more input devices 206, one or more output devices 208, a camera sensor 210, storage 212, an image processing system 214, a frame adjuster 216, a frame separator 218, a video coder (e.g., a video encoder and / or a video decoder) 220, and a rendering system 222. Although the endpoint 102 is shown as including certain components, one skilled in the art will understand that the endpoint 102 may include more or less (and / or different) components than those shown in Figure 2. For example, the endpoint 102 may, in some examples, include one or more memory devices (e.g., RAM, ROM, cache, and / or the like), one or more cameras, and / or any other hardware or processing devices not shown in Figure 2. Illustrative examples of computing devices and hardware components that may be implemented by the endpoint 102 are described below with respect to Figure 8.

[0047] In some examples, the one or more communication components 202 may include a cellular antenna for communicating over a cellular network, a WIFI antenna for communicating over a wireless local area network (WLAN), a network interface for connecting the endpoint 102 to a data network (e.g., a wired and / or wireless network), and / or an interface component for connecting the endpoint 102 to a telephone landline. In some cases, the one or more communication components 202 may also include other antennas or communication interfaces, such as, for example, a Bluetooth antenna, a GPS antenna, and / or any other suitable hardware components for transmitting and / or receiving wired and / or wireless signals. The endpoint 102 may establish and participate in video calls (e.g., 100, 120) using the one or more communication components 202. The endpoint 102 may also transmit and receive data to and from other devices using the one or more communication components 202.

[0048] The one or more computing components 204 may include a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), an image signal processor (ISP), an application specific integrated circuit (ASIC), a controller device, and / or any other processing device. The one or more computing components 204 may perform various operations and may manage / control other components of the endpoint 102, including one or more communication components 202, one or more input devices 206, one or more output devices 208, a camera sensor 210, storage 212, etc. The computing components 204 may implement an image processing system 214, a frame adjuster 216, a frame separator 218, a video coder 220, and / or a rendering system 222. In some examples, the computing components 204 may also implement one or more other processing engines.

[0049] The one or more input devices 206 may include a keypad, a touch screen, a microphone, an image sensor, a controller, a keyboard, a pointing device, and / or any other input device capable of receiving user input in any input modality (e.g., mechanical movement, audio, visual, etc.). A user may use the one or more input devices 206 to manage a call (e.g., initiate a call, end a call, place a call on hold, enable one or more components of the endpoint 102, activate one or more features / functions, etc.), interact with the endpoint 102, provide input, and activate and / or manage one or more features and / or controls, such as a frame / subject selection feature, a frame placement / composition feature, a tracking feature, an object detection feature, a hold feature, a mute function, a record function, a volume control, endpoint settings, call settings, etc.

[0050] The one or more output devices 208 can include a display. In some examples, the one or more output devices 208 can also include speakers, projectors, and / or any component capable of outputting data. For example, in some cases, the one or more output devices 208 can include a touch screen capable of displaying content and receiving user input.

[0051] The endpoint 102 may implement a camera sensor 210 to capture images / frames. For example, the endpoint 102 may implement a camera sensor 210 to capture video frames for a video call. In some examples, the camera sensor 210 may include one or more front camera sensors and one or more back / rear camera sensors. In other examples, the camera sensor 210 may include any other multi-camera arrangement / configuration. In some cases, the endpoint 102 may include one or more additional sensors, such as, for example, but not limited to, an inertial measurement unit (IMU), a motion detection sensor, a light sensor, an audio sensor, an accelerometer, a gyroscope, a magnetometer, an altimeter, a tilt sensor, a light detection and ranging (LIDAR) sensor, a radio detection and ranging (RADAR) sensor, a proximity sensor, and / or any other sensor. In some cases, the camera sensor 210 and / or additional sensors can be used to detect objects, detect the position of objects, detect one or more conditions (e.g., light, motion, etc.), capture data (e.g., image data, audio, etc.), measure one or more characteristics of an object or environment (e.g., orientation, shape, size, condition, etc.), collect certain types of measurements, etc.

[0052] Storage 212 may include any storage device or devices for storing data, such as image data, files, software, video, text data, messages, audio data, device / component profiles, user profiles, settings, user input, network data, logs, etc. Additionally, storage 212 may store data from any of the components of endpoint 102. For example, storage 212 may store data from one or more communication components 202, one or more computing components 204, one or more input devices 206, one or more output devices 208, camera sensor 210, image processing system 214, frame adjuster 216, frame separator 218, video coder 220, and rendering system 222.

[0053] Image processing system 214 may perform any image processing task. In some examples, image processing system 214 may process frames captured by camera sensor 210. In some cases, image processing system 214 may perform object detection to detect one or more targets (e.g., faces, users, animals, backgrounds, structures, etc.) depicted in the frame(s), object tracking to track one or more targets depicted in the frame(s), image stylization, downscaling / upscaling, chroma keying, image segmentation, filtering, demosaicing, denoising, interpolation, blurring, cropping, color correction, image enhancement, etc.

[0054] The frame adjuster 216 can adjust the video call by removing frames captured by the camera sensor 210 and / or portions of frames captured by the camera sensor 210. For example, the frame adjuster 216 can remove one or more faces depicted in one or more frames captured by the camera sensor 210. In some examples, the endpoint 102 can present the user with a preview of objects (e.g., the user, faces, etc.) depicted in the frames captured by the camera sensor 210. The user can select from the preview any objects that the user wants to exclude (and / or include) in frames transmitted to another endpoint participating in the video call with the endpoint 102. The frame adjuster 216 can then remove from the frames captured by the camera sensor 210 any objects that the user does not want included in frames transmitted to the other endpoint.

[0055] In some cases, frame adjuster 216 may use the metadata to determine the location of one or more objects in one or more frames captured by camera sensor 210, and use the location of the one or more objects to remove any objects that the user wants excluded from the frames transmitted to the other endpoint. In some examples, the metadata may include the coordinates of any faces depicted in the frame(s) captured by camera sensor 210.

[0056] The frame separator 218 can reassemble multiple frames captured by the camera sensor 210 into a single frame. For example, the frame separator 218 can merge / combine frames from the camera sensor 210 into a single frame for transmission to another endpoint (e.g., during a video call). In some examples, the frame separator 218 can place portions / regions of frames into a single frame and manage the arrangement of the portions / regions within the single frame. For example, the frame separator 218 can merge / combine a region of a frame capturing a face with another region of another frame capturing a face into a single frame depicting two faces. The frame separator 218 can arrange the faces within the single frame according to any arrangement. Illustratively, the frame separator 218 can arrange the faces to appear side-by-side within a single frame (e.g., a merged / combined frame), one above the other within a single frame, in picture-in-picture, or in any other arrangement / configuration.

[0057] The video coder 220 may perform video coding operations on frames captured by the camera sensor 210. For example, the video coder 220 may perform video encoding, video decoding, or both video encoding and video encoding. The rendering system 222 may render data on a display device of the endpoint 102. For example, the rendering system 222 may render frames captured by the camera sensor 210, frames received from another endpoint, a preview of frames captured by the camera sensor 210, a user interface, and / or any other data further described herein.

[0058] In some examples, the endpoint 102 can turn on (and / or keep on) the camera sensor 210 (e.g., can turn on the front and back camera sensors). In some cases, the camera sensor 210 can be used / shared by multiple users during a video call to allow the camera sensor 210 to capture multiple users on a video call from the same device (e.g., the endpoint 102). In some examples, the endpoint 102 can track any of the users and make any adjustments to ensure that the users are depicted by the video frames captured by the camera sensor 210 even if one or more of the users move during the video call.

[0059] In some examples, the endpoint 102 can use a lower power face tracking mode (e.g., versus a higher power face tracking mode available in an endpoint 102 that uses higher power resources and / or implements higher power / complexity software components) to track users during a video call. To illustrate, if a first user uses the endpoint 102 to make a video call with a second user on another endpoint, and a third user who walks into the first user's room / space during the video call wants to join the video call, the endpoint 102 can capture frames of the first user and the third user (e.g., via the camera sensor 210), merge / combine the frames depicting the first user and the third user into a single frame, and transmit the single frame to the endpoint of the second user. The second user can then see the first user and the third user in the single frame transmitted by the endpoint 102. For example, the endpoint 102 can take the frames of the first user and the third user, arrange them so that one frame is above or next to the other (or any other arrangement), and send the resulting frame to the endpoint of the second user (e.g., as part of a video call). In some examples, the endpoint 102 can stitch the frames of the first user and the third user into a single frame to accommodate both users participating in a video call from the same device.

[0060] In some cases, when multiple users are within the FOV of one of the camera sensors 210 (e.g., back / rear camera sensor), the endpoint 102 can separate frames from that camera sensor and transmit them as separate frames stitched together with frames capturing users within the FOV of another of the camera sensors 210 (e.g., front camera sensor). For example, if a third user and a fourth user are within or move to the FOV of the back camera sensor of the endpoint 102 while a first user is within the FOV of the front camera sensor of the endpoint 102, the first user will generally need to switch video from the front camera sensor to the back camera sensor to show the third and fourth users in frames transmitted during the video call. In this example scenario, the endpoint 102 can separate frames depicting the third and fourth users into separate characters, as described further herein.

[0061] In some cases, a user using the endpoint 102 to participate in a video call can invoke (e.g., trigger, request, initiate, etc.) a camera switching video call user interface (UI). The camera sensor 210 of the endpoint 102 can be turned on and can send captured frames to the computing component 204 (e.g., to a processor such as a digital signal processor), which is then sent to a display for the user to preview the frames. In some examples, the endpoint 102 can send a feed from the camera sensor 210 in a separated manner (e.g., separated by lines, characters, letters, shapes, etc.). The endpoint 102 can implement a frame separator 218 to separate captured faces and show them on the preview UI.

[0062] In some examples, the sender (e.g., a user sending a video feed to the other user(s) on the video call) can select the faces for which the sender wants to send a preview of a particular side or area of ​​the UI and receive a permission message asking the sender to confirm the entered faces. The selected faces are then sent to the video coder 220 and conveyed through the video call pipeline to the receiver. The receiver can receive, via endpoint 102, video call frames depicting the sender as well as additional users participating in the video call.

[0063] In some examples, the camera sensor feed may be adjusted using a frame adjuster 216, which may reduce the workload of the video coder by checking the frames for objects and sending the camera sensor feed only when the object is present. In some cases, the camera sensor feed may include a timestamp, buffer information, and / or metadata. In some examples, the metadata may include coordinates of the target (e.g., face, user, etc.) and / or coordinate metadata tags of the target. The coordinates may be used to separate targets (e.g., user, face, etc.) in a video call. Before using the video feed, the endpoint 102 may invoke a user input pipeline to determine which targets the user wants to send from the targets within the FOV of the camera sensor 210. This information may be relayed to the frame adjuster 216 and the frame separator 218. The frame adjuster 216 may filter out targets (e.g., user, face, etc.) that the user of the endpoint 102 does not want to include in the video call, such as targets not selected by the user for inclusion or targets selected by the user for exclusion. The frame separator 218 may reassemble the frames into a single frame depending on the number of targets included.

[0064] In some cases, the endpoint 102 may implement an object tracking mode. For example, the endpoint 102 may transmit frames only when a user is present within the FOV of either of the camera sensors 210. This may involve object tracking. When the endpoint 102 detects a facial feature, the endpoint 102 may stop transmitting frames from one camera sensor (e.g., a front camera sensor) when the user moves within the FOV of another camera sensor (e.g., a back / rear camera sensor). Thus, the endpoint 102 may transmit frames captured from one camera sensor when the user is within the FOV of that camera sensor and transmit frames captured by a different camera sensor when the user(s) move within the FOV of the different camera sensor.

[0065] 3 is a diagram illustrating an example pipeline 300 for providing an example video calling experience, according to some examples of the present disclosure. In this example, the pipeline 300 includes a preview pipeline 330, a frame management pipeline 340, and a video call pipeline. In general, the preview pipeline 330 can present a user with a frame captured for a video call and a preview of targets (e.g., a user, a face, etc.) shown in the preview frame, the frame management pipeline 340 can remove any targets in the preview frame that the user does not want included in the video call frame, and the video call pipeline 350 can manage the video call session and data transfer, encode and transmit video streams, decode and play received video streams, etc.

[0066] In the preview pipeline 330, the camera sensor 210 of the endpoint 102 can generate a first camera frame 302 and a second camera frame 304. In some examples, the first camera frame 302 can be part of a camera feed from a first camera sensor, and the second camera frame 304 can be part of a different camera feed from a second camera sensor. For example, the first camera frame 302 can be part of a camera feed from a front camera sensor located at the front of the endpoint 102, and the second camera frame 304 can be part of a camera feed from a back / rear camera sensor located at the rear of the endpoint 102. For simplicity and explanation, FIG. 3 shows only two camera frames or feeds from two camera sensors. However, in some cases, the camera sensor 210 can generate more or fewer camera frames / feeds than shown in FIG. 3.

[0067] The camera sensor 210 can provide the first camera frame 302 and the second camera frame 304 to the processor 306, which can generate / render a user interface 308 including a preview (e.g., depicting) the first camera frame 302 and the second camera frame 304. The processor 306 can provide the preview to the user interface 308 for presentation to a display to a user of the endpoint 102. The processor 306 can represent one or more processors, such as, for example, one or more DSPs, CPUs, ISPs, etc. In some cases, the processor 306 can stitch the first camera frame 302 and the second camera frame 304 together into a preview and send the preview (e.g., stitched frames) to a display for presentation. In some examples, the processor 306 can prepare / configure the first camera frame 302 and the second camera frame 304 to appear separated / spaced apart by a visual marker, such as, for example, a line, a box, a boundary, etc. This may indicate to the user that different portions of the displayed preview correspond to different frames (and which portions of the preview correspond to different frames). In some cases, the processor 306 may communicate with a frame separator 310 to separate the first camera frame 302 and the second camera frame 304 in the preview, as previously described.

[0068] In some examples, a user of endpoint 102 can select particular frames in the preview (and / or particular targets depicted by particular frames in the preview (e.g., user, face, etc.)) that the user wants included and / or excluded from the video transmitted to other endpoints on the video call. For example, if the preview includes a first frame depicting a first face, a second frame depicting a second face, and a third frame depicting a third face, the user can provide an input selection (e.g., via user interface 308) indicating that the first face depicted in the first frame and the second face depicted in the second frame should be included in the video transmitted to other endpoints on the video call, and that the third face depicted in the third frame should be excluded / removed.

[0069] In the frame management pipeline 340, the frame adjuster 312 can provide any of the frames being sent to the other endpoints (e.g., frames depicting a particular or selected target) to the frame separator 310. The frame adjuster 312 can include or exclude any frames (and / or depicted targets) based on a user's input selection. To illustrate, in the previous example, if the user selects to keep the first and second faces shown in the first and second frames, but exclude the third face shown in the third frame, the frame adjuster 312 can remove the third frame depicting the third face and provide the first and second frames to the frame separator 310. If the user does not select to exclude any frames (and / or depicted targets such as faces) from the preview, the frame adjuster 312 can include and send all frames in the preview to the frame separator 310. In some cases, the user interface 308 may present a permission message requesting confirmation from the user for the input frames (and / or depicted targets) to be included in the stream (e.g., frames and / or depicted targets selected by the user) to be transmitted to the other endpoint.

[0070] In some examples, the frame adjuster 312 can identify a location of a target depicted in a particular camera frame based on metadata associated with the camera frame. The metadata can include coordinates that identify a location of the target in the frame. The frame adjuster 312 can use the coordinates to identify and retain or remove a particular target depicted in the frame according to user selection(s). For example, if a user selects to retain a first face depicted in the first camera frame 302 and a second face depicted in the second camera frame 304, but exclude one or more third faces depicted in the third camera frame, the frame adjuster 312 can use metadata associated with the first, second, and third camera frames to determine the location of the first face, the second face, and the one or more third faces in the first, second, and third camera frames. The metadata can include coordinates of the first face, the second face, and the one or more third faces in the first camera frame 302, the second camera frame 304, and the third camera frame, respectively. The frame adjuster 312 can then use the coordinates to remove one or more third faces in the third camera frame and retain the first and second faces for inclusion in the stream transmitted to the other endpoint. The frame adjuster 312 can provide the first camera frame 302 depicting the first face and the second camera frame 304 depicting the second face to the frame separator 310.

[0071] In another example, the frame adjuster 312 can perform object detection to determine the locations of faces depicted in the camera frames. For example, the frame adjuster 312 can process the camera frames to detect faces depicted in the camera frames and their locations within the camera frames.

[0072] The frame adjuster 312 can provide the first camera frame 302 and the second camera frame 304 with or without any processing and / or modifications to the first camera frame 302 and the second camera frame 304. For example, in some cases, the frame adjuster 312 can crop the first camera frame 302 to include a first face and exclude one or more areas of the first camera frame 302 around the first face, and crop the second camera frame 304 to include a second face and exclude one or more areas of the second camera frame 304 around the second face.

[0073] The frame separator 310 can use the frames from the frame adjuster 312 (e.g., frames set to be included in the stream, excluding any frames, if any, removed by the frame adjuster 312) to generate a single frame that includes the frames from the frame adjuster 312. For example, if the frame separator 310 receives the first camera frame 302 and the second camera frame 304 from the frame adjuster 312, the frame separator 310 can reassemble (e.g., merge / combine, align, etc.) the first camera frame 302 and the second camera frame 304 into a single frame that shows a target (e.g., a user, a face, etc.) included in the first camera frame 302 and the second camera frame 304. In some cases, the frame separator 310 can separate the first camera frame 302 and the second camera frame 304 within the single frame generated by the frame separator 310. For example, the frame separator 310 may configure / arrange / draw the first camera frame 302 and the second camera frame 304 within a single frame such that they appear separated / spaced apart by a visual marker within the single frame. The visual marker may include, for example, but is not limited to, a line, a box, a border, and / or any other visual indicia.

[0074] In some examples, to generate the single frame, the frame separator 310 can identify the location of a target depicted in a particular camera frame based on metadata associated with the camera frame. As previously described, the metadata can include coordinates that identify the location of the target in the frame. The frame separator 310 can use the coordinates to identify the location of a particular target depicted in the camera frame and place the target in the single frame. For example, if the frame separator 310 receives from the frame adjuster 312 a first camera frame (e.g., the first camera frame 302) depicting a first face and a second camera frame (e.g., the second camera frame 304) depicting a second face, the frame separator 310 can use face coordinates included in the metadata associated with the first and second camera frames to identify the location of the face in the first and second camera frames. The frame separator 310 can use the coordinates to know where the face is located in the camera frame in order to separate and / or place the face in the single frame generated by the frame separator 310.

[0075] In another example, the frame separator 310 can perform object detection to determine the locations of targets shown in the camera frames. For example, the frame adjuster 312 can process the camera frames to detect faces depicted in the camera frames and their locations within the camera frames.

[0076] The frame separator 310 can generate a single frame using the first camera frame 302 and the second camera frame 304, with or without first processing and / or modifying the first camera frame 302 and the second camera frame 304. For example, in some cases, the frame separator 310 can crop the first camera frame 302 to include a first face and exclude one or more regions of the first camera frame 302 around the first face, and crop the second camera frame 304 to include a second face and exclude one or more regions of the second camera frame 304 around the second face. The frame separator 310 can then generate a single frame depicting the target from the first and second camera frames using the cropped camera frames.

[0077] The frame separator 310 can provide the generated single frame to a video call pipeline 350. In the video call pipeline 350, an encoder 314 can encode the single frame and provide the encoded frame to a video telephony pipeline 316 for transmission to the other endpoint(s) on the call. The encoder 314 can be hosted by the endpoint 102. For example, the encoder 314 can be part of a video coder 220 on the endpoint 102. The video telephony pipeline 316 can manage video call data transfer (e.g., encoded frames / streams) from the endpoint 102, manage data connections (e.g., video call connections) from the endpoint 102, manage a control or signaling plane, manage a media plane, manage video call control, set up a video call, manage / implement a video telephony protocol, and / or perform any other video telephony operations.

[0078] The video calling pipeline 316 can transmit the encoded frames to the other endpoint(s) on the video call. The other endpoint(s) on the video call can use the decoder 318 to decode the encoded frames for presentation at the other endpoint(s). In some cases, the decoder 318 can provide the decoded frames to a video calling application programming interface (API) 320. The video calling API 320 can provide the decoded frames to a video calling application at the other endpoint(s) for rendering. The video calling API 320 can generate calls (e.g., requests, responses, etc.) to the video calling application. In some cases, the video calling API 320 can integrate one or more video calling tools, such as, for example, video chat, screen sharing, recording, workflow integration, effects, filters, messaging, etc.

[0079] In some cases, the endpoint 102 may implement an object tracking mode to track the presence of users within the fields of view (FOVs) of a camera sensor (e.g., camera sensor 210) of the endpoint 102. In the object tracking mode, the endpoint 102 may stop capturing and / or transmitting frames from a camera sensor when there are no users within the FOV of the camera sensor (e.g., when a user moves from an area within the FOV of the camera sensor to an area outside the FOV of the camera sensor) and may start capturing and / or transmitting frames from the camera sensor when it determines that there are one or more users within the FOV of the camera sensor (e.g., when one or more users move into an area within the FOV of the camera sensor). For example, the endpoint 102 may analyze camera frames captured by the camera sensor 210 to determine whether any users are depicted in the camera frames. The endpoint 102 may detect facial features in the camera frames and determine that a user or users are present within the FOV of the camera sensor that captured the camera frames. If a user is not detected in a camera frame captured by a camera sensor, the endpoint 102 may stop including in the video call feed frames from that camera sensor until the user is detected within the FOV of that camera sensor.

[0080] For example, the endpoint 102 can process camera frames from the camera sensor 210 and determine whether any users are within the FOV of the camera sensor based on any facial features detected in the camera frames. If the user moves out of an area within the FOV of the back / rear camera sensor of the endpoint 102, the endpoint 102 can stop sending camera frames from the back / rear camera sensor to the other endpoints 104 on the video call. If the user moves within the FOV of the front camera sensor of the endpoint 102, the endpoint 102 can capture camera frames of the user using the front camera sensor and include the user's camera frames in the stream sent to the other endpoints 104. If the user moves back into an area within the FOV of the back / rear camera sensor, the endpoint 102 can again include camera frames captured by the back / rear camera sensor (and depicting the user) in the stream sent to the other endpoints 104.

[0081] 4 shows an example video calling interface 400 depicting a merged camera frame 402 rendered at a receiving endpoint 104. The endpoint 104 can receive the merged camera frame 402 from the sending endpoint 102. The endpoint 102 can generate the merged camera frame 402 (e.g., via the frame separator 310 and frame adjuster 312) as described above.

[0082] As shown in FIG. 4, the merged camera frame 402 includes a first camera frame 404 depicting a first user and a second camera frame 406 depicting a second user. Thus, a user at the endpoint 104 can see the first user and the second user within the video call interface 400. The first user and the second user may be users of the endpoint 102. In some examples, the endpoint 102 can capture the first camera frame 404 depicting the first user using a first camera sensor of the endpoint 102 and capture the second camera frame 406 depicting the second user using a second camera sensor of the endpoint 102. Thus, the camera frames of the first user and the second user can be captured from the same device, and the first user and the second user can participate in a video call with a user of the endpoint 104 from the same device (e.g., the endpoint 102).

[0083] The first camera frame 404 depicting the first user and the second camera frame 406 depicting the second user may be positioned within the merged camera frame 402 in any manner. For example, in FIG. 4, the first camera frame 404 depicting the first user is positioned above the second camera frame 406 depicting the second user. However, this arrangement is just one illustrative example provided for purposes of explanation. Other examples may include any other arrangement.

[0084] In some examples, the video calling interface 400 may also display a camera frame 408 depicting the user at the endpoint 104. Thus, the user at the endpoint 104 may see the first and second users in the merged camera frame 402 and may also see their own camera frame in the video calling interface 400. The camera frame 408 of the user at the endpoint 104 may be arranged in any manner within the video calling interface 400. For example, the camera frame 408 may be displayed next to the merged camera frame 402, within the area of ​​the merged camera frame 402, or according to any other arrangement. Furthermore, the camera frame 408 may be displayed as captured by the camera sensor of the endpoint 104 or according to a modified configuration, such as, for example, a modified size, a modified background, a modified shape, a cropped configuration, a visual marker (e.g., a box, highlight, line, label, outline, etc.) that identifies the camera frame 408 as the frame of the recipient (e.g., the user at the endpoint 104), and / or any other configuration.

[0085] 5 illustrates another example video call interface 500 showing merged camera frames rendered at a receiving endpoint 104. The endpoint 104 can receive the merged camera frames from the sending endpoint 102. The endpoint 102 can generate the merged camera frames (e.g., via the frame separator 310 and the frame adjuster 312) as described above.

[0086] In this example, the merged camera frames include a first frame 502 depicting a first user at the sending endpoint 102, a second frame 504 depicting a second user at the sending endpoint 102, and a third frame 506 depicting a third user at the sending endpoint 102. The first frame 502 may be captured by a first camera sensor of the sending endpoint 102. The second frame 504 may be captured by a second camera sensor of the sending endpoint 102. The third frame 506 may be captured by a second camera sensor of the sending endpoint 102 or a third camera sensor of the sending endpoint. For example, in some cases, the first frame 502 may be captured by a front camera sensor of the sending endpoint 102 and both the second frame 504 and the third frame 506 may be captured by the same camera sensor of the sending endpoint 102, such as a back / rear camera sensor.

[0087] In some examples, a camera sensor of the sending endpoint 102 can capture camera frames depicting both a second user and a third user. The sending endpoint 102 can separate (e.g., via a frame separator 310) the second and third users in the captured camera frames to appear as separate frames depicting the second and third users. For example, the sending endpoint 102 can place the second and third users depicted in the camera frames in a merged camera frame and include visual markers (e.g., lines, boxes, highlights, contours, shading, edges / borders, labels, etc.) in the merged frame that visually divide / separate the second and third users in the merged frame to appear as separate frames depicting the second and third users. The frame separator 310 at the sending endpoint 102 can identify the locations of the second and third users in the camera frames using coordinates included in the metadata associated with the camera frames depicting the second and third users. The frame separator 310 at the transmitting endpoint 102 can use the determined locations of the second and third users to separate the second and third users in the merged camera frames. In other cases, the frame separator 310 can use object detection to determine the locations of the second and third users and separate the second and third users based on the determined locations.

[0088] The frame separator 310 can similarly use the first user's location to separate the first user from the second and third users in the merged camera frame, as shown in Figure 5. The frame separator 310 can determine the first user's location based on coordinates in associated metadata or via object detection, as described above.

[0089] 5, the systems and techniques described herein can enable multiple users to participate in a video call from the same device and be visible at the other end of the video call (e.g., at endpoint 104). Additionally, the systems and techniques described herein can enable multiple users to be recorded from the same camera sensor and displayed at the other end of the video call (e.g., at endpoint 104) in merged frames as if the multiple users were recorded from different camera sensors and / or as if the multiple users were participating in the video call from separate devices.

[0090] In some examples, the video calling interface 500 may also display a camera frame 508 depicting the user at the endpoint 104. Thus, the user at the endpoint 104 may see the first user, the second user, and the third user in the merged camera frames (e.g., frame 502, frame 504, frame 506) and may also see their own camera frame in the video calling interface 500. The camera frame 508 of the user at the endpoint 104 may be positioned in the video calling interface 500 in any manner. For example, the camera frame 508 may be displayed next to the merged camera frames depicting the first, second, and third users, within a region of the merged camera frames, or according to any other configuration. Further, the camera frame 508 may be displayed as captured by the camera sensor of the endpoint 104 or according to a modified configuration, such as, for example, a modified size, a modified background, a modified shape, a cropped configuration, a visual marker (e.g., a box, highlight, line, label, outline, etc.) that identifies the camera frame 508 as a frame for the recipient (e.g., a user at the endpoint 104), and / or any other configuration.

[0091] 6A illustrates an example user interface 600 showing an example preview generated by endpoint 102. In this example, the preview includes a camera frame 602 depicting a user at the other end of the video call, such as a user at endpoint 104. Endpoint 102 can receive camera frame 602 from another endpoint (e.g., endpoint 104) and include camera frame 602 in the preview.

[0092] The preview may also include a merged frame depicting multiple users at the endpoint 102. The merged frame may include a first frame 604 depicting one or more users at the endpoint 102 and a second frame 606 depicting one or more different users at the endpoint 102. In this example, the first frame 604 includes frames of multiple users captured by a first camera sensor at the endpoint 102, such as a back / rear camera sensor. The second frame 606 includes frames of users captured by a second camera sensor at the endpoint 102, such as a front camera sensor. The user at the endpoint 102 may select any users / faces in the merged frame (e.g., the first frame 604 and the second frame 606) in the preview to be included or excluded from the merged frame that is sent to the other endpoint(s). The frame adjuster 312 at the endpoint 102 can remove any users / faces selected for exclusion, and the frame separator 310 can generate a merged frame that includes the users / faces selected for inclusion.

[0093] For example, if a user receives a first face in a first frame 604 for exclusion from preview, the frame adjuster 312 may remove the first face in the first frame 604 and retain the second and third faces in the first frame 604 that were not selected for exclusion. The frame separator 310 may then generate a merged frame depicting the second and third faces. The endpoint 102 may transmit the merged frame depicting the second and third faces to the other endpoint for display to the other user(s) on the video call.

[0094] 6B illustrates an exemplary user interface 650 depicting a merged frame received from endpoint 102. In this example, the merged frame rendered at endpoint 104 includes frame 606 depicting a user selected for inclusion in the merged frame (e.g., via the preview shown in FIG. 6A and described above), frame 652 depicting another user selected for inclusion in the merged frame (e.g., via the preview shown in FIG. 6A and described above), and another user selected for inclusion in the merged frame (e.g., via the preview shown in FIG. 6A and described above).

[0095] However, as shown in FIG. 6B, the merged frame does not include one of the users shown in the first frame 604 of the preview shown in FIG. 6A. Here, the user at the endpoint 102 selected that particular user for exclusion from the merged frame (or did not select that user for inclusion). Thus, the frame adjuster 312 at the endpoint 102 removed that particular user from the frames provided to the frame separator 310 at the endpoint 102. The frame separator 310 generated the merged frame without including that particular user (and / or a frame depicting that particular user). Thus, the particular user is not visible in the merged frame rendered in the user interface 650 at the endpoint 104, even though the particular user was originally shown in the same camera frame as the users depicted in frames 606, 652, and 654 captured by the camera sensor of the endpoint 102. In this manner, a user at endpoint 102 can select which users should be depicted in or removed from the merged frame sent to endpoint 104, and endpoint 102 can remove any users selected for exclusion (or not selected for inclusion) from the merged frame sent to endpoint 104, even if any of the removed users were originally visible in the same camera frame (e.g., captured by the same camera sensor) and / or even if any of the removed users were originally visible in separate frames captured from the same endpoint.

[0096] 7 is a flow chart illustrating an example process 700 for generating video frames for a video call. At block 702, the process 700 may include establishing a video call between a first endpoint (e.g., endpoint 102) and a second endpoint (e.g., endpoint 104).

[0097] At block 704, the process 700 may include displaying a preview of the first camera feed and the second camera feed. In some examples, the first camera feed may include a first video frame captured by a first image capture device of the first endpoint and a second video frame captured by a second image capture device of the first endpoint. In some examples, the first video frame and the second video frame may be visually separated within the preview.

[0098] In some aspects, the process 700 may include acquiring a first video frame from a first image capture device and acquiring a second video frame from a second image capture device.

[0099] At block 706, process 700 may include receiving a selection of a set of objects to be depicted in the preview. In some cases, the selection of the set of objects includes a first input selecting a set of objects to be included in the single frame and / or a second input selecting one or more objects of the plurality of objects to be excluded from the single frame.

[0100] At block 708, process 700 may include generating a single frame depicting the set of objects based on the first camera feed and the second camera feed. In some aspects, generating the single frame may include combining at least a portion of the first video frame and at least a portion of the second video frame into the single frame.

[0101] In some examples, combining at least a portion of the first video frame and at least a portion of the second video frame into a single frame can include disposing at least a portion of the first video frame and at least a portion of the second video frame within respective frame regions of the single frame. In some examples, each frame region can depict a respective object from the set of objects.

[0102] In some examples, the first video frame and the second video frame depict a plurality of objects including a set of objects. In some cases, selecting the set of objects includes a first input selecting the set of objects to be included in the single frame, and / or a second input selecting one or more objects of the plurality of objects to be excluded from the single frame. The one or more objects may be different from the set of objects.

[0103] In some cases, generating the single frame may include excluding one or more objects of the plurality of objects from the single frame based on the first input and / or the second input. In some examples, process 700 may include transmitting the single frame to the second endpoint. In some cases, excluding one or more objects from the single frame may include removing one or more objects from the preview, the first frame, the second frame, and / or the single frame.

[0104] In some cases, the first video frame can include one or more first objects from the set of objects, and the second video frame can include one or more second objects from the set of objects. In some aspects, generating the single frame can include determining a respective position of each of the one or more first objects in the first video frame based on first metadata associated with the first video frame, determining a respective position of each of the one or more second objects in the second video frame based on second metadata associated with the second video frame, and determining a first portion of the first video frame depicting the one or more first objects and a second portion of the second video frame depicting the one or more second objects based on the respective positions of each of the one or more first objects in the first video frame and the respective positions of each of the one or more second objects in the second video frame.

[0105] In some examples, the first metadata can include coordinates associated with one or more first objects, and the second metadata can include coordinates associated with one or more second objects. In some cases, generating a single frame can include combining a first portion of the first video frame and a second portion of the second video frame into a single frame. In some aspects, combining the first portion of the first video frame and the second portion of the second video frame into a single frame can include disposing the first portion of the first video frame and the second portion of the second video frame within respective frame regions of the single frame. In some examples, the first region of the respective frame regions depicts one or more first objects, and the second region of the respective frame regions depicts one or more second objects.

[0106] In some aspects, generating the single frame can include rendering and / or depicting at least a portion of the first video frame and at least a portion of the second video frame in the single frame. In some cases, at least a portion of the first video frame and at least a portion of the second video frame are visually separated. In some examples, at least a portion of the first video frame and at least a portion of the second video frame are visually separated by a visual marker. In some examples, the visual marker can include a line, an outline, a box, a highlight, a label, a color, a shade, and / or a different visual indicia.

[0107] In some aspects, the process 700 may include determining that one or more objects from the plurality of objects are within an FOV of a first image capture device and triggering the first image capture device to capture a first video frame. In some examples, the first video frame depicts the one or more objects.

[0108] In some aspects, process 700 may include tracking one or more objects based on one or more video frames captured by the first image capture device, determining based on the tracking that the one or more objects are no longer within the FOV of the first image capture device, and determining to stop transmitting video data (e.g., video frames) from the first image capture device to the second endpoint based on determining that the one or more objects are no longer within the FOV of the first image capture device.

[0109] In some aspects, process 700 may include, in response to determining that the at least one object is within the FOV of the second image capture device, acquiring a third video frame depicting the at least one object via the second image capture device and transmitting the third video frame to the second endpoint.

[0110] 8 illustrates an exemplary computing device architecture 800 of an exemplary computing device that may implement various techniques described herein. For example, the computing device architecture 800 may implement at least some portion of the endpoint 102 illustrated in FIG. 2. The components of the computing device architecture 800 are shown in electrical communication with each other using a connection 805, such as a bus. The exemplary computing device architecture 800 includes a processing unit (CPU or processor) 810 and a computing device connection 805 that couples various computing device components to the processor 810, including a computing device memory 815, such as a read only memory (ROM) 820 and a random access memory (RAM) 825.

[0111] The computing device architecture 800 may include a cache of high-speed memory that is directly connected to the processor 810, near the processor 810, or integrated as part of the processor 810. The computing device architecture 800 may copy data from the memory 815 and / or the storage device 830 to the cache 812 for faster access by the processor 810. In this manner, the cache may provide a performance boost that avoids delays to the processor 810 while waiting for data. These and other modules may control or be configured to control the processor 810 to perform various actions. Other computing device memories 815 may be available for use as well. The memory 815 may include multiple different types of memories with different performance characteristics. The processor 810 may include any general-purpose processor, as well as hardware or software services stored in the storage device 830 and configured to control the processor 810, as well as special-purpose processors with software instructions built into the processor design. The processor 810 may be a self-contained system that includes multiple cores or processors, buses, memory controllers, caches, etc. Multi-core processors may be symmetrical or asymmetrical.

[0112] To enable user interaction with the computing device architecture 800, the input device 845 can represent any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, a keyboard, a mouse, motion input, speech, etc. The output device 835 can also be one or more of several output mechanisms known to those skilled in the art, such as a display, projector, television, speaker device, etc. In some cases, a multimodal computing device may enable a user to provide multiple types of input to communicate with the computing device architecture 800. The communication interface 840 can generally govern and manage user input and computing device output. There is no constraint to operate on any particular hardware configuration, and therefore the basic functions herein may be easily replaced with improved hardware or firmware configurations as they are developed.

[0113] The storage device 830 is a non-volatile memory and may be a hard disk or other type of computer readable medium capable of storing data accessible by a computer, such as a magnetic cassette, a flash memory card, a solid state memory device, a digital versatile disk, a cartridge, a random access memory (RAMs) 825, a read only memory (ROM) 820, and hybrids thereof. The storage device 830 may include software, code, firmware, etc. for controlling the processor 810. Other hardware or software modules are contemplated. The storage device 830 may be connected to the computing device connection 805. In one aspect, a hardware module that performs a particular function may include software components stored in a computer readable medium that connects with the necessary hardware components, such as the processor 810, the connection 805, the output device 835, etc., to perform the function.

[0114] The term "computer-readable medium" includes, but is not limited to, portable or non-portable storage devices, optical storage devices, and various other media that can store, store, or convey instruction(s) and / or data. Computer-readable media may include non-transitory media on which data may be stored and that do not include carrier waves and / or transitory electronic signals propagating wirelessly or over wired connections. Examples of non-transitory media may include, but are not limited to, magnetic disks or tapes, optical storage media such as compact disks (CDs) or digital versatile disks (DVDs), flash memory, memories, or memory devices. Computer-readable media may have code and / or machine-executable instructions stored thereon, which may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. can be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.

[0115] In some aspects, computer readable storage devices, media, and memories may include cables or wireless signals containing bit streams, etc. However, when mentioned, non-transitory computer readable storage media specifically excludes media such as energy, carrier signals, electromagnetic waves, and the signals themselves.

[0116] Specific details are provided in the above description to provide a thorough understanding of the aspects and examples provided herein. However, those skilled in the art will appreciate that the aspects may be practiced without these specific details. For clarity of explanation, in some instances, the technology may be presented as including individual functional blocks comprising devices, device components, and steps or routines in methods embodied in software or a combination of hardware and software. Additional components other than those shown in the figures and / or described herein may be used. For example, circuits, systems, networks, processes, and other components may be shown as components in block diagram form so as not to obscure the aspects in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail so as to avoid obscuring the aspects.

[0117] Individual aspects may be described above as a process or method that is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although the flowcharts may describe operations as a sequential process, many of the operations may be performed in parallel or simultaneously. In addition, the order of operations may be rearranged. A process terminates when its operations are completed, but may have additional steps not included in the diagram. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination may correspond to a return of the function to the calling function or to the main function.

[0118] The processes and methods according to the examples described above may be implemented using computer-executable instructions stored on or otherwise available from a computer-readable medium. Such instructions may include, for example, instructions and data that cause or otherwise configure a general purpose computer, a special purpose computer, or a processing device to perform a certain function or group of functions. Portions of the computer resources used may be accessible over a network. The computer-executable instructions may be, for example, binary, intermediate format instructions such as assembly language, firmware, source code, etc. Examples of computer-readable media that may be used to store instructions, information used, and / or information created during the methods according to the described examples include magnetic or optical disks, flash memory, USB devices provided with non-volatile memory, network-attached storage devices, etc.

[0119] Devices implementing the processes and methods according to these disclosures may include hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof, and may take any of a variety of form factors. When implemented in software, firmware, middleware, or microcode, program code or code segments (e.g., computer program products) performing the necessary tasks may be stored in a computer-readable or machine-readable medium. A processor or processors may perform the necessary tasks. Typical examples of form factors include laptops, smartphones, mobile phones, tablet devices or other small-footprint personal computers, personal digital assistants, rack-mounted devices, stand-alone devices, and the like. The functionality described herein may also be embodied in peripheral devices or add-in cards. Such functionality may also be implemented on a circuit board among different chips, or on different processes executing in a single device, as further examples.

[0120] The instructions, media for propagating such instructions, computing resources for executing such instructions, and other structures supporting such computing resources are exemplary means for providing the functionality described in this disclosure.

[0121] In the above description, aspects of the present application are described with reference to specific aspects thereof, but those skilled in the art will recognize that the present application is not limited thereto. Thus, while exemplary aspects of the present application have been described in detail herein, it should be understood that the inventive concepts may be embodied and employed in various other ways, and that the appended claims are intended to be construed to include such variations, except as limited by the prior art. The various features and aspects of the present application described above may be used individually or jointly. Moreover, aspects may be utilized in any number of environments and applications other than those described herein without departing from the broader spirit and scope of the present specification. Thus, the present specification and drawings should be regarded as illustrative and not restrictive. For purposes of illustration, methods have been described in a particular order. It should be understood that in alternative aspects, the methods may be performed in an order different from that described.

[0122] Those skilled in the art will understand that the less than ("<") and greater than (">") symbols or terminology used herein may be replaced with the less than or equal to ("≦") and greater than or equal to ("≧") symbols, respectively, without departing from the scope of the present specification.

[0123] When a component is described as being "configured to" perform certain operations, such configuration may be achieved, for example, by designing electronic circuitry or other hardware to perform the operations, by programming a programmable electronic circuitry (e.g., a microprocessor or other suitable electronic circuitry) to perform the operations, or any combination thereof.

[0124] The phrase "coupled to" refers to any component that is physically connected, either directly or indirectly, to another component and / or that is in communication, either directly or indirectly, with another component (e.g., connected to the other component via a wired or wireless connection and / or other suitable communication interface).

[0125] Claim language or other language in this disclosure reciting "at least one of" a set and / or "one or more" of a set indicates that one member of the set or multiple members of the set (in any combination) satisfy the claim. For example, claim language reciting "at least one of A and B" or "at least one of A or B" means A, B, or A and B. In another example, claim language reciting "at least one of A, B, and C" or "at least one of A, B, or C" means A, B, C, or A and B, or A and C, or B and C, or A and B and C. The language "at least one of" a set and / or "one or more" of a set does not limit the set to the items listed in the set. For example, claim language reciting "at least one of A and B" or "at least one of A or B" can mean A, B, or A and B, and can additionally include unrecited items within the set of A and B.

[0126] The various exemplary logic blocks, modules, circuits, and algorithm steps described with respect to the examples disclosed herein may be implemented as electronic hardware, computer software, firmware, or a combination thereof. To clearly illustrate this interchangeability of hardware and software, the various exemplary components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends on the particular application and design constraints imposed on the overall system. Those skilled in the art may implement the described functionality in various ways for each particular application, and such implementation decisions should not be interpreted as causing a departure from the scope of the present application.

[0127] The techniques described herein may also be implemented in electronic hardware, computer software, firmware, or any combination thereof. Such techniques may be implemented in any of a variety of devices, such as a general purpose computer, a wireless communication device handset, or an integrated circuit device having multiple uses, including applications in wireless communication device handsets and other devices. Any features described as modules or components may be implemented together in an integrated logic device, or separately as discrete but interoperable logic devices. If implemented in software, these techniques may be realized at least in part by a computer-readable data storage medium that includes program code that includes instructions that, when executed, perform one or more of the methods, algorithms, and / or operations described above. The computer-readable data storage medium may form part of a computer program product, which may include packaging materials. The computer-readable medium may comprise memory or data storage media, such as random access memory (RAM), such as synchronous dynamic random access memory (SDRAM), read only memory (ROM), non-volatile random access memory (NVRAM), electrically erasable programmable read only memory (EEPROM), FLASH memory, magnetic or optical data storage media, etc. The techniques may additionally or alternatively be realized at least in part by a computer-readable communications medium, such as a propagated signal or wave, that carries or communicates program code in the form of instructions or data structures and that can be accessed, read, and / or executed by a computer.

[0128] The program code may be executed by a processor, which may include one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Such a processor may be configured to perform any of the techniques described in this disclosure. A general purpose processor may be a microprocessor, but alternatively, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Thus, the term "processor" as used herein may refer to any of the above structures, any combination of the above structures, or any other structure or apparatus suitable for implementing the techniques described herein.

[0129] Illustrative examples of the present disclosure include the following:

[0130] Aspect 1. An apparatus for processing a video call, comprising: a memory; and one or more processors coupled to the memory, wherein the one or more processors are configured to: establish a video call between the apparatus and a remote device; display a preview of a first camera feed and a second camera feed, where the first camera feed includes a first video frame captured by a first image capture device of the apparatus and a second video frame captured by a second image capture device of the apparatus, and the first video frame and the second video frame are visually separated within the preview; receive a selection of a set of objects depicted in the preview; and generate a single frame depicting the set of objects based on the first camera feed and the second camera feed.

[0131] Aspect 2. The apparatus of aspect 1, wherein the first video frame and the second video frame depict a plurality of objects including a set of objects, and selecting the set of objects includes at least one of a first input selecting the set of objects as a subset of the plurality of objects to be included in the single frame, and a second input selecting one or more objects of the plurality of objects to be excluded from the single frame, wherein the one or more objects are different from the set of objects.

[0132] Aspect 3. The apparatus of aspect 2, wherein to generate the single frame, the one or more processors are further configured to exclude one or more targets of the plurality of targets from the single frame based on at least one of the first input and the second input, and transmit the single frame to a remote device.

[0133] Aspect 4. The apparatus of aspect 3, wherein to exclude one or more objects from the single frame, the one or more processors are configured to remove one or more objects from at least one of the preview, the first video frame, the second video frame, and the single frame.

[0134] Aspect 5. The apparatus of any of aspects 1-4, wherein the one or more processors are configured to combine at least a portion of the first video frame and at least a portion of the second video frame into a single frame to generate a single frame.

[0135] Aspect 6. The apparatus of aspect 5, wherein to combine at least a portion of the first video frame and at least a portion of the second video frame into a single frame, the one or more processors are configured to place at least a portion of the first video frame and at least a portion of the second video frame within respective frame regions of the single frame, each frame region depicting a respective object from the set of objects.

[0136] Aspect 7. The apparatus of any of aspects 1-6, wherein the first video frame includes one or more first objects from the set of objects and the second video frame includes one or more second objects from the set of objects, and to generate the single frame, the one or more processors are further configured to: determine a respective position of each of the one or more first objects in the first video frame based on first metadata associated with the first video frame including coordinates associated with the one or more first objects; determine a respective position of each of the one or more second objects in the second video frame based on second metadata associated with the second video frame including coordinates associated with the one or more second objects; and determine a first portion of the first video frame depicting the one or more first objects and a second portion of the second video frame depicting the one or more second objects based on the respective positions of each of the one or more first objects in the first video frame and the respective positions of each of the one or more second objects in the second video frame.

[0137] Example 8. The apparatus of example 7, wherein the one or more processors are further configured to combine a first portion of the first video frame and a second portion of the second video frame into a single frame to generate a single frame.

[0138] Aspect 9. The apparatus of aspect 8, wherein to combine a first portion of a first video frame and a second portion of a second video frame into a single frame, one or more processors are configured to place the first portion of the first video frame and the second portion of the second video frame within respective frame regions of the single frame, the first region of each frame region depicting one or more first objects and the second region of each frame region depicting one or more second objects.

[0139] Aspect 10. The apparatus of any of aspects 1 to 9, wherein to generate a single frame, the one or more processors are further configured to render at least a portion of the first video frame and at least a portion of the second video frame within the single frame, wherein at least a portion of the first video frame and at least a portion of the second video frame are visually separated.

[0140] Aspect 11. The apparatus of aspect 10, wherein at least a portion of the first video frame and at least a portion of the second video frame are visually separated by a visual marker, the visual marker including at least one of a line, an outline, a box, a highlight, a label, a color, a shade, and a visual indicia.

[0141] Example 12. An apparatus described in any of Examples 1 to 11, wherein the one or more processors are configured to acquire a first video frame from a first image capture device and acquire a second video frame from a second image capture device.

[0142] Aspect 13. The apparatus of aspect 12, further comprising at least one of a first image capture device and a second image capture device.

[0143] Aspect 14. An apparatus described in any of aspects 1 to 13, wherein one or more processors are configured to determine that one or more objects are within a field of view (FOV) of a first image capture device and trigger the first image capture device to capture a first video frame, the first video frame depicting the one or more objects.

[0144] Aspect 15. The apparatus of aspect 14, wherein the one or more processors are configured to track one or more objects based on one or more video frames captured by the first image capture device, determine based on the tracking that the one or more objects are no longer within the FOV of the first image capture device, and determine to stop transmitting video data from the first image capture device to the remote device based on determining that the one or more objects are no longer within the FOV of the first image capture device.

[0145] Aspect 16. The apparatus of aspect 15, wherein the one or more processors are configured to, in response to determining that the at least one object is within the FOV of the second image capture device, capture a third video frame depicting the at least one object via the second image capture device and transmit the third video frame to a remote device.

[0146] Example 17. The apparatus of any of Examples 1-16, wherein the apparatus comprises a mobile device.

[0147] Aspect 18. A method for processing a video call, the method comprising: establishing a video call between a device and a remote device; displaying a preview of a first camera feed and a second camera feed, the first camera feed including a first video frame captured by a first image capture device of the device and a second video frame captured by a second image capture device of the device, the first video frame and the second video frame being visually separated within the preview; receiving a selection of a set of objects depicted in the preview; and generating a single frame depicting the set of objects based on the first camera feed and the second camera feed.

[0148] Aspect 19. The method of aspect 18, wherein the first video frame and the second video frame depict a plurality of objects including a set of objects, and selecting the set of objects includes at least one of a first input selecting the set of objects as a subset of the plurality of objects to be included in the single frame, and a second input selecting one or more objects of the plurality of objects to be excluded from the single frame, and the one or more objects are different from the set of objects.

[0149] Aspect 20. The method of aspect 19, wherein generating the single frame further includes excluding one or more targets of the plurality of targets from the single frame based on at least one of the first input and the second input, and transmitting the single frame to a remote device.

[0150] Aspect 21. The method of aspect 20, wherein excluding one or more objects from the single frame further includes removing one or more objects from at least one of the preview, the first video frame, the second video frame, and the single frame.

[0151] Example 22. The method of any of examples 18-21, wherein generating the single frame further includes combining at least a portion of the first video frame and at least a portion of the second video frame into the single frame.

[0152] Aspect 23. The method of aspect 22, wherein combining at least a portion of the first video frame and at least a portion of the second video frame into a single frame includes placing at least a portion of the first video frame and at least a portion of the second video frame within respective frame regions of the single frame, each frame region depicting a respective object from the set of objects.

[0153] Aspect 24. The method of any of aspects 18-23, wherein the first video frame includes one or more first objects from the set of objects and the second video frame includes one or more second objects from the set of objects, and wherein generating the single frame further includes: determining a respective position of each of the one or more first objects in the first video frame based on first metadata associated with the first video frame including coordinates associated with the one or more first objects; determining a respective position of each of the one or more second objects in the second video frame based on second metadata associated with the second video frame including coordinates associated with the one or more second objects; and determining a first portion of the first video frame depicting the one or more first objects and a second portion of the second video frame depicting the one or more second objects based on the respective positions of each of the one or more first objects in the first video frame and the respective positions of each of the one or more second objects in the second video frame.

[0154] Example 25. The method of example 24, wherein generating the single frame further includes combining a first portion of the first video frame and a second portion of the second video frame into the single frame.

[0155] Aspect 26. The method of aspect 25, wherein combining a first portion of a first video frame and a second portion of a second video frame into a single frame includes disposing the first portion of the first video frame and the second portion of the second video frame within respective frame regions of the single frame, wherein the first region of each frame region depicts one or more first objects and the second region of each frame region depicts one or more second objects.

[0156] Aspect 27. A method according to any of aspects 18 to 26, wherein generating a single frame further includes rendering at least a portion of the first video frame and at least a portion of the second video frame within the single frame, wherein at least a portion of the first video frame and at least a portion of the second video frame are visually separated.

[0157] Aspect 28. The method of aspect 27, wherein at least a portion of the first video frame and at least a portion of the second video frame are visually separated by a visual marker, the visual marker including at least one of a line, an outline, a box, a highlight, a label, a color, a shade, and a visual indicia.

[0158] Example 29. The method of any of Examples 18 to 28, further comprising acquiring a first video frame from a first image capture device and acquiring a second video frame from a second image capture device.

[0159] Aspect 30. A method as described in any of aspects 18 to 29, further comprising determining that one or more objects are within a field of view (FOV) of a first image capture device and triggering the first image capture device to capture a first video frame, wherein the first video frame depicts the one or more objects.

[0160] Aspect 31. The method of aspect 30, further comprising: tracking one or more objects based on one or more video frames captured by the first image capture device; determining based on the tracking that the one or more objects are no longer within the FOV of the first image capture device; and determining to stop transmitting video data from the first image capture device to the remote device based on determining that the one or more objects are no longer within the FOV of the first image capture device.

[0161] Aspect 32. The method of aspect 31, further comprising, in response to determining that at least one object is within the FOV of the second image capture device, acquiring a third video frame depicting the at least one object via the second image capture device, and transmitting the third video frame to a remote device.

[0162] Aspect 33. At least one non-transitory computer-readable medium comprising instructions that, when executed by one or more processors, cause the one or more processors to perform a method according to any of aspects 18-32.

[0163] Embodiment 34. An apparatus comprising means for carrying out a method according to any one of embodiments 18 to 32.

[0164] Aspect 34. The apparatus of aspect 34, wherein the apparatus comprises a mobile device.

Claims

1. 1. An apparatus for processing a video call, comprising: Memory and one or more processors coupled to the memory; wherein the one or more processors: establishing a video call between the apparatus and a remote device; displaying previews of a first camera feed and a second camera feed, the first camera feed including a first video frame captured by a first image capture device of the device and the second camera feed including a second video frame captured by a second image capture device of the device, the first video frame and the second video frame being visually separated within the preview; receiving a selection of a set of objects depicted in the preview; generating a single frame depicting the set of objects based on the first camera feed and the second camera feed; It is configured as follows: the first video frame and the second video frame depict a plurality of objects including the set of objects, and the selecting of the set of objects includes at least one of a first input selecting the set of objects as a subset of the plurality of objects to be included in the single frame and a second input selecting one or more objects of the plurality of objects to be excluded from the single frame, the one or more objects being different from the set of objects; Device.

2. To generate the single frame, the one or more processors: excluding the one or more objects of the plurality of objects from the single frame based on at least one of the first input and the second input; transmitting the single frame to the remote device; The apparatus of claim 1 further configured to:

3. 3. The apparatus of claim 2, wherein to exclude the one or more objects from the single frame, the one or more processors are configured to remove the one or more objects from at least one of the preview, the first video frame, the second video frame, and the single frame.

4. To generate the single frame, the one or more processors: The apparatus of claim 1 , configured to combine at least a portion of the first video frame and at least a portion of the second video frame into the single frame.

5. To combine at least a portion of the first video frame and at least a portion of the second video frame into the single frame, the one or more processors:

5. The apparatus of claim 4, configured to arrange at least the portion of the first video frame and at least the portion of the second video frame within respective frame regions of the single frame, each frame region depicting a respective object from the set of objects.

6. the first video frame includes one or more first objects from the set of objects, and the second video frame includes one or more second objects from the set of objects, and to generate the single frame, the one or more processors: determining a respective position of each of the one or more first objects within the first video frame based on first metadata associated with the first video frame, the first metadata including coordinates associated with the one or more first objects; determining a respective position of each of the one or more second objects within the second video frame based on second metadata associated with the second video frame, the second metadata including coordinates associated with the one or more second objects; determining a first portion of the first video frame depicting the one or more first objects and a second portion of the second video frame depicting the one or more second objects based on the respective positions of each of the one or more first objects in the first video frame and the respective positions of each of the one or more second objects in the second video frame; The apparatus of claim 1 further configured to:

7. To generate the single frame, the one or more processors: The apparatus of claim 6 , further configured to combine the first portion of the first video frame and the second portion of the second video frame into the single frame.

8. to combine the first portion of the first video frame and the second portion of the second video frame into the single frame, the one or more processors:

8. The apparatus of claim 7, configured to arrange the first portion of the first video frame and the second portion of the second video frame within respective frame regions of the single frame, the first region of the respective frame regions depicting the one or more first objects and the second region of the respective frame regions depicting the one or more second objects.

9. To generate the single frame, the one or more processors: further configured to render at least a portion of the first video frame and at least a portion of the second video frame within the single frame, wherein the at least the portion of the first video frame and the at least the portion of the second video frame are visually separated; and optionally, the at least the portion of the first video frame and the at least the portion of the second video frame are visually separated by a visual marker, the visual marker comprising at least one of a line, an outline, a box, a highlight, a label, a color, a shade, and a visual indicia.

10. The apparatus of claim 1.

10. The one or more processors: configured to capture the first video frames from the first image capture device and the second video frames from the second image capture device; and, optionally, the apparatus further comprising at least one of the first image capture device and the second image capture device; 10. The apparatus of claim 1.

11. The one or more processors: determining that one or more objects are within a field of view (FOV) of the first image capture device; 10. The apparatus of claim 1, configured to trigger the first image capture device to capture the first video frame, the first video frame depicting the one or more objects.

12. the one or more processors: tracking the one or more objects based on one or more video frames captured by the first image capture device; determining, based on the tracking, that the one or more objects are no longer within the FOV of the first image capture device; determining to stop transmitting video data from the first image capture device to the remote device based on determining that the one or more objects are no longer within the FOV of the first image capture device; It is structured as follows: and, optionally, said one or more processors: In response to determining that at least one object is within a FOV of the second image capture device, capturing a third video frame via the second image capture device depicting the at least one object; transmitting the third video frame to the remote device; It is configured as follows:

12. The apparatus of claim 11.

13. The apparatus of claim 1, wherein the apparatus comprises a mobile device.

14. 1. A method for processing a video call, comprising: establishing a video call between the device and a remote device; displaying a preview of a first camera feed and a second camera feed, the first camera feed including a first video frame captured by a first image capture device of the device and the second camera feed including a second video frame captured by a second image capture device of the device, the first video frame and the second video frame being visually separated within the preview; receiving a selection of a set of objects depicted in the preview; generating a single frame depicting the set of objects based on the first camera feed and the second camera feed; Including, the first video frame and the second video frame depict a plurality of objects including the set of objects, and the selecting of the set of objects includes at least one of a first input selecting the set of objects as a subset of the plurality of objects to be included in the single frame and a second input selecting one or more objects of the plurality of objects to be excluded from the single frame, the one or more objects being different from the set of objects; method.

15. At least one non-transitory computer-readable medium containing instructions that, when executed by one or more processors, cause the one or more processors to: Establish a video call between the device and a remote device; displaying previews of a first camera feed and a second camera feed, the first camera feed including a first video frame captured by a first image capture device of the device and the second camera feed including a second video frame captured by a second image capture device of the device, the first video frame and the second video frame being visually separated within the preview; receiving a selection of a set of objects depicted in the preview; generating a single frame depicting the set of objects based on the first camera feed and the second camera feed; the first video frame and the second video frame depict a plurality of objects including the set of objects, and the selecting of the set of objects includes at least one of a first input selecting the set of objects as a subset of the plurality of objects to be included in the single frame and a second input selecting one or more objects of the plurality of objects to be excluded from the single frame, the one or more objects being different from the set of objects; At least one non-transitory computer-readable medium.