Power control for image sensor

By adjusting the operating mode of the computing device component according to the camera turn-off call, the problem of image sensor mode switching delay and power consumption is solved, improving user experience and battery life.

CN119110941APending Publication Date: 2024-12-10QUALCOMM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202280095494.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2022-05-05
Publication Date
2024-12-10

AI Technical Summary

Technical Problem

The prior art removes and restarts the camera session during image sensor mode switching can cause delays, affect user experience, and may increase power consumption and shorten battery life even when the image sensor is actually turned off.

Method used

By adjusting components of the computing device (such as processors and buses) to run in high-performance mode for a period of time when a camera shutdown call is received, reducing mode switching delay and converting to when the image sensor is actually turned off Low performance mode to reduce power consumption.

Benefits of technology

Effectively reduces mode switching delay, reduces power consumption of stop/end using image sensors, and improves the performance and battery life of computing devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119110941A_ABST
    Figure CN119110941A_ABST
Patent Text Reader

Abstract

The invention relates to a method and apparatus for power control of a computing device including an image sensor. An example method includes receiving a camera-off call from an application running on the computing device; receiving, from the application, an indication of a context of the camera-off call; and setting an operating mode of at least one of a processor or a bus based on the context of the camera off call.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art Technical Field

[0001] The present disclosure relates generally to processing systems and, more particularly, to one or more techniques for power controlling a computing device that includes an image sensor.

[0002] Related technologies

[0003] Many computing devices include one or more image sensors (e.g., a charge coupled device (CCD) sensor, a complementary metal oxide semiconductor (CMOS) sensor, or other camera sensor) for capturing still images and / or video. Examples of such computing devices include dedicated digital cameras, tablet computers, laptop computers, smartphones, other mobile devices, wearable devices, IoT devices, automotive devices, etc.

[0004] A mobile computing device using an image sensor may include a battery for powering the device. Since a battery can provide a limited amount of power before needing to be recharged, reducing the power consumption of the mobile computing device may advantageously increase the time a user can use the device before needing to recharge the mobile computing device. The operation of the image sensor (including the operation of other components and resources of the mobile computing device that support the use of the image sensor) consumes battery power of the mobile computing device. Therefore, techniques for reducing the power consumption of operating an image sensor may advantageously increase the time a user can use the device before needing to recharge the mobile computing device, thereby improving the user experience. Summary of the invention

[0005] A simplified summary of one or more aspects is presented below in order to provide a basic understanding of such aspects. This summary is not an extensive overview of all contemplated aspects, and is neither intended to identify key elements of all aspects nor to delineate the scope of any or all aspects. Its sole purpose is to present some concepts of one or more aspects in a simplified form as a prelude to a more detailed description presented later.

[0006] In certain aspects, a method for power control of a computing device is disclosed, the computing device including a processor and a bus. The method includes: receiving a camera shutdown call from an application running on the computing device; receiving an indication of a context of the camera shutdown call from the application; and setting an operating mode of at least one of the processor or the bus based on the context of the camera shutdown call.

[0007] Other aspects provide: an apparatus operable to, configured to, or otherwise adapted to perform the aforementioned method and those described elsewhere herein; a non-transitory computer-readable medium comprising instructions that, when executed by a processor of the apparatus, cause the apparatus to perform the aforementioned method and those described elsewhere herein; a computer program product embodied on a computer-readable storage medium, the computer-readable storage medium comprising code for performing the aforementioned method and those described elsewhere herein; and an apparatus comprising means for performing the aforementioned method and those described elsewhere herein. By way of example, an apparatus may include a computing device, a processing system, etc.

[0008] The details of one or more examples of the disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will become apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0009] Figure 1 is a block diagram illustrating an example computing device including an image sensor in accordance with certain aspects of the present disclosure.

[0010] Figure 2 is an example of some aspects of the present disclosure Figure 1 A block diagram of an example software stack for a computing device.

[0011] Figure 3A and Figure 3B Each is a block diagram illustrating an example call flow for power controlling a computing device in accordance with certain aspects of the present disclosure.

[0012] Figure 4 is a flow diagram illustrating example operations for power controlling a computing device in accordance with certain aspects of the present disclosure. DETAILED DESCRIPTION

[0013] The present disclosure provides techniques for power controlling a computing device based on the context of a camera shutdown call occurring at the computing device.

[0014] In some aspects, an application (e.g., a camera application, a video calling application, a camera scanner application, etc.) running on a computing device can utilize an image sensor of the computing device to capture one or more images. To operate the image sensor, a kernel (e.g., of an operating system such as an Android operating system) running on the computing device can initiate a camera session, including allocating resources to the image sensor or the application, such as memory resources for buffering or storing images captured by the image sensor, bus resources for moving data between components such as a processor and memory, and / or processor resources for running processes that support the operation of the image sensor. In some aspects, initiating a camera session also includes initiating one or more processes that support the operation of the image sensor. For example, a camera driver of the kernel can initiate the camera session.

[0015] When the application is no longer using the image sensor, the application may issue a camera shutdown call. In some aspects, the camera shutdown call can be an API call to an application programming interface (API) framework running on the computing device.

