Patent Document

TECHNICAL FIELD 
       [0001]    This disclosure relates generally to imaging devices, including apparatus, systems, and methods for image distortion correction in an imaging device. 
       BACKGROUND 
       [0002]    Imaging devices include photosensors which may form a part of a semiconductor integrated circuit used in a computer or other electronic devices. There are many different types of semiconductor-based imaging devices, including charge coupled devices (CCDs), photodiode arrays, charge injection devices and hybrid focal plane arrays. Because imaging technology provides large arrays of small pixels (high resolution), imaging devices of ever-decreasing size may be useful for recording images where installation space is limited. 
         [0003]    Image sensors used with a wide-angle viewing lens (e.g., fish-eye lens) can collect data in a non-linear fashion, perhaps providing a non-rectilinear data representation within a storage block of sensors. The resulting warped image may then be transformed to a rectilinear representation upon transfer of the data to memory. Prior methods to accomplish the transfer include collecting multiple two dimensional sections of the sensor storage blocks and transferring them to memory buffers of equal size. A non-rectilinear conversion formula would then be applied to each buffer to correct the non-linearity and reconstruct the image. This technique places a burden on the available buffer space, and generally lends to the use of external memory. Thus, there is a need to improve the efficiency of memory use, including the management of buffer memory, when images are processed. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0004]      FIG. 1  illustrates a data storage system, including a memory buffer, according to various embodiments of the invention. 
           [0005]      FIG. 2  illustrates a block of sensor data that utilizes a conformal rolling buffer to index data within a memory space, according to various embodiments of the invention. 
           [0006]      FIG. 3  illustrates an array of sensor data using an indexing formula, according to various embodiments of the invention. 
           [0007]      FIG. 4  shows an image sensor module of data pixels organized in rows and columns containing data to be transferred to a memory buffer and compressed, according to various embodiments of the invention. 
           [0008]      FIG. 5  is a block diagram of an image reconstruction system, according to various embodiments of the invention. 
           [0009]      FIG. 6  illustrates a write request according to various embodiments of the invention. 
           [0010]      FIG. 7  illustrates a read request according to various embodiments of the invention. 
           [0011]      FIG. 8  is a block diagram of a system according to various embodiments of the invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0012]    Some of the disclosed embodiments operate to transfer sensor data from an array of storage blocks to a plurality of memory cells of a memory device, correcting non-linearity that may have been introduced between different storage blocks within the array as the transfer occurs. For example, a memory allocation request may be received from a processor configured to manage memory devices organized as a plurality of memory cells. According to various embodiments, some of the memory cells may provide data compression. 
         [0013]    An array of storage blocks having a known non-linearity can utilize an integral formula, based upon the non-linearity, to calculate a memory index. The memory index can be used to identify the location of the data for each storage block within a memory buffer by associating an x, y coordinate with each storage block within the array. One method to accomplish this mapping may include utilizing Newton&#39;s method of divided differences. Readers that would like to know more about Newton&#39;s Method of divided differences are encouraged to refer to “Numerical Analysis Using MATLAB® and Excel®,” Steven T. Karris, pp 7-42, Third Edition, 2007. As a result, the non-linearity may be addressed during the transfer of data to memory, by establishing new x′, y′ coordinates for each storage block. This mechanism can sometimes reduce the burden placed upon the memory buffer by eliminating the need to perform post-processing. To reconstruct the data from the memory buffer, the new x′, y′ coordinates can then be used to recalculate the array x, y coordinates, based upon the integral formula previously established. This can then be used to determine the memory index for each storage block to be read from memory. By further providing data compression during the data storage process, the required buffer memory space may be reduced even further. 
         [0014]      FIG. 1  illustrates a data storage system  100 , including a memory buffer  106 , according to various embodiments of the invention. A data storage system  100  includes an integrated circuit  102  comprising an array  104  of data storage blocks. The integrated circuit  102  may be configured to include a memory buffer  106 , and an integral calculator  108 , which may include a non-linearity correction formula corresponding to the storage block  104 . The memory buffer  106  may contain a compression buffer (not shown) to increase data density storage. 
         [0015]    The data storage system  100  may include a memory controller  114 , which in turn may include a processor  116 . The processor  116  may utilize control lines  112  to communicate with the array  104  via integrated circuit  102 . Access to the array  104  may be accomplished by using one or more specified memory cells within the memory buffer  106 , linked by addressing via the control lines  112 . When access to one or more storage blocks contained within the array  104  is established by the processor  116 , data may be written to or read from the specified memory cells. When an allocation request associated with a read request is sent by the processor  116 , such an operation may include accessing multiple portions of data, and the integral calculator  108  can provide location identification of related data contained within the memory buffer  106 . 
         [0016]      FIG. 2  illustrates a block of sensor data that utilizes a conformal rolling buffer to index data within a memory space, according to various embodiments of the invention. A storage array  200  arranged as a plurality of storage blocks  202  is shown. Upon receiving an allocation request from a memory controller, and using prior art methods, the first portion  204  bordered in dashed lines, representing a two dimensional area equal to a memory buffer space, may be selected for storing data from a portion of the array  200 . The upper left and right corners of the first portion  204  contain unused data areas  208  and  210  falling outside the grid of storage blocks  202 . Including the entire first portion  204  constitutes an inefficient use of memory space when the data is transferred to memory, due to the fixed area calculation supplied by the rolling buffer index formula (1), where array data specified on the left side of the formula is stored in the memory location indicated on the right side of the formula: 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       F 
                        
                       
                         ( 
                         
                           x 
                           , 
                           y 
                         
                         ) 
                       
                     
                     = 
                     
                       mod 
                        
                       
                         ( 
                         
                           
                             
                               ∑ 
                               
                                 v 
                                 = 
                                 0 
                               
                               y 
                             
                              
                             
                                 
                             
                              
                             
                               W 
                                
                               
                                 ( 
                                 v 
                                 ) 
                               
                             
                           
                           , 
                           b 
                         
                         ) 
                       
                     
                   
                    
                   
                     
 
                   
                    
                   
                     
                       W 
                        
                       
                         ( 
                         v 
                         ) 
                       
                     
                     = 
                     
                       { 
                       
                         
                           
                             w 
                           
                           
                             
                               
                                 if 
                                  
                                 
                                     
                                 
                                  
                                 v 
                               
                               &lt; 
                               y 
                             
                           
                         
                         
                           
                             x 
                           
                           
                             
                               
                                 if 
                                  
                                 
                                     
                                 
                                  
                                 v 
                               
                               = 
                               y 
                             
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   1 
                   ) 
                 
               
             
           
         
       
     
         [0000]    where (x,y) is the resulting Cartesian data source coordinates within the array  200 , (w) is the buffer length and (b) is the buffer height, and (v) is the memory address offset. The second portion  206  contains an area equal to that of the first portion  204  taken from a separate part or portion of the storage array  200 . The use of formula (1) can be repeated for second portion  206  and each subsequent portion of the array  200  until the entire array  200  is indexed to the memory buffer space. The size of each portion (e.g., first and second portions) may be equal in size to the buffer space allocated to store the data from those storage blocks. 
         [0017]    Alternatively, using the apparatus, systems, and methods described herein, the unused data areas  208  and  210  may be left out of the data transfer process to more efficiently utilize memory space. The unused data areas  208  and  210  reside outside the boundary region of the storage array  200 , such that the boundary region represents data areas to be indexed and transferred to memory space. Upon receiving an allocation request from a memory controller, instead of the first portion  204 , the third portion  212  outlined in solid lines, representing a two dimensional area equal to a memory buffer space, is selected for storing a portion of the storage array  200 . Although the area of the third portion  212  is similar to that of the first portion  204 , the third portion  212  is different in that it includes only the used data among storage blocks  202 . The area represented by f a  identifies a changing slope to represent the y coordinate on the upper left side and, similarly, f b  identifies a changing slope that represents the y coordinate on the upper right side. Using an indexing formula that accommodates these elements can reduce the amount of useless data that is stored, such as that included in unused data areas  208  and  210 , increasing the amount of buffer space available to store useful data. One such indexing formula, formula (2), is: 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       f 
                        
                       
                         ( 
                         
                           x 
                           , 
                           y 
                         
                         ) 
                       
                     
                     = 
                     
                       mod 
                        
                       
                         ( 
                         
                           
                             
                               ∑ 
                               
                                 v 
                                 = 
                                 0 
                               
                               y 
                             
                              
                             
                                 
                             
                              
                             
                               W 
                                
                               
                                 ( 
                                 v 
                                 ) 
                               
                             
                           
                           , 
                           b 
                         
                         ) 
                       
                     
                   
                    
                   
                     
 
                   
                    
                   
                     
                       W 
                        
                       
                         ( 
                         v 
                         ) 
                       
                     
                     = 
                     
                       { 
                       
                         
                           
                             
                               
                                 
                                   F 
                                   b 
                                 
                                  
                                 
                                   ( 
                                   v 
                                   ) 
                                 
                               
                               - 
                               
                                 
                                   F 
                                   a 
                                 
                                  
                                 
                                   ( 
                                   v 
                                   ) 
                                 
                               
                             
                           
                           
                             
                               
                                 if 
                                  
                                 
                                     
                                 
                                  
                                 v 
                               
                               &lt; 
                               y 
                             
                           
                         
                         
                           
                             
                               x 
                               - 
                               
                                 
                                   F 
                                   a 
                                 
                                  
                                 
                                   ( 
                                   v 
                                   ) 
                                 
                               
                             
                           
                           
                             
                               
                                 if 
                                  
                                 
                                     
                                 
                                  
                                 v 
                               
                               = 
                               y 
                             
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   2 
                   ) 
                 
               
             
           
         
       
     
         [0000]    Where (x,y) is the resulting Cartesian data source coordinates, (w) is the buffer length and (b) is the buffer height, ƒ a  is a function bounded by the left side of the storage array  200  and ƒ b  is a function bounded by the right side of the storage array  200 . The next area selected, fourth portion  206 , also selects only the useful data within the area bound by ƒ a  and ƒ b  along the x and y axes. Thus, to conserve memory, formula (2) is repeated for second portion  206  and each subsequent portion of the storage array  200  until the entire storage array  200  is indexed to the memory buffer space. As a result, when additional portions are selected as part of the process of storing the data, the buffer space used may be reduced sufficiently to eliminate the need for external memory. 
         [0018]      FIG. 3  illustrates an array of sensor data using an indexing formula, according to various embodiments of the invention. Storage array  300  is organized as a plurality of storage blocks  302  which may comprise both a boundary region  304  and a non-boundary region  306 . The boundary region  304  may have a non-rectangular or arbitrary shape represented by the shaded portion of storage array  300  and contain useful data to be transferred to memory. The non-boundary region  306  may represent unused data which does not need to be transferred to memory. The boundary region  304  may be specified and fixed such that the memory mapping formula may ignore the non-boundary region  306  during mapping and data transfer. In certain examples, random retrieval of a given storage block  302  (e.g., from a selected x,y location) that has been stored in memory may be desired, thus an indexing formula may allow discrete retrieval. To further illustrate the difference, a storage block  302 , located at address A(x,y), may be identified in a rectangular grid having a width w and the index formula, formula (3), is: 
         [0000]        A ( x, y )= wy+x    (3) 
         [0000]    Using a non-rectangular boundary region  304 , formula (3) may contain wasted storage space as it is bound to a rectangular index region. In contrast, an indexing formula may be implemented to convert the Cartesian coordinates (x,y) of a storage block  302  to a memory address based on the order in which that storage block  302  was added to memory in a simpler form A(x,y)=i, where i represents the desired storage block  302 . According to various embodiments, the storage blocks  302  may be stored in memory locations in a sequential order of increasing x and y positions. A formula, formula (4), may be used to index each storage block  302  of the storage array  300  by sequentially reading each pixel and identifying those which are in the boundary region  304  and those which are part of the non-boundary region  306  as follows: 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       A 
                        
                       
                         ( 
                         
                           x 
                           , 
                           y 
                         
                         ) 
                       
                     
                     = 
                     
                       
                         ∑ 
                         
                           u 
                           = 
                           0 
                         
                         x 
                       
                        
                       
                         
                           ∑ 
                           
                             v 
                             = 
                             0 
                           
                           y 
                         
                          
                         
                           
                             f 
                              
                             
                               ( 
                               
                                 u 
                                 , 
                                 v 
                               
                               ) 
                             
                           
                            
                           
                               
                           
                            
                           where 
                         
                       
                     
                   
                    
                   
                     
 
                   
                    
                   
                     
                       f 
                        
                       
                         ( 
                         
                           u 
                           , 
                           v 
                         
                         ) 
                       
                     
                     = 
                     
                       { 
                       
                         
                           
                             0 
                           
                           
                             
                               u 
                               , 
                               
                                 v 
                                  
                                 
                                     
                                 
                                  
                                 outside 
                                  
                                 
                                     
                                 
                                  
                                 region 
                               
                             
                           
                         
                         
                           
                             1 
                           
                           
                             
                               u 
                               , 
                               
                                 v 
                                  
                                 
                                     
                                 
                                  
                                 inside 
                                  
                                 
                                     
                                 
                                  
                                 region 
                               
                             
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   4 
                   ) 
                 
               
             
           
         
       
     
         [0019]    The boundary region  304  may be described as bounded by polynomials such as the triangle-shaped portion shown in  FIG. 3 . The sums shown in formula (4) may be expressed as polynomial equations where the boundary b includes one side between b(y)=0 and b(y)=y. 
         [0020]    In order to store y complete rows of the boundary region  304 , an area formula, formula (5), may be applied as: 
         [0000]    
       
         
           
             
               
                 
                   
                     A 
                      
                     
                       ( 
                       y 
                       ) 
                     
                   
                   = 
                   
                     
                       
                         1 
                         2 
                       
                        
                       
                         y 
                         2 
                       
                     
                     + 
                     
                       
                         1 
                         2 
                       
                        
                       y 
                     
                   
                 
               
               
                 
                   ( 
                   5 
                   ) 
                 
               
             
           
         
       
     
         [0000]    Any partially filled rows to be included may be added to the above expression as shown in formula (6) as: 
         [0000]    
       
         
           
             
               
                 
                   
                     A 
                      
                     
                       ( 
                       
                         x 
                         , 
                         y 
                       
                       ) 
                     
                   
                   = 
                   
                     
                       
                         1 
                         2 
                       
                        
                       
                         
                           ( 
                           
                             y 
                             - 
                             1 
                           
                           ) 
                         
                         2 
                       
                     
                     + 
                     
                       
                         1 
                         2 
                       
                        
                       
                         ( 
                         
                           y 
                           - 
                           1 
                         
                         ) 
                       
                     
                     + 
                     x 
                   
                 
               
               
                 
                   ( 
                   6 
                   ) 
                 
               
             
           
         
       
     
         [0000]    For example, the storage block  302  at location x=3 and y=7 should be stored in address  24  by applying formula (6). Similarly, any region of storage array  300  that is bounded by polynomials may utilize an indexing function that is the integral of that bound area, where the integral may be a polynomial equation. Additionally, as discussed above, Newton&#39;s Method of divided differences can be used to more quickly calculate the index if we are incrementing a coordinate by one. Using the example above in which we determined that A(3,7)=24, we can simplify the determination of the next index when a difference in y is increased by 7 (dy=7), by using Newton&#39;s Method in a 2 nd  order polynomial equation, formula (7), as follows: 
         [0000]        A ( x,y+ 1)= A ( x,y )+ dy= 24+7=31   (7) 
         [0000]    Similarly, using formula (8), for a difference in x: 
         [0000]        A ( x+ 1, y )= A ( x,y )+1   (8) 
         [0000]    Thus, when data storage or retrieval needs sequential increments or decrements, the address lookup may only use a few addition operations, which may be less taxing on processing and memory. 
         [0021]    In certain embodiments, the indexing function may be monotonic, such as “first in first out” (FIFO) order of retrieval. The indexing formula can benefit from a rolling buffer having a buffer size n and the indexing will overwrite itself sequentially, when the end of the buffer is reached. This can be illustrated using formula, formula (9), as: 
         [0000]      (( A ( x, y )−1)mod  n )+1   (9) 
         [0000]    For example, if data enters storage array  300  in left to right, bottom to top order and the user wishes to buffer boundary region  304 , the buffer size needs to be determined. For this example we can select a buffer size large enough to contain no more than the three largest rows of storage blocks  302 , at the top of the boundary, n=39 and use formula (10), by combining formulas (9) and (6) as follows: 
         [0000]    
       
         
           
             
               
                 
                   
                     A 
                      
                     
                       ( 
                       
                         x 
                         , 
                         y 
                       
                       ) 
                     
                   
                   = 
                   
                     
                       ( 
                       
                         
                           ( 
                           
                             
                               
                                 1 
                                 2 
                               
                                
                               
                                 
                                   ( 
                                   
                                     y 
                                     - 
                                     1 
                                   
                                   ) 
                                 
                                 2 
                               
                             
                             + 
                             
                               
                                 1 
                                 2 
                               
                                
                               
                                 ( 
                                 
                                   y 
                                   - 
                                   1 
                                 
                                 ) 
                               
                             
                             + 
                             x 
                             - 
                             1 
                           
                           ) 
                         
                          
                         mod 
                          
                         
                             
                         
                          
                         n 
                       
                       ) 
                     
                     + 
                     1 
                   
                 
               
               
                 
                   ( 
                   10 
                   ) 
                 
               
             
           
         
       
     
         [0000]    The index for the storage block  302  at location x=3 and y=7 would be address 24 by applying formula (10). Upon reaching the 40 th  storage element, exceeding the boundary by one, storage block  302  at location x=4 and y=9 would be address 1. At this position, the buffer wraps back around to the first address and overwrites the address of x=1 and y=1. This exceeds the buffer size (n=39) and may assume that the data at x=1 and y=1 is no longer needed. 
         [0022]      FIG. 4  shows an image sensor module  400  of data pixels  402  organized in rows and columns containing data to be transferred to a memory buffer and compressed, according to various embodiments of the invention. The module  400  may be similar to or identical to the array  200  of  FIG. 2 . Each row may contain a start of row index to uniquely identify it from the rest of the rows. Additionally, the start of row index can be used to indicate the first useful data pixel on that row, after any unused pixels. 
         [0023]    Each data pixel  402  contained within the module  400  may be represented by a unique distortion formula based upon a known nonlinearity among consecutive pixels. According to various embodiments of the invention, such a known distortion can arise where the image sensor module  400  obtains data from a wide angle lens as part of an imaging system, such as a camera. The known curvature of the lens, such as a fish eye lens, may be established and incorporated as part of an imaging system such that a given portion of the lens can be mapped to a particular data pixel  402  within the sensor module  400 . 
         [0024]    Upon receiving a memory allocation request from a memory controller, the module  400  may be searched from the top to the bottom, and from left to right, until a start of row index is identified. The memory allocation request may occur after the completion of an image integration time period. The data from an entire row may then be read starting from the start of row index until an end of row and subsequently written to a strip buffer  406 . The strip buffer  406  may represent a limited portion of memory cells for temporary storage until long-term memory can be allocated within a memory buffer. In some embodiments, the strip buffer  406  contains sufficient space for eight rows of data pixel information. The memory index calculator  408  may then operate to calculate the memory location for the eight rows of pixel data to associate each block of data with a block of memory. Once the strip buffer  406  is filled, the eight rows in the strip buffer  406  are compressed using any of numerous compression techniques, including industry standard compression techniques, such as JPEG (joint pictures expert group) techniques, and stored in a compression buffer  408  according to each start of row index. Once compressed, the pixel data may then be copied from the compression buffer  410  to an available memory space (e.g., memory buffer  505  in  FIG. 5 ). Although this illustrates the use of data compression using compression buffer  408 , it is not intended to be limited in such a manner, since this method of memory allocation may also be used without data compression. 
         [0025]    Upon receiving an access request from a memory controller, the memory where the compressed data is stored may be accessed to read out the stored data, so as to reconstruct the acquired image. According to various embodiments of the invention, some image distortion may still remain part of the stored data resulting from non-linearity, such as that associated with a wide angle lens forming a part of an imaging system. 
         [0026]      FIG. 5  is a block diagram of an image reconstruction system  500 , according to various embodiments of the invention. Data is read out of the memory buffer  505  and assigned coordinates x′,y′ to be associated with the original data. If compression was used to store the data, a decoder (not shown) may be used to decompress the data. Using a memory index calculator  508 , the data can be organized within the reconstruction buffer  507  according to the original array x, y coordinates. Non-linearity existing between consecutive data pixels may then be corrected using a lens distortion formula  509  associated with a known non-linearity, such as that established by a particular wide angle lens used to gather light and focus the image onto the array. The data can then be read out of the reconstruction buffer  507  to a given output such as output row  511 . Output row  511  may comprise a series of memory locations, a display, or other form of mechanism that can be used to receive the data. The start of row index can subsequently be used to identify the start of each subsequent row of data pixels while reorganizing the data. 
         [0027]    Methods of sensing and acquiring data associated with an imaging device, including an array of camera pixels as described above, may be implemented using a wide variety of electronic devices, such as semiconductor devices, memory, telecommunication systems, wireless systems, and computers. Further some embodiments of electronic devices may be realized as integrated circuits. 
         [0028]      FIG. 6  illustrates a write request according to various embodiments of the invention. At  600 , an allocation request associated with a data write is sent by a memory controller. At  605 , the pixel data of an array organized in rows and columns is searched top to bottom, left to right until a start of row is found. At  610 , pixel data is collected according to its x,y array coordinates and at  615 , the memory index of each x,y coordinate is calculated based upon the lens distortion formula. At  620 . The pixel data along with a memory index is stored within a strip buffer until the buffer is fall. At  625 , the data and memory index contained within the filled strip buffer is compressed and transferred to a compression buffer of memory. 
         [0029]      FIG. 7  illustrates a read request according to various embodiments of the invention. At  700 , an allocation request associated with a data read request is presented to the memory by a memory controller. At  705  the x′,y′ values are collected from the stored data. At  710 , the compressed data is decoded to uncompress the data. At  715 , the memory index associated with the pixel array coordinates x,y is calculated to establish the pixel array x,y coordinates and may also include a distortion correction algorithm based upon the lens distortion. At  720 , the associated data for the coordinates x,y located at the calculated memory index location is read out of the memory buffer and repeated for each set of x,y coordinates. At  725 , the complete image is reconstructed and can either be displayed or stored in a reconstructed form. 
         [0030]    It should be noted that the methods described herein do not have to be executed in the order described, or in any particular order. Moreover, various activities described with respect to the methods identified herein can be executed in iterative, repetitive, serial, or parallel fashion. Information, including parameters, commands, operands, and other data, can be sent and received in the form of one or more carrier waves. 
         [0031]      FIG. 8  is a block diagram of a system  800  according to various embodiments of the invention. The system  800  may include one or more apparatus, which may be similar to or identical to that of data storage system  100  in  FIG. 1 . The system  800 , in some embodiments, may comprise a processor  816  coupled to a display  818  to display data processed by the processor  816 . The system  800  may also include a wireless transceiver  820  (e.g., a cellular telephone transceiver) to receive and transmit data processed by the processor  816 . 
         [0032]    The memory system(s) included in the apparatus  800  may include dynamic random access memory (DRAM)  836  and non-volatile flash memory  840  coupled to the processor  816 . In various embodiments, the system  800  may comprise a camera  822 , including a lens  824  and an imaging plane  826  coupled to the processor  816 . The imaging plane  826  may be used to receive light rays  828  captured by the lens  824 . Images captured by the lens  824  may be stored in the DRAM  836  and the flash memory  840 . The lens  824  may comprise a wide angle lens for collecting a large field of view into a relatively small imaging plane  826 . In various embodiments, lens  826  may comprise a fish-eye lens which produces non-linearity among consecutive pixels within the imaging plane  826  due to varied sensitivity along its non-uniform surface. 
         [0033]    In many embodiments, the imaging plane  826  may be similar to or identical to the arrays  200  and  400  of  FIGS. 2 , and  4 , respectively. The applications processor  816  may include any one or more of the following elements: storage system  100  ( FIG. 1 ); the buffers  406 ,  410 ,  505 ,  507  ( FIGS. 4 and 5 ); the calculators  408 ,  508  ( FIGS. 4 and 5 ), and the output row  511  ( FIG. 5 ). 
         [0034]    Many variations of system  700  are possible. For example, in various embodiments, the system  800  may comprise an audio/video media player  830 , including a set of media playback controls  832 , coupled to the processor  816 . In various embodiments, the system  800  may comprise a modem  834  coupled to the processor  816 . 
         [0035]    Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement which is calculated to achieve the same purpose may be substituted for the specific embodiments shown. This application is intended to cover adaptations or variations of the present subject matter. It is to be understood that the above description is intended to be illustrative, and not restrictive. Combinations of the above embodiments, and other embodiments will be apparent to those of skill in the art upon reviewing the above description. The scope of the present subject matter should be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. 
         [0036]    The examples that are described in the above description provide sufficient detail to enable those skilled in the art to practice the inventive subject matter, and serve to illustrate how the inventive subject matter may be applied to various purposes or embodiments. References to “an”, “one”, or “various” embodiments in this disclosure are not necessarily to the same embodiment, and such references may contemplate more than one embodiment. Other embodiments may be utilized, and structural, logical, and electrical changes may be made without departing from the scope of the present disclosure. The terms “data” and “information” may be used interchangeably herein. 
         [0037]    Such embodiments of the inventive subject matter may be referred to herein individually or collectively by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept, if more than one is in fact disclosed. Thus, although specific embodiments have been illustrated and described herein, any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all adaptations or variations of various embodiments. 
         [0038]    The Abstract of the Disclosure is provided to comply with 37 C.F.R. §1.72(b), requiring an abstract that will allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted to require more features than are expressly recited in each claim. Rather, inventive subject matter may be found in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment.

Technology Category: 5