1. Field of the Invention
This invention relates generally to image processing, and more particularly to a method and apparatus for writing a non-rectangular frame to a display device.
2. Description of the Background Art
Display devices based on Liquid Crystal Display (“LCD”), Cathode Ray Tube (“CRT”), and other technologies render an image on a rectangular display screen. The image on the display screen is formed from an array of small discrete picture elements known as pixels. The displayed image is rectangular because the pixels are conventionally organized as numerous lines of equal length. For instance, a 640×480 display screen has 480 lines, each of which is 640 pixels long. The attributes of each pixel, such as its brightness and color, are represented by a numeric data value, which is typically represented in binary form. An array of data pixels is often referred to as a frame or pixmap (for pixel map). Each pixel location in a frame can be identified by an x and y coordinate.
The use of rectangular frames is not limited to display devices. For example, a charge coupled device (“CCD”) is often used as an image sensor in digital cameras. The sensor typically includes a rectangular array of sensor pixels. Like the pixels in display devices, the pixels in a CCD are organized as numerous lines of equal length.
It is common to render more than one frame on a display device at a time. One example is a mobile telephone with an integral camera. A main frame and a camera frame can be displayed simultaneously. Typically, the main frame is a rectangle related to telephone functions having the same dimensions as the display screen and the camera frame is a rectangle having dimensions smaller than the display screen. On the display screen, the camera frame appears superimposed on the main frame.
Because image capture and display devices generate and render rectangular frames, the protocols for transmitting and processing image data are typically designed for rectangular frames. In addition, when image data are stored in memory, it is common to allocate a physically rectangular portion of the memory for storage of the frame.
It is sometimes desirable, however, to display a non-rectangular image. Because the known protocols for transmitting, processing, and storing images are adapted for rectangular frames, they can be inefficient and wasteful of memory when it comes to non-rectangular images. In particular, they transmit and store data that is not ultimately displayed.
When a user decides to cause a camera frame to be displayed or to not be displayed on the screen of a hand-held, battery-powered computer appliance, such as a mobile telephone, the camera frame commonly appears or disappears instantly. This is true for any “window,” not only a window for displaying a camera frame. However, window transitions may be more pleasing to a viewer if the window changes size or position at a rate that renders the change perceivable as an animation.
Accordingly, a method and apparatus for writing a non-rectangular frame to a display device would be highly desirable. In addition, a method and apparatus for animating window transitions would be advantageous.
The invention is directed to an apparatus and method for writing a non-rectangular frame to a display device and for animating window transitions. In particular, the invention is directed to selecting image data of a first frame. By repeatedly selecting image data, the animation of window transitions may be achieved. Each first-frame datum has associated coordinates that are used in making the selection.
In a preferred embodiment, the apparatus comprises a memory for storing at least one parameter for defining a first aperture boundary in terms of a coordinate system, and a data selecting part. The data selecting part is adapted for comparing each first-frame datum's associated coordinates to the first boundary to determine if a first condition is true. Preferably, the first condition is one of whether the associated coordinates are inside or outside of the first boundary. The data selecting part is also adapted for processing each first-frame datum for which the condition is true. The processing is at least one of receiving, transmitting, or storing the first-frame datum. At least a portion of the first boundary is curvilinear.
In a preferred embodiment, the method comprises defining a first aperture boundary in terms of a coordinate system, comparing each of the first-frame datum's associated coordinates to the first boundary to determine if a first condition is true, and for each first-frame datum for which the condition is true, processing the first-frame datum. Preferably, the first condition is one of whether the associated coordinates are inside or outside of the first boundary. The processing of the first-frame datum is at least one of receiving, transmitting, or storing the first-frame datum. At least a portion of the boundary is curvilinear.
a is a diagram of a rectangular camera frame and a circular aperture for defining a non-rectangular camera frame.
b and 9c are diagrams of a display device rendering a rectangular main frame and non-rectangular camera frame.
The invention is directed to a method and apparatus for writing a non-rectangular frame to a display device. Reference will now be made in detail to the present preferred embodiments of the invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numbers are used in the drawings and the description to refer to the same or like parts.
The display controller 208 also has an internal memory 212. One region of the memory 212 is allocated for storing the main frame 214 and another region is allocated for storing the camera frame 216. The main frame 214 includes both display data 218 and “key color” data 220. The key color data 220 is organized in a desired non-rectangular aperture, such as an oval.
As mentioned, the host 204 is the source of the main frame 214. The host 204 specifies both the display data and the key color data. The host 204 may simply write the main frame to the display controller 208. Alternatively, the host 204 may store and then subsequently fetch the main frame 214 from the memory 210 before writing it to the display controller 208. The main frame 214 is always stored in the memory 212 as a rectangular pixmap.
Because the camera 206 typically does not include sufficient memory for storing a full camera frame, when it captures an image it generates a raster-ordered stream of image data in a YUV color format, which it transmits to a camera interface 224 in the display controller 208. A resizer 226 receives the data from the camera interface 224 and optionally performs image transformation operations, such as cropping and scaling the image. The resizer 226 writes transformed data to a YUV-to-RGB converter 228. The converter 228 converts the data to an RGB color format and stores the camera frame 216 in the memory 212. In the system 200, the camera frame 216 is always stored in the memory 212 as a rectangular pixmap.
In addition to the main and camera frames, another pixmap is referred to in this specification. The display screen of a display device is defined by a pixmap, which is referred to in this specification as the “display frame.” As with the main and camera frames, each pixel in the display frame is specified with by unique (x, y) coordinate pair. For purposes of illustrating the principles of the invention, the pixmaps of the main and camera frames are organized in such a way that there is a one-to-one correspondence between the pixels in these frames and one another, and with the display frame. For example, pixel (12, 17) of the main frame and pixel (12, 17) of the camera frame correspond to the pixel (12, 17) of the display frame.
A fetching circuit 230 reads the main frame from the memory 212 (typically in raster sequence), comparing each fetched, main-frame pixel with the binary value of the color-key pixel. If the fetched pixel does not equal the key color, it is written to a display device interface circuit 232 (“LCD I/F”). The LCD I/F 232 writes the pixels it receives to the display device 202. On the other hand, if the fetched, main-frame pixel matches the key color, the fetching circuit 230 reads a corresponding pixel from the camera frame 216. The pixel fetched from the camera frame 216 is written to the LCD I/F 232 instead of the fetched, main-frame pixel. The fetched, main-frame pixel is discarded. The “corresponding” camera pixel is from the same x, y coordinate location as the discarded main-frame pixel.
As mentioned, one region of the memory 212 is allocated for storing the main frame 214. The fetching circuit 230 reads the main frame from the memory 212 by reading the image data stored in the allocated region. The phrase “display-frame region” is used in this specification to particularly refer to the memory region allocated for storing a main frame, and to more generally refer to the memory region from which image data is read to refresh or update a display device.
Some of the disadvantages of the system 200, when used to write a non-rectangular camera frame to a display device, are as follows. First, this technique requires enough memory in the display controller 212 for two full rectangular frames. Second, the host 204 must generate a main frame with key color data that is organized in the desired non-rectangular aperture. This requires the host to perform substantial processing, consuming a significant number of CPU cycles. Third, the host must write numerous individuals pixels specifying the color key region to the display controller 208. Fourth, each time the non-rectangular aperture changes, the host 204 must re-write the entire main frame to the memory 212, even if the display data did not change and even if the change in aperture is relatively minor. This increases bus traffic and consumes memory bandwidth. Conservation of power is critical in battery-powered, mobile appliances, such as mobile telephones, and the required processing and memory increases power consumption.
The camera 206 generates a raster stream of image data that it sends to the camera interface 224. The camera image data is passed along a data path that runs to the resizer 226, the geometric region resizer 306, the YUV-to-RGB converter 228, the memory 308, the LCD I/F 310, and finally to the display device 202. This data path is similar to that of the system 200. However, the data path in the system 300 additionally includes the geometric region resizer 306 and omits the fetching circuit 230. Furthermore, the memory 308 may be made smaller than the memory 212.
Preferably, the input block to the geometric region resizer 306 is the resizer 226, though this is not essential. The resizer 226 outputs pixels in a camera frame, which may be optionally scaled or cropped. Preferably, the resizer 226 also outputs each pixel's x and y coordinate values, though other means may be provided for providing pixel coordinates.
The binary data defining the pixel and the pixel's x and y coordinates are input to the geometric region resizer 306. The geometric region resizer 306 determines whether the received pixel should be passed onto the YUV-to-RGB converter 228 for subsequent storage in the internal memory 308. This determination is made on the basis of whether the pixel falls inside or outside of a non-rectangular aperture. Preferably, the non-rectangular aperture is either a circle or an ellipse.
Because the geometric region resizer 306 selects or discards pixels with reference to a circular or elliptical aperture, it is helpful to review some equations related to a circle and an ellipse before further explaining the operation of the geometric region resizer 306.
The radius of a circle is (r) and the coordinates of a circle's center are (x0, y0). The expression below, which is a version of the Pythagorean theorem in which the radius (r) of a circle is the hypotenuse, is true for all points lying a distance (r) from the center of the circle.
(x−x0)2+(y−y0)2=r2 (1)
By replacing the equal sign with a comparator, such as “less than” (<) or “greater than” (>), the expression can be employed to determine whether a particular point having coordinates (x, y) is inside or outside of a circle.
The following expression relates a point having coordinates (x, y) to an ellipse:
The semi-major axis equals 2*a and the semi-minor axis equals 2*b. The coordinates of the center of the ellipse are (x0, y0). Rearranging terms:
b2(x−x0)2+a2(y−y0)2=a2b2 (3)
The above expression is true for all points lying on the circumference of the ellipse. As with expression (1), replacing the equal sign with a comparator permits the expression to be employed to determine whether a particular point is inside or outside of an ellipse.
As mentioned, the resizer 226 preferably generates the (x, y) coordinate values of each pixel it outputs. The pixel's x and y coordinate values correspond to x and y in equations (1)-(3). Each pixel that the resizer 226 outputs, along with the pixel's (x, y) coordinate values, are input to the geometric region resizer 306. Each pixel received from the resizer 226 is temporarily stored in a register 414. Each pixel's (x, y) coordinates are provided to the subtracters 416, 418, respectively. In addition, each pixel's (x, y) coordinates are provided to adders 432, 434.
The inputs of the registers 428, 430 are coupled to adders 432, 434, respectively. The registers 428, 430 are for storing the memory address of the pixel stored in register 414. The adder 432 sums the x coordinate with the XA memory address offset stored in register 410, and adder 434 sums the y coordinate with the YA memory address offset stored in register 412.
The subtracters 416, 418 receive, respectively, the x and y coordinates of each pixel. The subtracters 416, 418 also receive, respectively, the x0 and y0 center coordinates stored in registers 402, 404. The subtracter 416 outputs (x−x0) and the subtracter 418 outputs (y−y0).
The quantities output from the subtracters 416, 418 are provided twice to the inputs of multipliers 420 and 422, respectively, in order to square the quantities. In addition, the quantities a2 and b2 stored in registers 406, 408, respectively, are provided to multipliers 420 and 422, respectively. The output of multiplier 420 is b2(x−x0)2 and the output of multiplier 422 is a2(y−y0)2, corresponding to the left-hand side of the equation (3) for an ellipse above.
If the desired shape is a circle, the host 204 stores “1's” for a2 and b2 in registers 406, 408, and the output of multiplier 420 is (x−x0)2 and the output of multiplier 422 is (y−y0)2, corresponding to the left-hand side of the equation (1) for a circle above.
The outputs of the multipliers 420 and 422 are input to an adder 424. The adder 424 outputs either the sum b2(x−x0)2+a2(y−y0)2, or the sum (x−x0)2+(y−y0)2, depending on whether an ellipse or a circle is desired. The sum that the adder 424 produces is input to a comparator 426. The value (r2 or b2a2) stored in register 400 is also input to a comparator 426. The comparator 426 may perform any desired comparison on these two quantities, that is, >, <, >, <, =, or ≠. In one preferred embodiment, the comparator 426 performs a “less than” (<) comparison. In this embodiment, if the sum output by the adder 424 is less than the value stored in the register 400, the output of the comparator 426 is asserted, indicating that the pixel stored in register 414 is within the specified circle or ellipse. On the other hand, the output of the comparator 426 is not asserted if the sum output by adder 424 is greater than or equal to the value stored in the register 400, indicating the pixel stored in register 414 is to be discarded.
If the output of the comparator 426 is asserted, the pixel stored in register 414 is provided to the YUV-to-RGB converter 228. In addition, the output of comparator 426 is provided to registers 428 and 430, which, as mentioned, store the x and y coordinates of the memory address of the pixel. The assertion of the output signal of the comparator 426 causes the x and y coordinates stored in registers 428, 430 to also be provided to the YUV-to-RGB converter 228.
If the output of the comparator 426 is not asserted, the pixel and address data in registers 414, 428, and 430 are not provided to the YUV-to-RGB converter 228. This data is effectively discarded when the resizer 226 outputs a subsequent pixel, together with its coordinates, and overwrites the contents of these registers.
The components within the dashed line 436, namely, subtracters 416, 418, the multipliers 420, 422, the adder 424, and the comparator 426 are collectively referred to in this specification as sub-circuit 436. To summarize, the sub-circuit 436 asserts a signal if a particular pixel located at an (x, y) coordinate position in a frame satisfies a condition of comparison, i.e., it is within or outside a specified circular or elliptical aperture, depending on the particular comparative condition. Preferably, this signal is employed to cause particular pixels in a frame to be selected for further processing.
While not shown, it will be appreciated by one of ordinary skill in the art that various means for selecting the comparative condition to be applied by the comparator 426 may be provided so that the host may select any desired comparison. Of course, the comparator 426 may also be hard-wired to perform only a single comparative condition.
Referring again to
Still referring to
The LCD I/F 310 reads the image data stored in the display frame region of the memory 308 in raster sequence and writes the display frame to the display device 202. The LCD I/F 310 differs from the LCD I/F 232 in that the latter, as described above, compares fetched pixels with a key color and performs action based on the result of the comparison.
The system 300 is more desirable than the system 200 for several reasons. First, the memory 308 need not be as large the memory 212. The memory 212 needs to be large enough to store two full frames. However, the memory 308 only needs to be large enough for storing one full frame. In addition, the display interface is simpler. Another benefit is that the tasks that the host 204 must perform to display a non-rectangular camera frame are much simplified in comparison to the system 200. The host 204 simply writes a main frame containing only display data for storage in memory 308 and writes values to registers 304 for defining the desired circular or elliptical aperture.
As mentioned, the host 204 preferably stores the main frame 214 before the YUV-to-RGB converter 228 stores the non-rectangular pixmap defining the camera frame 216. This permits the converter 228 to overwrite a portion of the main frame. Alternative embodiments permit the host 204 to store the main frame 214 after or simultaneously with the storing of the camera frame 216 by the converter 228. Two such alternative embodiments are explained next.
In one alternative embodiment, software may be employed to cause the host 204 to store a main frame that only includes display data in particular portions of the display frame. Such software would be similar to that employed in the technique for writing a main frame that includes display and key color data described above. For example, assuming that the desired condition is a “less than” comparison, the host 204 stores main frame data only outside of the desired non-rectangular aperture. In other words, the main frame 214 written by the host does not include display data in portions within the non-rectangular aperture where the camera frame 216 is stored.
Referring to
The geometric region resizer 504 is similar to the geometric region resizer 306, except that the comparison operation performed by the geometric region resizer 504 is the complement of the comparison performed by the geometric region resizer 306. For instance, if the resizer 306 performs a “less than” comparison, the resizer 504 performs a “greater than or equal to” comparison. Conversely, if the resizer 306 performs a “greater than” comparison, the resizer 504 performs a “less than or equal to” comparison. More generally, a first and second condition are said to be “complementary conditions”, as that phrase is used in this specification, when the first condition selects a first set of all pixels that do not belong to a second set of pixels, and the second condition selects the set of all pixels that do not belong to the first set, where the first and second sets together define a frame, which is preferably, but not necessarily a display frame.
In operation, the geometric region resizer 306 operates as described above, storing a non-rectangular camera frame 216 in the display frame region of the memory 308. The host 204 writes a main frame to the geometric region resizer 504. Each pixel that the host 204 writes is compared to the non-rectangular geometric aperture specified by the values stored in registers 304. If, continuing the example of the preceding paragraph, the pixel's x and y coordinates are greater than or equal to those defining the non-rectangular geometric aperture, the main frame pixel is stored in the memory 308. Otherwise, the pixel is discarded and the geometric region resizer 504 does not store any data at that particular x and y coordinate in the display frame, thereby preserving the camera frame data stored at that (x, y) coordinate location.
It can be seen that the system 500 presents no risk of main frame data overwriting camera frame data. Accordingly, the host 204 and the converter 228 may store their respective frames in any order or simultaneously when the system 500 is employed.
Referring to
The geometric region resizer 604 is similar to the geometric region resizer 306. The geometric region resizer 604 is coupled to the registers 305 and it performs the same comparison operation with respect to the same non-rectangular aperture as that performed by the geometric region resizer 306. The fetch circuit 606 generates a pixel addresses in raster sequence and such addresses are compared in the same manner to the geometric aperture specified in the registers 305.
In operation, the host 204 writes the desired parameters to registers 304, 305. In addition, the host 204 writes a main frame 214 containing only display data for storage in the display frame region of the memory 610. Preferably, the host 204 writes a full main frame 214, but it may alternatively write a main frame which excludes display data within the portion of the display frame reserved for the non-rectangular camera frame. The resizer 226 sends a camera frame to the geometric region resizer 306. The geometric region resizer 306 sends a non-rectangular camera frame 216 to a YUV-to-RGB converter 608, which after color format converting, writes the camera frame to a memory 610. The non-rectangular camera frame that the resizer 226 sends is based on the parameters stored in registers 305.
Unlike the systems 300 and 500, the YUV-to-RGB converter 608 of system 600 writes the non-rectangular camera frame 216 to a rectangular region of the memory 610. In addition, this region is a separate region from the display frame region where the main frame 214 is stored.
The fetch circuit 606 selects pixels of the main-frame 214 for fetching from the memory 610 in raster sequence. The geometric region resizer 604, which is coupled to the fetch circuit 606, evaluates the x and y coordinates of each selected main-frame pixel and provides a signal to the fetch circuit 606 indicating whether the camera image pixel is to overlay the main pixel in the display frame. The x and y coordinates are evaluated based on the parameters stored in registers 305. If the geometric region resizer 604 signals that the selected pixel is not part of the non-rectangular camera frame, the selected main-frame pixel is fetched from memory 610 and written to a display device interface circuit 232, which writes the pixels it receives to the display device 202. On the other hand, if the geometric region resizer 604 signals that the selected main-frame pixel is to be overlaid with a pixel of the non-rectangular camera frame 216, the fetch circuit fetches the corresponding pixel from the memory 610 and writes it to a display device interface circuit 232. The “corresponding” camera pixel is from the same x, y coordinate location as the selected main-frame pixel.
For example, if the geometric region resizer 306 generates a non-rectangular camera frame defined by all camera-frame pixels within a specified elliptical aperture, the converter 608 will store the pixels included in that camera frame in a linear portion of the memory 216. When the fetch circuit 606 selects the (x, y) coordinates of a pixel for which there is a corresponding pixel within the specified elliptical aperture, the geometric region resizer 604 sends a signal to the fetch circuit 606 causing it to fetch a camera-frame pixel instead of a main-frame pixel. The display frame that the fetch circuit 606 provides to the display interface 232 thus includes the elliptical camera frame 216 overlaying the rectangular main-frame 214.
Several benefits of the system 600 are readily apparent. The memory 610 need not be large enough to store two full frames. The memory 610 need only be large enough for storing one rectangular frame and one non-rectangular frame. Another benefit is that the tasks that the host 204 must perform to display the non-rectangular camera frame are much simplified in comparison to the system 200. The host 204 simply writes a main frame containing only display data for storage in memory 308 and writes the desired values to registers 304. It was mentioned above with respect to the system 300 that care must be taken so that the host 204 does not overwrite camera frame data. A further benefit of the system 600 is that overwriting camera frame data with the main frame data is not a concern. Accordingly, main and camera frames may be stored in any temporal sequence.
Preferably, the geometric region resizer 700 is employed in place of the geometric region resizer 306 in the system 300, which is shown in
Referring to
Referring to
In addition, the geometric region resizer 700 includes two instances of the registers 304. More particularly, it also includes the registers 304a, 304b. The registers 304a are for storing parameters that define a first circular or elliptical aperture, and the registers 304b are for storing parameters that define a second circular or elliptical aperture. As before, the host 204 writes parameters to the registers 304a, 304b for defining the first and second apertures.
Referring again to
The AND gate 704 has its output coupled to inputs of the registers 414, 430, and 428, which are arranged, as shown in
The geometric region resizer 700 additionally includes the registers 410, 412, the adders 432, 434.
In operation, camera frame pixels and their (x, y) coordinates are provided geometric region resizer 700. The x and y coordinates are provided to the sub-circuits 436a and 436b. Like the sub-circuit 436, the sub-circuits 436a and 436b can perform any desired comparison. However, the sub-circuits 436a and 436b preferably do not perform the same comparison. Instead, they perform different comparisons with reference to different apertures.
Each camera frame pixel is temporarily stored in the register 414. The pixel's x and y coordinates are evaluated by the comparators 436a, 436b. As an example, the comparator 436a performs a “less than” comparison and the comparator 436b performs a “greater than” comparison. If the (x, y) coordinate defines a pixel location: (a) within the second elliptical aperture, and (b) outside the first elliptical aperture, then the output of the AND gate 804 is asserted and the pixel is written to the YUV-to-RGB converter. Otherwise the pixel is discarded, and the corresponding main frame pixel is written to the display device 202.
As with the system 300, the host 204 also writes a main frame containing only display data for storage in the internal memory of the display controller.
Preferred embodiments of the invention for animating window transitions are next described.
a shows a rectangular camera frame 920 and a circular aperture for defining a non-rectangular camera frame 216. The aperture moves horizontally with time. As the aperture moves to the right, different portions of the rectangular camera frame 920 are included within the circular camera frame 216.
b and 9c show a display device 202 rendering main and non-rectangular camera frames 214, 216, respectively. In
c shows a camera frame 216 changing in size with time. The shown frame 216 grows larger with time, but it may also diminish in size with time. The camera frame 216 may include static or changing image data.
Referring again to
The method and apparatus for writing a non-rectangular frame to a display device and for animating window transitions may be advantageously employed in conjunction with known techniques for scaling an image. For instance, the size of a digital image may be doubled by duplicating each pixel in a row and duplicating each row. As an example of how scaling could be employed, recall in the preceding paragraph where it was stated with reference to
The computer systems described in this specification are preferable battery-powered portable computer systems, such as a personal digital assistant or cellular telephone. However, the term “computer system” is used in this specification to broadly refer to any of a wide variety of devices, including but not limited to mainframe, personal, server, and embedded computers.
In this specification the host 204 may be any type of processor or CPU, and the term “host” is used in this specification to broadly refer to any of such processors, CPUs, digital signal processors, or other similar devices. Similarly, the term central processing unit or CPU is considered synonymous with host.
The term “camera” is used in this specification to broadly refer to any of a wide variety of image capture devices, including but not limited to still and video cameras, image scanners, and other similar devices. The term “camera” may also include any source of a digital image, such as a network interface or a JPEG decoder.
The registers 304, 305 for storing parameters have been shown and described as being separate from the memories 308, 610. This representation was for clarity of explanation only. It will be appreciated that the parameters stored in registers 304, 305 may be stored in the memories 308, 610, within the geometric resizers 306, 700, or elsewhere as desired.
The display device 202 is preferably an LCD. The term “display device” is used in this specification to broadly refer to any of a wide variety of devices for rendering images. The term display device is intended to also include hardcopy devices, such as printers and plotters. The term display device additionally refers to all types of display devices, such as CRT, LED, OLED, and plasma, without regard to the particular display technology employed.
For convenience of explanation and in accordance with the use of the term in the art, the term “pixel” has been used in this specification to refer at times to the display elements of a display device, at times to the binary elements of data that are stored and manipulated within a computer system and which define the attributes of such display elements, and at times to both, the appropriate sense of the term being clear from the context. The term has also been used to refer to sensor elements for sensing a pixel.
The phrase “camera frame” has been used in this specification to refer the frame of image data created by a camera and operated on by the geometric region resizer of the invention. Further, phrase “main frame” has been used in this specification to refer the frame of image data created by the host and which may or may not be processed using the geometric region resizer of the invention. It should be appreciated that these phrases are employed herein solely for convenience of explanation. The principles of the invention are applicable to any situation where two frames of image data are to be combined into a single display frame having a non-rectangular frame overlaying a rectangular frame, without regard to the sources of or labels given the respective frames. For example, the principles of the invention may be applied to create a non-rectangular main frame overlaying a rectangular camera frame. Moreover, the principles of the invention are applicable to any situation where the creation of a single a non-rectangular frame is desired. In other words, while preferable, it is not essential that two frames of image data be combined into a single display frame.
While the invention has been illustrated with respect to particular blocks and modules, it will be appreciated that the method of the invention may be also be embodied as a program of instructions and stored in a medium readable by a device which is adapted to perform such instructions. For example, a display controller according an alternative embodiment of the invention may include a CPU block adapted to execute a program of instructions stored in a memory. In this example, the embedded CPU performs any of the comparing, selecting, discarding, reading, writing, and other operations related to generating a non-rectangular frame that have been described in this specification.
The embodiments described in this specification are for purposes of illustration and not intended to be exhaustive or limiting. Many variations and modifications are possible in light of the teachings in this specification. Further, the terms and expressions employed in this specification have been used as terms of description and not of limitation, and are not intended to exclude equivalents of the features shown and described or portions of them. The scope of the invention is defined and limited only by the claims that follow.