[0016] An application may issue a camera off call in a number of different contexts. For example, an application may issue a camera off call due to a command to close the application, due to input on a power / sleep / resume button of a computing device, due to input on a return to home button of a computing device, etc. Such example contexts may be examples of contexts that indicate actually turning off the image sensor (e.g., placing the camera in an off state) because no further use of the image sensor by the application is expected.

[0017] In contrast, other example contexts in which an application issues a camera close call are for mode switching of an image sensor, such as moving from using a first image sensor of a computing device to a second image sensor (e.g., between a front-facing image sensor and a rear-facing image sensor) for capturing images. Another example mode switching of an image sensor includes changing between capturing images using a standard dynamic range (SDR) and capturing images using a high dynamic range (HDR). Another example mode switching of an image sensor includes changing between capturing still images and capturing video, such as triggering a video call, causing the camera to open, moving a camera application for capturing images to the background, causing the camera to close. Such example contexts may be examples of contexts that indicate that an application anticipates further use of an image sensor of a computing device.

[0018] In some aspects, in response to a camera close call, the camera driver tears down the camera session, such as releasing resources that have been allocated to the image sensor or the application, regardless of the context in which the camera close call is issued. In the case where the camera close call is in the context of a mode switch, a new camera session may then have to be started for the application to use the image sensor. Tearing down the camera session and starting a new camera session may be time consuming and negatively impact the user experience.

[0019] Therefore, in some cases, in order to reduce the latency involved in tearing down a camera session and potentially starting a new camera session, after receiving a camera shutdown call, one or more components of the computing device can be adjusted to operate in a high-performance mode for at least a period of time, regardless of the context in which the camera shutdown call is issued. For example, one or more processors of the computing device and / or one or more buses of the computing device can operate at a high frequency and / or a high voltage. Specifically, by operating one or more components in a high-performance mode, if the camera shutdown call is associated with a mode switch of the image sensor, a new camera session will be started with lower latency, thereby improving the user experience. However, even when the camera shutdown call is associated with the actual shutdown of the image sensor, one or more components may operate in a high-performance mode for a period of time, which may consume more power of the computing device, thereby shortening the battery life. Specifically, when the image sensor is actually turned off, the high-performance mode may not be necessary for the user experience because the user is not aware of the additional time required to turn off the image sensor, but may be affected by the increased power consumption.

[0020] Therefore, certain aspects of the present invention provide techniques for controlling the operation of one or more components (e.g., one or more processors, one or more buses, etc.) in response to a camera off call issued by an application based on the context of the camera off call. Specifically, in certain aspects, techniques are provided for determining the context of a camera off call issued at a computing device. In certain aspects, if the context indicates that the camera off call is based on actually stopping / ending use of an image sensor, one or more components operate in a lower performance mode. In certain aspects, if the context indicates that the camera off call is based on a mode switch of an image sensor, one or more components operate in a higher performance mode relative to the lower performance mode. By controlling the operation of components based on the context of the camera off call, the latency of the mode switching operation can be reduced, while also reducing the power consumption used to stop / end use of the image sensor, thereby improving the performance of the computing device.

[0021] The following describes more fully various aspects of systems, devices, computer program products, and methods for power controlling a computing device based on the context of a camera shutdown call occurring at the computing device. However, the present disclosure can be embodied in many different forms and should not be interpreted as limited to any specific structure or function presented throughout the present disclosure. On the contrary, these aspects are provided so that the present disclosure will be thorough and complete, and the scope of the present disclosure will be fully conveyed to those skilled in the art. Based on the teachings of this article, it should be understood by those skilled in the art that the scope of the present disclosure is intended to cover any aspect of the systems, devices, computer program products, and methods disclosed herein, whether implemented independently of other aspects of the present disclosure or implemented in combination with other aspects of the present disclosure. For example, any number of aspects set forth herein may be used to implement a device or practice method. In addition, the scope of the present disclosure is intended to cover such devices or methods, which are practiced using other structures, functionality, or structures and functionality as a supplement to the various aspects of the present disclosure set forth herein or in addition to the various aspects of the present disclosure set forth herein. Any aspect disclosed herein may be embodied by one or more elements of a claim.

[0022] Although various aspects are described herein, many variations and permutations of these aspects fall within the scope of the present disclosure. Although some potential benefits and advantages of various aspects of the present disclosure are mentioned, the scope of the present disclosure is not intended to be limited to specific benefits, uses or objectives. Specifically, various aspects of the present disclosure are intended to be broadly applicable to different graphics technologies, system configurations, etc., some of which are illustrated by way of example in the drawings and the description below. The specific embodiments and drawings merely illustrate the present disclosure and do not limit the present disclosure. The scope of the present disclosure is defined by the attached claims and their equivalent technical solutions.

[0023] Several aspects are presented with reference to various devices and methods. These devices and methods are described in the following detailed description and illustrated in the accompanying drawings by various blocks, components, circuits, processes, algorithms, etc. (collectively referred to as "elements"). These elements can be implemented using electronic hardware, computer software, or any combination thereof. Whether these elements are implemented as hardware or software depends on the specific application and the design constraints imposed on the overall system.

