1. Technical Field
The present invention relates in general to a system and method for streaming digital communications. In particular, the present invention relates to a system and method for reducing data loss when streaming digital media information over radio frequencies to a moving receiver.
2. Description of the Related Art
A sender transmitting a stream of digital media data via radio frequency transmitters can not be sure that the streaming media is actually received by a digital radio frequency receiver unless that receiver is also a transmitter, capable of sending an acknowledgement. An example of a receiver with this acknowledgement capability is a cell phone. However, many digital receivers do not have this acknowledgement capability, and therefore the sender is never sure that the media was actually received. Further, many digital receivers are portable and can be easily moved. These receivers can rove in and out of reception areas, frequently causing the transmitted signal to be sometimes available and sometimes not available.
An example of a commercial digital receiver that can be adversely affected by not having a continuous transmitted signal in its reception path is a satellite radio receiver. The digital radio frequency transmitter in a satellite radio system is typically a satellite, or satellites, with an antenna stationed approximately 23,000 miles overhead. The receiver in a satellite radio system is often in an automobile, or other mobile device, which is continuously moving during receiver operation. The roving receiver is constantly going under bridges, through tunnels, or into areas where a temporary loss of signal is unavoidable. This results in an annoying loss of radio reception that occurs periodically throughout the listening day.
What is needed, therefore, is a system and method that reduces the loss of digital information when streaming digital data is sent to a roving digital receiver.
It has been discovered that transmitting streaming media data in overlapping bursts can reduce data loss when transmitting to a moving receiver. A digital transmitter transmits streaming media information in bursts, where each burst of data preferably contains several seconds of streaming media information. The streaming media information to be transmitted is grouped into transmission bursts, or packets, each transmission burst containing several units of media content, or content units. A content unit is an amount of content that is stored and played by a digital receiver. Each burst contains a certain amount of information, such as a certain number of content units, which are the same as some of those sent in the previous burst. Each burst also contains new content units, i.e. content units that have not previously been transmitted. For example, packet one may contain content units one through ten, packet two may contain content units four through thirteen, packet three may contain content units seven through sixteen, and so on.
Transmitting overlapping bursts of information allows a roving receiver to temporarily lose contact with the transmitter, and yet minimizes the loss of data from the receiver's perspective. The overlapping nature of the packets makes it more likely that a roving receiver will receive all, or most, of the content units needed to continue playing the media presentation without “dead space” or static. This is particularly useful when the roving receiver is likely to temporarily lose the transmission signal, for example, when an automobile goes through a tunnel.
The foregoing is a summary and thus contains, by necessity, simplifications, generalizations, and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages of the present invention, as defined solely by the claims, will become apparent in the non-limiting detailed description set forth below.
The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
The following is intended to provide a detailed description of an example of the invention and should not be taken to be limiting of the invention itself. Rather, any number of variations may fall within the scope of the invention, which is defined in the claims following the description.
The present invention is a method, system, and computer program product that reduces data loss when streaming digital information over radio frequencies to a roving digital receiver that experiences a temporary loss of reception. A digital transmitter transmits streaming media information in bursts. Each burst of data preferably contains several seconds of streaming media information, and is typically sent to a receiver in a fraction of a second. The information to be transmitted is loaded into a content buffer and grouped into transmission bursts. Each transmission burst contains several units of media content, or content units. A content unit is an amount of content, such as a second, or a few seconds, of content, that is stored and played by a digital receiver. As the receiver's application processes a burst of transmitted information, the next burst of information is queued at the transmitter, and, preferably within seconds, it too is transmitted. Each burst contains a certain amount of information, such as a certain number of content units, which are the same as some of those sent in the previous burst. Each burst also contains new content units, i.e. content units that have not previously been transmitted.
Transmitting overlapping bursts of information allows a roving receiver to temporarily lose contact with the transmitter, and yet minimizes the loss of data from the receiver's perspective. Thus, an automobile with a satellite radio receiver may drive through a tunnel for several seconds without experiencing any interruption in a radio broadcast being listened to by the driver of the automobile.
The present invention may be used with any type of streaming digital data, including multimedia information such as music, talk shows, movies, etc. Any type of digital transmitter, such as a satellite, repeater, or ground transmission station may be used to transmit digital streaming information to many different types of roving receivers, including, but not limited to automobiles, radios, personal computers, personal digital assistants, cell phones, etc.
The sender receives digital content 220 from content provider 215 (step 225), and then buffers the content for sending (step 230). The digital streaming media content that is to be sent to the receiver is buffered in content buffer 235. A determination is made as to whether content buffer 235 is full (decision 240). If content buffer 235 is full, decision 240 branches to “yes” branch 244, whereupon the application waits for buffer space (step 245). If, however, content buffer 235 is not full, decision 240 branches to “no” branch 242, whereupon processing returns to step 210 to request additional digital content.
The sender also sends content to a receiver. This process begins at 250, whereupon a burst length of “N” is defined (step 255). “N” is the number of content units that will go into each packet, or burst, of information. In this particular example, each content unit is one second long, and so “N” is the number of seconds of data that will be put into each packet that is burst to the receiver. The current position in the content buffer is set to zero, i.e. to the start of the content buffer (step 260). A determination is made as to whether the end of the content buffer has been reached (decision 265). If the end of the content buffer has been reached, then decision 265 branches to “yes” branch 266, whereupon the current position in content buffer 235 is reset to the start of the buffer. If, however, the end of content buffer 235 has not been reached, decision 265 branches to “no” branch 268, whereupon “N” seconds of data are read from content buffer 235, starting at the current position (step 275). As discussed above, in this particular example, each content unit is one second long. However, those skilled in the art will understand that a content unit may be any number of seconds, or even a fraction of a second in length. Those skilled in the art will further understand that a packet may consist of any number of content units. Each packet preferably contains the same number of content units, however, it would be possible to implement the invention using packets with varying numbers of content units.
A packet header is built (step 280), including information relating to the number, duration, and time sequence of the content units included in the packet. For example, the header may indicate that the packet includes ten content units, each content unit is one second in duration, and the first content unit begins 180 seconds into a particular song. The sender, such as satellite 100, then bursts the packet, including the packet header and “N” content units, to the receiver (step 285). The content that has been sent is marked as transmitted in content buffer 235 (step 290), and the current position in content buffer 235 is incremented (step 295). Processing then continues at decision 265.
The receiver analyzes the header in order to determine the number and duration of the content units contained in the packet, and also to determine which content units are in the packet, i.e. where the content units are located within the current transmission (step 340). The content units are stored at the current content location within the buffer (step 350). A determination is made as to whether to continue processing (decision 380). If it is determined to continue, decision 380 branches to “yes” branch 385, whereupon processing continues at step 330. If, however, it is not determined to continue (for example, the listener may have changed stations or turned the radio off), decision 380 branches to “no” branch 390, whereupon processing ends at 395.
As shown in depiction 360, as packets are received from satellite 100, the receiver overlays each packet in the play buffer. In the example shown in
An alternate method for storing packets in the play buffer is for the receiver to analyze each packet as it is received, and determine which content units have not previously been stored in the play buffer. The receiver then stores only the new content units, i.e. those content units that have not previously been stored, in the play buffer. The new content units are stored after the content units that have been previously stored in the play buffer.
As automobile 140 travels down road 520, it receives packets of overlapping media content, transmitted in bursts from satellite 100. In the example depicted in
Buffer 550 depicts the resulting play buffer as the packets are received. Note that as shown by reference numeral 560, several packets (in this example, the sixth through ninth packets) were not received. Without the overlapping method of the present invention, the listener would hear only static while traveling through tunnel 530. However, due to the overlapping nature of the packets that were received according to the present invention, no actual data is lost. Because many of the content units are found in more than one packet, every content unit necessary to play the media content without interruption has been received. Every second of digital streaming media has been received, and will be played by the receiver located in automobile 140. Those skilled in the art will understand that if tunnel 530 is sufficiently long enough, it would be possible to lose some data, i.e. some content units may not be received. However, the data loss would be minimal compared to prior art methods that do not use the overlapping packet bursts of the present invention.
PCI bus 614 provides an interface for a variety of devices that are shared by host processor(s) 600 and Service Processor 616 including, for example, flash memory 618. PCI-to-ISA bridge 635 provides bus control to handle transfers between PCI bus 614 and ISA bus 640, universal serial bus (USB) functionality 645, power management functionality 655, and can include other functional elements not shown, such as a real-time clock (RTC), DMA control, interrupt support, and system management bus support. Nonvolatile RAM 620 is attached to ISA Bus 640. Service Processor 616 includes JTAG and I2C busses 622 for communication with processor(s) 600 during initialization steps. JTAG/I2C busses 622 are also coupled to L2 cache 604, Host-to-PCI bridge 606, and main memory 608 providing a communications path between the processor, the Service Processor, the L2 cache, the Host-to-PCI bridge, and the main memory. Service Processor 616 also has access to system power resources for powering down information handling device 601.
Peripheral devices and input/output (I/O) devices can be attached to various interfaces (e.g., parallel interface 662, serial interface 664, keyboard interface 668, and mouse interface 670 coupled to ISA bus 640. Alternatively, many I/O devices can be accommodated by a super I/O controller (not shown) attached to ISA bus 640.
In order to attach computer system 601 to another computer system to copy files over a network, LAN card 630 is coupled to PCI bus 610. Similarly, to connect computer system 601 to an ISP to connect to the Internet using a telephone line connection, modem 675 is connected to serial port 664 and PCI-to-ISA Bridge 635.
While the computer system described in
One of the preferred implementations of the invention is a client application, namely, a set of instructions (program code) in a code module that may, for example, be resident in the random access memory of the computer. Until required by the computer, the set of instructions may be stored in another computer memory, for example, in a hard disk drive, or in a removable memory such as an optical disk (for eventual use in a CD ROM) or floppy disk (for eventual use in a floppy disk drive), or downloaded via the Internet or other computer network. Thus, the present invention may be implemented as a computer program product for use in a computer. In addition, although the various methods described are conveniently implemented in a general purpose computer selectively activated or reconfigured by software, one of ordinary skill in the art would also recognize that such methods may be carried out in hardware, in firmware, or in more specialized apparatus constructed to perform the required method steps.
While particular embodiments of the present invention have been shown and described, it will be obvious to those skilled in the art that, based upon the teachings herein, that changes and modifications may be made without departing from this invention and its broader aspects. Therefore, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of this invention. Furthermore, it is to be understood that the invention is solely defined by the appended claims. It will be understood by those with skill in the art that if a specific number of an introduced claim element is intended, such intent will be explicitly recited in the claim, and in the absence of such recitation no such limitation is present. For non-limiting example, as an aid to understanding, the following appended claims contain usage of the introductory phrases “at least one” and “one or more” to introduce claim elements. However, the use of such phrases should not be construed to imply that the introduction of a claim element by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim element to inventions containing only one such element, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an”; the same holds true for the use in the claims of definite articles.
Number | Name | Date | Kind |
---|---|---|---|
5818829 | Raith et al. | Oct 1998 | A |
6084865 | Dent | Jul 2000 | A |
6373430 | Beason et al. | Apr 2002 | B1 |
6614767 | Marko et al. | Sep 2003 | B1 |
6625129 | Olds et al. | Sep 2003 | B1 |
20040022231 | Morrish et al. | Feb 2004 | A1 |
20040116069 | Fadavi-Ardekani et al. | Jun 2004 | A1 |
20040116070 | Fishman et al. | Jun 2004 | A1 |
20040192189 | Yuhara et al. | Sep 2004 | A1 |
20040218618 | Asami | Nov 2004 | A1 |
20070010192 | Kawamata et al. | Jan 2007 | A1 |
20070022208 | Hashimoto et al. | Jan 2007 | A1 |
20070106811 | Ryman | May 2007 | A1 |
Number | Date | Country | |
---|---|---|---|
20070118666 A1 | May 2007 | US |