This invention relates to systems and methods for data distribution.
In recent years, there has been an increase in the use of wired and wireless networks for the transmission and reception of files. Such files can include, for example, MP3 files, text files, portable document format (PDF) files, and multimedia messaging service (MMS) files.
In light of this, there may be interest in technologies that facilitate the transmission of such files.
According to embodiments of the present invention, there are provided systems and methods for file transmission and reception. Various of these embodiments involve augmenting protocols such as real time protocol (RTP), a protocol for transmitting and receiving real-time data such as audio, video and simulation data, so that they may be used for file transmission and reception.
Further embodiments of the present invention provide systems and methods for file transmission and reception wherein one or more files are transmitted for presentation in synchrony with media such as audio, video, or the like.
General Operation
According to embodiments of the present invention, there are provided systems and methods for file transmission and reception. Various of these embodiments involve augmenting real time protocol (RTP), a protocol for transmitting and receiving real-time data such as audio, video and stimulation data, so that it may be used for file transmission and reception. Such augmentation can involve the inclusion of a custom metadata header. It is noted that, for various embodiments, one or more protocols similar to RTP may be employed along with or in place or RTP.
Further embodiments of the present invention provide systems and methods for file transmission and reception wherein one or more files are transmitted for presentation in synchrony with media such as audio, video, or the like. For such embodiments, file transmission may involve augmenting RTP or a similar protocol as discussed above.
It is noted that embodiments of the present invention are applicable to unicast, multicast, and broadcast. It is further noted that embodiments of the present invention are applicable to unidirectional and bi-directional networks.
Various aspects of the present invention will now be discussed in greater detail.
File Transmission
A first step in transmitting a file for various embodiments of the present invention may be to divide the file into a number of blocks. For each block, certain informational elements may be recorded in, for instance, an accessible storage location. The informational for a particular block may, for instance, relate to the particular element and/or the corresponding file.
Next, for each file block, an application layer packet (e.g., an RTP packet) carrying that block may be created and dispatched. Dispatch of each application layer packet may involve the use of one or more appropriate lower layer protocols. For instance, each application layer packet may be encapsulated in, for instance, a User Datagram Protocol (UDP) packet, which could in turn be encapsulated in, for instance, an Internet Protocol (IP) packet. Appropriate stops could be taken to so that each application layer packet would be dispatched to one or more intended recipients. Accordingly, for example, an IP packet of the sort just alluded to could contain in one of its headers the IP address on an intended recipient.
Each application layer packet could be created in a manner consistent with RTP or a similar protocol augmented in the manner alluded to above. More specifically, a step in the creation of each such packet may be the creation of a custom metadata header. Included in the custom metadata header may be information corresponding the file and/or file block with which the application layer packet is associated. Among this data may be one or more of a number of elements. Such elements might, for example, be in the form:
In this exemplary form, “:” is used as a separator character between the meta-data field title and the value, while the “;” is used to separate each meta-data item from the others.
One element may, for example, be an indication of the filestructure location (e.g., directory or folder) where the file being transmitted should be stored at a recipient node. Such an element might, for instance, be:
Another element may be, for example, the file name that a recipient node should use in storing the file being transmitted. Such an element might, for instance, be:
Yet another element may be, for example, the size of the file being transmitted. The size might be specified in bytes. Such an element might, for instance, be:
Another element may be, for example, the sequence number for the corresponding file block. Also specified may be the total number of file blocks being dispatched. For instance, the element “12/20” might indicate that the corresponding application layer packet holds the 12th out of twenty blocks corresponding to the file being transmitted. Such an element might, for instance, be:
A next element might be, for example, a content-offset indication. This element could indicate the starting position of the corresponding file block in the file being transferred. Such an element might, for instance, be:
Another element could be, for instance, an indication of block size.
After creation of the custom metadata header corresponding to the transmission of a particular file block, the size of the metadata header could be calculated. Next, the custom metadata header could be placed in the payload portion of the RTP or similar application layer packet being created. Placed before or after the payload portion could be the calculated size of the header. Next an appropriate standard header (e.g., standard RTP header) could be created and appended to the packet. Where, the header is an RTP header, marker bit might be set to zero, extension bit might be set to zero, padding bit may be set to zero, and/or a dynamic payload type may be specified for payload type. More specifically, a value of 101 may be specified for payload type. Shown in
File Reception
Among the steps performed by a node receiving an application layer packet created and dispatched as discussed above may be to analyze the above-discussed custom metadata header. As alluded to above, data elements included in the header could, for instance, provide the recipient node with various information concerning the file being transmitted. For example, the recipient node could learn from the directory and/or file name to be associated with the file being transmitted. As another example, content-offset information included in the header could be used in reconstruction of the file being transmitted.
As another example, the recipient node could employ sequence number information included in the header to determine file blocks not received. For various embodiments of the present invention, there might be periodic retransmission of file blocks. For such embodiments, a recipient node could watch for the retransmission of file blocks that were not received.
As yet another example, the recipient node could employ file size information included in the header to determine progress in file reception. A recipient node could, for example, use such file size information in displaying a file receipt progress bar to a node user.
Synchronized File Transmission and Reception
With regard to
In such embodiments, a file could be transmitted in a manner similar to that described above, but with timing data being dispatched along with file blocks. The timing data could, for instance, be included in standard RTP headers or the like, and/or as elements in custom metadata headers. Timing data could further be dispatched along with packets of transmitted audio, video, and/or the like.
The timing data dispatched along with packets of transmitted audio, video, and/or the like and the timing data dispatched along with the file blocks could be correlated so as to allow for synchrony in presentation of the audio, video, and/or the like and one or more files corresponding to the dispatched file blocks.
As a specific example, in the case where transmitted audio, video, and/or the like corresponded to a streaming media film of a hockey match, timing data could, for instance, provide for the presentation of the image file of a player upon the streaming media film showing that player scoring a goal. For various embodiments, a store correlating media items and files could be maintained. As a specific example, such a store might, for instance, indicate image files to be shown in synchrony with the exemplary hockey match streaming media.
Accordingly, a node receiving such audio, video, and/or the like, and application layer packets containing file blocks corresponding to one or more files, could examine included timing data in order to provide a synchronized presentation of the sort noted above.
Shown in
Shown in
Shown in
Hardware and Software
Certain devices employed in accordance with the present invention may be implemented using computers. For example, the above-noted nodes may be implemented using network-capable computers. For instance, a receiving node could be a wireless terminal. Furthermore, certain procedures and the like described herein may be executed by or with the help of computers. The phrases “computer”, “general purpose computer”, and the like, as used herein, refer but are not limited to a processor card smart card, a media device, a personal computer, an engineering workstation, a PC, a Macintosh, a PDA, a wired or wireless terminal, a server, a network access point, a network multicast point, or the like, perhaps running an operating system such as OS X, Linux, Darwin, Windows CE, Windows XP, Palm OS, Symbian OS, or the like, perhaps with support for Java or .Net.
The phrases “general purpose computer”, “computer”, and the like also refer, but are not limited to, one or more processors operatively connected to one or more memory or storage units, wherein the memory or storage may contain data, algorithms, and/or program code, and the processor or processors may execute the program code and/or manipulate the program code, data, and/or algorithms. Accordingly, exemplary computer 6000 as shown in
Mass storage 6063 may be a hard drive, optical drive, or the like. Processors 6051 and 6052 may each be a commonly known processor such as an IBM or Motorola PowerPC, an AMD Athlon, an AMD Opteron, an Intel ARM, an Intel XScale, a Transmeta Crusoe, or an Intel Pentium. Computer 6000 as shown in this example also includes an display unit 6001, a keyboard 6002 and a mouse 6003. In alternate embodiments, keyboard 6002, and/or mouse 6003 might be replaced and/or augmented with a touch screen, pen, and/or keypad interface. Computer 6000 may additionally include or be attached to card readers, DVD drives, or floppy disk drives whereby media containing program code may be inserted for the purpose of loading the code onto the computer.
In accordance with the present invention, a computer may run one or more software modules and/or additional software designed to perform on or more of the above-described operations, the modules and/or additional software being programmed using languages such as Java, Objective C, C, C#, and/or C++ according to methods known in the art. It is noted that any described division of operations among particular software modules and/or additional software is for purposes of illustration, and that alternate divisions of operation may be employed. Accordingly, operations discussed as being performed by one software module and/or additional software item might instead be performed by a plurality of software modules and/or additional software. Similarly, operations discussed as being performed by a plurality of modules and/or additional software might instead be performed by a single module and/or additional software item.
Further, although embodiments of the invention disclose certain software modules and/or additional software as operating on certain devices, in alternate embodiments these modules might be distributed to run on other devices than those stated. For example, operations disclosed as being performed by a particular node might instead be performed by a plurality of nodes and/or other devices. It is further noted that, in various embodiments, grid computing techniques may be employed.
Shown in
The processing unit CPU 703 comprises a microprocessor (not shown), memory 704 and possibly software. The software can be stored in the memory 704. The microprocessor controls, on the basis of the software, the operation of the terminal 7000, such as the receiving of the data stream, the tolerance of the impulse burst noise in the data reception, displaying output in the user interface and the reading of inputs received from the user interface. The operations are described above. The hardware contains circuitry for detecting the signal, circuitry for demodulation, circuitry for detecting the impulse, circuitry for blanking those samples of the symbol where significant amount of impulse noise is present, circuitry for calculating estimates, and circuitry for performing the corrections of the corrupted data.
Still referring to
Ramifications and Scope
Although the description above contains many specifics, these are merely provided to illustrate the invention and should not be construed as limitations of the invention's scope. Thus it will be apparent to those skilled in the art that various modifications and variations can be made in the system and processes of the present invention without departing from the spirit or scope of the invention.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/IB03/05283 | 11/17/2003 | WO | 10/3/2005 |
Number | Date | Country | |
---|---|---|---|
60427797 | Nov 2002 | US |