[0024] By way of example, an element or any part of an element or any combination of elements may be implemented as a "processing system" including one or more processors (which may also be referred to as a processing unit). Examples of processors include microprocessors, microcontrollers, graphics processing units (GPUs), general-purpose GPUs, central processing units (CPUs), application processors, digital signal processors (DSPs), reduced instruction set computing (RISC) processors, systems on chip (SOCs), baseband processors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, gating logic, discrete hardware circuits, and other suitable hardware configured to perform the various functionalities described in this disclosure. One or more processors in a processing system may execute software. Software may be broadly interpreted as instructions, instruction sets, codes, code segments, program codes, programs, subroutines, software components, applications, software applications, software packages, routines, subroutines, objects, executable files, execution threads, procedures, functions, etc., whether referring to software, firmware, middleware, microcode, hardware description languages, or other names. The term "application" may refer to software. As described herein, one or more technologies may refer to an application, i.e., software, configured to perform one or more functions. In such examples, the application may be stored in a memory (e.g., an on-chip memory of a processor, a system memory, or any other memory). The hardware described herein (such as a processor) may be configured to execute an application. For example, an application may be described as including a code that, when executed by hardware, causes the hardware to perform one or more technologies described herein. As an example, the hardware may access the code from the memory and execute the code accessed from the memory to perform one or more technologies described herein. In some examples, components are identified in the present disclosure. In such examples, the components may be hardware, software, or a combination thereof. Each component may be a separate component or a subcomponent of a single component.

[0025] Therefore, in one or more examples described herein, the functions described can be implemented in hardware, software, or any combination thereof. If implemented in software, the functions can be stored or encoded on a computer-readable medium as one or more instructions or codes. Computer-readable media include computer storage media. Storage media can be any available media that can be accessed by a computer. By way of example and not limitation, such computer-readable media may include random access memory (RAM), read-only memory (ROM), electrically erasable programmable ROM (EEPROM), optical disk storage, magnetic disk storage, other magnetic storage devices, a combination of computer-readable media of the above types, or any other medium that can be used to store computer executable code in the form of instructions or data structures that can be accessed by a computer.

[0026] Figure 1 is a block diagram illustrating an example computing device 104 configured to implement one or more techniques of the present disclosure. The computing device 104 may include one or more components or circuits for performing the various functions described herein. In some examples, one or more components of the computing device 104 may be components of a system on a chip (SOC) or an integrated circuit (IC). The computing device 104 may include one or more components configured to perform one or more techniques of the present disclosure. In the example shown, the device 104 may include a GPU 120, a CPU 122, a system memory 124, and one or more image sensors 134 (e.g., a CCD sensor, a CMOS sensor, etc.). In some aspects, the device 104 may include multiple optional components, such as a communication interface 126, a transceiver 132 (e.g., including a receiver 128 and a transmitter 130), and one or more displays 131. In some aspects, these components are communicatively connected to each other via one or more buses 136. It should be noted that although in Figure 1 1 and 2. Some connections between components are shown in FIG. 1, but the connections between components may be different than shown. For example, all components may be coupled to a shared bus 136, different components may be coupled to different buses, etc.

[0027] References to display 131 may refer to one or more displays 131. For example, display 131 may include a single display or multiple displays. GPU 120 may be configured to perform graphics processing. One or more displays 131 may be configured to display or otherwise present frames processed by GPU 120 and / or CPU 122. In some examples, one or more displays 131 may include one or more of the following: a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, a projection display device, an augmented reality display device, a virtual reality display device, a head mounted display, or any other type of display device.

[0028] Memory external to GPU 120 and CPU 122, such as system memory 124, may be accessed by GPU 120 and CPU 122. For example, GPU 120 and CPU 122 may be configured to read from and / or write to external memory, such as system memory 124. GPU 120 and CPU 122 may be communicatively coupled to system memory 124 via a bus. In some examples, GPU 120 and CPU 122 may be communicatively coupled to each other via a bus or a different connection.

[0029] The CPU 122 and / or GPU 120 may be configured to receive image content (e.g., still images, video, etc.) from the one or more image sensors 134. For example, the CPU 122 and / or GPU 120 may be configured to receive image content directly from the one or more image sensors 134. In some aspects, the one or more image sensors 134 may be configured to write image content to an external memory, such as the system memory 124. In some aspects, the CPU 122 and / or GPU 120 may be configured to receive (e.g., read) image content from the system memory 124.

[0030] System memory 124 may include one or more volatile or nonvolatile memory or storage devices. In some examples, system memory 124 may include RAM, SRAM, DRAM, erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, magnetic data media, or optical storage media, or any other type of memory.

[0031] According to some examples, system memory 124 may be a non-transitory storage medium. The term "non-transitory" may indicate that the storage medium is not embodied in a carrier wave or propagating signal. However, the term "non-transitory" should not be interpreted to mean that system memory 124 is non-removable or that its contents are static. For example, system memory 124 may be removed from device 104 and moved to another device. For another example, system memory 124 may not be removable from device 104.

