Real time processing and streaming of spliced encoded MPEG video and associated audio
First Claim
1. A method of real-time seamless splicing of a first transport stream to a second transport stream to produce a spliced transport stream, the first transport stream including video access units encoding video presentation units representing video frames, the video access units of the first transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the second transport stream including video access units encoding video presentation units representing video frames, the video access units of the second transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the first transport stream having a last video frame to be included in the spliced transport stream, and the second transport stream having a first video frame to be included in the spliced transport stream, each of the video access units having a time at which each video access unit is to be received in a video decoder buffer and a time at which said each video access unit is to be removed from the video decoder buffer, said method comprising:
- (a) setting the time at which the video access unit for the first video frame of the second transport stream is to be removed from the video decoder buffer to a time following in a decoding sequence next after the time at which the last video access unit for the last frame of the first transport stream is to be removed from the video decoder buffer;
(b) accessing pre-computed metadata for the second transport stream including metadata about a decode time stamp (DTSF2) at which the beginning of the video access unit for the first video frame of the second transport stream is removed from the video decoder buffer and an extrapolated program clock reference (PCRe2) time at which the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer, and using the pre-computed metadata to adjust content of the first transport stream so that the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer immediately after the end of the video access unit for the last video frame of the first transport stream is received in the video decoder buffer while maintaining the difference (DTSF2−
PCRe2) in the spliced transport stream; and
(c) concatenating a portion of the first transport stream up to and including the last video frame to a portion of the second transport stream including and subsequent to the first video frame.
8 Assignments
0 Petitions
Accused Products
Abstract
Time stamps in an encoded digital motion video data stream (such as an MPEG Transport Stream) are re-stamped for seamless splicing. The re-stamping includes attainment of Presentation Time Stamp (PTS) agreement in the video stream, alignment of audio stream and video stream Presentation Time Stamps, and re-stamping of the Program Clock Reference (PCR) to eliminate jitter and to comply with MPEG standards. The MPEG compliance is achieved by padding, stuffing and insertion of freeze B and P frames and pre-encoded black I frames. Freeze frame insertion can be also achieved by replacing B and P frames by, smaller in size, freeze B and P frames respectively. No frames are discarded such that both spatial and temporal frame accuracy (no extra frame insertion assumed) is achieved. Moreover, padding is inserted into the data stream to compensate for irregularities in the decoder buffer level, and the audio and video buffer levels are managed dynamically to recover from data miss-delivery to minimize secondary effects, including prediction of errors, inducing freeze or skip, and insertion of padding. The start of the play of the second MPEG stream spliced to the first one is frame accurate and starts as scheduled based on the use of an external clock signal in a stream server computer.
-
Citations
24 Claims
-
1. A method of real-time seamless splicing of a first transport stream to a second transport stream to produce a spliced transport stream, the first transport stream including video access units encoding video presentation units representing video frames, the video access units of the first transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the second transport stream including video access units encoding video presentation units representing video frames, the video access units of the second transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the first transport stream having a last video frame to be included in the spliced transport stream, and the second transport stream having a first video frame to be included in the spliced transport stream, each of the video access units having a time at which each video access unit is to be received in a video decoder buffer and a time at which said each video access unit is to be removed from the video decoder buffer, said method comprising:
-
(a) setting the time at which the video access unit for the first video frame of the second transport stream is to be removed from the video decoder buffer to a time following in a decoding sequence next after the time at which the last video access unit for the last frame of the first transport stream is to be removed from the video decoder buffer;
(b) accessing pre-computed metadata for the second transport stream including metadata about a decode time stamp (DTSF2) at which the beginning of the video access unit for the first video frame of the second transport stream is removed from the video decoder buffer and an extrapolated program clock reference (PCRe2) time at which the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer, and using the pre-computed metadata to adjust content of the first transport stream so that the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer immediately after the end of the video access unit for the last video frame of the first transport stream is received in the video decoder buffer while maintaining the difference (DTSF2−
PCRe2) in the spliced transport stream; and
(c) concatenating a portion of the first transport stream up to and including the last video frame to a portion of the second transport stream including and subsequent to the first video frame.
-
-
2. A method of real-time seamless splicing of a first transport stream to a second transport stream to produce a spliced transport stream, the first transport stream including video access units encoding video presentation units representing video frames, the video access units of the first transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the second transport stream including video access units encoding video presentation units representing video frames, the video access units of the second transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the first transport stream having a last video frame to be included in the spliced transport stream, and the second transport stream having a first video frame to be included in the spliced transport stream, each of the video access units having a time at which each video access unit is to be received in a video decoder buffer and a time at which said each video access unit is to be removed from the video decoder buffer, said method comprising:
-
(a) setting the time at which the video access unit for the first video frame of the second transport stream is to be removed from the video decoder buffer to a time following in a decoding sequence next after the time at which the last video access unit for the last frame of the first transport stream is to be removed from the video decoder buffer;
(b) accessing pre-computed metadata for the second transport stream including metadata about a decode time stamp (DTSF2) at which the beginning of the video access unit for the first video frame of the second transport stream is removed from the video decoder buffer and an extrapolated program clock reference (PCRe2) time at which the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer, and using the pre-computed metadata to adjust content of the first transport stream so that the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer immediately after the end of the video access unit for the last video frame of the first transport stream is received in the video decoder buffer while maintaining the difference (DTSF2−
PCRe2) in the spliced transport stream; and
(c) concatenating a portion of the first transport stream up to and including the last video frame to a portion of the second transport stream including and subsequent to the first video frame;
wherein the content of the first transport stream is adjusted by replacing at least one video access unit in the first transport stream with a video access unit encoding a freeze frame having a size selected so that the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer immediately after the end of the video access unit of the last video frame of the first transport stream is received in the video decoder buffer. - View Dependent Claims (3)
-
-
4. A method of real-time seamless splicing of a first transport stream to a second transport stream to produce a spliced transport stream, the first transport stream including video access units encoding video presentation units representing video frames, the video access units of the first transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the second transport stream including video access units encoding video presentation units representing video frames, the video access units of the second transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the first transport stream having a last video frame to be included in the spliced transport stream, and the second transport stream having a first video frame to be included in the spliced transport stream, each of the video access units having a time at which each video access unit is to be received in a video decoder buffer and a time at which said each video access unit is to be removed from the video decoder buffer, said method comprising:
-
(a) setting the time at which the video access unit for the first video frame of the second transport stream is to be removed from the video decoder buffer to a time following in a decoding sequence next after the time at which the last video access unit for the last frame of the first transport stream is to be removed from the video decoder buffer;
(b) accessing pre-computed metadata for the second transport stream including metadata about a decode time stamp (DTSF2) at which the beginning of the video access unit for the first video frame of the second transport stream is removed from the video decoder buffer and an extrapolated program clock reference (PCRe2) time at which the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer, and using the pre-computed metadata to adjust content of the first transport stream so that the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer immediately after the end of the video access unit for the last video frame of the first transport stream is received in the video decoder buffer while maintaining the difference (DTSF2−
PCRe2) in the spliced transport stream; and
(c) concatenating a portion of the first transport stream up to and including the last video frame to a portion of the second transport stream including and subsequent to the first video frame;
wherein the second transport stream has a higher bit transmission rate than the first transport stream.
-
-
5. A method of real-time seamless splicing of a first transport stream to a second transport stream to produce a spliced transport stream, the first transport stream including video access units encoding video presentation units representing video frames, the video access units of the first transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the second transport stream including video access units encoding video presentation units representing video frames, the video access units of the second transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the first transport stream having a last video frame to be included in the spliced transport stream, and the second transport stream having a first video frame to be included in the spliced transport stream, each of the video access units having a time at which each video access unit is to be received in a video decoder buffer and a time at which said each video access unit is to be removed from the video decoder buffer, said method comprising:
-
(a) setting the time at which the video access unit for the first video frame of the second transport stream is to be removed from the video decoder buffer to a time following in a decoding sequence next after the time at which the last video access unit for the last frame of the first transport stream is to be removed from the video decoder buffer;
(b) accessing pre-computed metadata for the second transport stream including metadata about a decode time stamp (DTSF2) at which the beginning of the video access unit for the first video frame of the second transport stream is removed from the video decoder buffer and an extrapolated program clock reference (PCRe2) time at which the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer, and using the pre-computed metadata to adjust content of the first transport stream so that the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer immediately after the end of the video access unit for the last video frame of the first transport stream is received in the video decoder buffer while maintaining the difference (DTSF2−
PCRe2) in the spliced transport stream; and
(c) concatenating a portion of the first transport stream up to and including the last video frame to a portion of the second transport stream including and subsequent to the first video frame;
wherein the second transport stream has a lower bit transmission rate than the first transport stream.
-
-
6. A method of real-time seamless splicing of a first transport stream to a second transport stream to produce a spliced transport stream, the first transport stream including video access units encoding video presentation units representing video frames, the video access units of the first transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the second transport stream including video access units encoding video presentation units representing video frames, the video access units of the second transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the first transport stream having a last video frame to be included in the spliced transport stream, and the second transport stream having a first video frame to be included in the spliced transport stream, each of the video access units having a time at which each video access unit is to be received in a video decoder buffer and a time at which said each video access unit is to be removed from the video decoder buffer, said method comprising:
-
(a) setting the time at which the video access unit for the first video frame of the second transport stream is to be removed from the video decoder buffer to a time following in a decoding sequence next after the time at which the last video access unit for the last frame of the first transport stream is to be removed from the video decoder buffer;
(b) accessing pre-computed metadata for the second transport stream including metadata about a decode time stamp (DTSF2) at which the beginning of the video access unit for the first video frame of the second transport stream is removed from the video decoder buffer and an extrapolated program clock reference (PCRe2) time at which the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer, and using the pre-computed metadata to adjust content of the first transport stream so that the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer immediately after the end of the video access unit for the last video frame of the first transport stream is received in the video decoder buffer while maintaining the difference (DTSF2−
PCRe2) in the spliced transport stream; and
(c) concatenating a portion of the first transport stream up to and including the last video frame to a portion of the second transport stream including and subsequent to the first video frame;
wherein the first transport stream, the second transport stream, and the spliced transport stream are MPEG-2 compliant.
-
-
7. A method of real-time seamless splicing of a first transport stream to a second transport stream to produce a spliced transport stream, the first transport stream including video access units encoding video presentation units representing video frames, the video access units of the first transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the second transport stream including video access units encoding video presentation units representing video frames, the video access units of the second transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the first transport stream having a last video frame to be included in the spliced transport stream, and the second transport stream having a first video frame to be included in the spliced transport stream, each of the video access units having a time at which each video access unit is to be received in a video decoder buffer and a time at which said each video access unit is to be removed from the video decoder buffer, said method comprising:
-
(a) setting the time at which the video access unit for the first video frame of the second transport stream is to be removed from the video decoder buffer to a time following in a decoding sequence next after the time at which the last video access unit for the last frame of the first transport stream is to be removed from the video decoder buffer;
(b) accessing pre-computed metadata for the second transport stream including metadata about a decode time stamp (DTSF2) at which the beginning of the video access unit for the first video frame of the second transport stream is removed from the video decoder buffer and an extrapolated program clock reference (PCRe2) time at which the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer, and using the pre-computed metadata to adjust content of the first transport stream so that the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer immediately after the end of the video access unit for the last video frame of the first transport stream is received in the video decoder buffer while maintaining the difference (DTSF2−
PCRe2) in the spliced transport stream; and
(c) concatenating a portion of the first transport stream up to and including the last video frame to a portion of the second transport stream including and subsequent to the first video frame;
which includes parsing the first transport stream and the second transport streams in real time for audio PES packet headers, parsing the audio PES packets in, real time for audio access units (AAUs), identifying in real time non-obsolete AAUs in the first transport stream following the last video frame in the first transport stream and identifying in real time obsolete AAUs in the second transport stream following the first video frame in the second transport stream, reformatting the non-obsolete AAUs in the first transport stream following the last video frame in the first transport stream in real time, eliminating the obsolete AAUs in the second transport stream following the first video frame in the second transport stream in real time, and computing time stamp offsets in real time and re-stamping, in real time, time stamps and continuity counters in the spliced transport stream following the first video frame from the second transport stream.
-
-
8. A method of real-time seamless splicing of a first transport stream to a second transport stream to produce a spliced transport stream, the first transport stream including video access units encoding video presentation units representing video frames, the video access units of the first transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the second transport stream including video access units encoding video presentation units representing video frames, the video access units of the second transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the first transport stream having a last video frame to be included in the spliced transport stream, and the second transport stream having a first video frame to be included in the spliced transport stream, each of the video access units having a time at which each video access unit is to be received in a video decoder buffer and a time at which said each video access unit is to be removed from the video decoder buffer, said method comprising:
-
(a) setting the time at which the video access unit for the first video frame of the second transport stream is to be removed from the video decoder buffer to a time following in a decoding sequence next after the time at which the last video access unit for the last frame of the first transport stream is to be removed from the video decoder buffer;
(b) accessing pre-computed metadata for the second transport stream including metadata about a decode time stamp (DTSF2) at which the beginning of the video access unit for the first video frame of the second transport stream is removed from the video decoder buffer and an extrapolated program clock reference (PCRe2) time at which the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer, and using the pre-computed metadata to adjust content of the first transport stream so that the beginning of the video access unit for the first video frame of the second transport stream will be received in the video decoder buffer immediately after the end of the video access unit for the last video frame of the first transport stream is received in the video decoder buffer while maintaining the difference (DTSF2−
PCRe2) in the spliced transport stream; and
(c) concatenating a portion of the first transport stream up to and including the last video frame to a portion of the second transport stream including and subsequent to the first video frame;
wherein the real-time seamless splicing is performed by a server when reading the first transport stream and the second transport stream from file storage and streaming the spliced transport stream to an application. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A method of real-time seamless splicing of a first transport stream to a second transport stream to produce a spliced transport stream, the first transport stream including video access units encoding video presentation units representing video frames, the video access units of the first transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the second transport stream including video access units encoding video presentation units representing video frames, the video access units of the second transport stream encoding the video presentation units using a data compression technique and containing a variable amount of compressed video data, the first transport stream having a last video frame to be included in the spliced transport stream, and the second transport stream having a first video frame to be included in the spliced transport stream, each of the video access units having a time at which each video access unit is to be received in a video decoder buffer and a time at which said each video access unit is to be removed from the video decoder buffer, said method comprising:
parsing the first transport stream and the second transport streams in real time for audio PES packet headers, parsing the audio PES packets in real time for audio access units (AAUs), identifying in real time non-obsolete AAUs in the first transport stream following the last video frame in the first transport stream and identifying in real time obsolete AAUs in the second transport stream following the first video frame in the second transport stream, reformatting the non-obsolete AAUs in the first transport stream following the last video frame in the first transport stream in real time, eliminating the obsolete AAUs in the second transport stream following the first video frame in the second transport stream in real time, concatenating a portion of the first transport stream up to and including the last video frame to a portion of the second transport stream including and subsequent to the first video frame, and computing time stamp offsets in real time and re-stamping, in real time, time stamps and continuity counters in the spliced transport stream following the first video frame from the second transport stream. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
Specification