Re-timing of video program bearing streams transmitted by an asynchronous communication link
First Claim
1. A method for multiplexing a first video program bearing bit sin into a second bit stream, said first video program bearing bit stream containing a set of plural time stamps for each program contained therein indicating a time relative to a system time clock of an encoder at which each time stamp of said program should appear in said first bit stream comprising the steps of:
- (a) receiving said first video program bearing bit stream from a communication link having a varying end-to-end transmission delay, (b) determining a time at which each of one or more of packets carrying data of the same program received from said first video program bearing bit steam should appear in said second bit stream based on a plurality of time stamps of said program received from said first video program bearing bit stream said step (b) further comprising the steps of;
(b1) storing packets containing data received from said received first video program bearing bit steam in a receipt queue, (b2) identifying each packet containing data of a program stored in said receipt queue between first and second particular packets containing consecutive time stamps of said program, (b3) determining a packet rate of said program based on a difference between said first and second time stamps, and (b4) assigning as a transmit time to each of said identified packets, the sum of a transmit time, assigned to said first particular packet and a product of said packet rate and an offset of said identified packet from said first packet, and (c) selectively transmitting selected ones of said one or more packets in said second bit stream with a constant end-to-end delay at times that depend on said determined times.
5 Assignments
0 Petitions
Accused Products
Abstract
A method and system are provided for remultiplexing program bearing data. The remultiplexing method and system are applicable to MPEG-2 compliant transport streams carrying video programs. A descriptor based system is used for scheduling the timely output of transport packets wherein each descriptor records a dispatch time as well as a receipt time for each transport packet. The receipt time is used for estimating program clock reference adjustments, but final program clock reference adjustment is performed in hardware in relation to the precise output timing of each transport packets. A descriptor and transport packet caching technique is used for decoupling the synchronous receipt and transmission of transport packets from any asynchronous processing performed thereon. The descriptors can also be used for managing scrambling and descrambling control words (encryption and decryption keys). Remultiplexing functions may be distributed across a network. The remultiplexer can furthermore optimize the bandwidth of transport streams by replacing null transport packets with transport packet data to be inserted into the output transport stream. Program data transmitted via asynchronous communication links is re-timed and assistance is provided for outputting program data on such asynchronous communication links to reduce a variation in end-to-end delay incurred by the program data. Remultiplexing and program specific information can be seamlessly dynamically varied without stopping, or introducing a discontinuity in, the flow of outputted transport packets. A technique is also provided for locking multiple internal reference clock generators.
-
Citations
30 Claims
-
1. A method for multiplexing a first video program bearing bit sin into a second bit stream, said first video program bearing bit stream containing a set of plural time stamps for each program contained therein indicating a time relative to a system time clock of an encoder at which each time stamp of said program should appear in said first bit stream comprising the steps of:
-
(a) receiving said first video program bearing bit stream from a communication link having a varying end-to-end transmission delay, (b) determining a time at which each of one or more of packets carrying data of the same program received from said first video program bearing bit steam should appear in said second bit stream based on a plurality of time stamps of said program received from said first video program bearing bit stream said step (b) further comprising the steps of;
(b1) storing packets containing data received from said received first video program bearing bit steam in a receipt queue, (b2) identifying each packet containing data of a program stored in said receipt queue between first and second particular packets containing consecutive time stamps of said program, (b3) determining a packet rate of said program based on a difference between said first and second time stamps, and (b4) assigning as a transmit time to each of said identified packets, the sum of a transmit time, assigned to said first particular packet and a product of said packet rate and an offset of said identified packet from said first packet, and (c) selectively transmitting selected ones of said one or more packets in said second bit stream with a constant end-to-end delay at times that depend on said determined times. - View Dependent Claims (2, 3, 4, 5, 6)
(b5) assigning to a first time stamp bearing packet received for each program carried in said first bitstream a receipt time relative to a local clock, and (b6) assigning as a transmit time to a packet containing data of said first time stamp bearing packet the sum of said assigned receipt time and a known buffering delay.
-
-
3. The method of claim 1 wherein said step (c) further comprises the step of:
(c1) preventing buffer overflow and underflow at a receiver of said second bit stream by inserting said identified packets into said second bit stream at said times that depend on said determined times.
-
4. The method of claim 2 further comprising the step of:
(d) receiving said first video program bearing bit stream from a computer network.
-
5. The method of claim 2 further comprising the step of:
(d) receiving said first video program bearing bit stream from an Ethernet network.
-
6. The method of claim 2 further comprising the step of:
(d) receiving said first video program bearing bit stream from an ATM network.
-
7. A method for multiplexing a first video program bearing bit stream into a second bit stream said first video program bearing bit stream containing a set of plural time stamps for each program contained therein indicating a time relative to a system time clock of an encoder at which each time stamp of said program should appear in said first bit stream comprising the steps of:
-
(a) receiving said first video program bearing bit stream from a communication link having a varying end-to-end transmission delay (b) determining a time at which each of one or more of packets carrying data of the same program received from said first video program bearing bit stream should appear in said second bit stream based on a plurality of time stamps of said program received from said first video program bearing bit stream and (c) selectively transmitting selected ones of said one or more packets in said second bit stream with a constant end-to-end delay at times that depend on said determined time, including;
(c1) preventing buffer overflow and underflow at a receiver of said second bit stream by inserting said identified packets into said second bit stream at times that depend on said determined times, wherein said receiver buffer removes said identified packets from said second bit steam according to time stamps corresponding to variably compressed portions of said program, and a recovered system time clock for said program, and wherein said variably compressed portions of said first video program bearing bit stream have a number of bits which number depends on a presumed storage capacity of said receiver buffer and a predetermined bit rate of said first video program.
-
-
8. A method for multiplexing a first video program bearing bit stream into a second bit steam said first video program bearing bit stream containing a set of plural time stamps for each program contained therein indicating a time relative to a system time clock of an encoder at which each time stamp of said program should appear in said first bit stream, comprising the steps of:
-
(a) receiving said first video program bearing bit stream from a communication link having a varying end-to-end transmission delay, (b) determining a time at which each of one or more of packets carrying data of the same program received from said first video program bearing bit stream should appear in said second bit stream based on a plurality of time stamps of said program received from said first video program bearing bit stream, and (c) selectively transmitting selected ones of said one or more packets in said second bit stream with a constant end-to-end delay at times that depend on said determined times, wherein said step (c) further comprises the steps of;
(c1) determining a packet time slot of said second bit stream nearest in time to said determined transmit time for a packet, (c2) if more than one packet is nearest in transport time to a single one of said packet time slots, assigning each of said packets nearest in time to said single packet time slots to sequential packet time slots, and (c3) adjusting a time stamp of each packet bearing a time stamp and which is assigned to one of said packet time slots other than said single packet time slot based on the number of packet time slots said assigned packet time slot is displaced from said single packet time slot. - View Dependent Claims (9)
(c4) estimating a drift between a local clock and each of one or more system time clocks of encoders that produced said received packets as a function of a difference between a current queue length delay of said queue and an ideal queue length delay of said queue, and (c5) further adjusting each of said adjusted time stamps according to a corresponding one of said drifts between said local clock and said system time clock of said encoder that produced said packet.
-
-
10. A remultiplexer for multiplexing a first video program bearing bit stream into a second bit steam, said first video program bearing bit stream containing a set of plural time stamps for each program contained therein indicating a time relative to a system time clock of an encoder at which each time stamp of said program should appear in said first bit stream, comprising:
-
an asynchronous interface for receiving said first video program bearing bit stream from a communication link having a varying end-to-end transmission delay, a memory for storing packets containing data received from said received first video program bearing bit stream in a receipt queue, a processor connected to said asynchronous interface for determining a time at which each of one or more of packets carrying data of the same program received from said first video program bearing bit stream should appear in said second bit stream based on a plurality of time stamps of said program received from said first video program bearing bit stream, and a synchronous interface for selectively transmitting selected ones of said one or more packets in said second bit stream with a constant end-to-end delay at times that depend on said determined times, wherein said processor identifies each packet containing data of a program stored in said receipt queue between first and second particular packets containing consecutive time stamps of said program, determines a packet rate of said program based on a difference between said first and second time stamps, and assigns as a transmit time to each of said identified packets, the sum of a transmit time assigned to said first particular packet and a product of said packet rate and an offset of said identified packet from said first packet. - View Dependent Claims (11, 12)
a local clock accessible to said processor, wherein said processor assigns to a first time stamp bearing packet received for each program carried in said first bit stream a receipt time relative to said local clock, and assigns as a transmit time to a packet containing data of said first time stamp bearing packet the sum of said assigned receipt time and a known buffering delay.
-
-
12. The remultiplexer of claim 10:
wherein said transmission of said packets at said times that depend on said determined times by said processor prevents buffer overflow and underflow at a receiver of said second bit stream.
-
13. A remultiplexer for multiplexing a first video program bearing bit stream into a second bit stream, said first video program bearing bit stream containing a set of plural time stamps for each program contained therein indicating a time relative to a system time clock of an encoder at which each time stamp of said program should appear in said first bit stream, comprising:
-
an asynchronous interface for receiving said first video program bearing bit stream from a communication link having a varying end-to-end transmission delay, a processor connected to said asynchronous interface for determining a time at which each of one or more of packets carrying data of the same program received from said first video program bearing bit stream should appear in said second bit stream based on a plurality of time stamps of said program received from said first video program bearing bit stream, and a synchronous interface for selectively transmitting selected ones of said one or more packets in said second bit stream with a constant end-to-end delay at times that depend on said determined times, wherein said transmission of said packets at times which depend on said determined times by said processor prevents buffer overflow and underflow at a receiver of said second bitstream, wherein said receiver buffer removes said identified packets from said second bit stream according to time stamps corresponding to variably compressed portions of said program, and a recovered system time clock for said program and wherein said variably compressed portions of said first video program bearing bit steam have a number of bits which number depends on a presumed storage capacity of said receiver buffer and a predetermined bit rate of said first video program.
-
-
14. A remultiplexer for multiplexing a first video program bearing bit steam into a second bit stream said first video program bearing bit stream containing a set of plural time stamps for each program contained therein indicating a time relative to a system time clock of an encoder at which each time stamp of said program should appear in said first bit stream comprising:
-
an asynchronous interface for receiving said first video program bean bit stream from a communication link having a varying end-to-end transmission delay, a processor connected to said asynchronous interface for determining a time at which each of one or more of packets carrying data of the same program received from said first video program bearing bit stream should appear in said second bit stream based on a plurality of time stamps of said program received from said first video program bearing bit stream, and a synchronous inter for selectively transmitting selected ones of said one or more packets in said second bit stream with a constant end-to-end delay at times that depend on said determined times, wherein said processor determines a packet time slot of said second bit steam nearest in time to said determined transmit time for a packet, wherein if more a one packet is nearest in transmit time to a single one of said packet time slots, said processor assigns, to sequential packet time slots, each of said packets nearest in transmit time to said single packet time slots, and wherein said processor adjusts a time stamp of each packet bearing a time stamp and which is assigned to one of said packet time slots other than said single packet time slot based on the number of packet time slots said assigned packet time slot is displaced from said single packet time slot. - View Dependent Claims (15)
a memory, wherein said asynchronous interface inserts each of said selected received packets into a queue in said memory pending transmission, wherein said processor estimates a drift between a local clock and each of one or more system time clocks of encoders that produced said received packets as a function of a difference between a current queue length delay of said queue and an ideal queue length delay of said queue, and wherein said processor further adjusts each of said adjusted time stamps according to a corresponding one of said drifts between said local clock and said system time clock of said encoder that produced said packet.
-
-
16. A bit stream produced by multiplexing a first video program bearing bit steam into a second bit steam, said first video program bearing bit stream containing a set of plural time stamps for each program contained therein indicating a time relative to a system time clock of an encoder at which each time stamp of said program should appear in said first bit stream, said process of remultiplexing comprising the steps of:
-
(a) receiving said first video program bearing bit stream from a communication link having a varying end-to-end transmission delay, (b) determining a time at which each of one or more of packets carrying data of the same program received from said first video program bearing bit stream should appear in said second bit steam based on a plurality of time stamps of said program received from said first video program bearing bit stream, said step (b) further comprising the steps of;
(b1) storing packets containing data received from said received first video program bearing bit stream in a receipt queue, (b2) identifying each packet containing data of a program stored in said receipt queue between first and second particular packets containing consecutive time stamps of said program, (b3) determining a packet rate of said program base on a difference between said first and second time stamps, and (b4) assigning as a transmit time to each of said identified packets, the sum of a transmit time assigned to said first particular packet and a product of said packet rate and an offset of said identified packet from said first packet, and (c) selectively transmitting selected ones of said one or more packets in said second bit steam with a constant end-to-end delay at times that depend on said determined times.
-
-
17. A bit stream produced by multiplexing a first video program bearing bit stream into a second bit stream, said first video program bearing bit steam containing a set of plural time stamps for each program contained therein indicating a time relative to a system time clock of an encoder at which each time stamp of said program should appear in said first bit stream, said process of remultiplexing comprising the steps of:
-
(a) receiving said first video program bearing bit stream from a communication link having a varying end-to-end transmission delay, (b) determining a time at which each of one or more of packets carrying data of the same program received from said first video program bearing bit stream should appear in said second bit stream based on a plurality of time stamps of said program received from said first video program bearing bit stream, and (c) selectively transmitting selected ones of said one or more packets in said second bit stream with a constant end-to-end delay at times that depend on said determined times, wherein said step (c) further comprises the steps of;
(c1) determining a packet time slot of said second bit stream nearest in time to said determined transmit time for a packet, (c2) if more m one packet is nearest in transport time to a single one of said packet time slots, assigning each of said packets nearest in time to said single packet time slots to sequential packet time slots, and (c3) adjusting a time stamp of each packet bearing a time stamp and which is assigned to one of said packet time slots other than said single packet time slot based on the number of packet time slots said assigned packet time slot is displaced from said single packet time slot.
-
-
18. A bit stream produced by multiplexing a first video program bearing bit stream into a second bit stream, said first video program bearing bit stream containing a set of plural time stamps for each program contained therein indicating a time relative to a system time clock of an encoder at which each time stamp of said program should appear in said first bit stream, said process of remultiplexing comprising the steps of:
-
(a) receiving said first video program bearing bit stream from a communication link having a varying end-to-end transmission delay, (b) determining a time at which each of one or more of packets carrying data of the same program received from said first video program bearing bit stream should appear in said second bit stream based on a plurality of time stamps of said program received from said first video program bearing bit stream, and (c) selectively transmitting selected ones of said one or more packets in said second bit stream with a constant end-to-end delay at times that depend on said determined times, including;
(c1) preventing buffer overflow and underflow at a receiver of said second bit stream by inserting said identified packets into said second bit stream at times that depend on said determined times, wherein said receiver buffer removes said identified packets from said second bit stream according to time stamps corresponding to variably compressed portions of said program, and a recovered system time clock for said program, and wherein said variably compressed portions of said first video program bearing bit stream have a number of bits which number depends on a presumed storage capacity of said receiver buffer and a predetermined bit rate of said first video program.
-
-
19. A method for multiplexing a first video program bearing bit stream into a second bit stream, said first video program bearing bit stream containing a set of plural time stamps for each program contained therein, each time stamp indicating a time relative to a system time clock of an encoder at which the respective time stamp should appear in said first bit stream, comprising the steps of:
-
(a) receiving said first video program bearing bit stream from an asynchronous communication link having a varying end-to-end transmission delay for different portions of the first video program bearing bit stream, the first communication link variably varying the communication delay incurred by each received portion of the first video program bearing bit stream, so as to variably deviate the time at which portions of the first video program bearing bit stream, as received, appear therein, (b) determining a time at which each of one or more of packets carrying data of the same program received from said first video program bearing bit stream should appear in said second bit stream based on a plurality of time stamps of said program received from said first video program bearing bit stream so as to reduce any variable deviation of the appearance time of one of the time stamps of the first video program bearing bit stream introduced by the asynchronous communication link, including a variable deviation shorter than the time needed to receive each portion of the fist video program bearing bit stream, and (c) selectively transmitting selected ones of said one or more packets in said second bit stream with a constant end-to-end delay at times that depend on said determined times. - View Dependent Claims (20, 21, 22)
(b1) estimating the transport rate of a program comprising one of the received portions of the first video program bearing bit stream, and (b2) determining the output time of the one received portion as a function of the estimated transport rate and the relative position of the one received portion within the first video program bearing bit stream.
-
-
21. The method of claim 20 wherein the relative position is the amount of data received from the first video program bearing bit stream from a reference received portion of the first video program bearing bit stream to the one received portion in order of receipt.
-
22. The method of claim 21 wherein in the step of determining, the one received portion is contained in a first transport packet, the reference received portion is contained in a second transport packet, and the amount of data received from the first program bearing bit stream includes the number of transport packets received between the first and second transport packets.
-
23. A remultiplexer for multiplexing a first video program bearing bit stream into a second bit stream, said fist video program bearing bit stream containing a set of plural time stamps for each program contained therein, each time stamp indicating a time relative to a system time clock of an encoder at which the respective time stamp should appear in said first bit stream, comprising:
-
(a) an asynchronous interface for receiving said first video program bearing bit stream from an asynchronous communication link having a varying end-to-end transmission delay for different portions of the first video program bearing bit stream, the first communication link variably varying the communication delay incurred by each received portion of the first video program bearing bit stream, so as to variably deviate the time at which portions of the first video program bearing bit stream, as received, appear therein, (b) a processor connected to said asynchronous interface for determining a time at which each of one or more of packets carrying data of the same program received from said first video program bearing bit steam should appear in said second bit stream based on a plurality of time stamps of said program received from said first video program bearing bit stream so as to reduce any variable deviation of the appearance time of one of the time stamps of the first video program bearing bit stream introduced by the asynchronous communication link, including a variable deviation shorter than the time needed to receive each portion of the first video program bearing bit stream, and (c) a synchronous interface for selectively transmitting selected ones of said one or more packets in said second bit stream with a constant end-to-end delay at times that depend on said determined times. - View Dependent Claims (24, 25, 26)
wherein said processor is also for estimating the transport rate of a program comprising one of the received portions of the first video program bearing bit stream, and for determining the output time of the one received portion as a function of the estimated transport rate and the relative position of the one received portion within the first video program bearing bit stream.
-
-
25. The remultiplexer of claim 24 wherein the relative position is the amount of data received from the first video program bearing bit stream from a reference received portion of the first video program bearing bit stream to the one received portion in order of receipt.
-
26. The remultiplexer of claim 25 wherein, in determining the output time, the one received portion is contained in a first transport packet, the reference received portion is contained in a second transport packet, and the amount of data received from the first program bearing bit stream includes the number of transport packets received between the first and second transport packets.
-
27. A bit stream formed by multiplexing a first video program bearing bit stream into a second bit steam, said first video program bearing bit stream containing a set of plural time stamps for each program contained therein, each time stamp indicating a time relative to a system time clock of an encoder at which the respective time stamp should appear in said first bit stream, said second bit stream being formed by the steps of:
-
(a) receiving said first video program bearing bit stream from an asynchronous communication link having a varying end-to-end transmission delay for different portions of the first video program bearing bit stream, the first communication link variably varying the communication delay incurred by each received portion of the first video program bearing bit stream, so as to variably deviate the time at which portions of the first video program bearing bit stream, as received, appear therein, (b) determining a time at which each of one or more of packets carrying data of the same program received from said first video program bearing bit steam should appear in said second bit stream based on a plurality of time stamps of said program received from said first video program bearing bit stream so as to reduce any variable deviation of the appearance time of one of the time stamps of the first video program bearing bit stream introduced by the asynchronous communication link, including a variable deviation shorter than the time needed to receive each portion of the first video program bearing bit steam, and (c) selectively transmitting selected ones of said one or more packets in said second bit stream with a constant end-to-end delay at times that depend on said determined times. - View Dependent Claims (28, 29, 30)
(b1) estimating the transport rate of a program comprising one of the received portions of the first video program bearing bit steam, and (b2) determining the output time of the one received portion as a function of the estimated transport rate and the relative position of the one received portion within the first video program bearing bit stream.
-
-
29. The bit stream of claim 28 wherein the relative position is the amount of data received from the first video program bearing bit stream from a reference received portion of the first video program bearing bit stream to the one received portion in order of receipt.
-
30. The bit stream of claim 29 wherein in the step of determining, the one received portion is contained in a first transport packet, the reference received portion is contained in a second transport packet, and the amount of data received from the first program bearing bit stream includes the number of transport packets received between the first and second transport packets.
Specification