[0032] GPU 120 may be a general purpose GPU or any other processing unit that may be configured to perform graphics processing. In some examples, GPU 120 may be integrated into the motherboard of device 104. In some examples, GPU 120 may be present on a graphics card installed in a port in the motherboard of device 104, or may be otherwise incorporated into a peripheral device configured to interoperate with device 104. GPU 120 may include one or more processors, such as one or more microprocessors, GPUs, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), arithmetic logic units (ALUs), digital signal processors (DSPs), discrete logic components, software, hardware, firmware, other equivalent integrated or discrete logic circuits, or any combination thereof. If these techniques are partially implemented in software, GPU 120 may store instructions for the software in a suitable, non-transitory computer-readable storage medium (e.g., system memory 124), and may use one or more processors to execute instructions in hardware to perform the techniques of the present disclosure. Any of the above (including hardware, software, a combination of hardware and software, etc.) may be considered to be one or more processors.

[0033] CPU 122 may be any processing unit configured to transmit instructions to GPU 120 and perform general computing processing (e.g., non-graphics processing). In some examples, CPU 122 may be integrated into the motherboard of device 104. CPU 122 may include one or more processors, such as one or more microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), arithmetic logic units (ALUs), digital signal processors (DSPs), video processors, discrete logic components, software, hardware, firmware, other equivalent integrated or discrete logic circuits, or any combination thereof. If these techniques are partially implemented in software, CPU 122 may store instructions for the software in a suitable, non-transitory computer-readable storage medium (e.g., system memory 124), and may use one or more processors to execute instructions in hardware to perform the techniques of the present disclosure. Any of the above (including hardware, software, a combination of hardware and software, etc.) may be considered to be one or more processors.

[0034] In some aspects, computing device 104 may include an optional communication interface 126. Communication interface 126 may include a receiver 128 and a transmitter 130. Receiver 128 may be configured to perform any receiving function described herein with respect to device 104. In addition, receiver 128 may be configured to receive information from another device. Transmitter 130 may be configured to perform any transmitting function described herein with respect to device 104. For example, transmitter 130 may be configured to transmit information to another device. Receiver 128 and transmitter 130 may be combined into transceiver 132. In such examples, transceiver 132 may be configured to perform any receiving function and / or transmitting function described herein with respect to device 104.

[0035] As described herein, a device such as device 104 may refer to any device, apparatus or system configured to perform one or more technologies described herein. For example, a device may be a server, a base station, a user equipment, a client device, a station, an access point, a computer (e.g., a personal computer, a desktop computer, a laptop computer, a tablet computer, a computer workstation or a mainframe computer), a final product, an apparatus, a phone, a smart phone, a server, a video game platform or console, a handheld device (e.g., a portable video game device or a personal digital assistant (PDA)), a wearable computing device (e.g., a smart watch, an augmented reality device or a virtual reality device), a non-wearable device, a display or display device, a television, a television set-top box, an intermediate network device, a digital media player, a video streaming device, a content streaming device, an onboard computer, any mobile device, any device configured to generate graphics content, or any device configured to perform one or more technologies described herein. The process herein may be described as being performed by a specific hardware component (e.g., a GPU), but in further embodiments, it may be performed using other hardware components (e.g., a CPU) consistent with the disclosed embodiments.

[0036] Figure 2 is exemplified in Figure 1 104. It should be noted that the software stack 200 may also be executed on other suitable computing devices. In addition, in some aspects, the computing device 104 may execute other similar software (including fewer or additional components) to perform the techniques discussed herein. For example, the functionality of one or more components discussed may be combined in a single component or separated into additional components. In some aspects, the code for the software stack 200 may be stored in a memory (such as the system memory 124 of the computing device 104). In addition, in some aspects, the software stack 200 may be executed by one or more processors (such as the CPU 122 of the computing device 104).

[0037] As shown, software stack 200 includes one or more applications 202, a framework 204 (e.g., an Android framework), a hardware abstraction layer (HAL) 206, and a kernel 208 (e.g., a Linux kernel for Android) including a camera driver 210. In some aspects, one or more applications 202, framework 204, and / or HAL 206 run in user space 212, meaning that they have access to memory and / or resources defined as accessible in user space 212, which may be less than the amount of memory and / or resources defined as accessible in kernel space 214. In some aspects, kernel 208 runs in kernel space 214.

[0038] In some aspects, the one or more applications 202 may capture one or more images (e.g., still images, videos, etc.) utilizing the one or more image sensors 134 of the computing device 104. For example, the one or more applications 202 may include one or more of a camera application, a video calling application, a camera scanner application, and the like.

[0039] In some aspects, the framework 204 is an API framework that provides APIs (e.g., a set of Java framework APIs) that expose the functionality of native libraries, system components, and / or services to applications such as the application 202. For example, the framework 204 provides an API to expose the functionality of one or more image sensors 134 (such as a camera off function) to the application 202.

