|Publication number||US20060053460 A1|
|Application number||US 11/258,427|
|Publication date||Mar 9, 2006|
|Filing date||Oct 25, 2005|
|Priority date||Aug 21, 1998|
|Also published as||US6959451|
|Publication number||11258427, 258427, US 2006/0053460 A1, US 2006/053460 A1, US 20060053460 A1, US 20060053460A1, US 2006053460 A1, US 2006053460A1, US-A1-20060053460, US-A1-2006053460, US2006/0053460A1, US2006/053460A1, US20060053460 A1, US20060053460A1, US2006053460 A1, US2006053460A1|
|Original Assignee||Ramanathan Ramanathan|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (9), Referenced by (12), Classifications (29)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This application is a continuation of U.S. patent application Ser. No. 09/138,054, entitled “TRANSMISSION COMMUNICATIONS MANAGEMENT,” filed on Aug. 21, 1998, now U.S. Pat. No. 6,959,451, granted on Oct. 25, 2005.
The invention relates to transmission communications management.
In an interactive broadcasting system, digital information may be encoded into broadcast television signals and transmitted to a home personal computer that has been configured to receive the information. A technology developed for transporting such a combination of digital information and broadcast TV signals is the Intel® Intercast® technology.
The Intercast® technology includes three parts: the broadcast headend, the transport, and the platform. At the broadcast headend, such as a television studio, broadcasters may create digital data such as Web pages, multimedia applications or other data files. The digital data is then assembled into packages and scheduled for insertion into the broadcast signal so that the broadcast signal can carry the TV audio, TV video, and digital data.
The combined digital and TV broadcast signal may be transmitted over a number of different transports, including regular television airwave broadcasts, satellite transmissions, cable transmissions, digital TV transmissions, or computer networks such as local area networks (LANs) or wide area networks (WANs).
At the receiving end, or the platform, which may be a TV-enabled personal computer or a set-top box, the broadcast signal (with inserted digital data) is received and processed for display. A TV tuner appropriate to the transport is used for receiving the broadcast signal. Data processing is then preformed by video capture and decode circuitry, which may be integrated with the tuner that receives the regular TV signals.
The different transports that are able to transmit such broadcast signals have different transmission rates and different protocols. Thus, a need arises for broadcast equipment that is capable of supporting multiple broadcast transports.
The uplink block 16 in turn transmits (by broadcasting or multicasting, for example) the combined digital and TV data over one or more transport media or communications channels 20, which may be the broadcast airwaves, a cable medium, a satellite medium, a computer network (such as local area networks, wide area networks, or the Internet), or a digital TV medium, to one or more platforms 30. An example platform 30 may include a TV-enabled computer 32 that is configured to receive the combined digital and PC broadcast data over the transport medium 20. The computer 32 may also include a modem 34 that may be connected to an Internet Web server 22.
According to embodiments of the invention, the bridge unit 14 is able to automatically adjust for the different characteristics of different transport media 20, including data flow rates and other characteristics as described below. Further, each particular transport medium may have transport characteristics that vary over time, for which the bridge unit 14 may also make adjustments. The bridge unit 14 may be implemented entirely in software that runs in the computer system in the broadcast headend system 10, or alternatively, the bridge unit 14 may be a combination of hardware and software.
In some embodiments, the bridge unit 14 and uplink block 16 include several components as shown in
In one embodiment, the broadcast encoder 100 and one or more of the transmitters 102 exchange information on a “continuous” (or continued) basis so that the broadcast encoder 100 may efficiently and reliably manage communications for different transport media and as transmitter characteristics change. The exchange of information may be performed by the broadcast encoder 100 periodically polling each transmitter 102 or by a transmitter 102 requesting an update, for example. The exchange of information is continuous in the sense that the broadcast encoder 100 and transmitters 102 continue to exchange information after startup of the broadcast encoder 100 or one of the transmitters 102. In an alternative embodiment, multiple broadcast encoders may be specified for use with multiple corresponding transmitters.
Advantages of embodiments of the invention may include the ability to automatically control data flow that is transparent to application programs in the broadcast headend system 10. In addition, embodiments of the invention may allow for transport independence at the broadcast headend in interactive broadcast systems.
The broadcast encoder 100 mixes the digital data and the TV programming data according to the type of transport medium 20 used. For example, if the transport medium uses an analog broadcast signal (transmitted over analog airwave or cable media, for example), the digital data is inserted into the vertical blanking interval (VBI) portion of the broadcast signal. The VBI portion of the broadcast signal may also be used to transmit, among other things, closed captioning data. Conventionally, in an analog broadcast signal, a predetermined number (e.g., 10) of VBI lines are available, with each line having a predetermined data transmission capacity. A portion of the available VBI lines is typically used to carry the digital data.
Other transport media, such as satellite transmissions or digital TV transmissions, may have much higher data transmission rates.
Data from the bridge unit 14 is transmitted to the uplink unit 16, which typically may include a hardware unit (or sometimes a software stack) that ships the data along with other contents over a specified transport medium 20, which may be any network that supports broadcast or multicast transmissions.
Characteristics of a transport medium 20 are communicated by a corresponding transmitter 102 to the broadcast encoder 100 through negotiations between the broadcast encoder and the transmitters. Each transmitter 102 may be configured as a separate module, such a Component Object Model (COM) object. The COM specification is described in “The Component Object Model Specification,” Draft Version 0.9, Microsoft Corporation and Digital Equipment Corporation (October 1995).
The behavior of the broadcast encoder 100 is modified based on the capabilities that the one or more transmitters 102 advertise. The broadcast encoder 100 and each transmitter 102 are loosely coupled, with the communications between a transmitter and the broadcast encoder in one embodiment being accomplished through an application specific interface (API). During negotiations between the broadcast encoder 100 and each transmitter 102 through the API interface, the broadcast encoder 100 obtains details of the characteristics of each transmitter 102 to allow the broadcast encoder 100 to efficiently manage data communications over the transport media 20. In the API interface, several methods are defined through which the broadcast encoder and transmitters exchange information.
To increase efficiency of data transfer between the broadcast encoder and the transmitter, each transmitter 102 according to an embodiment is configured as a COM object to the broadcast encoder that has two interfaces: ITransmitter, which is the transmitter's primary interface for data communication and control; and the IPropertyPage interface for configuration management. Any application (including the broadcast encoder 100) that uses the transmitters 102 in the described embodiment first obtains the ITransmitter interface to set up communications with each transmitter 102.
In alternative embodiments, negotiations between the broadcast encoder and each transmitter may be accomplished with other interfaces, including use of OLE events defined under the Object Linking and Embedding (OLE) standard, described in David Chappell, “Understanding ActiveX and OLE: A Guide for Developers & Managers,” published in 1996.
In the described embodiment, the transmitter 102 may accept two general types of data: raw data streams or predefined datagrams. Raw data streams are transmitted by the broadcast encoder 100 or another application by calling a Send( ) method, and datagrams are transmitted using a SendDatagrams( ) method. When data is provided by the broadcast encoder 100 or some other application to the transmitter 102 using the Send( ) method, the transmitter 102 does not know the type of data that is passed to it. When a transmitter 102 receives this kind of data, it does not interpret this data but instead passes the data on to another device or software module.
The Send( ) method in one embodiment writes the data pointed to in the method to a target transmitter 102. When a Send( ) call returns, the broadcast encoder 100 along with the other applications may assume that the data bits have actually been written to the transmitter. The Send( ) method is a blocking call, and will return a value if one of the following conditions occur: the transmission was successful, a timeout occurred, an error occurred, or the caller has aborted the call.
The other type of data, predefined datagrams such as Internet Protocol (IP) or User Datagram Protocol (UDP) datagrams that are transmitted by calling the SendDatagrams( ) method, have known formats. The SendDatagrams( ) method is similar to the Send( ) method. The IP protocol is described in “Internet Protocol, DARPA Internet Program, Protocol Specification,” Request for Comment 791 (September 1981), and the UDP protocol is described in “User Datagrams Protocol,” Request for Comment 768 (August 1980). Each datagram may include header information that may have the following types of information: version information; length of the header; type of datagram, including UDP, IP, and raw data; length of the data; flags; compression used; and other information. A datagram header may also be followed by broadcast encoder data that describe certain details of the broadcast encoder 100. The datagram also includes the actual data that is being transmitted. An example IP datagram is shown in
The behavior of the broadcast encoder 100 is dependent on information advertised by each transmitter 102 from negotiations the broadcast encoder 100 performs with one or more transmitters 102. Depending on how many transport media 20 is used in the system, more than one transmitter 102 may be active at the same time. According to an embodiment of the invention, several methods may be used to perform these negotiations, including GetConfiguration( ), GetAdjustmentRate( ), GetNumSendErrors( ), and GetFreeBuff( ), which are discussed further below.
But if the loading and initialization were successful (as determined at 206), then the broadcast encoder 100 requests (at 210) the configuration information from the one or more transmitters 102 using the GetConfiguration( ) method. When a transmitter receives the GetConfiguration( ) call, the transmitter advertises its capabilities. Some of the outputs are already known to the broadcast encoder 100 and some are specific to the class of transmitter involved. For example, a transmitter associated with a VBI transport will have a field indicating the number of VBI lines used. The types of information that a transmitter can send include the following: the version, length of the header, name of the transmitter, some description of the transmitter, the transfer rate, the maximum transmission unit, the buffer size, if any, the timeout and seconds per datagram (if any), the data gram type (UDP, IP, or raw data), flags, padding size, and other information. The configuration information received from each transmitter 102 is stored in memory by the broadcast encoder 100 at predefined memory locations. The stored transmitter configuration information is used at a later time to modify the broadcast encoder's behavior.
Next, the broadcast encoder 100 may send (at 212) device specific information (information describing certain details of the broadcast encoder 100) to each of the transmitter 102. In the illustrated embodiment, the method used to communicate this information is a RegisterStream( ) method. The broadcast encoder 100 stores all the stream-related information in a data structure (referred to as OPENSTREAM) and allocates a handle (address information indicating where the OPENSTREAM structure is stored) that is passed to the transmitter 102 in the RegisterStream( ) method. This handle may be passed by the broadcast encoder 102 in subsequent datagrams (in block 60 of the example datagram of
Next, the broadcast encoder uses (at 214) the configuration information advertised by each transmitter 102 in response to the GetConfiguration( ) method to modify its behavior. In the illustrated embodiment, the configuration information is stored in a data structure, referred to as the CONFIG data structure. Transmitters associated with different transport media have different characteristics. Some characteristics may include the maximum transfer rate that a transport medium can handle, the maximum size of each data packet (also refer to as the maximum transmission unit or MTU), whether compression is used, whether internal buffers are used in the transmitter, the type of data management (if any) performed by each transmitter, whether framing of data is performed, and whether fragmentation of the data is performed.
Another characteristic of a transmitter is whether it understands the concept of priorities. Thus, if the transmitter is able to assign priorities to data it receives, then the broadcast encoder 100 does not perform priority assignment, leaving the task to the transmitter 102. If the transmitter 102 is unable to prioritize the received data stream, then the broadcast encoder 100 multiplexes the data stream based on the requested priority from the application programs 12.
Yet a further transmitter characteristic is bandwidth management, in which the transmitter 102 may advertise that it is able to perform bandwidth management. Similarly, the broadcast encoder 100 may also optionally allow the transmitter 102 to perform data compression if the transmitter 102 is able to do so. Other characteristics that may be negotiated between the broadcast encoder and the transmitters include the basic data types that a transmitter requires. In one embodiment, the data types include raw data streams, Internet Protocol (IP) data, user datagram protocol (UDP) data, or other types of data. Raw data streams may be used in network interfaces not requiring an IP or UDP header. In addition, a transmitter 102 may ask the broadcast encoder 100 to repackage data before it is transmitted to the transmitter.
Some of the characteristics of the transmitters are further discussed below. The maximum transmission unit (MTU) refers to the maximum size of a single IP or UDP datagram. If an MTU is advertised, the broadcaster encoder 100 sets the size of each datagram to be less than or equal to the advertised MTU. If a software layer (such as the broadcaster encoder 100) sends data that is more than the specified MTU size, then the IP layer (such as the transmitter 102) may fragment the data into MTU-sized datagrams before further transmission. In some embodiments, a transmitter 102 does not need to advertise the MTU of its transport medium. Instead a transmitter 102 may advertise its MTU as having the value zero, in which case the transmitter 102 would perform its own internal buffering, fragmentation, and data management.
In addition to using the configuration information advertised by the transmitters, other methods used by the broadcast encoder 100 to determine transmitter characteristics include the GetAdjustedTransferRate( ) method, which calculates the actual transfer rate adjusted for delays and overhead in the transmitter 102. The GetAdjustedTransferRate( ) method obtains the adjusted rate of transfer in bits per second that accounts for the network traffic, hardware and software overhead and other delays. A transmitter may have some intelligent mechanism to study the flow and return and appropriate value, and this value may vary from time to time depending on such conditions as the network traffic. The broadcast encoder will use this adjusted transfer rate to arrive at a transfer rate to perform the transfer of data to the transmitter.
The adjusted transfer rate effectively is the data transfer rate that the transmitter 102 is able to handle. To effectively manage the data flow, the broadcast encoder 100 also needs to account for the incoming data flow rate. The broadcast encoder 100 may receive input data from several sources, each potentially at different rates. Further, the broadcast encoder may include one or more buffers to store incoming data. Some transmitters 102 may also have this capability. Transmitters that include an internal cache (or buffer) that is able to hold data are referred to as “none-blocking transmitters.” The second type of transmitter does not cache data at all, in which case all Send( ) and SendDatagrams( ) calls are blocked until data actually is sent by the transmitter. Such transmitters are referred to as “blocking transmitters.” The broadcast encoder 100 may determine if a transmitter 102 includes data buffers by calling the method GetFreeBuff( ). If a transmitter 102 includes a buffer, then it may be able to handle a faster data flow from the broadcast encoder 100 to the transmitter 102. In addition, the broadcast encoder 100 determines how fast returns are received from Send( ) or SendDatagram( ) calls. Using the adjusted transfer rate, incoming data rate or rates, the existence of buffers in the transmitters 102, and the speed of returns in response to the Send( ) or SendDatagrams( ) methods, all negotiated on a continuous basis between the broadcast encoder 100 and each of the transmitters 102, the broadcast encoder 100 is able to perform effective data flow control.
According to some embodiments, the broadcast encoder 100 and transmitters 102 may be stored on a suitable mass storage medium such as the CD or DVD drive 230, the floppy disk drive 224, or the hard disk drive 226. During execution, the broadcast encoder 100 and transmitters 102 or portions of the software modules may loaded into the system memory 218 for execution by the microprocessor 210. Data generated by the transmitters 102 may be transmitted over the network, serial or parallel ports, or other interfaces (not shown) to the uplink unit 16.
Thus, by continuously monitoring transmitter characteristics, the broadcast encoder can efficiently and accurately manage the transmission of broadcast signals containing both digital data and TV data over one or more transport media. Because the broadcast encoder monitors the transmitters on a continuous basis, changes in characteristics of a transmitter and corresponding transport medium can be ascertained by the broadcast encoder for adjustments.
Other embodiments are also included in the following claims. For example, even though specific units have been identified in the interactive broadcast system, other types of units may be used. In addition, the order of the tasks illustrated for the broadcast encoder may be modified and still achieve desirable results.
While the invention has been disclosed with respect to a limited number of embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover all such modifications and variations as fall within the true spirit and scope of the invention.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5497460 *||Jun 20, 1994||Mar 5, 1996||International Business Machines Corporation||System and method for determining network connectivity|
|US5539882 *||Jan 13, 1995||Jul 23, 1996||International Business Machines Corporation||Method and system for an efficient multiple access polling protocol for interactive communication|
|US5719942 *||Mar 21, 1995||Feb 17, 1998||International Business Machines Corp.||System and method for establishing a communication channel over a heterogeneous network between a source node and a destination node|
|US5987518 *||Oct 28, 1996||Nov 16, 1999||General Instrument Corporation||Method and apparatus for communicating internet protocol data over a broadband MPEG channel|
|US5987519 *||Sep 19, 1997||Nov 16, 1999||Georgia Tech Research Corporation||Telemedicine system using voice video and data encapsulation and de-encapsulation for communicating medical information between central monitoring stations and remote patient monitoring stations|
|US6038625 *||Jan 6, 1998||Mar 14, 2000||Sony Corporation Of Japan||Method and system for providing a device identification mechanism within a consumer audio/video network|
|US6104705 *||Dec 31, 1997||Aug 15, 2000||U.S. Philips Corporation||Group based control scheme for video compression|
|US6181711 *||Oct 10, 1997||Jan 30, 2001||Cisco Systems, Inc.||System and method for transporting a compressed video and data bit stream over a communication channel|
|US6603775 *||Apr 9, 1998||Aug 5, 2003||Aspect Communications Corporation||Dynamic allocation of communication resources within a communication system|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US7392532 *||Apr 8, 2003||Jun 24, 2008||Microsoft Corporation||Interactive video programming methods|
|US7793325||Feb 29, 2008||Sep 7, 2010||Microsoft Corporation||Video on demand methods and systems|
|US7865919||Dec 14, 2005||Jan 4, 2011||Microsoft Corporation||Proxy for video on demand server control|
|US7913283||Sep 27, 2004||Mar 22, 2011||Microsoft Corporation||Video on demand methods and systems|
|US20010027561 *||May 29, 2001||Oct 4, 2001||Microsoft Corporation||Video on demand methods and systems|
|US20010027563 *||May 29, 2001||Oct 4, 2001||Microsoft Corporation||Video on demand methods and systems|
|US20050028197 *||Aug 30, 2004||Feb 3, 2005||Microsoft Corporation||Video on demand methods and systems|
|US20050034162 *||Sep 14, 2004||Feb 10, 2005||Microsoft Corporation||Video on demand methods and systems|
|US20050044568 *||Sep 27, 2004||Feb 24, 2005||Microsoft Corporation||Video on demand methods and systems|
|US20050076379 *||Sep 27, 2004||Apr 7, 2005||Microsoft Corporation||Video on demand methods and systems|
|US20060010478 *||Aug 23, 2005||Jan 12, 2006||Microsoft Corporation||Video on demand|
|US20060095945 *||Dec 14, 2005||May 4, 2006||Microsoft Corporation||Proxy for video on demand server control|
|U.S. Classification||725/117, 725/116, 725/147, 725/118, 348/E07.063, 375/E07.024, 725/146|
|Cooperative Classification||H04N21/2402, H04N21/4622, H04N21/235, H04N21/8545, H04N7/088, H04N21/2381, H04N21/2221, H04N7/165, H04N21/4782, H04N21/8126, H04N21/435|
|European Classification||H04N21/24D, H04N21/462S, H04N21/222H, H04N21/2381, H04N21/4782, H04N21/81D, H04N21/235, H04N21/8545, H04N21/435, H04N7/16E3|