Managing control of cameras in multi-camera device
By receiving data from multiple cameras and determining the operation settings, the problem of unbalanced control among multiple applications in multi-camera devices is solved, enabling smooth camera switching and resource allocation, and ensuring continuous transmission of image data.
Patent Information
- Application Number
- CN202480047297.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-07-25
- Filing Date
- 2024-05-29
- Publication Date
- 2026-02-13
Smart Images

Figure CN121533032A_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates in its entirety to systems and techniques for managing control of cameras in a multi-camera device. For example, aspects of this disclosure include systems and techniques for managing (two or more applications running on the device) which application is granted control over which cameras in a multi-camera device comprising two or more cameras. Background Technology
[0002] A camera converts light into image data representing the camera's field of view. Some devices may include multiple cameras. For example, a smartphone may include a front-facing camera (e.g., on the front or screen of the smartphone) and one or more rear-facing cameras (e.g., on the back of the smartphone). A smartphone may run multiple applications. In many instances, one application is running in the "foreground," while others are relegated to running in the "background." In such instances, the application running in the foreground may be granted control over all the cameras in the smartphone's camera system. Summary of the Invention
[0003] The following is a simplified summary of the invention relating to one or more aspects disclosed herein. Therefore, this summary should not be considered an exhaustive overview relating to all conceptual aspects, nor should it be considered to identify key or decisive elements relating to all conceptual aspects or to depict the scope associated with any particular aspect. Accordingly, the following summary presents certain concepts in a simplified form relating to one or more aspects of the mechanisms disclosed herein, preceding the detailed description that follows.
[0004] This document describes systems and techniques for managing control of cameras. According to at least one example, an apparatus for managing control of cameras is provided. The apparatus includes at least one memory and at least one processor coupled to the memory. The at least one processor is configured to: receive data output by two or more cameras of a plurality of cameras of a device; determine one or more settings for operation of the plurality of cameras based on the data; grant control of the first camera of the plurality of cameras to a first application running on the device; receive a request from a second application running on the device for controlling one or more cameras of the plurality of cameras; and grant control of the second application to one or more unused cameras of the plurality of cameras.
[0005] In another example, a method for managing control of a camera is provided. The method includes: receiving data output from two or more cameras of a plurality of cameras on a device; determining one or more settings for operation of the plurality of cameras based on the data; granting control of the first camera of the plurality of cameras to a first application running on the device; receiving a request from a second application running on the device to control one or more cameras of the plurality of cameras; and granting control of the second application to one or more unused cameras of the plurality of cameras.
[0006] In another example, a non-transitory computer-readable medium is provided, on which instructions are stored, which, when executed by at least one processor, cause at least one processor to: receive data output by two or more cameras of a plurality of cameras of a device; determine one or more settings for operation of the plurality of cameras based on the data; grant control of the first camera of the plurality of cameras to a first application running on the device; receive a request from a second application running on the device to control one or more cameras of the plurality of cameras; and grant control of the second application to one or more unused cameras of the plurality of cameras.
[0007] As another example, an apparatus is provided. The apparatus includes: components for receiving data output by two or more cameras of a plurality of cameras of a device; components for determining one or more settings for operation of the plurality of cameras based on the data; components for granting control of a first camera of the plurality of cameras to a first application running on the device; components for receiving a request from a second application running on the device to control one or more cameras of the plurality of cameras; and components for granting control of one or more unused cameras of the plurality of cameras to the second application.
[0008] This document describes systems and techniques for managing control of a camera. According to at least one example, an apparatus for managing control of a camera is provided. The apparatus includes at least one memory and at least one processor coupled to the memory. The at least one processor is configured to: grant control of a first camera, one of a plurality of cameras on the device, to a first application running on the device; control the first camera based on one or more settings; grant control of a second camera, one of the plurality of cameras, to the first application in response to a request from the first application to control the second camera; control the second camera based on one or more settings; receive a request from a second application running on the device to control one or more of the plurality of cameras; and grant control of one or more unused cameras, one of the plurality of cameras, to the second application.
[0009] In another example, a method for managing control of a camera is provided. The method includes: granting control of a first camera among a plurality of cameras on a device to a first application running on the device; controlling the first camera based on one or more settings; granting control of a second camera to the first application in response to a request from the first application to control a second camera among the plurality of cameras; controlling the second camera based on one or more settings; receiving a request from a second application running on the device to control one or more cameras among the plurality of cameras; and granting control of one or more unused cameras among the plurality of cameras to the second application.
[0010] In another example, a non-transitory computer-readable medium is provided, on which instructions are stored, which, when executed by at least one processor, cause at least one processor to: grant control of a first application running on a device to a first camera among a plurality of cameras of the device; control the first camera based on one or more settings; grant control of the first application to a second camera among the plurality of cameras in response to a request from the first application to control the second camera among the plurality of cameras; control the second camera based on one or more settings; receive a request from a second application running on the device to control one or more cameras among the plurality of cameras; and grant control of the second application to one or more unused cameras among the plurality of cameras.
[0011] As another example, an apparatus is provided. The apparatus includes: components for granting control of a first camera among a plurality of cameras of the device to a first application running on the device; components for controlling the first camera based on one or more settings; components for granting control of a second camera to the first application in response to a request from the first application to control a second camera among the plurality of cameras; components for controlling the second camera based on one or more settings; components for receiving a request from a second application running on the device to control one or more cameras among the plurality of cameras; and components for granting control of the second application to one or more unused cameras among the plurality of cameras.
[0012] In some aspects, one or more of the devices described herein are, may be part of, or may include: mobile devices (e.g., mobile phones or so-called "smartphones," tablet computers, or other types of mobile devices), extended reality devices (e.g., virtual reality (VR) devices, augmented reality (AR) devices, or mixed reality (MR) devices), vehicles (or computing devices or systems of vehicles), smart or connected devices (e.g., Internet of Things (IoT) devices), wearable devices, personal computers, laptop computers, video servers, televisions (e.g., network-connected televisions), robotic devices or systems, or other devices. In some aspects, each device may include one image sensor (e.g., a camera) or multiple image sensors (e.g., multiple cameras) for capturing one or more images. In some aspects, each device may include one or more displays for displaying one or more images, notifications, and / or other displayable data. In some aspects, each device may include one or more speakers, one or more light-emitting devices, and / or one or more microphones. In some aspects, each device may include one or more sensors. In some cases, one or more sensors may be used to determine the location of the device, the state of the device (e.g., tracking state, operating state, temperature, humidity level, and / or another state), and / or for other purposes.
[0013] This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used in isolation to define the scope of the claimed subject matter. This subject matter should be understood with reference to the appropriate portions of the entire specification, any or all drawings, and each claim.
[0014] The foregoing and other features and aspects will become more apparent from the following description, claims and accompanying drawings. Attached Figure Description
[0015] The following description, with reference to the accompanying drawings, details exemplary examples of this application: Figure 1 This is a block diagram illustrating an example architecture of an image processing system according to various aspects of this disclosure.
[0016] Figure 2A This is an illustration showing a front view of the example device.
[0017] Figure 2B This is an example Figure 2A An illustration of the rear view of the device.
[0018] Figure 3 These are illustrations of example devices that demonstrate manageable control of a camera according to various aspects of this disclosure.
[0019] Figure 4 Example queries that can be provided to users of the device according to various aspects of this disclosure are illustrated.
[0020] Figure 5A This is a flowchart illustrating an example process for managing control of a camera according to various aspects of this disclosure.
[0021] Figure 5B This is a flowchart illustrating another example process for managing control of a camera according to various aspects of this disclosure.
[0022] Figure 6 This is a block diagram illustrating an example computing device architecture that can implement the various technologies described herein. Detailed Implementation
[0023] Certain aspects of this disclosure are provided below. Some of these aspects may be applied independently, and some may be applied in combination, as will be apparent to those skilled in the art. Specific details are set forth in the following description for purposes of explanation in order to provide a thorough understanding of the various aspects of this application. However, it will be apparent that various aspects may be practiced without these specific details. The accompanying drawings and descriptions are not intended to be limiting.
[0024] The following description provides only exemplary aspects and is not intended to limit the scope, applicability, or configuration of this disclosure. Rather, the following description of exemplary aspects will provide those skilled in the art with a description that can be used to implement the exemplary aspects. It should be understood that various changes may be made to the function and arrangement of the elements without departing from the spirit and scope of this application as set forth in the appended claims.
[0025] The terms “exemplary” and / or “example” are used herein to mean “serving as an example, instance, or illustration.” Any aspect described herein as “exemplary” and / or “example” is not necessarily to be construed as superior to or better than other aspects. Similarly, the term “aspects of this disclosure” does not require that all aspects of this disclosure include the features, advantages, or modes of operation discussed.
[0026] A camera is a device that uses an image sensor to receive light and capture image frames (such as still images or video frames). A variety of image capture settings and / or image processing settings can be used to configure the camera to change the appearance of the captured images. Image capture settings can be determined and applied before and / or during image capture, such as ISO, exposure time (also known as exposure, exposure duration, and / or shutter speed), aperture size (also known as aperture value), focus, and gain (including analog and / or digital gain). Furthermore, image processing settings can be configured for post-processing of the image, such as changes to contrast, brightness, saturation, sharpness, color levels, curves, and colors.
[0027] As described above, some devices (e.g., smartphones) may include multiple cameras (e.g., one or more front-facing cameras on the front of the device and one or more rear-facing cameras on the back of the device). Such devices may include a single application programming interface (API) for controlling all cameras within the camera. For example, the API may control settings for all cameras within the camera (e.g., image capture settings and / or image processing settings). Using a single API to control all cameras within the camera allows the API to provide consistency to applications that use the camera.
[0028] For example, a device may include an ultra-wide-angle camera with a zoom range of 0.5x to 1x, a wide-angle camera with a zoom range of 1x to 3x, and a telephoto camera with a zoom range of 3x to 10x. The device's API can perform zoom transition handling to provide consistent image data to an application running on the device when transitioning between cameras. For example, an application may send a request for image data to the API. The application may capture video frames while zooming in (e.g., from a 1x zoom setting to a 5x zoom setting). The API can control the cameras and provide image data from the cameras to the application. The API may initially provide image data from the wide-angle camera to the application. Then, the API may transition to providing image data from the telephoto camera to the application. When transitioning between cameras, the API can control the image capture settings and / or image capture settings of both the wide-angle and telephoto cameras so that the image data is consistent throughout the transition. For example, an application may be capturing video frames while zooming in.
[0029] The API allows the image capture and / or image processing settings of wide-angle and telephoto cameras to be correlated, such that the last frame provided by the wide-angle camera (before the API switches to providing image data from the telephoto camera) is substantially the same as the first frame provided by the telephoto camera (e.g., in terms of brightness and focus). By doing so, the API avoids flickering that would otherwise occur when switching between cameras (e.g., flickering could be a result of a camera being switched to take one or more frames to adjust its image capture and / or image processing settings for the brightness and / or focus of the scene).
[0030] To provide smooth zoom transitions, the API can receive image data from multiple cameras on the device and determine the image capture settings and / or image processing settings for each camera in the device's camera suite based on the image data. For example, the API can receive image data from an ultra-wide-angle camera, a wide-angle camera, and a telephoto camera (e.g., even if the API is not providing image data from one or more cameras in the camera suite to the application). The API can determine the image capture settings and / or image processing settings for all cameras in the device's camera suite based on the image data.
[0031] For example, based on image data from a camera, the API can determine the camera's image capture settings and / or image processing settings such that if a transition between cameras is to occur, the transition will be smooth (e.g., images captured immediately before and immediately after the transition will be substantially the same in brightness and / or focus). The API can determine image capture settings such as ISO, exposure time, aperture size, focus, and / or gain. The image capture settings between cameras can be related and can be the same or different. For example, to capture images of substantially the same brightness, a wide-angle camera may require a shorter exposure time than a telephoto camera. Additionally or alternatively, the API can determine image processing settings or hyper-settings, such as settings for automatic exposure control (AEC), automatic white balance (AWB), and / or autofocus (AF). In this disclosure, the term "hyper-setting" can refer to a higher-level setting that can be used to determine image capture settings. For example, an AEC hyper-setting can be determined, and one or more image capture settings can be determined based on that AEC hyper-setting.
[0032] As described above, multi-camera devices (e.g., smartphones) can run multiple applications simultaneously (e.g., one application runs in the "foreground," while others are relegated to the "background"). A regular API can control all cameras on the device based on a request from one application. Because the API controls all cameras on a multi-camera device (e.g., to provide zoom handling), an application that interfacing with the API can control all cameras on the device, even if an application only receives image data from one camera at a time. When an application running in the foreground requests a camera, that application can interface with the API and be granted control over all cameras on the device. This prevents other applications (e.g., background applications) from receiving image data from the camera and / or controlling the camera, even if the foreground application controls only one camera. For example, a smartphone user might use a first application for a video call. The first application can interface with the API to receive image data from the smartphone's front-facing camera. If the user launches a second application (e.g., a camera application that uses the smartphone's rear camera to capture photos), the second application can interface with the API. The API can grant a second application control over all cameras in a smartphone's camera, which can interrupt the supply of image data to the first application.
[0033] This document describes systems, apparatus, methods (also referred to as processes), and computer-readable media (collectively, “systems and techniques”) for arbitrating control of cameras in a multi-camera device. For example, the systems and techniques described herein may grant control of a first camera among a plurality of cameras on a device (e.g., a multi-camera device). These systems and techniques may receive requests from a second application running on the device for controlling one or more cameras among the plurality of cameras. These systems and techniques may grant control of the second application over one or more unused cameras among the plurality of cameras.
[0034] In an exemplary example, a smartphone user can use a first application to make a video call. The first application can interface with an API to receive image data from the smartphone's front-facing camera. If the user launches a second application (e.g., a camera app that uses the smartphone's rear-facing camera to capture photos), the second application can also interface with the API. According to these systems and technologies, the API can grant the second application control over unused cameras on the smartphone without interrupting the supply of image data from the first camera to the first application and / or without interrupting the first application's control over the first camera.
[0035] These systems and technologies can be implemented in an API. These systems and technologies enable applications to switch between cameras. For example, these systems and technologies can provide an application with image data from a first camera and then switch to providing image data from a second camera. These systems and technologies can make the transition smooth (e.g., these systems and technologies can perform zoom transition processing). For example, these systems and technologies can receive data (e.g., image data) output from two or more cameras out of a plurality of cameras and determine one or more settings for operation of the plurality of cameras based on the data. For example, based on image data from two or more cameras out of a plurality of cameras, these systems and technologies can determine settings related to ISO, exposure time, aperture size, focus, gain, AEC, AWB, AF, and / or combinations thereof. For example, when a first application controls a first camera, these systems and technologies can receive image data from an unused camera of the device and can determine settings for operation of the unused camera based on the image data. As another example, these systems and technologies can grant a first application control over a first camera out of a plurality of cameras of the device. These systems and technologies can control the first camera based on one or more settings. Furthermore, these systems and technologies can grant a first application control over a second camera in response to a request from the first application to control a second camera. These systems and technologies can control a second camera based on one or more settings.
[0036] Various aspects of this application will be described below with reference to the accompanying drawings.
[0037] Figure 1This is a block diagram illustrating an example architecture of an image processing system 100 according to various aspects of the present disclosure. The image processing system 100 includes various components for capturing and processing images, such as an image of scene 106. The image processing system 100 can capture image frames (e.g., still images or video frames). In some cases, a lens 108 and an image sensor 118 (which may include an analog-to-digital converter (ADC)) may be associated with an optical axis. In one exemplary example, both the photosensitive area of the image sensor 118 (e.g., a photodiode) and the lens 108 may be centered on the optical axis.
[0038] In some examples, the lens 108 of the image processing system 100 faces the scene 106 and receives light from the scene 106. The lens 108 bends the incident light from the scene toward the image sensor 118. The light received by the lens 108 then passes through the aperture of the image processing system 100. In some cases, the aperture (e.g., aperture size) is controlled by one or more control mechanisms 110. In other cases, the aperture may have a fixed size.
[0039] One or more control mechanisms 110 may control exposure, focus, and / or zoom based on information from image sensor 118 and / or image processor 124. In some cases, one or more control mechanisms 110 may include multiple mechanisms and components. For example, control mechanism 110 may include one or more exposure control mechanisms 112, one or more focus control mechanisms 114, and / or one or more zoom control mechanisms 116. One or more control mechanisms 110 may also include, in addition to Figure 1 Additional control mechanisms beyond those illustrated herein. For example, in some cases, one or more control mechanisms 110 may include controls for controlling analog gain, flash, HDR, depth of field, and / or other image capture characteristics.
[0040] The focus control mechanism 114 of the control mechanism 110 can obtain focus settings. In some examples, the focus control mechanism 114 stores the focus settings in a memory register. Based on the focus settings, the focus control mechanism 114 can adjust the positioning of the lens 108 relative to the positioning of the image sensor 118. For example, based on the focus settings, the focus control mechanism 114 can adjust the focus by moving the lens 108 closer to or further away from the image sensor 118 via an actuated motor or servo system (or other lens mechanism). In some cases, additional lenses may be included in the image processing system 100. For example, the image processing system 100 may include one or more microlenses above each photodiode of the image sensor 118. These microlenses can each bend light received from the lens 108 toward the corresponding photodiode before the light reaches the photodiode.
[0041] In some examples, focus settings may be determined via contrast detection autofocus (CDAF), phase detection autofocus (PDAF), hybrid autofocus (HAF), or some combination thereof. Focus settings may be determined using control mechanism 110, image sensor 118, and / or image processor 124. Focus settings may be referred to as image capture settings and / or image processing settings. In some cases, lens 108 may be fixed relative to the image sensor and focus control mechanism 114.
[0042] Exposure control mechanism 112 of control mechanism 110 can obtain exposure settings. In some cases, exposure control mechanism 112 stores exposure settings in a memory register. Based on this exposure setting, exposure control mechanism 112 can control the aperture size (e.g., aperture size or aperture value), the duration of aperture opening (e.g., exposure time or shutter speed), the duration of light collection by the sensor (e.g., exposure time or electronic shutter speed), the sensitivity of image sensor 118 (e.g., ISO speed or film speed), the analog gain applied by image sensor 118, or any combination thereof. Exposure settings may be referred to as image capture settings and / or image processing settings.
[0043] The zoom control mechanism 116 of the control mechanism 110 can obtain zoom settings. In some examples, the zoom control mechanism 116 stores the zoom settings in a memory register. Based on the zoom settings, the zoom control mechanism 116 can control the focal length of an assembly (lens assembly) of lens elements including lens 108 and one or more additional lenses. For example, the zoom control mechanism 116 can control the focal length of the lens assembly by actuating one or more motors or servo systems (or other lens mechanisms) to move one or more lenses relative to each other. The zoom settings may be referred to as image capture settings and / or image processing settings. In some examples, the lens assembly may include a parfocal zoom lens or a variable focal length zoom lens. In some examples, the lens assembly may include a focusing lens (in some cases, this focusing lens may be lens 108) that first receives light from scene 106, where the light then passes through a focusing zoom system between the focusing lens (e.g., lens 108) and image sensor 118 before reaching image sensor 118. In some cases, a focused zoom system may include two positive (e.g., converging, convex) lenses with equal or similar focal lengths (e.g., within a threshold difference from each other), with a negative (e.g., diverging, concave) lens between the two positive lenses. In some cases, zoom control mechanism 116 moves one or more lenses in the focused zoom system, such as a negative lens and one or both positive lenses. In some cases, zoom control mechanism 116 can control zoom by capturing images from an image sensor (e.g., including image sensor 118) among a plurality of image sensors at a zoom setting corresponding to the zoom setting. For example, image processing system 100 may include a wide-angle image sensor with a relatively low zoom and a telephoto image sensor with a greater zoom. In some cases, zoom control mechanism 116 may capture images from the corresponding sensor based on the selected zoom setting.
[0044] Image sensor 118 includes one or more arrays of photodiodes or other photosensitive elements. Each photodiode measures the amount of light that ultimately corresponds to a specific pixel in the image generated by image sensor 118. In some cases, different photodiodes may be covered by different filters. In some cases, different photodiodes may be covered in different color filters, and thus light matching the color of the filter covering the photodiode can be measured. Various color filter arrays can be used, such as, for example, and not limited to, Bayer color filter arrays, four-color filter arrays (QCFA), and / or any other color filter array.
[0045] In some cases, image sensor 118 may optionally or additionally include opaque and / or reflective masks that block light from reaching certain photodiodes or portions of certain photodiodes at certain times and / or from certain angles. In some cases, opaque and / or reflective masks may be used for phase detection autofocus (PDAF). In some cases, opaque and / or reflective masks may be used to block portions of the electromagnetic spectrum from reaching the photodiodes of the image sensor (e.g., IR cutoff filters, UV cutoff filters, bandpass filters, low-pass filters, high-pass filters, etc.). Image sensor 118 may also include an analog gain amplifier for amplifying the analog signal output from the photodiodes and / or an analog-to-digital converter (ADC) for converting the analog signal output from the photodiodes (and / or the analog signal amplified by the analog gain amplifier) into a digital signal. In some cases, certain components or functions discussed with respect to one or more control mechanisms in control mechanism 110 may alternatively or additionally be included in image sensor 118. Image sensor 118 may be a charge-coupled device (CCD) sensor, an electron multiplication CCD (EMCCD) sensor, an active pixel sensor (APS), a complementary metal-oxide semiconductor (CMOS), an N-type metal-oxide semiconductor (NMOS), a hybrid CCD / CMOS sensor (e.g., sCMOS), or some other combination thereof.
[0046] Image processor 124 may include one or more processors, such as one or more image signal processors (ISPs) (including ISP 128), one or more host processors (including host processor 126), and / or related to Figure 6 The computing device architecture 600 may include one or more processors of any other type discussed. The host processor 126 may be a digital signal processor (DSP) and / or other types of processor. In some specific implementations, the image processor 124 is a single integrated circuit or chip (e.g., referred to as a system-on-a-chip or SoC) that includes the host processor 126 and the ISP 128. In some cases, the chip may also include one or more input / output ports (e.g., input / output (I / O) port 130), a central processing unit (CPU), a graphics processing unit (GPU), a broadband modem (e.g., 3G, 4G, or LTE, 5G, etc.), memory, and connectivity components (e.g., Bluetooth). ™This includes components such as the Global Positioning System (GPS), any combination thereof, and / or other components. I / O port 130 may include any suitable input / output port or interface according to one or more protocols or specifications, such as Inter-Integrated Circuit 2 (I2C) interface, Inter-Integrated Circuit 3 (I3C) interface, Serial Peripheral Interface (SPI) interface, Serial General Purpose Input / Output (GPIO) interface, Mobile Industrial Processor Interface (MIPI) (such as MIPI CSI-2 physical (PHY) layer port or interface), Advanced High Performance Bus (AHB) bus, any combination thereof, and / or other input / output ports. In an exemplary example, host processor 126 may communicate with image sensor 118 using the I2C port, and ISP 128 may communicate with image sensor 118 using the MIPI port.
[0047] Image processor 124 can perform multiple tasks, such as demosaicing, color space conversion, image frame downsampling, pixel interpolation, automatic exposure (AE) control, automatic gain control (AGC), CDAF, PDAF, automatic white balance, merging image frames to form an HDR image, image recognition, object recognition, feature recognition, receiving input, managing output, managing memory, or some combination thereof. Image processor 124 can store image frames and / or processed images in random access memory (RAM) 120, read-only memory (ROM) 122, cache, memory unit, another storage device, or some combination thereof.
[0048] Various input / output (I / O) devices 132 may be connected to the image processor 124. I / O devices 132 may include a display screen, keyboard, keypad, touchscreen, touchpad, touch-sensitive surface, printer, any other output device, any other input device, or any combination thereof. In some cases, text may be entered into the image processing device 104 via the physical keyboard or keypad of the I / O device 132, or via a virtual keyboard or keypad on the touchscreen of the I / O device 132. I / O devices 132 may include one or more ports, jacks, or other connectors that enable wired connections between the image processing system 100 and one or more peripheral devices, through which the image processing system 100 may receive data from and / or send data to one or more peripheral devices. I / O devices 132 may include one or more wireless transceivers that enable wireless connections between the image processing system 100 and one or more peripheral devices, through which the image processing system 100 may receive data from and / or send data to one or more peripheral devices. Peripheral devices may include any type of I / O device 132 discussed earlier, and they can be considered I / O devices 132 in themselves once they are coupled to ports, jacks, wireless transceivers or other wired and / or wireless connectors.
[0049] In some cases, the image processing system 100 may be a single device. In other cases, the image processing system 100 may be two or more independent devices, including an image capture device 102 (e.g., a camera) and an image processing device 104 (e.g., a computing device coupled to the camera). In some embodiments, the image capture device 102 and the image processing device 104 may be coupled together, for example, via one or more wires, cables, or other electrical connectors, and / or wirelessly coupled together via one or more wireless transceivers. In some embodiments, the image capture device 102 and the image processing device 104 may be disconnected from each other.
[0050] like Figure 1 As shown, the vertical dashed line will Figure 1 The image processing system 100 is divided into two parts, namely image capture device 102 and image processing device 104. Image capture device 102 includes a lens 108, a control mechanism 110, and an image sensor 118. Image processing device 104 includes an image processor 124 (including an ISP 128 and a host processor 126), RAM 120, ROM 122, and I / O devices 132. In some cases, certain components illustrated in image capture device 102 (such as ISP 128 and / or host processor 126) may be included in image capture device 102. In some examples, image processing system 100 may include one or more wireless transceivers for wireless communication, such as cellular network communication, 802.11 Wi-Fi communication, wireless local area network (WLAN) communication, or some combination thereof.
[0051] Image processing system 100 may be part of or implemented by a single computing device or multiple computing devices. In some examples, image processing system 100 may be part of electronic devices (or multiple electronic devices), such as camera systems (e.g., digital cameras, IP cameras, video cameras, security cameras, etc.), telephone systems (e.g., smartphones, cellular phones, conferencing systems, etc.), laptops or notebook computers, tablet computers, set-top boxes, smart TVs, display devices, game consoles, XR devices (e.g., HMDs, smart glasses, etc.), IoT (Internet of Things) devices, smart wearable devices, video streaming devices, Internet Protocol (IP) cameras, or any other suitable electronic devices.
[0052] Although the image processing system 100 is shown as including certain components, those skilled in the art will understand that the image processing system 100 may include more than [other components]. Figure 1The components shown herein are the most numerous. The components of the image processing system 100 may include software, hardware, or one or more combinations of software and hardware. For example, in some embodiments, the components of the image processing system 100 may include electronic circuitry or other electronic hardware and / or may be implemented using electronic circuitry or other electronic hardware, which may include one or more programmable electronic circuits (e.g., microprocessors, GPUs, DSPs, CPUs, and / or other suitable electronic circuits), and / or may include computer software, firmware, or any combination thereof and / or may be implemented using computer software, firmware, or any combination thereof to perform the various operations described herein. The software and / or firmware may include one or more instructions stored on a computer-readable storage medium and executable by one or more processors of an electronic device implementing the image processing system 100.
[0053] In some examples, Figure 6 The computing device architecture 600 shown and further described below may include an image processing system 100, an image capture device 102, an image processing device 104, or a combination thereof.
[0054] Figure 2A This is an illustration showing a front view 204 of the example device 202. Figure 2B This is an illustration showing a view of the rear side 208 of device 202. (See illustration.) Figure 2A As can be seen, device 202 includes a front-facing camera 206 on the front 204. (As...) Figure 2B As can be seen, device 202 includes a rear camera 210 on the back 208. For example, the rear camera 210 includes a telephoto camera 212, a wide-angle camera 214, and an ultra-wide-angle camera 216. The number of cameras in device 202 is provided as an example. Other devices may include any number of cameras, and the cameras may be arranged in any position on the device. For example, a device may include two or more front cameras, two or more rear cameras, and / or cameras on other surfaces of the device (e.g., the sides).
[0055] Each of the front-facing camera 206, telephoto camera 212, wide-angle camera 214, and ultra-wide-angle camera 216 may or may include Figure 1 Examples of image capture devices 102. For example, each of the front camera 206, telephoto camera 212, wide-angle camera 214, and ultra-wide-angle camera 216 may individually include a lens (e.g., lens 108), a control mechanism (e.g., control mechanism 110), and an image sensor (e.g., image sensor 118).
[0056] In some cases, device 202 may include multiple instances of image processing device 104 and / or image processor 124. For example, device 202 may include instances of image processing device 104 (or image processor 124) for each of the front-facing camera 206, telephoto camera 212, wide-angle camera 214, and ultra-wide-angle camera 216. In such cases, each of the front-facing camera 206, telephoto camera 212, wide-angle camera 214, and ultra-wide-angle camera 216 may provide image data to a corresponding instance of image processing device 104 (or a corresponding instance of image processor 124). The corresponding instance of image processing device 104 (or image processor 124) may process the image data to generate a final image. As another example, device 202 may include fewer instances of image processing device 104 (or image processor 124) compared to the number of cameras in device 202. In such cases, multiple cameras among the front-facing camera 206, telephoto camera 212, wide-angle camera 214, and ultra-wide-angle camera 216 may provide image data to the same image processing device 104 (or image processor 124). For example, the rear camera 210 may all provide data to one instance of image processing device 104 (or image processor 124), and the front-facing camera 206 may provide data to another instance of image processing device 104 (or image processor 124). In other cases, device 202 may include one instance of image processing device 104 (or image processor 124). In such cases, all cameras among the front-facing camera 206, telephoto camera 212, wide-angle camera 214, and ultra-wide-angle camera 216 may provide image data to the instance of image processing device 104 (or image processor 124).
[0057] Figure 3 This is an illustration of an example device 302 illustrating manageable control of camera 304 according to various aspects of this disclosure. For example, when application 308 requests control of camera 304, device 302 can arbitrate among applications 308.
[0058] Device 302 may include cameras 304a, 304b, and 304c (collectively referred to as cameras 304). For purposes of description, three cameras 304 are illustrated and described in device 302. Devices according to various aspects of this disclosure may include any number of cameras. Each of the cameras 304 may be... Figure 1 An example of image capture device 102. Each of the front camera 206, telephoto camera 212, wide-angle camera 214, and ultra-wide-angle camera 216 may be an example of a camera in camera 304.
[0059] Device 302 may run operating system 306 (OS 306). OS 306 may be software that can run on one or more processors of device 302. OS 306 may manage the hardware of device 302. In addition, OS 306 may execute application 308 and API 310.
[0060] Applications 308a, 308b, and 308c (collectively referred to as Application 308) are provided as examples of applications that can run on Device 302. Application 308 may be software that can run on one or more processors of Device 302. OS 306 executes Application 308. Application 308 may transmit requests to API 310 for receiving image data from one or more cameras in Camera 304 and / or controlling one or more cameras in Camera 304. In some cases, Application 308 may request image data from a specific camera in Camera 304 or control of a specific camera in those cameras. In other cases, Application 308 may typically request image data from any one of Camera 304 or from any one of a group of Camera 304 (e.g., from Camera 304 arranged on a surface of Device 302). Application 308 may perform functions related to capturing images and / or capturing video. For example, Application 308 may include a camera application, a video call or streaming application, a barcode or quick response (QR) code scanner application, any combination thereof, and / or other applications.
[0061] Application Programming Interface 310 (API 310) may be software configured to provide an interface between application 308 and camera 304. API 310 may be software running on one or more processors of device 302. OS 306 executes API 310. OS 306 enables application 308 to communicate with API 310. API 310 may receive requests (and / or control settings) from application 308, control camera 304 based on the requests, receive image data from camera 304, and provide output data (e.g., processed image data) in response to the requests. For example, application 308a may send a request to API 310. The request may be a request for image data from one or more cameras in camera 304. In some cases, the request may specify one or more particular cameras in camera 304 (e.g., camera 304a and / or camera 304b). In some cases, the request may include control settings (e.g., image capture settings and / or image processing settings). API 310 may control one or more cameras in camera 304 based on the requests. For example, API 310 may control camera 304a to generate requested image data based on control settings. In some cases, API 310 may process image data upon request (e.g., control one of the image signal processors in image signal processor 316 (ISP 316) based on requested image processing settings). API 310 may return output data (e.g., the requested and / or processed image data) to application 308a. API 310 may allow application 308 running on device 302 to receive image data from camera 304 without needing details about camera 304. For example, application 308a may request image data at a specific zoom setting and a specific exposure time, without needing details about the commands used to control any camera in camera 304.
[0062] API 310 may use driver 312 to control camera 304 and / or receive data from camera 304. In some aspects, API 310 may include driver 312. Driver 312 may be software running on one or more processors of device 302. Additionally or alternatively, driver 312 may include one or more hardware elements (e.g., a driver configured to provide control voltage to camera 304). Although illustrated as a single element, in some cases, driver 312 may be or may include multiple separate drivers (e.g., one driver for each camera in camera 304). Driver 312 may be configured to provide commands to camera 304. For example, driver 312 may be configured using information about specific command signals and / or voltages used to control camera 304. Additionally or alternatively, driver 312 may be configured to receive image data (e.g., raw image data) from camera 304. For example, driver 312 may be configured using information about the sensor of camera 304 (e.g., sensor size) and / or the data format of the image data provided by camera 304.
[0063] API 310 may use one or more image signal processors 316 (ISP 316) to process image data (e.g., raw image data) from camera 304 to generate processed image data. In some aspects, API 310 may include ISP 316. ISP 316 may perform operations related to, for example, noise reduction, resolution upscaling, various image correction protocols, demosaicing, color space conversion, pixel interpolation, automatic exposure control (AEC), automatic gain control (AGC), contrast detection autofocus (CDAF), phase detection autofocus (PDAF), automatic white balance, and merging image frames to form an HDR image. ISP 316 may be or may include one or more processors. Additionally or alternatively, ISP 316 may be or may include one or more image or signal processing algorithms that can be implemented in any processor. In some cases, ISP 316 may include multiple separate processors or algorithms capable of processing all data from camera 304. In some cases, ISP 316 may include a processor or algorithm for each camera in camera 304.
[0064] API 310 can control camera 304 and / or ISP 316 based on settings 318. Settings 318 may include image capture settings and / or image processing settings. For example, API 310 can control one or more cameras in camera 304 based on image capture settings in settings 318. Additionally or alternatively, API 310 can control the operation of one or more ISPs 316 based on image processing settings in settings 318.
[0065] For example, API 310 enables application 308 to switch between cameras 304. For instance, API 310 may provide image data from camera 304a (e.g., a wide-angle camera) to application 308a, and then switch to providing image data from camera 304b (e.g., a telephoto camera). API 310 may make the transition smooth. For instance, API 310 may receive data (e.g., image data) output from two or more cameras in camera 304 and determine one or more settings 318 for operation of camera 304 based on the data. For instance, based on image data from camera 304a, camera 304b, and / or camera 304c, API 310 may determine settings 318 related to ISO, exposure time, aperture size, focus, gain, AEC, AWB, AF, and / or combinations thereof. API 310 may control one or more cameras in camera 304 according to the determined settings 318. For instance, API 310 may control settings of camera 304a based on input from application 308a. Additionally, API 310 may control the settings of camera 304b and / or camera 304c based on setting 318 (e.g., such that if application 308a requests a transition from receiving image data from camera 304a to receiving image data from camera 304b, camera 304b is configured to provide image data related to the image data provided by camera 304a (such as in terms of brightness and / or focus).
[0066] As another example, API 310 may determine settings 318 based on a request from application 308a and / or based on how API 310 is controlling a camera in camera 304 for an application in application 308. For example, API 310 may control camera 304a based on a request from application 308a. Furthermore, when controlling camera 304a, API 310 may determine settings 318 for cameras 304b and / or 304c based on the settings used to control camera 304a. Additionally, API 310 may control cameras 304b and / or 304c based on settings 318 (e.g., even if application 308a is not receiving data from cameras 304b and / or 304c). Then, in response to a request from application 308a (e.g., a zoom request), API 310 may switch application 308a from receiving image data from camera 304a to receiving image data from camera 304b. Because camera 304b is already controlled based on setting 318, the transition can be smooth (e.g., the last image from camera 304a can be similar to the first image from camera 304b, such as in terms of brightness and / or focus).
[0067] API 310 may include an arbitrator 314. The arbitrator 314 may be or may include one or more routines, algorithms, or procedures implemented in software running on one or more processors of device 302. The arbitrator 314 may be implemented in API 310 or as part of the API. When application 308 attempts to control camera 304, the arbitrator 314 may arbitrate between applications 308. In other words, the arbitrator 314 may manage the control of camera 304 by application 308. The arbitrator 314 may arbitrate according to guidelines to allow multiple applications in application 308 to control multiple corresponding cameras in camera 304. In this disclosure, the reference to an application controlling a camera may refer to the API controlling the camera according to a request or instruction from an application. For example, application 308a may request image data to be captured using a specific exposure time. API 310 may control camera 304a to capture the requested image data according to the requested exposure time. For the sake of brevity, the transactions between application 308a, API 310 and camera 304a can be described as application 308a controlling camera 304a.
[0068] As an example of the intended operation of arbitrator 314, arbitrator 314 may allow a first application in application 308 to control one of the cameras in camera 304. For example, application 308a may request control of one of the cameras in camera 304. The request may relate to a specific camera in camera 304; for example, the request may include zoom settings or a surface of device 302. One camera in camera 304 (e.g., camera 304a) may be capable of zoom settings or on a surface. In such cases, API 310 may grant application 308a control over camera 304a. In other cases, the request may not relate to a specific camera in camera 304, or it may relate to multiple cameras in camera 304. In such cases, API 310 may determine whether to grant application 308a control over one of the cameras in camera 304 based on some other criterion, such as, for example, use case, default values, or comparative power consumed by each camera in camera 304.
[0069] According to various aspects of this disclosure, arbitrator 314 may allow one or more other applications in application 308 to control one or more other cameras in camera 304. For example, while application 308a is controlling camera 304a, if application 308b requests image data or control of one of the cameras in camera 304, arbitrator 314 may grant application 308b control over either camera 304b or camera 304c. Furthermore, if application 308c requests control over one of the cameras in camera 304, arbitrator 314 may grant application 308c control over another of application 308b and application 308c (e.g., the one not controlled by application 308b). Arbitrator 314 may manage control of camera 304 by tracking data such as that illustrated in Table 1.
[0070] In this way, API 310 (using arbitrator 314) allows multiple applications in application 308 to simultaneously use multiple corresponding cameras in camera 304. This enables more efficient use of camera 304. Furthermore, this may be preferred for users who might want two or more applications in application 308 to control two or more corresponding cameras in camera 304. For example, this allows a user to participate in a video call using the front camera while simultaneously capturing images using the rear camera.
[0071] In some cases, arbitrator 314 may determine which application in application 308 is allowed to control which camera in camera 304 based on primacy (e.g., based on which application in application 308 made the request first). For example, if application 308a is controlling camera 304a (e.g., based on the fact that 308a is already the first application in application 308 to request control of one of the cameras in camera 304), then subsequent applications in application 308 requesting control of one of the cameras in camera 304 may be granted control of unused cameras (e.g., camera 304b or camera 304c). As another example, the first application to initiate may have priority over applications initiated later.
[0072] In some cases, arbitrator 314 may determine which application in application 308 is allowed to control which camera in camera 304 based on priority (e.g., based on a table, such as a priority lookup table describing which applications have a higher priority than other applications). For example, arbitrator 314 may include or have access to a priority table (e.g., a priority lookup table). OS 306 may provide input to or manage the priority table. The priority table may describe which application in application 308 has a higher priority than other applications regarding control of camera 304. Furthermore, the priority table may describe the conditions of priority. For example, some applications 308 may have a higher priority regarding certain cameras in camera 304 than others. For example, a video call or streaming application may have a higher priority regarding the front camera than the rear camera. As another example, a barcode reading application may have a higher priority regarding the rear camera than a video chat application, but the video chat application may have a higher priority regarding the front camera than the barcode reading application. Based on the priority table, arbitrator 314 may determine whether control of the second requesting application is granted over the application currently using the camera. For example, if application 308a (e.g., a video chat application) is using camera 304a, and application 308b (e.g., a camera application) requests control of camera 304a, then arbitrator 314 can determine which of application 308a and application 308b should be granted control of camera 304a. Table 2 is an example priority table.
[0073] Arbitrator 314 may (whether based on primacy or priority) determine what to do when an application is not granted the control it requested or when control is revoked. For example, if application 308b is denied control of camera 304a, arbitrator 314 may determine what to do (e.g., what response to provide to application 308b). For example, arbitrator 314 may determine to provide notification of the reason for the denial of the request. Furthermore, arbitrator 314 may determine to provide alternative suggestions (e.g., suggestions for other cameras available). Alternatively, if application 308b is granted control of camera 304a and control of camera 304a is derived from application 308a, arbitrator 314 may determine what to do (e.g., what to do with application 308a). In some cases, arbitrator 314 may simply not provide image data, or stop providing image data, and not control any camera in camera 304 based on a request from the denied application. In other cases, arbitrator 314 may generate a query about the conflict (e.g., "Which of applications 308a and 308b should be granted control over camera 304a?") and provide the query to the user of OS 306 or device 302. Arbitrator 314 may store a response (or proactively propose a stored response) to resolve future conflicts. For example, Figure 4 Example query 404 is provided to a user of device 402 according to various aspects of this disclosure.
[0074] In other cases, arbitrator 314 may allow a denied application to control another camera in camera 304. For example, if application 308b is denied control of camera 304a (e.g., based on application 308a already controlling camera 304a and / or based on application 308a having a higher priority over application 304a), arbitrator 314 may grant (or proactively offer to grant) control of camera 304b to application 308b. Arbitrator 314 may include or have access to a preference table (e.g., a lookup table). OS 306 may provide input to or manage the preference table. The preference table may include preferred cameras for each application in application 308. For example, the preference table may include indications that application 308b prefers camera 304a, then camera 304b, and then camera 304c. Therefore, when application 308b requests control of one of the cameras in camera 304, arbitrator 314 may first check whether camera 304a is controlled by another application. Then, if so, the arbitrator 314 can check whether the camera 304b is controlled by another application, and if not, the arbitrator 314 can grant the application 308b control of the camera 304b. Table 3 is an example of a preference table.
[0075] Figure 5A This is a flowchart illustrating a process 500A for managing control of a camera according to various aspects of this disclosure. One or more operations of process 500A may be performed by a computing device (or apparatus) or a component of a computing device (e.g., chipset, codec, etc.). The computing device may be a mobile device (e.g., a mobile phone), a network-connected wearable device such as a watch, an extended reality (XR) device such as a virtual reality (VR) device or an augmented reality (AR) device, a vehicle or a component or system of a vehicle, a desktop computing device, a tablet computing device, a server computer, a robotic device, and / or any other computing device with the resource capabilities to perform process 500A. One or more operations of process 500A may be implemented as software components executed and running on one or more processors.
[0076] At box 502, the computing device (or one or more components thereof) may receive data output from two or more of the device's multiple cameras. For example, Figure 3 API 310 can receive data output from two or more cameras in camera 304.
[0077] At box 504, a computing device (or one or more components thereof) may determine one or more settings for operation of multiple cameras based on data. For example, API 310 may determine one or more settings for operating camera 304.
[0078] In some respects, one or more of these settings may be associated with at least one of the following: ISO value, exposure time, aperture size, lens defocus value, exposure gain, focus window, color temperature, color channel gain, automatic exposure control (AEC), automatic white balance (AWB), and / or automatic focus (AF).
[0079] At box 506, the computing device (or one or more components thereof) may grant a first application running on the device control over a first camera among a plurality of cameras. For example, API 310 may grant application 308a control over camera 304a.
[0080] At box 508, the computing device (or one or more components thereof) may receive a request from a second application running on the device to control one or more of a plurality of cameras. For example, API 310 may receive a request from application 308b to control one of the cameras 304.
[0081] At box 510, the computing device (or one or more components thereof) may grant a second application control over one or more unused cameras among a plurality of cameras. For example, API 310 may grant application 308b control over camera 304b.
[0082] In some aspects, granting control of the first camera to the first application may or may include granting the first application control over the image capture settings of the first camera. Furthermore, granting control of one or more unused cameras to the second application may or may include granting the second application control over the image capture settings of one or more unused cameras. In some aspects, process 500A may be performed by an API (e.g., API 310).
[0083] In some respects, a computing device (or one or more components thereof) may: receive a request from a third application to control one or more cameras among a plurality of cameras; and grant the third application control over one or more unused cameras among the plurality of cameras. For example, API 310 may receive a request from application 308c to control one of cameras 304. In response to the request, API 310 may grant application 308c control over camera 304c.
[0084] In some aspects, a computing device (or one or more components thereof) may: determine that a second application has a higher priority than a first application for controlling a first camera; and, based on the higher priority of the second application for controlling the first camera, deny the first application control of the first camera and grant the second application control of the first camera. For example, API 310 may determine that application 308b has a higher priority than application 308a for controlling camera 304a. Based on the higher priority of application 308b relative to camera 304a, API 310 may deny application 308a control of camera 304a and grant application 308b control of camera 304a. In some aspects, a computing device (or one or more components thereof) may grant the first application control of another camera among a plurality of cameras. For example, after API 310 denies application 308a control of camera 304a, API 310 may grant application 308a control of camera 304b.
[0085] In some aspects, the second application has a priority determination method for controlling the first camera that is superior to that of the first application, based on a priority table. For example, API 310 may store a priority table. In some aspects, the second application has a priority determination method for controlling the first camera that is superior to that of the first application, based on a query provided to the user. For example, a query 404 may be provided to the user, and the determination may be based on the response to the query 404.
[0086] In some aspects, one or more settings may be one or more first settings. The computing device (or one or more components thereof) may further: grant control of a second camera among a plurality of cameras to the first application before granting control of the first camera; control the second camera based on one or more second settings before granting control of the first camera to the first application; grant control of the first camera to the first application in response to a request from the first application to control the first camera; and control the first camera based on one or more second settings.
[0087] For example, API 310 may grant application 308a control over camera 304b. API 310 may control camera 304b according to a second setting (e.g., based on instructions from application 308a). In response to a request, API 310 may grant application 308a control over camera 304a. API 310 may control camera 304a based on the second setting. For example, API 310 may implement zoom transition handling.
[0088] Figure 5BThis is a flowchart illustrating a process 500B for managing control of a camera according to various aspects of this disclosure. One or more operations of process 500B may be performed by a computing device (or apparatus) or components of a computing device (e.g., chipset, codec, etc.). The computing device may be a mobile device (e.g., a mobile phone), a network-connected wearable device such as a watch, an extended reality (XR) device such as a virtual reality (VR) device or an augmented reality (AR) device, a vehicle or a component or system of a vehicle, a desktop computing device, a tablet computing device, a server computer, a robotic device, and / or any other computing device with the resource capabilities to perform process 500B. One or more operations of process 500B may be implemented as software components executed and running on one or more processors.
[0089] At box 522, the computing device (or one or more components thereof) may grant a first application running on the device control of a first camera among the multiple cameras of the device.
[0090] At box 524, the computing device (or one or more components thereof) can control the first camera based on one or more settings.
[0091] In some respects, one or more of these settings may be associated with at least one of the following: ISO value, exposure time, aperture size, lens defocus value, exposure gain, focus window, color temperature, color channel gain, automatic exposure control (AEC), automatic white balance (AWB), and / or automatic focus (AF).
[0092] At box 526, the computing device (or one or more components thereof) may grant the first application control over the second camera in response to a request from the first application for controlling the second camera among a plurality of cameras.
[0093] At box 528, the computing device (or one or more components thereof) can control the second camera based on one or more settings.
[0094] At box 530, the computing device (or one or more components thereof) may receive a request from a second application running on the device to control one or more of a plurality of cameras.
[0095] At box 532, the computing device (or one or more components thereof) may grant the second application control over one or more unused cameras among a plurality of cameras.
[0096] In some aspects, granting control of the first camera to the first application may or may include granting the first application control over the image capture settings of the first camera. Furthermore, granting control of one or more unused cameras to the second application may or may include granting the second application control over the image capture settings of one or more unused cameras. In some aspects, process 500B may be performed by an API (e.g., API 310).
[0097] In some respects, a computing device (or one or more components thereof) may: receive a request from a third application to control one or more cameras among a plurality of cameras; and grant the third application control over one or more unused cameras among the plurality of cameras. For example, API 310 may receive a request from application 308c to control one of cameras 304. In response to the request, API 310 may grant application 308c control over camera 304c.
[0098] In some aspects, a computing device (or one or more components thereof) may: determine that a second application has a higher priority than a first application for controlling a first camera; and, based on the higher priority of the second application for controlling the first camera, deny the first application control of the first camera and grant the second application control of the first camera. For example, API 310 may determine that application 308b has a higher priority than application 308a for controlling camera 304a. Based on the higher priority of application 308b relative to camera 304a, API 310 may deny application 308a control of camera 304a and grant application 308b control of camera 304a. In some aspects, a computing device (or one or more components thereof) may grant the first application control of another camera among a plurality of cameras. For example, after API 310 denies application 308a control of camera 304a, API 310 may grant application 308a control of camera 304b.
[0099] In some aspects, the second application has a priority determination method for controlling the first camera that is superior to that of the first application, based on a priority table. For example, API 310 may store a priority table. In some aspects, the second application has a priority determination method for controlling the first camera that is superior to that of the first application, based on a query provided to the user. For example, a query 404 may be provided to the user, and the determination may be based on the response to the query 404.
[0100] In some aspects, one or more settings include one or more first settings. The computing device (or one or more components thereof) may further: receive data output from two or more of the device's plurality of cameras; and determine one or more second settings for operation of the plurality of cameras based on the data. For example, API 310 may receive data from camera 304 and may determine the second settings based on the data received from camera 304.
[0101] In some examples, as previously noted, the methods described herein (e.g., Figure 5A Process 500A, Figure 5B The process 500B and / or other methods described herein can be performed wholly or partially by a computing device or apparatus. In one example, it can be performed by... Figure 2A and Figure 2B Equipment 202 Figure 3 Equipment 302 Figure 3 OS 306 Figure 3 API 310 Figure 3 The arbitrator 314 or another system or device may perform one or more of the methods. In another example, it may be performed by... Figure 6 The computing device architecture 600 shown executes the method (e.g., Figure 5A Process 500A, Figure 5B The process (500B and / or other methods described herein) includes one or more methods. For example, having Figure 6 The computing device of the computing device architecture 600 shown may include or be included in the following: Figure 2A and Figure 2B Equipment 202 Figure 3 Equipment 302 Figure 3 OS 306 Figure 3 API 310 Figure 3 The arbitrator 314 is a component that enables the operation of processes 500A, 500B, and / or other processes described herein. In some cases, a computing device or apparatus may include various components such as one or more input devices, one or more output devices, one or more processors, one or more microprocessors, one or more microcomputers, one or more cameras, one or more sensors, and / or other components configured to perform the steps of the processes described herein. In some examples, a computing device may include a display, a network interface configured to communicate and / or receive data, any combination thereof, and / or other components. The network interface may be configured to communicate and / or receive Internet Protocol (IP) based data or other types of data.
[0102] A component capable of implementing a computing device in a circuit. For example, the component may include electronic circuitry or other electronic hardware, and / or may be implemented using electronic circuitry or other electronic hardware, which may include one or more programmable electronic circuits (e.g., a microprocessor, graphics processing unit (GPU), digital signal processor (DSP), central processing unit (CPU), and / or other suitable electronic circuitry), and / or may include computer software, firmware, or any combination thereof for performing the various operations described herein, and / or may be implemented using computer software, firmware, or any combination thereof for performing the various operations described herein.
[0103] Processes 500A, 500B, and / or other processes described herein are illustrated as logic flowcharts, whose operations represent sequences of operations that can be implemented in hardware, computer instructions, or combinations thereof. In the context of computer instructions, each operation represents a computer-executable instruction stored on one or more computer-readable storage media that, when executed by one or more processors, performs the described operation. Generally, computer-executable instructions include routines, programs, objects, components, data structures, etc., that perform a particular function or implement a particular data type. The order in which the operations are described is not intended to be construed as limiting, and any number of the described operations can be combined in any order and / or in parallel to implement the process.
[0104] Additionally, processes 500A, 500B, and / or other processes described herein may be executed under the control of one or more computer systems configured with executable instructions, and may be implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) that executes jointly on one or more processors, implemented in hardware, or implemented in combination thereof. As noted above, the code may be stored on a computer-readable or machine-readable storage medium, for example, in the form of a computer program comprising multiple instructions executable by one or more processors. The computer-readable or machine-readable storage medium may be non-transitory.
[0105] Figure 6 An example computing device architecture 600 is illustrated, illustrating example computing devices that can implement the various technologies described herein. In some examples, the computing device may include a mobile device, a wearable device, an extended reality device (e.g., a virtual reality (VR) device, an augmented reality (AR) device, or a mixed reality (MR) device), a personal computer, a laptop computer, a video server, a vehicle (or a computing device within a vehicle), or other devices. For example, computing device architecture 600 may include, implement, or be included in the following: Figure 2A and Figure 2B Equipment 202 Figure 3 Equipment 302 Figure 3 OS 306 Figure 3 API 310 Figure 3 Any or all of the arbitrators 314.
[0106] The components of computing device architecture 600 are shown to communicate electrically with each other using a connection 612, such as a bus. Example computing device architecture 600 includes a processing unit (CPU or processor) 602 and a computing device connection 612 that couples various computing device components, including computing device memories 610 (such as read-only memory (ROM) 608 and random access memory (RAM) 606), to the processor 602.
[0107] The computing device architecture 600 may include a cache of high-speed memory that is directly connected to, very close to, or integrated as part of the processor 602. The computing device architecture 600 may copy data from memory 610 and / or storage device 614 to cache 604 for fast access by the processor 602. In this way, the cache can provide performance improvements by avoiding latency for the processor 602 while waiting for data. These and other modules may control or be configured to control the processor 602 to perform various actions. Other computing device memory 610 may also be used. Memory 610 may include various different types of memory with different performance characteristics. The processor 602 may include any general-purpose processor and hardware or software services configured to control the processor 602 (such as services 1 616, 2 618, and 3 620 stored in storage device 614), as well as dedicated processors in which software instructions are incorporated into the processor design. The processor 602 may be a self-contained system containing multiple cores or processors, buses, memory controllers, caches, etc. Multi-core processors may be symmetric or asymmetric.
[0108] To enable user interaction with computing device architecture 600, input device 622 can represent any number of input mechanisms, such as a microphone for voice, a touch-sensitive screen for gesture or graphical input, a keyboard, a mouse, motion input, voice input, etc. Output device 624 can also be one or more of a variety of output mechanisms known to those skilled in the art, such as a display, projector, television, speaker equipment, etc. In some instances, multi-mode computing devices enable users to provide multiple types of input to communicate with computing device architecture 600. Communication interface 626 typically controls and manages user input and computing device output. There are no limitations on operation on any particular hardware arrangement, and therefore the underlying features here can be easily replaced to obtain improved hardware or firmware arrangements as they are developed.
[0109] Storage device 614 is a non-volatile memory and may be a hard disk or other type of computer-readable medium capable of storing computer-accessible data, such as a magnetic tape cassette, flash memory card, solid-state memory device, digital multifunction disk, magnetic tape cartridge, random access memory (RAM) 606, read-only memory (ROM) 608, and hybrid forms thereof. Storage device 614 may include services 616, 618, and 620 for controlling processor 602. Other hardware or software modules are envisioned. Storage device 614 may be connected to computing device connection 612. In one aspect, a hardware module performing a specific function may include software components stored in a computer-readable medium connected to necessary hardware components, such as processor 602, connection 612, output device 624, etc., to perform that function.
[0110] With reference to a given parameter, property, or condition, the term "substantially" may mean that a person skilled in the art would understand that a given parameter, property, or condition is satisfied with a small degree of variance (such as, for example, within acceptable manufacturing tolerances). For example, depending on the specific parameter, property, or condition that is substantially satisfied, the parameter, property, or condition may be satisfied at least 90%, at least 95%, or even at least 99%.
[0111] Various aspects of this disclosure are applicable to any suitable electronic device (such as a security system, smartphone, tablet, laptop, vehicle, drone, or other device) that includes or is coupled to one or more active depth sensing systems. Although devices having or coupled to a light projector are described below, various aspects of this disclosure are applicable to devices having any number of light projectors and are therefore not limited to any particular device.
[0112] The term "device" is not limited to one or a specific number of physical objects (such as a smartphone, a controller, a processing system, etc.). As used herein, a device can be any electronic device having one or more parts that implement at least some parts of this disclosure. Although the following description and examples use the term "device" to describe various aspects of this disclosure, the term "device" is not limited to a specific configuration, type, or number of objects. Additionally, the term "system" is not limited to multiple components or specific aspects. For example, a system may be implemented on one or more printed circuit boards or other substrates and may have movable or static components. Although the following description and examples use the term "system" to describe various aspects of this disclosure, the term "system" is not limited to a specific configuration, type, or number of objects.
[0113] Specific details are provided in the foregoing description to provide a thorough understanding of the aspects and examples presented herein. However, those skilled in the art will understand that these aspects can be practiced without these specific details. For clarity, in some cases, the technology may be presented as comprising individual functional blocks, including functional blocks comprising devices, device components, steps or routines in methods embodied in software or a combination of hardware and software. Additional components may be used in addition to those shown in the figures and / or described herein. For example, circuits, systems, networks, processes and other components may be shown as components in block diagram form to avoid obscuring these aspects in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures and techniques may be shown without unnecessary detail to avoid obscuring aspects.
[0114] Various aspects described above can be presented as processes or methods, depicted as flowcharts, diagrams, data flow graphs, structure diagrams, or block diagrams. While flowcharts may describe operations as sequential processes, many operations within an operation can be executed in parallel or concurrently. Furthermore, the order of operations can be rearranged. A process terminates when its operations are completed, but it may have additional steps not included in the accompanying diagrams. A process can correspond to a method, function, procedure, subroutine, subroutine, etc. When a process corresponds to a function, its termination may correspond to the function returning to its calling function or the main function.
[0115] The processes and methods described in the examples above can be implemented using stored computer-executable instructions or computer-executable instructions otherwise obtainable from a computer-readable medium. Such instructions may include, for example, instructions and data that configure, or otherwise configure, a general-purpose computer, special-purpose computer, or processing device to perform a function or group of functions. The portion of the computer resources used may be accessible via a network. Computer-executable instructions may be, for example, binary files, intermediate format instructions (such as assembly language), firmware, source code, etc.
[0116] The term "computer-readable medium" includes, but is not limited to, portable or non-portable storage devices, optical storage devices, and various other media capable of storing, containing, or carrying instructions and / or data. Computer-readable media may include non-transitory media in which data can be stored and which do not include carrier waves and / or transient electronic signals propagating wirelessly or over a wired connection. Examples of non-transitory media include, but are not limited to, magnetic disks or magnetic tapes, optical storage media (such as compact discs (CDs) or digital versatile discs (DVDs)), flash memory, magnetic disks or optical disks, USB devices equipped with non-volatile memory, network storage devices, any suitable combinations thereof, etc. Computer-readable media may store code and / or machine-executable instructions thereon, which may represent procedures, functions, subroutines, programs, routines, subroutines, modules, software packages, classes, or any combination of instructions, data structures, or program statements. Code segments may be coupled to other code segments or hardware circuitry by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, independent variables, parameters, data, etc., can be transmitted, forwarded, or sent through any suitable means, including memory sharing, message passing, token passing, network transmission, etc.
[0117] In some respects, computer-readable storage devices, media, and memories may include cables or wireless signals containing bit streams, etc. However, when referred to, non-transitory computer-readable storage media explicitly exclude media such as energy, carrier signals, electromagnetic waves, and the signals themselves.
[0118] 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 as software, firmware, middleware, or microcode, program code or code segments (e.g., computer program products) for performing necessary tasks may be stored in a computer-readable or machine-readable medium. A processor performs the necessary tasks. Typical examples of form factors include laptops, smartphones, mobile phones, tablet devices, or other small form factor personal computers, personal digital assistants, rack-mounted devices, standalone devices, etc. The functionality described herein may also be embodied in peripheral devices or interlocking cards. By further example, such functionality may also be implemented on circuit boards of different chips or different processes executed on a single device.
[0119] Instructions, media for delivering such instructions, computing resources for executing them, and other structures for supporting such computing resources are example components for providing the functionality described in this disclosure.
[0120] In the foregoing description, aspects of this application have been described with reference to their specific aspects, but those skilled in the art will recognize that this application is not limited thereto. Therefore, although illustrative aspects of this application have been described in detail herein, it is to be understood that the inventive concepts can be implemented and employed in various other ways, and the appended claims are not intended to be construed as including these variations unless limited by prior art. The various features and aspects of the applications described above can be used individually or in combination. Furthermore, aspects can be utilized in any number of environments and applications beyond those described herein without departing from the broader spirit and scope of this specification. Therefore, the specification and drawings should be considered illustrative rather than restrictive. For illustrative purposes, the methods are described in a particular order. It should be understood that, in alternative aspects, the methods may be performed in a different order than described.
[0121] Those skilled in the art will understand that the less than ("<") and greater than (">") symbols or terms used herein may be replaced with less than or equal to ("≤") and greater than or equal to ("≥") symbols without departing from the scope of this description.
[0122] When a component is described as being “configured” to perform certain operations, such configuration can be achieved, for example, by designing electronic circuits or other hardware to perform the operations, by programming programmable electronic circuits (e.g., microprocessors or other suitable electronic circuits) to perform the operations, or any combination thereof.
[0123] The phrase “coupled to” means any component that is physically connected directly or indirectly to another component, and / or any component that communicates directly or indirectly with another component (e.g., connected to another component via a wired or wireless connection and / or other suitable communication interface).
[0124] Claims using phrases such as "at least one processor, the at least one processor being configured to," "at least one processor being configured to," "one or more processors, the one or more processors being configured to," or "one or more processors being configured to," or other languages, indicate that one or more processors (in any combination) are capable of performing associated operations. For example, a claim using the phrase "at least one processor, the at least one processor being configured to: X, Y, and Z" means that a single processor can be used to perform operations X, Y, and Z; or that multiple processors are each assigned a specific subset of tasks to perform operations X, Y, and Z, such that the multiple processors together perform X, Y, and Z; or that a group of multiple processors work together to perform operations X, Y, and Z. In another example, a claim using the phrase "at least one processor, the at least one processor being configured to: X, Y, and Z" could mean that any single processor can perform only at least one subset of operations X, Y, and Z.
[0125] When referring to one or more elements that perform functions (e.g., steps of a method), one element may perform all functions, or more than one element may jointly perform these functions. When more than one element jointly performs these functions, each function does not need to be performed by every single element (e.g., different functions may be performed by different elements), and / or each function does not need to be performed by only one element as a whole (e.g., different elements may perform different sub-functions of a function). Similarly, when referring to one or more elements configured to cause another element (e.g., a device) to perform functions, one element may be configured to cause another element to perform all functions, or more than one element may be jointly configured to cause another element to perform these functions.
[0126] When referring to an entity that performs or is configured to perform functions (e.g., steps of a method) (e.g., any entity or device described herein), the entity may be configured to cause one or more elements (individually or collectively) to perform those functions. One or more components of the entity may include at least one memory, at least one processor, at least one communication interface, another component configured to perform one or more of those functions, and / or any combination thereof. When referring to an entity that performs functions, the entity may be configured to cause one component to perform all functions, or to cause more than one component to perform those functions collectively. When the entity is configured to cause more than one component to perform those functions collectively, each function does not need to be performed by every single component (e.g., different functions may be performed by different components), and / or each function does not need to be performed by only one component as a whole (e.g., different components may perform different sub-functions of a function).
[0127] Claims containing phrases such as "at least one processor, the at least one processor being configured to," or other languages indicate that one or more processors (in any combination) are capable of performing associated operations. For example, a claim containing the phrase "at least one processor, the at least one processor being configured to: X, Y, and Z" means that a single processor can be used to perform operations X, Y, and Z; or that multiple processors are each assigned a specific subset of tasks involving operations X, Y, and Z, such that the multiple processors together perform X, Y, and Z; or that a group of multiple processors work together to perform operations X, Y, and Z. In another example, a claim containing the phrase "at least one processor, the at least one processor being configured to: X, Y, and Z" could mean that any single processor can perform only at least one subset of operations X, Y, and Z.
[0128] The various exemplary logic blocks, modules, circuits, and algorithm steps described in conjunction with the aspects disclosed herein can be implemented as electronic hardware, computer software, firmware, or a combination thereof. To clearly illustrate this interchangeability between hardware and software, various exemplary components, blocks, modules, circuits, and steps have been broadly described above in terms of their functionality. Whether such functionality is implemented as hardware or software depends on the specific application and the design constraints imposed on the overall system. Those skilled in the art may implement the described functionality in different ways for each specific application, but such implementation decisions should not be construed as departing from the scope of this application.
[0129] The techniques described herein can also be implemented in electronic hardware, computer software, firmware, or any combination thereof. Such techniques can be implemented in any of a variety of devices, such as general-purpose computers, wireless communication devices (mobile phones), or integrated circuit devices with multiple uses, including applications in wireless communication devices (mobile phones) and other devices. Any feature described as a module or component can be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, these techniques can be implemented at least in part by a computer-readable data storage medium comprising program code including instructions that, when executed, perform one or more of the methods described above. The computer-readable data storage medium can form part of a computer program product, which may include packaging material. The computer-readable medium may include 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. Additionally or alternatively, the technology may be implemented at least in part by a computer-readable communication medium that carries or conveys program code in the form of instructions or data structures that can be accessed, read and / or executed by a computer, such as propagated signals or waves.
[0130] The program code can 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 arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Such processors can be configured to perform any of the techniques described in this disclosure. A general-purpose processor may be a microprocessor; however, in alternatives, the processor may be any conventional processor, controller, microcontroller, or state machine. The 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 cooperating with a DSP core, or any other such configuration). Therefore, as used herein, the term "processor" may refer to any of the foregoing structures, any combination of the foregoing structures, or any other structure or means suitable for implementing the techniques described herein.
[0131] The exemplary aspects of this disclosure include: Aspect 1. A method for managing control of a camera, the method comprising: receiving data output by two or more cameras of a plurality of cameras of a device; determining one or more settings for operation of the plurality of cameras based on the data; granting control of the first camera of the plurality of cameras to a first application running on the device; receiving a request from a second application running on the device for controlling one or more cameras of the plurality of cameras; and granting control of one or more unused cameras of the plurality of cameras to the second application.
[0132] Aspect 2. The method according to aspect 1, wherein the method is performed by an application programming interface (API) that manages control of the plurality of cameras of the device.
[0133] Aspect 3. The method according to any one of Aspects 1 or 2, wherein the one or more settings are associated with at least one of: ISO value; exposure time; aperture size; lens defocus value; exposure gain; focus window; color temperature; color channel gain; automatic exposure control (AEC); automatic white balance (AWB); or automatic focus (AF).
[0134] Aspect 4. The method according to any one of Aspects 1 to 3, wherein the one or more settings include one or more first settings, wherein the method further comprises: granting the first application control over a second camera among the plurality of cameras before granting the first application control over the first camera; controlling the second camera based on one or more second settings before granting the first application control over the first camera; granting the first application control over the first camera in response to a request from the first application to control the first camera; and controlling the first camera based on the one or more second settings.
[0135] Aspect 5. The method according to any one of Aspects 1 to 4, wherein granting the first application control over the first camera includes granting the first application control over the image capture settings of the first camera, and wherein granting the second application control over the one or more unused cameras includes granting the second application control over the image capture settings of the one or more unused cameras.
[0136] Aspect 6. The method according to any one of Aspects 1 to 5, the method further comprising: receiving a request from a third application for controlling one or more of the plurality of cameras; and granting the third application control over one or more unused cameras among the plurality of cameras.
[0137] Aspect 7. The method according to any one of Aspects 1 to 6, the method further comprising: determining that the second application has a priority over the first application for controlling the first camera; and, based on the second application having a priority over the first application for controlling the first camera, denying the first application control of the first camera and granting the second application control of the first camera.
[0138] Aspect 8. The method according to aspect 7, wherein the second application has a priority determination for controlling the first camera that is superior to that of the first application, based on a priority table.
[0139] Aspect 9. The method according to any one of Aspects 7 or 8, wherein the second application has a priority for controlling the first camera based on a query provided to the user.
[0140] Aspect 10. The method according to any one of aspects 7 to 9, the method further comprising granting the first application control over another camera of the plurality of cameras.
[0141] Aspect 11. A method for managing control of a camera, the method comprising: granting control of a first camera, one of a plurality of cameras on a device, to the first application running on the device; controlling the first camera based on one or more settings; granting control of the second camera to the first application in response to a request from the first application to control a second camera, one of the plurality of cameras; controlling the second camera based on the one or more settings; receiving a request from a second application running on the device to control one or more of the plurality of cameras; and granting control of the second application to one or more unused cameras, one of the plurality of cameras.
[0142] Aspect 12. The method according to aspect 11, wherein the method is performed by an application programming interface (API) that manages control of the plurality of cameras of the device.
[0143] Aspect 13. The method according to any one of Aspects 11 or 12, wherein the one or more settings are associated with at least one of: ISO value; exposure time; aperture size; lens defocus value; exposure gain; focus window; color temperature; color channel gain; automatic exposure control (AEC); automatic white balance (AWB); or automatic focus (AF).
[0144] Aspect 14. The method according to any one of aspects 11 to 13, wherein the one or more settings include one or more first settings, wherein the method further includes: receiving data output by two or more cameras of a plurality of cameras of the device; and determining one or more second settings for operation of the plurality of cameras based on the data.
[0145] Aspect 15. The method according to any one of Aspects 11 to 14, wherein granting the first application control over the first camera includes granting the first application control over image capture settings of the first camera, and wherein granting the second application control over the one or more unused cameras includes granting the second application control over image capture settings of the one or more unused cameras.
[0146] Aspect 16. The method according to any one of Aspects 11 to 15, the method further comprising: receiving a request from a third application for controlling one or more of the plurality of cameras; and granting the third application control over one or more unused cameras among the plurality of cameras.
[0147] Aspect 17. The method according to any one of Aspects 11 to 16, the method further comprising: determining that the second application has a priority over the first application for controlling the first camera; denying the first application control of the first camera; and granting the second application control of the first camera.
[0148] Aspect 18. The method according to aspect 17, wherein the second application has a priority determination for controlling the first camera that is superior to that of the first application, based on a priority table.
[0149] Aspect 19. The method according to any one of Aspects 17 or 18, wherein the second application has a priority for controlling the first camera based on a query provided to the user.
[0150] Aspect 20. The method according to any one of aspects 17 to 19, the method further comprising granting the first application control over another camera of the plurality of cameras.
[0151] Aspect 21. An apparatus for managing control of a camera, the apparatus comprising: at least one memory; and at least one processor coupled to the at least one memory and configured to: receive data output by two or more cameras of a plurality of cameras of a device; determine one or more settings for operation of the plurality of cameras based on the data; grant control of the first camera of the plurality of cameras to a first application running on the device; receive a request from a second application running on the device for controlling one or more cameras of the plurality of cameras; and grant control of one or more unused cameras of the plurality of cameras to the second application.
[0152] Aspect 22. The apparatus according to aspect 21, wherein the at least one processor is configured to implement an application programming interface (API) for managing control of the plurality of cameras of the apparatus.
[0153] Aspect 23. The apparatus according to any one of Aspects 21 or 22, wherein, in order to grant the first application control over the first camera, the at least one processor is further configured to grant the first application control over image capture settings of the first camera, and wherein, in order to grant the second application control over the one or more unused cameras, the at least one processor is further configured to grant the second application control over image capture settings of the one or more unused cameras.
[0154] Aspect 24. The apparatus according to any one of Aspects 21 to 23, wherein the at least one processor is further configured to: receive a request from a third application for controlling one or more of the plurality of cameras; and grant the third application control over one or more unused cameras among the plurality of cameras.
[0155] Aspect 25. The apparatus according to any one of Aspects 21 to 24, wherein the at least one processor is further configured to: determine that the second application has a priority over the first application for controlling the first camera; and, based on the fact that the second application has a priority over the first application for controlling the first camera, deny the first application control of the first camera and grant the second application control of the first camera.
[0156] Aspect 26. An apparatus for managing control of a camera, the apparatus comprising: at least one memory; and at least one processor coupled to the at least one memory and configured to: grant control of a first camera among a plurality of cameras of the device to a first application running on the device; control the first camera based on one or more settings; grant control of the second camera to the first application in response to a request from the first application to control a second camera among the plurality of cameras; control the second camera based on the one or more settings; receive a request from a second application running on the device to control one or more cameras among the plurality of cameras; and grant control of the second application to one or more unused cameras among the plurality of cameras.
[0157] Aspect 27. The apparatus according to aspect 26, wherein the at least one processor is configured to implement an application programming interface (API) for managing control of the plurality of cameras of the apparatus.
[0158] Aspect 28. The apparatus according to any one of Aspects 26 or 27, wherein, in order to grant the first application control over the first camera, the at least one processor is further configured to grant the first application control over image capture settings of the first camera, and wherein, in order to grant the second application control over the one or more unused cameras, the at least one processor is further configured to grant the second application control over image capture settings of the one or more unused cameras.
[0159] Aspect 29. The apparatus according to any one of Aspects 26 to 28, wherein the at least one processor is further configured to: receive a request from a third application for controlling one or more of the plurality of cameras; and grant the third application control over one or more unused cameras among the plurality of cameras.
[0160] Aspect 30. The apparatus method according to any one of Aspects 26 to 29, wherein the at least one processor is further configured to: determine that the second application has a priority over the first application for controlling the first camera; deny the first application control of the first camera; and grant the second application control of the first camera.
Claims
1. A method for managing control of a camera, the method comprising: Receive data output from two or more cameras of the device's multiple cameras; Based on the data, one or more settings are determined for the operation of the plurality of cameras; Granting control of a first camera among the plurality of cameras to a first application running on the device; Receive a request from a second application running on the device to control one or more of the plurality of cameras; as well as Grant the second application control over one or more unused cameras among the plurality of cameras.
2. The method of claim 1, wherein the method is performed by an application programming interface (API) that manages control over the plurality of cameras of the device.
3. The method of claim 1, wherein the one or more settings are associated with at least one of the following: ISO value; Exposure time; Aperture size; Lens defocus value; Exposure gain; Focus window; Color temperature; Color channel gain; Automatic exposure control (AEC); Automatic white balance (AWB); or Autofocus (AF).
4. The method of claim 1, wherein the one or more settings include one or more first settings, and wherein the method further includes: Before granting the first application control over the first camera, grant the first application control over the second camera among the plurality of cameras; Before granting the first application control over the first camera, the second camera is controlled based on one or more second settings; In response to a request from the first application to control the first camera, grant the first application control over the first camera; as well as The first camera is controlled based on one or more of the second settings.
5. The method of claim 1, wherein granting the first application control over the first camera includes granting the first application control over image capture settings of the first camera, and wherein granting the second application control over the one or more unused cameras includes granting the second application control over image capture settings of the one or more unused cameras.
6. The method according to claim 1, further comprising: Receive a request from a third application to control one or more of the plurality of cameras; as well as Grant the third application control over one or more unused cameras among the plurality of cameras.
7. The method according to claim 1, further comprising: It is determined that the second application has a higher priority than the first application for controlling the first camera; as well as Based on the fact that the second application has a higher priority than the first application in controlling the first camera, the first application's control over the first camera is denied, and the second application's control over the first camera is granted.
8. The method of claim 7, wherein the second application has a priority determination for controlling the first camera that is superior to that of the first application, based on a priority table.
9. The method of claim 7, wherein the second application has a priority for controlling the first camera based on a query provided to the user.
10. The method of claim 7, further comprising granting the first application control over another of the plurality of cameras.
11. A method for managing control of a camera, the method comprising: Granting control of a first camera among a plurality of cameras on the device to a first application running on the device; The first camera is controlled based on one or more settings; In response to a request from the first application to control the second camera among the plurality of cameras, the first application is granted control over the second camera; The second camera is controlled based on one or more of the settings; Receive a request from a second application running on the device to control one or more of the plurality of cameras; as well as Grant the second application control over one or more unused cameras among the plurality of cameras.
12. The method of claim 11, wherein the method is performed by an application programming interface (API) that manages control over the plurality of cameras of the device.
13. The method of claim 11, wherein the one or more settings are associated with at least one of the following: ISO value; Exposure time; Aperture size; Lens defocus value; Exposure gain; Focus window; Color temperature; Color channel gain; Automatic exposure control (AEC); Automatic white balance (AWB); or Autofocus (AF).
14. The method of claim 11, wherein the one or more settings include one or more first settings, and wherein the method further comprises: Receive data output from two or more cameras of the device's multiple cameras; as well as Based on the data, one or more second settings for the operation of the plurality of cameras are determined.
15. The method of claim 11, wherein granting the first application control over the first camera includes granting the first application control over image capture settings of the first camera, and wherein granting the second application control over the one or more unused cameras includes granting the second application control over image capture settings of the one or more unused cameras.
16. The method of claim 11, further comprising: Receive a request from a third application to control one or more of the plurality of cameras; as well as Grant the third application control over one or more unused cameras among the plurality of cameras.
17. The method according to claim 11, further comprising: It is determined that the second application has a higher priority than the first application for controlling the first camera; Deny the first application control over the first camera; as well as Grant the second application control over the first camera.
18. The method of claim 17, wherein the second application has a priority determination for controlling the first camera that is superior to that of the first application, based on a priority table.
19. The method of claim 17, wherein the second application has a priority for controlling the first camera based on a query provided to the user.
20. The method of claim 11, further comprising granting the first application control over another of the plurality of cameras.
21. An apparatus for managing control of a camera, the apparatus comprising: At least one memory; and At least one processor, the at least one processor being coupled to the at least one memory and being configured to: Receive data output from two or more cameras of the device's multiple cameras; Based on the data, one or more settings are determined for the operation of the plurality of cameras; Granting control of a first camera among the plurality of cameras to a first application running on the device; Receive a request from a second application running on the device to control one or more of the plurality of cameras; as well as Grant the second application control over one or more unused cameras among the plurality of cameras.
22. The apparatus of claim 21, wherein the at least one processor is configured to implement an application programming interface (API) for managing control of the plurality of cameras of the apparatus.
23. The apparatus according to claim 21, wherein, In order to grant the first application control over the first camera, the at least one processor is further configured to grant the first application control over the image capture settings of the first camera, and wherein, in order to grant the second application control over the one or more unused cameras, the at least one processor is further configured to grant the second application control over the image capture settings of the one or more unused cameras.
24. The apparatus of claim 21, wherein the at least one processor is further configured to: Receive requests from a third application to control one or more of the plurality of cameras; and Grant the third application control over one or more unused cameras among the plurality of cameras.
25. The apparatus of claim 21, wherein the at least one processor is further configured to: Determine that the second application has a higher priority than the first application for controlling the first camera; and Based on the fact that the second application has a higher priority than the first application in controlling the first camera, the first application's control over the first camera is denied, and the second application's control over the first camera is granted.
26. An apparatus for managing control of a camera, the apparatus comprising: At least one memory; and At least one processor, the at least one processor being coupled to the at least one memory and being configured to: Granting control of a first camera among a plurality of cameras on the device to a first application running on the device; The first camera is controlled based on one or more settings; In response to a request from the first application to control the second camera among the plurality of cameras, the first application is granted control over the second camera; The second camera is controlled based on one or more of the settings; Receive a request from a second application running on the device to control one or more of the plurality of cameras; as well as Grant the second application control over one or more unused cameras among the plurality of cameras.
27. The apparatus of claim 26, wherein the at least one processor is configured to implement an application programming interface (API) for managing control of the plurality of cameras of the apparatus.
28. The apparatus according to claim 26, wherein, In order to grant the first application control over the first camera, the at least one processor is further configured to grant the first application control over the image capture settings of the first camera, and wherein in order to grant the second application control over the one or more unused cameras, the at least one processor is further configured to grant the second application control over the image capture settings of the one or more unused cameras.
29. The apparatus of claim 26, wherein the at least one processor is further configured to: Receive requests from a third application to control one or more of the plurality of cameras; and Grant the third application control over one or more unused cameras among the plurality of cameras.
30. The apparatus of claim 26, wherein the at least one processor is further configured to: It is determined that the second application has a higher priority than the first application for controlling the first camera; Deny the first application control over the first camera; and Grant the second application control over the first camera.