[0040] In some aspects, the HAL 206 provides a standard interface that exposes device hardware capabilities to the framework 204. For example, in some aspects, the HAL 206 includes library modules that implement interfaces for hardware components, such as one or more image sensors 134. In some aspects, when the framework 204 makes a call to access a hardware component, the HAL 206 loads the library module for the hardware component. For example, when the framework 204 issues a camera close event to access one or more image sensors 134, the HAL 206 communicates with the camera driver 210 in the kernel 208, as discussed further herein.

[0041] In some aspects, the kernel 208 interfaces with hardware components, such as adjusting the operating mode (e.g., operating frequency and / or voltage) of one or more components (e.g., CPU 122, GPU 120, and / or bus 136). In some aspects, the kernel 208 includes one or more drivers, each driver for interfacing with a specific hardware component. For example, the kernel 208 includes a camera driver 210 for interfacing with one or more image sensors 134.

[0042] As discussed, the application 202 may issue a camera open call to an API of the framework 204 to capture one or more images using the image sensor 134. Accordingly, the framework 204 may issue a camera open event to the HAL 206. The HAL 206 may load a library module for the image sensor 134 and issue instructions to the kernel 208 and the camera driver 210 to initiate a camera session, including allocating resources to the image sensor 134 and / or the application 202, such as: memory resources of the system memory 124 for buffering or storing images captured by the image sensor 134; bus resources of the bus 136 for moving data between components such as the CPU 122, the GPU 120, and / or the system memory 124; and / or processor resources of the CPU 122 and / or the GPU 120 for running processes / library modules that support the operation of the image sensor 134.

[0043] In some aspects, the application 202 may issue a camera off call, such as to an API of the framework 204 , which may be processed based on the context of the camera off call according to the techniques discussed herein.

[0044] Figure 3A is a block diagram illustrating an example call flow 300 for power control of a computing device according to certain aspects of the present disclosure. The call flow 300 is described with respect to the software stack 200. However, it should be understood that the call flow 300 or techniques similar thereto may be performed by any suitable software running on any suitable computing device.

[0045] At 302, the application 202 issues a camera off call to an API of the framework 204. In some aspects, the camera off call is a standard camera off call, and all camera off calls cause a callback to be issued for a context, as discussed herein. In some aspects, the camera off call is a specialized camera off call (e.g., a camera_context_close call), and then a callback is issued for the context for the specialized camera off call as discussed herein, whereas a standard camera off call does not cause a callback to be issued for the context. As discussed, the application 202 can issue a camera off call in a plurality of different contexts. For example, the application 202 can issue a camera off call to actually turn off the image sensor 134, such as for one of the following contexts: due to a command to shut down the application 202, due to input on a power button of the computing device 104, due to input on a return to home screen button of the computing device 104, and the like. As another example, application 202 may issue a camera off call for a mode switch, such as for one of the following contexts: moving from using a first image sensor 134 to another image sensor 134 for capturing images, changing between SDR mode and HDR mode, changing between still image and video modes, etc.

[0046] At 304, based on receiving the camera off call, the framework 204 issues a camera off event to the HAL 206. The HAL 206 may have previously registered a callback function with the framework 204. Specifically, based on the registered callback function, the HAL 206 can issue a callback to the application 202 via the framework 204 to determine the context of the camera off call.

[0047] Thus, at 306, based on receiving the camera off event, the HAL 206 issues a context callback to the application 202 via the framework 204. In response to the context callback, at 308, the application 202 transmits context information to the HAL 206 via the framework 204. In some aspects, the context information indicates whether the camera off call is associated with the actual stop / end of using one or more image sensors 134, or whether the camera off call is associated with the continued use of one or more image sensors 134 (such as a mode switch of one or more image sensors 134, as discussed). Thus, in some aspects, the context information may be only 1 bit, whose value indicates the context. In some aspects, the context information may provide greater granularity, such as indicating a specific context, such as one of the examples discussed herein. For example, the context information may include several bits, and each value of the several bits may be mapped to a specific context.

[0048] At 310, based on the context of the camera shutdown call, the HAL 206 issues an operating mode instruction to the kernel 208 (e.g., to the camera driver 210). In some aspects, the operating mode instruction includes a teardown instruction for tearing down a camera session associated with the application 202 and / or one or more image sensors 134. In some aspects, the operating mode instruction indicates the context of the teardown. In some aspects, the operating mode instruction explicitly indicates the operating mode of one or more components of the computing device 104, such as using one or more values ​​(e.g., voltage, frequency, etc.) for operation or one or more index values ​​mapped to one or more values ​​for operation. In some aspects, the operating mode instruction implicitly indicates the operating mode of one or more components of the computing device 104, such as by indicating a context, which can be mapped to the operating mode of the one or more components of the computing device 104.

[0049] For example, where the context information indicates that the camera off call is for actually stopping / ending use of one or more image sensors 134, the operating mode instructions may indicate the operating mode of one or more components as a first operating mode (e.g., a low power operating / performance mode). In some aspects, where the context information indicates that the camera off call is for continuing use of one or more image sensors 134, the operating mode instructions may indicate the operating mode of one or more components as a second operating mode (e.g., a high power operating / performance mode). In some aspects, where the context information is more granular, more granular operating modes may be defined, such as different operating values ​​for different components for different contexts.

