1. Field of the Invention
The present invention relates to image processing, and more specifically to affecting the intensity values of displayed image data without storing the affected intensity values.
2. Description of the Related Art
In a device such as a handheld computing device or mobile phone, the device can include a display controller to provide graphics processing between a host processor (host) and a display. Among many graphics processing functions, one function of the display controller is to adjust the display brightness, or intensity, of image and text displayed on a screen. Adjusting the display brightness permits the creation of visual effects such as highlighting or de-emphasizing the image and text, provide fade-in/fade-out effects, or flashing the display. However, adjusting the display brightness to provide a feature rich visual environment has a detrimental impact on the resources of the device.
Specifically, methods of adjusting the display brightness such as look up table (LUT) reprogramming, bit block transfer (BitBLT) operations, overlay window processing, and direct host processing of a display memory has a detrimental impact on the device by increasing host processing and power consumption. For example, LUT reprogramming can require considerable host processing by affecting the intensity of a portion of the display. Further, fade-in/fade-out effects and continuous brightening/dimming effects require increased bus traffic to and from the host.
Although BitBLT operations are not as host traffic intensive as LUT reprogramming, BitBLT operations do recursive host processing. Additionally, the BitBLT operations modify data stored in the display memory. Generally, modifications to the display memory detrimentally impact the device because any overwritten data must be rewritten when required for other processes. Further, when using overlay window processing to achieve a desired intensity effect, additional display memory and circuitry are added to the device. However, devices have limited capacity to add display memory and circuitry and thus, overlay window processing is not an effective solution. Direct host processing of the display memory to adjust the display brightness suffers from similar drawbacks to the previous solutions by increasing host processing, host traffic, and power consumption.
Accordingly, what is needed is a method and apparatus for adjusting the display intensity of image and text of a device, while avoiding detrimental impacts to the resources and operation of the device.
Broadly speaking, the present invention is a method and apparatus to adjust the intensity of image data. Specifically, adjusted intensity values produced by a display intensity filter of a controller are displayed as an intensity adjusted pixel without storage in a display memory. It should be appreciated that the present invention can be implemented in numerous ways, such as a process, an apparatus, or a device, of which several inventive embodiments of the present invention are described below.
In an embodiment of a method of adjusting an intensity value associated with an image displayed on a portable electronic device, the method includes receiving a pixel of image data stored in a display buffer and adjusting an intensity value of the pixel of image data while transmitting the pixel of image data from the display buffer to a display. The method also includes transmitting the intensity adjusted pixel to the display without overwriting the pixel of image data in the display buffer.
In an embodiment of a display controller for adjusting an intensity value associated with an image displayed on a portable electronic device, the display controller includes a register block for storing a value determining an intensity adjustment operation. Further, a display buffer is coupled to the register block, such that the display buffer is configured to store a pixel of image data. The pixel of image data remains unmodified in the display buffer during the adjusting of the intensity value. The display controller also includes an intensity filter module coupled to the register block and the display buffer. The intensity filter module has intensity filter logic, which is configured to modify the intensity value of the pixel of image data and transmit the modified value of the pixel of image data to a display pipe.
In an embodiment of a portable electronic device for adjusting an intensity value, the portable electronic device includes a processor capable of operating on a frame of image data. The frame of image data has a plurality of pixels and a display controller is in communication with the processor, such that the display controller further includes, a register block for storing a value to determine an intensity adjustment operation. The display controller also includes a display buffer coupled to the register block, such that the display buffer is configured to store a pixel of image data of the plurality of pixels. The pixel of image data remains unmodified in the display buffer during the adjusting of the intensity value. Further, an intensity filter module is coupled to the register block and the display buffer. The intensity filter module has intensity filter logic, which is configured to modify the intensity value of the pixel of image data and transmit the modified value of the pixel of image data to a display pipe. The portable electronic device also includes a display in communication with the display controller through the display pipe.
Other aspects of the invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention.
Exemplary embodiments of the invention may be understood by reference to the following description, taken in conjunction with the accompanying drawings in which:
The following embodiments describe a method and apparatus for adjusting the intensity, or display brightness, for a region of a display frame. A display frame contains data including image or text, referred to as a frame of image data. Further, the frame of image data is represented by pixels with a color scheme such as RGB or YUV. For simplicity, the following embodiments are described using an RGB color scheme. However, one of ordinary skill in the art can appreciate that any type of color scheme is possible, as long as a region of the display frame is adjusted for intensity.
Adjusting the intensity of the frame of image data permits a feature rich visual multimedia environment by providing several visual effects. For example, the visual effects include brightening/dimming, panning/scrolling, and scaling with brightening/dimming. An exemplary embodiment includes a method that adjusts intensity values of the pixels of the frame of image data. The intensity values are representations of the pixels as color values in binary, hexadecimal, or any other suitable counting/numbering system.
During the adjustment of the intensity values, color values of the pixels of the frame of image data are operated on to produce affected color values, or intensity adjusted pixels. These intensity adjusted pixels are then displayed on the fly. On the fly processing will be described in more detail in accompaniment to descriptions of the embodiments of
Various exemplary embodiments include the method and apparatus for adjusting intensity. For example, embodiments of an apparatus include mobile phones, handheld devices, such as Personal Digital Assistants (PDAs), digital and analog cameras that display frames of image data, and other devices that display frames of image data. However, the embodiments described herein may be used with any device for adjusting the intensity values of the frame of image data.
Accordingly,
The display 180 can be a Liquid Crystal Display (LCD) panel such as a Thin Film Transistor (TFT) display or a Random Access Memory (RAM) based panel. During a refresh of the TFT display, the adjusted intensity values are displayed. To produce a complete image on the display 180, the TFT display can include a temporary memory to store the adjusted intensity values. Without using the temporary memory, the TFT display requires a particular timing because the refresh may only have a partial image to display. To remove timing considerations, the temporary memory can store adjusted intensity values to be retrieved by the TFT display during the refresh. Further, the RAM-based panel includes a display memory for temporary storage of the adjusted intensity values because RAM-based panels do not require a refresh and therefore do not have this timing restriction. In other exemplary embodiments, other types of displays 180 are possible, as long as the displays 180 can show adjusted intensity values.
The connector 170 is part of a display pipe of the device 100. Specifically, the connector 170, connectors within the controller 120, and connectors of the display 180 comprise the totality of the display pipe. By transmitting affected color values on the display pipe without storing the affected color values in a memory of the controller 120, the adjustment of the intensity values and the result shown in the display 180 is processing on the fly. It should be appreciated that processing on the fly avoids overwriting image data stored in the memory of the controller 120. Thus, the frame of image data stored in the memory of the controller 120 is unmodified during processing on the fly.
The controller 120 includes a display buffer 130, a look up table (LUT) 140, a register block 150, and an intensity filter module 160. Although illustrated having connections as shown in
The frame of image data stored in the display buffer 130 is transmitted to the LUT 140, in order to extract pixels from the frame of image data. Consequently, the LUT 140 receives an exemplary pixel represented by an RGB888 color format, where each pixel includes 8 bits to represent each color component of the RGB color scheme. Thus, 24 bits representing the red (R), green (G), and blue (B) color components define the color values affected to adjust the intensity of the image data. It should be appreciated that more or less bits can represent each color component, as the use of 8 bits per color component is exemplary and not meant to be limiting.
The pixel is mapped within the LUT 140 to produce an appropriate color on the display 140. However, before transmitting the color to the display, the LUT 140 transmits the color values of the pixel to the intensity filter module 160. The intensity filter module 160, in conjunction with data stored in the register block 150 can perform operations to affect the color values, which become adjusted intensity values.
The start position-x 210 and the start position-y 220 are the (x,y) components of row (x) and column (y) positions of the first pixel of the frame of image data to be affected. Thus, the start position-x 210 and the start position-y 220 define a start position corresponding to the entire frame of image data or a portion of the frame of image data. The width 230 and the height 240 define the size of the frame of image data. For example, if the width 230 is equal to five pixels and the height 240 is equal to eight pixels, then the rectangular frame of image data has an area of 40 pixels (i.e. 5×8=40).
Further, if the start position-x 210 has a value of 20 and the start position-y 220 has a value of 10, then a raster scan of the frame of image data moves five pixels from 20 to 25 along the width 230 of the frame of image data and moves eight pixels from 10 to 18 along the height 240 of the frame of image data. During the raster scan, horizontal and vertical frame counters (not shown) keep track of the pixel count. It should be appreciated that the invention is not limited to rectangular frames of image data, as other non-rectangular shapes may be utilized, as long as the area of the non-rectangular shape is captured by the data stored in the register block 150 (
The intensity method 250 is a value that defines the type of operation to be performed on a pixel to produce affected color values. For example, if the intensity method 250 includes a value for a shifting operation, then the pixel will be shifted by an amount equivalent to the value to produce the affected color value. However, if the intensity method 250 includes a masking value for a masking operation, then the pixels are logically combined with the masking value to produce the affected color value. Specific examples of the shifting and masking operations will follow in relation to
The bypass value 260 determines whether the pixel bypasses the intensity filter module 160. Specifically, if the bypass value 260 is set to a disabled state, then the pixel is transmitted to the intensity filter module 160 from the LUT 140. If the bypass value 260 is set to an enabled state, then the pixel is transmitted directly to the display pipe, thereby bypassing the intensity filter module 160. The intensity trigger value 270 can also initiate the adjustment of intensity values. Specifically, the intensity trigger value 270 can be set to an off-state. During the off-state, no intensity values are adjusted. Alternatively, when the intensity trigger value 270 is set to an on-state, the intensity values are adjusted to a completion-state. In contrast to the bypass value 260, the intensity trigger value 270 starts and adjusts intensity values until completion. The bypass value 260 permits the adjustment of intensity values until the bypass is enabled, i.e. the bypass value 260 may be enabled during the adjustment of the intensity values, while the trigger value 270 may not be turned on or off during the adjustment of the intensity values.
The red color value 410 can be a binary value such as “00110101.” Upon receiving the red color value 410, the intensity filter logic 310 determines whether to perform a shifting operation or a masking operation to adjust the intensity value of the red color value 410 according to the register value discussed above with reference to
In the special case of a shifting operation that loses a “1” during a shift, the intensity filter logic 310 transmits the maximum or minimum intensity value to the display pipe. For example, if the red color value 410 is “00110101” and the intensity method 250 indicate brightening using a 3-bit left shift operation, then “001” is left shifted off the red color value 410. Thus, the intensity filter logic 310 transmits “11111111” to the display pipe, indicating the maximum intensity value. Alternatively, to dim, or decrease the intensity value of the red color value 410, the intensity method 250 indicates a right shift operation. If all “1s” are shifted off the red color values 410, then the intensity value is fixed to “00000000,” thus showing nothing on the display.
However, if the intensity method 250 includes a masking value for a masking operation, then the intensity filter logic 310 performs a masking operation. For example, the intensity method 250 can indicate that the red color value 410 represented by “00110101” should be brightened by performing a logical operation. Accordingly, an AND operation operates on the masking value “00000111” and the red color value 410 to produce “00000101,” which is then transmitted to the display pipe. Other masking operations include logical operations such as OR, XOR, NOT, among other logical operations. One of ordinary skill in the art will recognize that any logical operation is possible during the masking operation, as long as the color values are affected to modify the brightness.
The masking value of the intensity method 250 can be obtained from a register outside the register block 150. For example, any suitable register is capable of storing the masking value, such as a register of the processor 110. Thus, one of ordinary skill in the art will recognize that the masking value can be obtained from any source, as long as the embodiments of the present invention described herein can identify a location for obtaining the masking value for adjusting an intensity value.
The intensity filter logic 310 also performs operations on non-binary color values. For example, if the red color value 410 is represented in hexadecimal by “1F,” then the masking operation using a masking value of all “F” produces the maximum intensity value. Further, the masking value can be used to mask out the color value using a masking value of all zeros. In addition to shifting and masking operations, any arithmetic-type operation is possible. For example, multiplication and addition are exemplary operations used by the intensity filter logic 310 to produce affected color values. Thus, multiple intensity adjustment operations, such as the shifting operation and the masking operation, produce intensity adjusted pixels. The intensity filter logic 310 can include logic for any combination of intensity adjustment operations, as long as the controller 120 has the capacity to have additional circuitry.
By adjusting intensity values, the intensity filter logic 310 can also perform fade-in/fade-out operations for all or part of the display 180. The intensity filter logic 310 can include a delay counter (not shown) to specify the duration of the fading operation and a start and end fade setting (not shown). Correspondingly, the intensity trigger value 270 can initiate the fading operation. Thus, masking out all the color values of a pixel for a region of the frame of image data is equivalent to a fade-out operation. After the intensity filter logic 310 performs the shifting or masking operation to produce an affected red color value, the intensity filter logic 310 continues to operate on subsequent color values transmitted by the LUT 140.
The operations performed by the exemplary apparatus of FIGS. 1 to 4B are illustrated following a particular sequence. However, the operations can be performed in parallel with other operations. For example, a pipelined architecture permits the operations to be performed in parallel to maximize device 100 resource utilization.
Alternatively, if the intensity method indicates not performing a left shift, then the intensity filter logic performs a right shift in operation 553. Then, in operation 558, the intensity filter logic transmits the bit-shifted value to the display pipe. In another embodiment (not shown) the intensity filter logic transmits the minimum intensity value when the trailing bit of “1” is right shifted off. Thus, the method of
Embodiments of the present invention may be practiced with various computer system configurations including hand-held devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers and the like. The invention can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a wire-based or wireless network.
With the above embodiments in mind, it should be understood that the invention can employ various computer-implemented operations involving data stored in computer systems. These operations are those requiring physical manipulation of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared and otherwise manipulated.
Any of the operations described herein that form part of the invention are useful machine operations. The invention also relates to a device or an apparatus for performing these operations. The apparatus can be specially constructed for the required purpose, or the apparatus can be a general-purpose computer selectively activated or configured by a computer program stored in the computer. In particular, various general-purpose machines can be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations.
The invention can also be embodied as computer readable code on a computer readable medium. The computer readable medium is any data storage device that can store data, which can be thereafter read by a computer system. The computer readable medium also includes an electromagnetic carrier wave in which the computer code is embodied. Examples of the computer readable medium include hard drives, network attached storage (NAS), read-only memory, random-access memory, CD-ROMs, CD-Rs, CD-RWs, magnetic tapes, and other optical and non-optical data storage devices. The computer readable medium can also be distributed over a network coupled computer system so that the computer readable code is stored and executed in a distributed fashion.
Although the foregoing invention has been described in some detail for purposes of clarity of understanding, it will be apparent that certain changes and modifications can be practiced within the scope of the appended claims. Accordingly, the present embodiments are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope and equivalents of the appended claims.