Program insertion in real time IP multicast
First Claim
1. A computer implemented first proxy for relaying a first program from a program provider to a multicast destination address, comprising:
- an input interface means for receiving data packets containing said first program from said program provider;
a transmitter for relaying said data packets to said multicast destination address;
interface means for transmitting header information to a second proxy for incorporation into the header of data packets forwarding a second program to said multicast destination address; and
interface means for receiving header information from said second proxy for incorporation into the header of said data packets forwarding said first program to said multicast address.
9 Assignments
0 Petitions
Accused Products
Abstract
Program insertion in real time IP multicast enables the seamless insertion of a secondary program within an IP multicast session of a primary program. A primary content provider transmits its multimedia stream to a first proxy that transmits the data to a destination multicast session. A secondary content provider interested in inserting a program into that destination multicast session sends a request through a second proxy to the first proxy requesting a time slot to insert secondary program. The request includes the duration of the secondary program. The first proxy responds with a time slot or a denial of the request depending if a time slot is available. Assuming an available time slot, at the appropriate time the first proxy transfers control of the destination multicast session to the second proxy which transmits the secondary program. Upon completion of the secondary program the second proxy returns control of the session to the first proxy. All scheduling and control transfer occurs through the development of a new protocol to manage the transfer of control. Smooth transitions occur by manipulation of the RTP header in the packets and the associated RTCP stream.
-
Citations
20 Claims
-
1. A computer implemented first proxy for relaying a first program from a program provider to a multicast destination address, comprising:
-
an input interface means for receiving data packets containing said first program from said program provider;
a transmitter for relaying said data packets to said multicast destination address;
interface means for transmitting header information to a second proxy for incorporation into the header of data packets forwarding a second program to said multicast destination address; and
interface means for receiving header information from said second proxy for incorporation into the header of said data packets forwarding said first program to said multicast address. - View Dependent Claims (2, 3, 4)
interface means for receiving a request from said secondary proxy to transmit said secondary program of a given duration to said multicast destination address;
computer implemented means for determining the availability of a time slot for said secondary program;
interface means for responding to said secondary proxy with a time slot, if available, or a denial of said request; and
computer implemented means for interrupting said continuous relay of said primary program at the scheduled time for transmitting said secondary program.
-
-
4. The first proxy according to claim 1 wherein said first proxy is a secondary proxy, said second proxy is a primary proxy, said first program is a secondary program and said second program is a primary program, said secondary proxy further comprising:
an interface means for transmitting a request to said primary proxy to transmit a secondary program of a given duration to said multicast destination address.
-
5. A computer implemented method for seamless insertion of a secondary program to a multicast destination address during a pause in the transmission of a primary program to said multicast destination address, said method comprising the steps of:
-
establishing a first software interface for communication between a provider of said primary program and a primary proxy;
said primary proxy receiving said primary program from said primary program provider, said primary program packetized into at least one data packet;
establishing a second software interface for communication between said primary proxy and a multicast destination address for relaying said primary program to at least one user at said multicast destination address;
relaying said primary program on said multicast destination address;
said primary proxy receiving a request from a secondary proxy to transmit to said multicast destination address a secondary program which is packetized into at least one data packet, said secondary program having a given duration;
interrupting said relay of said primary program to transmit said secondary program;
transmitting said secondary program to said multicast destination address; and
continuing said relay of said primary program to said multicast destination address. - View Dependent Claims (6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
prior to transmitting said secondary program, said primary proxy transmitting primary header information to said secondary proxy for incorporation into the header of said data packets of said secondary program; and
upon completion of said transmission of said secondary program, said secondary proxy transmitting secondary header information to said primary proxy for incorporation into the header of said data packets of said primary program.
-
-
7. The method of claim 6 wherein said primary header information includes a synchronization source identifier corresponding to said primary program provider, a time stamp and a packet sequence and said secondary header information includes a time stamp and a packet sequence, said method further comprising the steps of:
-
said primary proxy storing said synchronization source identifier of said primary program provider, said time stamp and said packet sequence of the last data packet relayed to said multicast destination address before said scheduled time for transmitting said secondary program;
said secondary proxy using said primary header information to adjust said time stamp and packet sequence of said data packets of said secondary program so that said data packets of said secondary program are transmitted to said multicast destination address, seamless with said primary program; and
at the expiration of the duration of said secondary program, said primary proxy using said secondary header information to adjust said time stamp and packet sequence of the first data packet of said primary program following said pause in said transmission of said primary program so that said first data packet is transmitted to said multicast destination address, seamless with said secondary program.
-
-
8. The method of claim 5, further comprising the steps of:
-
said secondary proxy monitoring the traffic from said primary proxy on said multicast destination address to determine primary header information of the last data packet of said primary program prior to said interrupting step; and
said primary proxy monitoring the traffic from said secondary proxy on said multicast destination address to determine secondary header information of the last data packet of said secondary program and to determine when said secondary proxy has stopped transmitting said secondary program.
-
-
9. The method of claim 8 wherein said primary header information includes a synchronization source identifier corresponding to said primary program provider, a time stamp and a packet sequence and said secondary header information includes a time stamp and a packet sequence, said method further comprising the steps of:
-
said primary proxy storing said synchronization source identifier of said primary program provider, said time stamp and said packet sequence of the last data packet relayed to said multicast destination address before said scheduled time for transmitting said secondary program;
said secondary proxy using said primary header information to adjust said time stamp and packet sequence of said data packets of said secondary program so that said data packets of said secondary program are transmitted to said multicast destination address, seamless with said primary program; and
at the expiration of the duration of said secondary program, said primary proxy using said secondary header information to adjust said time stamp and packet sequence of the first data packet of said primary program following said pause in said transmission of said primary program so that said first data packet is transmitted to said multicast destination address, seamless with said secondary program.
-
-
10. The method of claim 5 wherein said communications between said primary proxy and said secondary proxy is conducted over a private TCP connection.
-
11. The method of claim 5 wherein said communications between said primary proxy and said secondary proxy is conducted using RTCP messaging.
-
12. The method of claim 5 wherein said communications between said primary proxy and said secondary proxy is conducted using RTSP messaging.
-
13. The method of claim 5 further comprising the steps of:
-
upon receipt by said primary proxy of said request from said secondary proxy, said primary proxy determining the availability of a time for inserting said secondary program; and
responding to said secondary proxy with a scheduled time for transmitting said secondary program if available, or a denial of said request.
-
-
14. The method of claim 7 further comprising the step of said secondary proxy replacing said synchronization source identifier of said secondary program provider found in each data packet of said secondary program, with said synchronization source identifier of said primary program provider.
-
15. The method of claim 9 further comprising the step of said secondary proxy replacing said synchronization source identifier of said secondary program provider found in each data packet of said secondary program, with said synchronization source identifier of said primary program provider.
-
16. The method according to claim 5 wherein said primary and secondary programs are transmitted in accordance with the Real Time Protocol and under the control of the Real Time Control Protocol and wherein transmitting said token from said first proxy to said second proxy includes transmitting the last time stamp and sequence number from the header of a Real Time Protocol stream associated with said primary program and wherein said returning token step includes transmitting the last time stamp and sequence number from said secondary program.
-
17. The method according to claim 5 wherein said primary and secondary programs are displayed to a user at said multicast destination address on a single viewer window.
-
18. The method according to claim 5 wherein demographic data from said users at said multicast destination address is transmitted via a Real Time Control Protocol message to said-secondary proxy.
-
19. The method of claim 7 wherein a plurality of secondary program providers, each with a unique synchronization source identifier and a unique secondary program are transmitting on said multicast destination address, further comprising the steps of:
-
a viewer tuned to said multicast destination address selecting a synchronization source identifier mask of one of said unique synchronization source identifiers; and
selecting one of said plurality of secondary programs by accepting data packets having a synchronization source identifier that matches with said synchronization source identifier mask.
-
-
20. The method of claim 7 wherein a plurality of secondary program providers, each with a unique synchronization source identifier and a unique secondary program are transmitting on said multicast destination address, further comprising the steps of:
-
a viewer tuned to said multicast destination address, selecting a synchronization source identifier mask of one of said unique synchronization source identifiers; and
selecting one of said plurality of secondary programs by accepting data packets having a synchronization source identifier that matches with said synchronization source identifier mask.
-
Specification