[0050] At 312, based on the operating mode instruction, the kernel 208 may set or adjust the operating mode of one or more components of the computing device 104 to the operating mode indicated in the operating mode instruction. In some aspects, setting the operating mode of a component may mean not changing the operating mode, such as when the operating mode of the component is already set to the indicated operating mode.

[0051] At 314, in some aspects, such as where the operational mode instruction is a teardown instruction, the kernel 208 (e.g., the camera driver 210) teardowns the camera session, such as releasing resources that have been allocated to one or more image sensors 134 or the application 202. In some aspects, the operational mode instruction is a teardown instruction regardless of the context of the camera shutdown call at 302. In some aspects, if the context of the camera shutdown call at 302 is to actually stop / end using the one or more image sensors 134, then the operational mode instruction is a teardown instruction. In some aspects, if the context of the camera shutdown call at 302 is associated with continuing to use the one or more image sensors 134, then the operational mode instruction may not be a teardown instruction and the camera session may be maintained.

[0052] In certain aspects, where a camera session is torn down and the context of the camera close call at 302 is associated with continued use of one or more image sensors 134 , a new camera session is initiated, as discussed.

[0053] Figure 3B is a block diagram illustrating an example call flow 350 for power control of a computing device according to certain aspects of the present disclosure. The call flow 350 is described with respect to the software stack 200. However, it should be understood that the call flow 350 or techniques similar thereto may be performed by any suitable software running on any suitable computing device.

