With the increasing popularity of playing streaming audio and video over networks such as the Internet, there is a need for optimizing the data transferred from a server to a client such that the client's experience is maximized even if network conditions during playback are inconsistent. Optimizing the client's experience involves making encoding decisions such that the video can be transferred and reconstructed with a minimal number of errors.
The term “streaming” is typically used to indicate that the data representing the media is provided by a host computer over a network to a playback device (i.e., a media playback computer implemented as any of a variety of conventional computing devices, such as a desktop PC, a notebook or portable computer a cellular telephone or other wireless communication device, a personal digital assistant (PDA), a gaming console, etc.) The client computer typically renders the streaming content as it is received from the host, rather than waiting for the entire file to be delivered.
The quality level is generally dictated by the bit rate specified for the encoded audio or video portions of the input stream. A higher bit rate generally indicates that a larger amount of information about the original audio or video is encoded and retained, and therefore a more accurate reproduction of the original input audio or video can be presented during video playback. Conversely, a lower bit rate indicates that less information about the original input audio or video is encoded and retained, and thus a less accurate reproduction of the original audio or video will be presented during video playback.
Generally, the bit rate is specified for encoding each of the audio and video based on several factors. The first factor is the network condition between the server and the client. A network connection that can transfer a high amount of data indicates that a higher bit rate can be specified for the input video that is subsequently transferred over the network connection. The second factor is the desired start-up latency. Start-up latency is the delay that a video playback tool experiences when first starting up due to the large amount of data that has to be received, processed, and buffered. Start-up latency can also occur after a seek operation, where the user selects variable positions in the streaming content to view. A third factor is the processing capabilities of the playback device. The fourth factor is the tolerance to glitching. Glitching occurs when the content is not displayed at the rate it was authored causing the playback device to run out of data to display. In most cases any amount of start-up latency or glitching is intolerable, and it is therefore desirable to optimize the bit rate specified such that the start-up latency and the glitching are minimized or eliminated.
The present disclosure relates to playback of video/audio streaming media data to provide a substantially glitch-free experience. The system adapts the media stream to the user connection in order to choose the most desirable stream to avoid glitches. For example, in the case where there is interference (e.g., a microwave being used near a wireless device), the quality of the media stream is lowered.
In one embodiment, an index file is used to make logical decisions about which media stream to choose in order to minimize glitches. The index file can take different forms, but, generally, includes characteristics about the available media streams. Example characteristics include the bit rates of the media streams and quality information about the media streams.
The foregoing and other objects, features, and advantages of the invention will become more apparent from the following detailed description, which proceeds with reference to the accompanying figures.
As used in this application and in the claims, the singular forms “a,” “an” and “the” include the plural forms unless the context clearly dictates otherwise. Additionally, the term “includes” means “comprises.” Although the operations of some of the disclosed methods and apparatus are described in a particular, sequential order for convenient presentation, it should be understood that this manner of description encompasses rearrangement, unless a particular ordering is required by specific language set forth below. For example, operations described sequentially can in some cases be rearranged or performed concurrently.
Any of the methods described herein can be performed (at least in part) using software comprising computer-executable instructions stored on one or more computer-readable media. Furthermore, any intermediate or final results of the disclosed methods can be stored on one or more computer-readable media. It should be understood that the disclosed technology is not limited to any specific computer language, program, or computer. For instance, a wide variety of commercially available computer languages, programs, and computers can be used.
A host device 102 generally stores media content and streams media content to the playback device 104. The playback device 104 can receive streaming media content via the network 106 from host device 102 and plays it for a user. Additionally, the playback device 102 can request a desired bit rate from the host device, which offers multiple bit rates to download. Host device 102 may be implemented as any of a variety of conventional computing devices, including, for example, a desktop PC, a notebook or portable computer, a workstation, an Internet appliance, and combinations thereof. Playback device 104 may also be implemented as any of a variety of conventional computing devices, including, for example, a desktop PC, a notebook or portable computer, a workstation, an Internet appliance, a gaming console, a handheld PC, a cellular telephone or other wireless communications device, a personal digital assistant (PDA), a set-top box, and combinations thereof.
Host device 102 can make any of a variety of data available for streaming to playback device 104, including content, such as audio, video, text, images, animation, and the like. However, as used herein with respect to the exemplary embodiments described below, media content is intended to represent audio/video (A/V) content or just video content. Furthermore, references made herein to “media content”, “streaming media”, “streaming video”, “video content”, and any variation thereof are generally intended to include audio/video content. The term “streaming” is used to indicate that the data representing the media content is provided over a network 106 to a playback device 104 and that playback of the content can begin prior to the content being delivered in its entirety.
The segmenter 210 outputs the segments to a bit rate controller 215. The bit rate controller 215 analyzes each segment and selects bit rates for one or more bit rate layers for each of the segments. A bit rate layer is a layer comprising a specific bit rate used to encode the input video 205. The number of bit rate layers and their respective bit rates for each segment may be affected by factors associated with the segment, such as the number of frames in the segment or the complexity of the input video 205 in the given segment. Additionally, the number of bit rate layers and their corresponding bit rates may be affected by factors not associated with the given segment, such as limits on the size of the file or the maximum or minimum bandwidth of the network that the encoded input video 205 will be transferred through. In one embodiment, the bit rate controller 215 selects the bit rates for the bit rate layers, for each of the segments independently from each of the other segments. Thus, a given segment may be encoded at the same or different bit rates as any other segment.
The segmenter 210 also outputs the segments to an encoder 220, and the bit rate controller 215 signals the bit rate layers for each segment to the encoder 220. The encoder 220 can encode according to a Windows Media Video or VC-1 format, MPEG-x format (e.g., MPEG-1, MPEG-2, or MPEG-4), H.26x format (e.g., H.261, H.262, H.263, or H.264), or other format. The encoder 220 may also be able to encode according to one or more audio standards such as WAV, FLAC, MP3, WMA, or some other standard. In some embodiments the encoder 220 encodes each segment as each bit rate layer and outputs a series of chunks in an encoded bit stream 225. Generally speaking, a chunk is a segment encoded as a particular bit rate layer. Thus, the encoder 220 can produce one or more chunks for each segment. In other embodiments, the encoder may encode the segment with less than all of the available bit rate layers. This may occur if, for example, a user defines a certain amount of time available for encoding, or conditions make certain bit rate layers un-necessary or undesirable.
As is well-understood in the art, the embodiment of
In certain embodiments, the encoding tool 200 can include a splitter (not shown) that splits the input video 205 into a separate video component and an audio component. In these embodiments, a separate segmenter, bit rate controller and encoder can be used to encode each of the video component and the audio component. The encoder for the video component can encode according to WMV or VC-1 format, MPEG-x format, H.26x format, or some other format. The encoder for the audio component can encode according to WAV, FLAC, MP3, WMA, or some other standard. Additionally, the segments for the video component and the segments for the audio component may be selected independently of each other. In this embodiment the segments of the video component may, but do not have to, comprise the same frames as the segments of the audio component. As described further below, the encoding tool 200 generates an index file that describes characteristics of the different segments that are created.
With reference to
A computing environment may have additional features. For example, the computing environment 800 includes storage 840, one or more input devices 850, one or more output devices 860, and one or more communication connections 870. An interconnection mechanism (not shown) such as a bus, controller, or network interconnects the components of the computing environment 800. Typically, operating system software (not shown) provides an operating environment for other software executing in the computing environment 800, and coordinates activities of the components of the computing environment 800.
The storage 840 may be removable or non-removable, and includes magnetic disks, magnetic tapes or cassettes, CD-ROMs, DVDs, or any other medium which can be used to store information and which can be accessed within the computing environment 800. The storage 840 stores instructions for the software 880 implementing the video encoder and/or decoder.
The input device(s) 850 may be a touch input device such as a keyboard, mouse, pen, or trackball, a voice input device, a scanning device, or another device that provides input to the computing environment 800. The input device(s) 850 may be a sound card, video card, TV tuner card, or similar device that accepts audio or video input in analog or digital form, or a CD-ROM or CD-RW that reads audio or video samples into the computing environment 800. The output device(s) 860 may be a display, printer, speaker, CD-writer, or another device that provides output from the computing environment 800.
The communication connection(s) 870 enable communication over a communication medium to another computing entity. The communication medium conveys information such as computer-executable instructions, audio or video input or output, or other data in a modulated data signal. A modulated data signal is a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media include wired or wireless techniques implemented with an electrical, optical, RF, infrared, acoustic, or other carrier.
The techniques and tools can be described in the general context of computer-readable media. Computer-readable media are any available media that can be accessed within a computing environment. By way of example, and not limitation, with the computing environment 800, computer-readable media include memory 820, storage 840, communication media, and combinations of any of the above.
The techniques and tools can be described in the general context of computer-executable instructions, such as those included in program modules, being executed in a computing environment on a target real or virtual processor. Generally, program modules include routines, programs, libraries, objects, classes, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The functionality of the program modules may be combined or split between program modules as desired in various embodiments. Computer-executable instructions for program modules may be executed within a local or distributed computing environment.
For the sake of presentation, the detailed description uses terms like “produce” and “encode” to describe computer operations in a computing environment. These terms are high-level abstractions for operations performed by a computer, and should not be confused with acts performed by a human being. The actual computer operations corresponding to these terms vary depending on implementation. Generally, the computing environment 800 can be used as the playback device 104.
1) current and historic bandwidth levels;
2) current and historic buffer levels; and
3) capabilities of the playback device.
An example index file can have separate sections for video and audio and describe the different bit rates that are available to pull from the host. It also can include the URLs, the duration of the content segments, quality information, the size of the files, the number of content segments, position in time of the content segments, the media attributes, etc. In sum, the index file includes information about the time-varying properties of the encoded media streams. An example index file is as follows:
The content is divided into segments (called chunks) that are generally 2-5 seconds each. The chunks are available at multiple bit rates. As already discussed, the chunks may be physically divided segments or virtually divided segments (in the case of a continuous stream). After a predetermined period of time, the quality and bit rate are reevaluated to ensure a glitch-free display of the media stream.
The designation of “bit rates” refers to the bit rates available for the media stream. The “attribute” names can provide information used by the decoder in the media pipeline in order to decode the media stream. One example is that the attributes can be initialization information for the decoder. There can be different sections in the index file for “video” and “audio”, so that the chunks are described independently for each. The designation of “n=” refers to a chunk number. The chunks can be numbered sequentially. The designation of “d=” following each chunk number refers to the duration of the chunk. As can be seen, the chunks are of varying duration but are approximately equal in length. Other characteristics of the media stream can easily be inserted into the index file, such as the size of files associated with the chunks or the duration of the entire media segment. An additional characteristic is also resolution that can be useful to proper rendering. The illustrated index file is only an example and not all of the data elements described need to be used. Indeed, one or more of any of the data elements can be used.
Another example index file is as follows:
This index file includes additional information about each chunk. As already described above, “n” is the chunk number and “d” is the duration of the chunk. Another feature of the index file is that it can provide the size of a chunk, which is shown by use of a designation “s=”. The “q” designation represents each chunk's average quality. The average quality of a chunk can be calculated during encoding. In the particular example shown, the higher quality number generally means less information is lost due to video compression. As described further below, the heuristics module makes a determination based on a number of factors, such as empirical data of the playback, which bit rate to choose. Quality levels can also be considered into the decision. For example, quality information allows intelligent decisions about accepting lower bit rates for low quality content in order to reserve bandwidth for higher bit rates for high quality content. For example, low bit rates can be used for dark scenes that have little motion (where high quality might not necessarily be visually different than low quality) in favor of using high bit rates for scenes that are complex with a lot of motion.
Any of the described index files can be represented as an XML file with the specific schema, potentially, with a simple encoding to hide clear text. It can contain media level attributes (e.g. total playback duration), and description of individual streams. Stream descriptions can include media stream-specific information, such as type of the stream (e.g. video, audio), encoding and other codec information (e.g. fourCC code, width, height), available bitrates, and information on individual media segment represented by chunks of different available bitrates (e.g. segment duration, chunk sizes). Also, the stream description can include information that allows production of individual chunks URLs for download, which is normally a text pattern that includes calculated fields based on chunk number, chunk bitrate, chunk stream and stream type.
One desire is that by using the index file, the playback device can make intelligent decisions about which stream of content to pull from the host. The intelligent decisions include taking into consideration one or more of the following:
By making intelligent choices, the playback can minimize or eliminate glitches. A playback system is glitch free when the renderer does not run out of data to play. Another reason for a glitch is that the content is not being displayed at the rate it was authored. Once started, the player loads the index file and initializes itself using the data from the index file, while the first chunks are being downloaded.
In
1) Provide a glitch-free experience so that the client playback device does not run out of data in its buffer while streaming.
2) Use the available network bandwidth to deliver the highest quality audio/video experience.
3) Provide consistent video quality when the user's bandwidth is stable.
First, it is desirable to obtain the current user bandwidth (e.g., bits per second) and the current buffer level (e.g., by milliseconds). In order to find the best sustainable quality (i.e., the target quality), it is desirable to predict the end buffer size and minimum buffer size for a predetermined number of chunks (e.g., 60 chunks). This predetermined number can be configurable. Assuming each chunk is 2 seconds long, the 60 chunks results in 120 seconds of video playback (of course other time durations and chunk numbers can be used). Predicting the end buffer and minimum buffer size ensures the client has a safe buffer for glitch-free media playback. Looking ahead for a predetermined number of chunks allows the end-user to see consistent video qualities for the next few minutes. Once the target quality is obtained, a selection is made on which media stream to download depending on which media stream has quality that most closely matches the target quality. The source filter can then download the selected chunk for future playback. This procedure is repeated for each chunk which has a different time during playback so that if the bandwidth changes, the source filter can dynamically choose the appropriate chunks for later playback.
The following shows example code illustrating how to select the next video/audio chunk.
In process block 1400, the variables for sustainable quality and nonsustainable quality are initialized. In process block 1402, a prediction is made for the buffer size. A midpoint between the sustainable and nonsustainable variables is used. In decision block 1404, if the minimum buffer size is more than a first predetermined period of time (e.g., 5 seconds) and the end buffer is greater than a second predetermined period of time (e.g., 15 seconds) then in block 1406, the quality is sustainable and the variable for sustainable quality is calculated as the midpoint between the nonsustainable and the sustainable variables. If decision block 1404 is answered in the negative, then in process block 1408, the quality is not sustainable and the variable for non-sustainability is set as the midpoint between the variables for sustainable and nonsustainable. In decision block 1410, a check is made to determine if the variable for non-sustainability less sustainability is greater than 1. If no, then the sustainable quality variable is used indicating that the two variables are close together. If yes, then the procedure starts over again in process block 1402.
Thus, an iterative process is used to determine the next chunk of data to download that has target quality. The goal is to keep the quality the same for a predetermined number of chunks to keep video quality stable.
Returning briefly to
There are multiple options for monitoring buffer levels including monitoring the number of bytes in the buffer and monitoring the amount of time remaining to render. It is desirable at start-up to select a low bit rate in order for the buffer to reach the safety zone. After that, the selected bit rate can be increased to improve quality.
To increase the bit rate, the heuristics module can also take into account the historic bit rate that was acceptable in addition to the buffer levels. In order to maintain the historic data, the heuristics module can monitor the time and size of a file that was downloaded in order to determine the actual bandwidth from the client perspective.
In view of the many possible embodiments to which the principles of the disclosed invention may be applied, it should be recognized that the illustrated embodiments are only preferred examples of the invention and should not be taken as limiting the scope of the invention. Rather, the scope of the invention is defined by the following claims. We therefore claim as our invention all that comes within the scope of these claims.
This application claims the benefit of U.S. Provisional Patent Application No. 61/057,759, filed on May 30, 2008, and U.S. Provisional Patent Application No. 61/057,755, filed May 30, 2008. Both applications are hereby incorporated in their entirety.
Number | Name | Date | Kind |
---|---|---|---|
4051470 | Esteban et al. | Sep 1977 | A |
4454546 | Mori | Jun 1984 | A |
4493091 | Gundry | Jan 1985 | A |
4706260 | Fedele et al. | Nov 1987 | A |
4802224 | Shiraki et al. | Jan 1989 | A |
4849812 | Borgers et al. | Jul 1989 | A |
4937036 | Beard et al. | Jun 1990 | A |
4954892 | Asai et al. | Sep 1990 | A |
5043919 | Callaway et al. | Aug 1991 | A |
5089889 | Sugiyama | Feb 1992 | A |
5091782 | Krause et al. | Feb 1992 | A |
5136377 | Johnston et al. | Aug 1992 | A |
5223949 | Honjo | Jun 1993 | A |
5235618 | Sakai et al. | Aug 1993 | A |
5258836 | Murata | Nov 1993 | A |
5262964 | Bonsall et al. | Nov 1993 | A |
5266941 | Akeley et al. | Nov 1993 | A |
5317672 | Crossman et al. | May 1994 | A |
5335299 | Atkinson | Aug 1994 | A |
5394170 | Akeley et al. | Feb 1995 | A |
5398069 | Huang et al. | Mar 1995 | A |
5400371 | Natarajan | Mar 1995 | A |
5412430 | Nagata | May 1995 | A |
5414796 | Jacobs et al. | May 1995 | A |
RE34965 | Sugiyama | Jun 1995 | E |
5422676 | Herpel et al. | Jun 1995 | A |
5448297 | Alattar et al. | Sep 1995 | A |
5457495 | Hartung | Oct 1995 | A |
RE35093 | Wang et al. | Nov 1995 | E |
5467086 | Jeong | Nov 1995 | A |
5467134 | Laney et al. | Nov 1995 | A |
RE35158 | Sugiyama | Feb 1996 | E |
5533052 | Bhaskar | Jul 1996 | A |
5539466 | Igarashi et al. | Jul 1996 | A |
5570363 | Holm | Oct 1996 | A |
5579430 | Grill et al. | Nov 1996 | A |
5586200 | Devaney et al. | Dec 1996 | A |
5602959 | Bergstrom et al. | Feb 1997 | A |
5623424 | Azadegan et al. | Apr 1997 | A |
5650860 | Uz | Jul 1997 | A |
5654760 | Ohtsuki | Aug 1997 | A |
5661755 | Van De Kerkhof et al. | Aug 1997 | A |
5666161 | Kohiyama et al. | Sep 1997 | A |
5666461 | Igarashi et al. | Sep 1997 | A |
5678002 | Fawcett et al. | Oct 1997 | A |
5686964 | Tabatabai et al. | Nov 1997 | A |
5699476 | Van Der Meer | Dec 1997 | A |
5701164 | Kato et al. | Dec 1997 | A |
5724453 | Ratnakar et al. | Mar 1998 | A |
5742735 | Eberlein et al. | Apr 1998 | A |
5745738 | Ricard | Apr 1998 | A |
5754974 | Griffin et al. | May 1998 | A |
5764807 | Pearlman | Jun 1998 | A |
5764814 | Chen et al. | Jun 1998 | A |
5787203 | Lee et al. | Jul 1998 | A |
5796438 | Hosono | Aug 1998 | A |
RE35910 | Nagata et al. | Sep 1998 | E |
5802213 | Gardos | Sep 1998 | A |
5819215 | Dobson et al. | Oct 1998 | A |
5825310 | Tsutsui | Oct 1998 | A |
5835149 | Astle | Nov 1998 | A |
5835495 | Ferriere | Nov 1998 | A |
5845243 | Smart et al. | Dec 1998 | A |
5867230 | Wang et al. | Feb 1999 | A |
5874995 | Naimpally et al. | Feb 1999 | A |
5884039 | Ludwig et al. | Mar 1999 | A |
5886276 | Levine et al. | Mar 1999 | A |
5903892 | Hoffert et al. | May 1999 | A |
5926226 | Proctor et al. | Jul 1999 | A |
5933451 | Ozkan et al. | Aug 1999 | A |
5946419 | Chen et al. | Aug 1999 | A |
5949489 | Nishikawa et al. | Sep 1999 | A |
5952943 | Walsh et al. | Sep 1999 | A |
5963258 | Nishikawa et al. | Oct 1999 | A |
5970173 | Lee et al. | Oct 1999 | A |
5970175 | Nishikawa et al. | Oct 1999 | A |
5974184 | Eifrig | Oct 1999 | A |
5982305 | Taylor | Nov 1999 | A |
5986712 | Peterson et al. | Nov 1999 | A |
5987376 | Olson et al. | Nov 1999 | A |
5990945 | Sinha et al. | Nov 1999 | A |
5990960 | Murakami et al. | Nov 1999 | A |
5995151 | Naveen et al. | Nov 1999 | A |
6000053 | Levine et al. | Dec 1999 | A |
6002439 | Murakami et al. | Dec 1999 | A |
6006241 | Purnaveja et al. | Dec 1999 | A |
RE36507 | Iu | Jan 2000 | E |
6014706 | Cannon et al. | Jan 2000 | A |
6029126 | Malvar | Feb 2000 | A |
6040863 | Kato | Mar 2000 | A |
6041345 | Levi et al. | Mar 2000 | A |
6049630 | Wang et al. | Apr 2000 | A |
6058362 | Malvar | May 2000 | A |
6072831 | Chen | Jun 2000 | A |
6073153 | Malvar | Jun 2000 | A |
6075768 | Mishra | Jun 2000 | A |
6081554 | Lee et al. | Jun 2000 | A |
6088392 | Rosenberg | Jul 2000 | A |
RE36822 | Sugiyama | Aug 2000 | E |
6097759 | Murakami et al. | Aug 2000 | A |
6108382 | Gringeri et al. | Aug 2000 | A |
6111914 | Bist | Aug 2000 | A |
6115689 | Malvar | Sep 2000 | A |
6141053 | Saukkonen | Oct 2000 | A |
6154495 | Yamaguchi et al. | Nov 2000 | A |
6160846 | Chiang et al. | Dec 2000 | A |
6167162 | Jacquin et al. | Dec 2000 | A |
6182034 | Malvar | Jan 2001 | B1 |
6188794 | Nishikawa et al. | Feb 2001 | B1 |
6192075 | Jeng | Feb 2001 | B1 |
6208761 | Passaggio et al. | Mar 2001 | B1 |
6212232 | Reed et al. | Apr 2001 | B1 |
6215820 | Bagni et al. | Apr 2001 | B1 |
6223162 | Chen et al. | Apr 2001 | B1 |
6226407 | Zabih et al. | May 2001 | B1 |
6240380 | Malvar | May 2001 | B1 |
RE37222 | Yonemitsu et al. | Jun 2001 | E |
6243497 | Chiang et al. | Jun 2001 | B1 |
6259739 | Kondo | Jul 2001 | B1 |
6259810 | Gill et al. | Jul 2001 | B1 |
6275531 | Li | Aug 2001 | B1 |
6278735 | Mohsenian | Aug 2001 | B1 |
6292585 | Yamaguchi et al. | Sep 2001 | B1 |
6304928 | Mairs et al. | Oct 2001 | B1 |
6307973 | Nishikawa et al. | Oct 2001 | B2 |
6311209 | Olson et al. | Oct 2001 | B1 |
6320825 | Bruekers et al. | Nov 2001 | B1 |
6324216 | Igarashi et al. | Nov 2001 | B1 |
6332003 | Matsuura | Dec 2001 | B1 |
6339794 | Bolosky et al. | Jan 2002 | B2 |
6351226 | Saunders et al. | Feb 2002 | B1 |
6370502 | Wu et al. | Apr 2002 | B1 |
6404813 | Haskell et al. | Jun 2002 | B1 |
6421738 | Ratan et al. | Jul 2002 | B1 |
6421739 | Holiday | Jul 2002 | B1 |
6441754 | Wang et al. | Aug 2002 | B1 |
6466987 | Bolosky et al. | Oct 2002 | B2 |
6473409 | Malvar | Oct 2002 | B1 |
6490554 | Endo et al. | Dec 2002 | B2 |
6493388 | Wang | Dec 2002 | B1 |
6496601 | Migdal et al. | Dec 2002 | B1 |
6501798 | Sivan | Dec 2002 | B1 |
6522693 | Lu et al. | Feb 2003 | B1 |
6539124 | Sethuraman et al. | Mar 2003 | B2 |
6560636 | Cohen et al. | May 2003 | B2 |
6573905 | MacInnis et al. | Jun 2003 | B1 |
6573915 | Sivan et al. | Jun 2003 | B1 |
6574593 | Gao et al. | Jun 2003 | B1 |
6614442 | Ouyang et al. | Sep 2003 | B1 |
6625321 | Li et al. | Sep 2003 | B1 |
6628712 | Le Maguet | Sep 2003 | B1 |
6646195 | Puryear | Nov 2003 | B1 |
6654417 | Hui | Nov 2003 | B1 |
6654419 | Sriram et al. | Nov 2003 | B1 |
6683987 | Sugahara | Jan 2004 | B1 |
6697072 | Russell et al. | Feb 2004 | B2 |
6704813 | Smirnov et al. | Mar 2004 | B2 |
6728317 | Demos | Apr 2004 | B1 |
6732071 | Lopez-Estrada et al. | May 2004 | B2 |
6745364 | Bhatt et al. | Jun 2004 | B2 |
6754715 | Cannon et al. | Jun 2004 | B1 |
6760598 | Kurjenniemi | Jul 2004 | B1 |
6763374 | Levi et al. | Jul 2004 | B1 |
6785331 | Jozawa et al. | Aug 2004 | B1 |
6789123 | Li et al. | Sep 2004 | B2 |
6792449 | Colville et al. | Sep 2004 | B2 |
6798364 | Chen et al. | Sep 2004 | B2 |
6810083 | Chen et al. | Oct 2004 | B2 |
6819714 | Yamada et al. | Nov 2004 | B2 |
6836791 | Levi et al. | Dec 2004 | B1 |
6862402 | Kim | Mar 2005 | B2 |
6876703 | Ismaeil et al. | Apr 2005 | B2 |
6895050 | Lee | May 2005 | B2 |
6934677 | Chen et al. | Aug 2005 | B2 |
6937770 | Oguz et al. | Aug 2005 | B1 |
6961631 | Puryear | Nov 2005 | B1 |
6968364 | Wong et al. | Nov 2005 | B1 |
6974901 | Puryear | Dec 2005 | B2 |
6980695 | Mehrotra | Dec 2005 | B2 |
7016409 | Unger | Mar 2006 | B2 |
7023915 | Pian | Apr 2006 | B2 |
7027982 | Chen et al. | Apr 2006 | B2 |
7046805 | Fitzhardinge et al. | May 2006 | B2 |
7054365 | Kim et al. | May 2006 | B2 |
7054774 | Batterberry et al. | May 2006 | B2 |
7072973 | Newson et al. | Jul 2006 | B1 |
7107606 | Lee | Sep 2006 | B2 |
7143030 | Chen et al. | Nov 2006 | B2 |
7146313 | Chen et al. | Dec 2006 | B2 |
7149247 | Sullivan | Dec 2006 | B2 |
7151749 | Vega-Garcia et al. | Dec 2006 | B2 |
7162533 | Klemets | Jan 2007 | B2 |
7174384 | Cheung | Feb 2007 | B2 |
7174385 | Li | Feb 2007 | B2 |
7176957 | Ivashin et al. | Feb 2007 | B2 |
7184959 | Gibbon | Feb 2007 | B2 |
7190670 | Varsa et al. | Mar 2007 | B2 |
7206822 | Levi et al. | Apr 2007 | B2 |
7206854 | Kauffman et al. | Apr 2007 | B2 |
7248740 | Sullivan | Jul 2007 | B2 |
7260525 | Chen et al. | Aug 2007 | B2 |
7263482 | Chen et al. | Aug 2007 | B2 |
7266613 | Brown et al. | Sep 2007 | B1 |
7283881 | Puryear | Oct 2007 | B2 |
7283966 | Zhang et al. | Oct 2007 | B2 |
7286748 | Srinivasan et al. | Oct 2007 | B2 |
7296063 | Levi et al. | Nov 2007 | B2 |
7302490 | Gupta et al. | Nov 2007 | B1 |
7313236 | Amini et al. | Dec 2007 | B2 |
7313755 | Rahman et al. | Dec 2007 | B2 |
7342924 | Levi et al. | Mar 2008 | B2 |
7343291 | Thumpudi et al. | Mar 2008 | B2 |
7346007 | Curcio et al. | Mar 2008 | B2 |
7348483 | Puryear | Mar 2008 | B2 |
7359955 | Menon et al. | Apr 2008 | B2 |
7360230 | Paz et al. | Apr 2008 | B1 |
7365752 | Xie | Apr 2008 | B2 |
7383180 | Thumpudi et al. | Jun 2008 | B2 |
7391717 | Klemets et al. | Jun 2008 | B2 |
7392316 | Klemets et al. | Jun 2008 | B2 |
7401221 | Adent et al. | Jul 2008 | B2 |
7409145 | Antoun et al. | Aug 2008 | B2 |
7424730 | Chou | Sep 2008 | B2 |
7433746 | Puryear | Oct 2008 | B2 |
7444419 | Green | Oct 2008 | B2 |
7451229 | Klemets et al. | Nov 2008 | B2 |
7466721 | Levi et al. | Dec 2008 | B2 |
7472198 | Gupta et al. | Dec 2008 | B2 |
7480382 | Dunbar et al. | Jan 2009 | B2 |
7483532 | Alkove et al. | Jan 2009 | B2 |
7492769 | Klemets | Feb 2009 | B2 |
7493644 | Tanskanen | Feb 2009 | B1 |
7505485 | Sullivan et al. | Mar 2009 | B2 |
7528314 | Puryear | May 2009 | B2 |
7536469 | Chou et al. | May 2009 | B2 |
7538267 | Puryear | May 2009 | B2 |
7552227 | Wang | Jun 2009 | B2 |
7554922 | Vega-Garcia et al. | Jun 2009 | B2 |
7558472 | Locket et al. | Jul 2009 | B2 |
7565429 | Fernandez | Jul 2009 | B1 |
7581255 | Alkove et al. | Aug 2009 | B2 |
7603387 | Gates et al. | Oct 2009 | B2 |
7631015 | Gupta et al. | Dec 2009 | B2 |
7633005 | Puryear | Dec 2009 | B2 |
7644172 | Stewart et al. | Jan 2010 | B2 |
7663049 | Puryear | Feb 2010 | B2 |
7667121 | Puryear | Feb 2010 | B2 |
7672743 | Messer et al. | Mar 2010 | B2 |
7673306 | Puryear | Mar 2010 | B2 |
7673315 | Wong et al. | Mar 2010 | B1 |
7676495 | Qian | Mar 2010 | B2 |
7684566 | Oliveira et al. | Mar 2010 | B2 |
7720908 | Newson et al. | May 2010 | B1 |
7725557 | Klemets et al. | May 2010 | B2 |
7761609 | Srinivasan et al. | Jul 2010 | B1 |
7769880 | Paka et al. | Aug 2010 | B2 |
7783772 | Klemets | Aug 2010 | B2 |
7783773 | Wu et al. | Aug 2010 | B2 |
7809851 | Klemets | Oct 2010 | B2 |
7839895 | Sullivan et al. | Nov 2010 | B2 |
7860996 | Musayev et al. | Dec 2010 | B2 |
20020012394 | Hatano et al. | Jan 2002 | A1 |
20020073084 | Kauffman et al. | Jun 2002 | A1 |
20020095332 | Doherty et al. | Jul 2002 | A1 |
20020114388 | Ueda | Aug 2002 | A1 |
20020122491 | Karcewicz et al. | Sep 2002 | A1 |
20020136406 | Fitzhardinge et al. | Sep 2002 | A1 |
20020143556 | Kadatch | Oct 2002 | A1 |
20020154693 | Demos | Oct 2002 | A1 |
20020168066 | Li | Nov 2002 | A1 |
20020176624 | Kostrzewski et al. | Nov 2002 | A1 |
20020194608 | Goldhor | Dec 2002 | A1 |
20030055995 | Ala-Honkola | Mar 2003 | A1 |
20030061607 | Hunter et al. | Mar 2003 | A1 |
20030093530 | Syed | May 2003 | A1 |
20030110236 | Yang et al. | Jun 2003 | A1 |
20030113026 | Srinivasan et al. | Jun 2003 | A1 |
20030115041 | Chen | Jun 2003 | A1 |
20030115042 | Chen | Jun 2003 | A1 |
20030115050 | Chen | Jun 2003 | A1 |
20030115051 | Chen | Jun 2003 | A1 |
20030115052 | Chen | Jun 2003 | A1 |
20030125932 | Wang et al. | Jul 2003 | A1 |
20030172131 | Ao | Sep 2003 | A1 |
20030236905 | Choi et al. | Dec 2003 | A1 |
20030236906 | Klemets et al. | Dec 2003 | A1 |
20040042549 | Huang et al. | Mar 2004 | A1 |
20040098748 | Bo et al. | May 2004 | A1 |
20040117427 | Allen et al. | Jun 2004 | A1 |
20040131340 | Antoun et al. | Jul 2004 | A1 |
20040136457 | Funnell et al. | Jul 2004 | A1 |
20040141651 | Hara et al. | Jul 2004 | A1 |
20040172478 | Jacobs | Sep 2004 | A1 |
20040268397 | Dunbar et al. | Dec 2004 | A1 |
20050002453 | Chang et al. | Jan 2005 | A1 |
20050015259 | Thumpudi et al. | Jan 2005 | A1 |
20050015528 | Du | Jan 2005 | A1 |
20050016363 | Puryear | Jan 2005 | A1 |
20050024487 | Chen | Feb 2005 | A1 |
20050036759 | Lin et al. | Feb 2005 | A1 |
20050047503 | Han et al. | Mar 2005 | A1 |
20050066063 | Grigorovitch et al. | Mar 2005 | A1 |
20050076039 | Ludwig et al. | Apr 2005 | A1 |
20050076136 | Cho | Apr 2005 | A1 |
20050084015 | Han et al. | Apr 2005 | A1 |
20050084166 | Boneh et al. | Apr 2005 | A1 |
20050105815 | Zhang et al. | May 2005 | A1 |
20050117641 | Xu et al. | Jun 2005 | A1 |
20050123058 | Greenbaum | Jun 2005 | A1 |
20050135484 | Lee | Jun 2005 | A1 |
20050157784 | Tanizawa et al. | Jul 2005 | A1 |
20050204385 | Sull et al. | Sep 2005 | A1 |
20050207734 | Howell | Sep 2005 | A1 |
20050234731 | Sirivara et al. | Oct 2005 | A1 |
20050234858 | Torii et al. | Oct 2005 | A1 |
20050246384 | Foehr et al. | Nov 2005 | A1 |
20050254508 | Aksu et al. | Nov 2005 | A1 |
20050254584 | Kim et al. | Nov 2005 | A1 |
20050267994 | Wong et al. | Dec 2005 | A1 |
20060015637 | Chung | Jan 2006 | A1 |
20060026294 | Virdi et al. | Feb 2006 | A1 |
20060029065 | Fellman | Feb 2006 | A1 |
20060062302 | Yin et al. | Mar 2006 | A1 |
20060088094 | Cieplinski et al. | Apr 2006 | A1 |
20060126713 | Chou et al. | Jun 2006 | A1 |
20060136597 | Shabtai et al. | Jun 2006 | A1 |
20060156363 | Wu et al. | Jul 2006 | A1 |
20060165166 | Chou et al. | Jul 2006 | A1 |
20060184697 | Virdi | Aug 2006 | A1 |
20060218264 | Ogawa et al. | Sep 2006 | A1 |
20060235883 | Krebs et al. | Oct 2006 | A1 |
20060242080 | Van Dyke et al. | Oct 2006 | A1 |
20060242315 | Nichols | Oct 2006 | A1 |
20060248570 | Witwer | Nov 2006 | A1 |
20060282566 | Virdi et al. | Dec 2006 | A1 |
20070006064 | Colle | Jan 2007 | A1 |
20070038873 | Oliveira et al. | Feb 2007 | A1 |
20070058926 | Virdi | Mar 2007 | A1 |
20070078768 | Dawson | Apr 2007 | A1 |
20070083886 | Kauffman et al. | Apr 2007 | A1 |
20070097816 | Van Gassel | May 2007 | A1 |
20070100891 | Nee | May 2007 | A1 |
20070192789 | Medford | Aug 2007 | A1 |
20070204321 | Shen et al. | Aug 2007 | A1 |
20070274383 | Yu et al. | Nov 2007 | A1 |
20070276954 | Chan et al. | Nov 2007 | A1 |
20080022005 | Wu et al. | Jan 2008 | A1 |
20080037954 | Lee | Feb 2008 | A1 |
20080046939 | Lu et al. | Feb 2008 | A1 |
20080060029 | Park et al. | Mar 2008 | A1 |
20080086570 | Dey et al. | Apr 2008 | A1 |
20080091838 | Miceli | Apr 2008 | A1 |
20080172441 | Speicher | Jul 2008 | A1 |
20080195744 | Bowra | Aug 2008 | A1 |
20080195761 | Jabri et al. | Aug 2008 | A1 |
20080201386 | Maharajh et al. | Aug 2008 | A1 |
20080211901 | Civanlar et al. | Sep 2008 | A1 |
20080256085 | Lee et al. | Oct 2008 | A1 |
20080312923 | Crinon et al. | Dec 2008 | A1 |
20090007171 | Casey et al. | Jan 2009 | A1 |
20090043657 | Swift et al. | Feb 2009 | A1 |
20090043906 | Hurst et al. | Feb 2009 | A1 |
20090049186 | Agnihotri et al. | Feb 2009 | A1 |
20090055417 | Hannuksela | Feb 2009 | A1 |
20090076904 | Serena | Mar 2009 | A1 |
20090089401 | Zhang et al. | Apr 2009 | A1 |
20090132356 | Booth et al. | May 2009 | A1 |
20090132599 | Soroushian et al. | May 2009 | A1 |
20090132721 | Soroushian et al. | May 2009 | A1 |
20090199236 | Barrett et al. | Aug 2009 | A1 |
20090254672 | Zhang | Oct 2009 | A1 |
20090279605 | Holcomb et al. | Nov 2009 | A1 |
20090282162 | Mehrotra et al. | Nov 2009 | A1 |
20090282475 | George et al. | Nov 2009 | A1 |
20090297123 | Virdi et al. | Dec 2009 | A1 |
20090300145 | Musayev et al. | Dec 2009 | A1 |
20090300203 | Virdi et al. | Dec 2009 | A1 |
20090319681 | Freelander et al. | Dec 2009 | A1 |
20090328124 | Khouzam et al. | Dec 2009 | A1 |
20100011119 | Knowlton et al. | Jan 2010 | A1 |
20100058061 | Folta et al. | Mar 2010 | A1 |
20100080290 | Mehrotra | Apr 2010 | A1 |
20100114921 | Bocharov et al. | May 2010 | A1 |
20100135636 | Zhang et al. | Jun 2010 | A1 |
20100153988 | Takai et al. | Jun 2010 | A1 |
20100158101 | Wu et al. | Jun 2010 | A1 |
20100180011 | Sood et al. | Jul 2010 | A1 |
20100189183 | Gu et al. | Jul 2010 | A1 |
20100191974 | Dubhashi et al. | Jul 2010 | A1 |
20100235472 | Sood et al. | Sep 2010 | A1 |
20100235528 | Bocharov et al. | Sep 2010 | A1 |
Number | Date | Country |
---|---|---|
0397402 | Nov 1990 | EP |
0526163 | Feb 1993 | EP |
62 213 494 | Sep 1987 | JP |
6 078 298 | Mar 1994 | JP |
10 056 644 | Feb 1998 | JP |
2008-523687 | Jul 2008 | JP |
WO 0036753 | Jun 2000 | WO |
WO 2007058515 | May 2007 | WO |
Number | Date | Country | |
---|---|---|---|
20090300204 A1 | Dec 2009 | US |
Number | Date | Country | |
---|---|---|---|
61057755 | May 2008 | US | |
61057759 | May 2008 | US |