[0054] As shown, call flow 350 includes similar steps as call flow 300. However, rather than providing context information in response to a camera off call made by application 202, context information is provided independently of the camera off call. For example, before issuing the camera off call, application 202 transmits context information to HAL 206 at 352 (similar to Figure 3A In some aspects, the application 202 independently transmits the context information without further callbacks from the framework 204 or HAL 206. In some aspects, the application 202 can make an API call, such as a context call, which causes the framework 204 and / or HAL 206 to issue a callback for the context information (similar to Figure 3A 306), and 352 occurs thereafter.

[0055] Figure 4 is a flow diagram illustrating example operations 400 for power controlling a computing device in accordance with certain aspects of the present disclosure.

[0056] Operation 400 may be performed, for example, by a computing device (e.g., Figure 1 Operation 400 may be performed by executing one or more processors (e.g., Figure 1 The software components (e.g., software stack 200) executed and run on the CPU 122 or GPU 120 of the computer.

[0057] Operations 400 may begin at a first block 402 where a camera close call is received from an application running on a computing device.

[0058] The operations 400 may continue at a third block 406 by receiving an indication of a context for a camera close call from an application.

[0059] The operations 400 may continue at a fourth block 408 by setting an operating mode of at least one of a processor or a bus based on the context of the camera shutdown call.

[0060] In certain aspects of operation 400 , the camera off call is an application programming interface (API) call to a framework running on the computing device.

[0061] In some aspects, the operation 400 also includes issuing a camera off event to a hardware abstraction layer based on the camera off call, wherein the hardware abstraction layer communicates with a camera driver configured to control a camera sensor of the computing device.

[0062] In some aspects, operation 400 also includes, based on the camera off call, issuing a callback to the application to determine the context of the camera off call. In some aspects, the callback is issued by the hardware abstraction layer in response to the camera off event.

[0063] In certain aspects of operation 400 , the hardware abstraction layer registers a callback function to issue a callback when a camera close call is received.

[0064] In certain aspects of operation 400, adjusting the operating mode of at least one of the processor or the bus based on the context of the camera shutdown call includes: setting the operating mode to a first operating mode when the context indicates shutdown of the camera; and setting the operating mode to a second operating mode when the context indicates mode switching of the camera.

[0065] In certain aspects of operation 400, the second operating mode corresponds to operating the processor at a higher frequency than the first operating mode.

[0066] In certain aspects of operation 400 , the mode switch includes at least one of: a change between a standard dynamic range mode and a high dynamic range mode, or a change between a first camera sensor and a second camera sensor.

[0067] In certain aspects of operation 400 , the turning off of the camera includes at least one of: input on a turn off button of the computing device, or input on a home button of the computing device.

[0068] In some aspects, the operations 400 also include releasing resources for a camera sensor of the computing device after setting the operating mode.

[0069] Sample Clauses

[0070] Specific implementation examples are described in the following numbered clauses:

[0071] Clause 1. A method for power control of a computing device, the computing device comprising a processor and a bus, the method comprising:

[0072] receiving a camera close call from an application running on the computing device;

[0073] receiving, from the application, an indication of a context for the camera close call; and

[0074] Based on the context of the camera shutdown call, an operating mode of at least one of the processor or the bus is set.

[0075] Clause 2. The method of clause 1, wherein the camera off call is an application programming interface (API) call to a framework running on the computing device.

[0076] Clause 3. The method according to clause 2, further comprising:

[0077] Based on the camera close call, a camera close event is issued to a hardware abstraction layer, wherein the hardware abstraction layer communicates with a camera driver configured to control a camera sensor of the computing device.

[0078] Clause 4. The method according to Clause 3 further comprises: based on the camera off call, issuing a callback to the application to determine the context of the camera off call, wherein the callback is issued by the hardware abstraction layer in response to the camera off event.

[0079] Clause 5. The method of clause 4, wherein the hardware abstraction layer registers a callback function to be issued upon receiving a camera close call.

[0080] Clause 6. The method of any one of clauses 1 to 5, wherein based on the context of the camera shutdown call, adjusting the operating mode of the at least one of the processor or the bus comprises:

[0081] When the context indicates shutdown of the camera, setting the operation mode to a first operation mode; and

[0082] When the context indicates a mode switch of the camera, the operation mode is set to a second operation mode.

[0083] Clause 7. The method of clause 6, wherein the second operating mode corresponds to operating the processor at a higher frequency than the first operating mode.

[0084] Clause 8. The method of clause 6, wherein the mode switch comprises at least one of: a change between a standard dynamic range mode and a high dynamic range mode, a change between capturing a still image and capturing a video, or a change between a first camera sensor and a second camera sensor.

[0085] Clause 9. The method of Clause 6, wherein the turning off of the camera comprises at least one of: input on a close button of the computing device, or input on a home button of the computing device.

[0086] Clause 10. The method according to any one of clauses 1 to 9, further comprising:

[0087] After setting the operating mode, resources for a camera sensor of the computing device are released.

[0088] Clause 11: An apparatus, the apparatus comprising: a memory comprising executable instructions; and a processor configured to execute the executable instructions and cause the apparatus to perform the method according to any one of clauses 1 to 10.

[0089] Clause 12: An apparatus comprising means for performing the method according to any one of clauses 1 to 10.

[0090] Clause 13: A non-transitory computer readable medium comprising executable instructions which, when executed by a processor of an apparatus, cause the apparatus to perform the method of any one of clauses 1 to 10.

[0091] Clause 14: A computer program product embodied on a computer readable storage medium, the computer program product comprising code for performing the method according to any of clauses 1 to 10.

[0092] Additional considerations

[0093] According to the present disclosure, the term "or" may be interpreted as "and / or" if the context does not indicate otherwise. In addition, although phrases such as "one or more" or "at least one" may have been used for some features disclosed herein and not for other features, features not using such language may be understood to have such implicit meanings if the context does not dictate otherwise.

[0094] In one or more examples, the functions described herein may be implemented in hardware, software, firmware, or any combination thereof. For example, although the term "processing unit" is used throughout this disclosure, such processing unit may be implemented in hardware, software, firmware, or any combination thereof. If any function, processing unit, technique, or other module described herein is implemented in software, the function, processing unit, technique, or other module described herein may be stored on a computer-readable medium or sent on a computer-readable medium as one or more instructions or codes. Computer-readable media may include computer data storage media and communication media, including any media that facilitates the transfer of a computer program from one place to another. In this way, a computer-readable medium may generally correspond to (1) a non-transient tangible computer-readable storage medium or (2) a communication medium such as a signal or carrier wave. A data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to extract instructions, codes, and / or data structures for implementing the technology described in this disclosure. By way of example and not limitation, such computer-readable media may include RAM, ROM, EEPROM, CD-ROM, or other optical disk storage, magnetic disk storage, or other magnetic storage devices. As used herein, disk and disc include: compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where disks usually reproduce data magnetically, while discs reproduce data optically using lasers. Combinations of the above should also be included in the scope of computer-readable media. A computer program product may include a computer-readable medium.

[0095] The code may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), arithmetic logic units (ALUs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Therefore, the term "processor" as used herein may refer to any of the above structures or any other structure suitable for implementing the techniques described herein. In addition, these techniques may be fully implemented in one or more circuits or logic elements.

[0096] The techniques of the present disclosure may be implemented in a variety of devices or apparatuses, including wireless handsets, integrated circuits (ICs), or groups of ICs (e.g., chipsets). Various components, modules, or units are described in the present disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily need to be implemented by different hardware units. Instead, as described above, the various units may be combined in any hardware unit or provided by a collection of interoperable hardware units, including one or more processors as described above, together with appropriate software and / or firmware.

[0097] Various examples have been described. These and other examples are within the scope of the following claims.

Claims

1. A method for power control of a computing device, the computing device comprising a processor and a bus, the method comprising: receiving a camera close call from an application running on the computing device; receiving, from the application, an indication of a context for the camera close call; as well as Based on the context of the camera shutdown call, an operating mode of at least one of the processor or the bus is set. 2 . The method of claim 1 , wherein the camera off call is an application programming interface (API) call to a framework running on the computing device.

3. The method according to claim 2, further comprising: Based on the camera close call, a camera close event is issued to a hardware abstraction layer, wherein the hardware abstraction layer communicates with a camera driver configured to control a camera sensor of the computing device.

4. The method according to claim 3, further comprising: Based on the camera off call, a callback is issued to the application to determine the context of the camera off call, wherein the callback is issued by the hardware abstraction layer in response to the camera off event. 5 . The method of claim 4 , wherein the hardware abstraction layer registers a callback function to issue the callback when a camera close call is received.

6. The method of claim 1 , wherein based on the context of the camera shutdown call, adjusting the operating mode of the at least one of the processor or the bus comprises: When the context indicates shutdown of the camera, setting the operation mode to a first operation mode; as well as When the context indicates a mode switch of the camera, the operation mode is set to a second operation mode.

7. The method of claim 6, wherein the second operating mode corresponds to operating the processor at a higher frequency than the first operating mode.

8. The method of claim 6, wherein the mode switch comprises at least one of: a change between a standard dynamic range mode and a high dynamic range mode, a change between capturing a still image and capturing a video, or a change between a first camera sensor and a second camera sensor.

9. The method of claim 6, wherein the turning off of the camera comprises at least one of: an input on a turn off button of the computing device, or an input on a home button of the computing device.

10. The method according to claim 1, further comprising: After setting the operating mode, resources for a camera sensor of the computing device are released.

11. A computing device, the computing device comprising: bus; and a processor configured to cause the computing device to: receiving a camera close call from an application running on the computing device; receiving, from the application, an indication of a context for the camera close call; as well as Based on the context of the camera shutdown call, an operating mode of at least one of the processor or the bus is set.

12. The computing device of claim 11, wherein the camera off call is an application programming interface (API) call to a framework running on the computing device.

13. The computing device of claim 12, wherein the processor is further configured to cause the computing device to: Based on the camera close call, a camera close event is issued to a hardware abstraction layer, wherein the hardware abstraction layer communicates with a camera driver configured to control a camera sensor of the computing device.

14. The computing device of claim 13, wherein the processor is further configured to cause the computing device to: Based on the camera off call, a callback is issued to the application to determine the context of the camera off call, wherein the callback is issued by the hardware abstraction layer in response to the camera off event.

15. The computing device of claim 14, wherein the hardware abstraction layer registers a callback function to issue the callback when a camera close call is received.

16. The computing device of claim 11, wherein based on the context of the camera shutdown call, adjusting the operating mode of the at least one of the processor or the bus comprises: When the context indicates shutdown of the camera, setting the operation mode to a first operation mode; as well as When the context indicates a mode switch of the camera, the operation mode is set to a second operation mode.

17. The computing device of claim 16, wherein the second operating mode corresponds to operating the processor at a higher frequency than the first operating mode.

18. The computing device of claim 16, wherein the mode switch comprises at least one of: a change between a standard dynamic range mode and a high dynamic range mode, a change between capturing a still image and capturing a video, or a change between a first camera sensor and a second camera sensor.

19. The computing device of claim 16, wherein the turning off of the camera comprises at least one of: an input on a close button of the computing device, or an input on a home button of the computing device.

20. The computing device of claim 11, wherein the processor is further configured to cause the computing device to: After setting the operating mode, resources for a camera sensor of the computing device are released.

21. A computing device, the computing device comprising: means for receiving a camera close call from an application running on the computing device; means for receiving, from the application, an indication of a context for the camera close call; and Means for setting an operating mode of at least one of a processor or a bus based on the context of the camera shutdown call.

22. The computing device of claim 21, wherein the camera off call is an application programming interface (API) call to a framework running on the computing device.

23. The computing device of claim 22, further comprising: Means for issuing a camera off event to a hardware abstraction layer based on the camera off call, wherein the hardware abstraction layer is in communication with a camera driver configured to control a camera sensor of the computing device.

24. The computing device of claim 23, further comprising: Means for issuing a callback to the application based on the camera off call to determine the context of the camera off call, wherein the callback is issued by the hardware abstraction layer in response to the camera off event.

25. The computing device of claim 24, wherein the hardware abstraction layer registers a callback function to issue the callback when a camera close call is received.

26. A non-transitory computer-readable medium storing instructions that, when executed by a computing device, cause the computing device to perform operations for power control, the operations comprising: receiving a camera close call from an application running on the computing device; receiving, from the application, an indication of a context for the camera close call; as well as Based on the context of the camera shutdown call, an operating mode of at least one of a processor or a bus is set.

27. The non-transitory computer-readable medium of claim 26, wherein the camera off call is an application programming interface (API) call to a framework running on the computing device.

28. The non-transitory computer readable medium of claim 27, wherein the operations further comprise: Based on the camera close call, a camera close event is issued to a hardware abstraction layer, wherein the hardware abstraction layer communicates with a camera driver configured to control a camera sensor of the computing device.

29. The non-transitory computer readable medium of claim 28, wherein the operations further comprise: Based on the camera off call, a callback is issued to the application to determine the context of the camera off call, wherein the callback is issued by the hardware abstraction layer in response to the camera off event.

30. The non-transitory computer readable medium of claim 29, wherein the hardware abstraction layer registers a callback function to issue the callback when a camera close call is received.