Claims
- 1-17. (canceled)
- 18. A method for splicing multimedia programs in multimedia data streams to form a same single output program, comprising:
providing in the same or different multimedia data streams, first and second programs, each of the first and second programs including a first media component of the same first media and a second media component of the same second media, the second media being a different media than the first media, each of the first and second media components of each of the first and second programs having: a multitude of splice-in points with begin-presentation times of first presented portions of the component after the splice-in; and a multitude of splice-out points with end-presentation times of the last presented portion of the component before the splice-out, the times being relative to their positions in the stream; transmitting the first and second component of the first program in an output stream; receiving a command to splice the second program to the first program to form the same single output program; selecting a splice-in point in the stream for the first component in the second program; selecting a splice-out point in the stream for the first component in the first program, with a position in the stream approximately aligned with the position in the stream of the splice-in point of the first component of the second program; and the begin-presentation time for the first portion of the first component presented after the splice-in of the first component is equal or later than the end-presentation time for the last presented portion of the first component before the splice-out of the first component; transmitting the first component of the second program and the second component of the first program in the output stream; splicing the first component of the first program out at the selected splice-out point for the first component and splicing the first component of the second program in at the selected splice-in point for the first component; selecting a splice-in point in the stream for the second component in the second program at which the begin-presentation time of the first presented portion of the second component after the splice-in is equal or after the end-presentation time of the latest presented portion of the first component before the splice-out point of the first component; selecting a splice-out point in the stream for the second component in the first program, at which: the position in the stream of the splice-out point for the second component is approximately aligned with the position in the stream of the splice-in point of the second component; and an end-presentation time of the latest presented portion of the second component before the splice-out is equal or before the begin-presentation times of the earliest presented portions of both: the first component after the splice-in of the first component; and the second component after the splice-in of the second component; splicing the second component of the first program out at the selected splice-out of the second component and splicing the second component of the second program in at the selected splice-in point of the second component; and transmitting the first and second component of the second program in the output stream.
- 19. The method of claim 18 in which:
selecting a splice-in point in the stream for the second component includes selecting a point at which the begin-presentation time for the earliest presented portion of the second component after the splice-in for the second component is equal or after the begin-presentation time for the earliest presented portion of the first component after the selected splice-in for the first component.
- 20. The method of claim 18 in which:
selecting a splice-out point in the stream for the second component includes selecting a point at which the end-presentation time for the latest presented portion of the second component before the splice-out is equal or before the end-presentation time for the latest presented portion of the first component before the selected splice-out for the first component.
- 21. The method of claim 18 in which:
portions of at least one of the components of the first and second programs contain presentation time data from which a begin-presentation time and end-presentation time can be derived and the method includes adjusting the time data for the one component in the second program after the splice-in point for the one component to be consistent with the time data of the one component in the first program; and at least one of the components of the first and second programs contain a decode time data from which a begin-decoding time can be derived and the method further comprises adjusting the decode time data for the component in the second program after the splice-in point for the one component to be consistent with the decode times of the one component in the first program.
- 22. The method of claim 18 in which:
selecting a splice-out point of the first component includes selecting the splice-out point which is closer in time to the splice-in point of the first component in the second program than any other one of a multitude of previous splice-out points of the first component, for which multitude of previous splice-out points the begin-presentation time for the first portion of the first component presented after the splice-in of the first component that is is equal or later than the end-presentation time for the last presented portion of the first component before the splice-out of the first component.
- 23. The method of claim 18 in which:
video, audio, or other component splice-in points are indicated in a packet that follows a splice-in point for a respective component by if PID=PCR_PID, then setting PCR_flag=1 and providing a PCR value in the header of the packet; and selecting a splice-in point for the respective component includes searching for such flag value.
- 24. The method of claim 18 in which:
selecting a splice-in point in the stream for the second component includes selecting a point at which the begin-presentation time for the earliest presented portion of the second component after the splice-in for the second component is equal or after the begin-presentation time for the earliest presented portion of the first component after the selected splice-in for the first component; selecting a splice-out point in the stream for the second component includes selecting a point at which the end-presentation time for the latest presented portion of the second component before the splice-out is equal or before the end-presentation time for the latest presented portion of the first component before the selected splice-out for the first component; portions of at least one of the components of the first and second programs contain presentation time data from which a begin-presentation time and end-presentation time can be derived and the method includes adjusting the time data for the one component in the second program after the splice-in point for the one component to be consistent with the time data of the one component in the first program; at least one of the components of the first and second programs contain a decode time data from which a begin-decoding time can be derived and the method further comprises adjusting the decode time data for the component in the second program after the splice-in point for the one component to be consistent with the decode times of the one component in the first program; the first and second programs include a program clock reference and the method further comprises adjusting the program clock reference time in the second program after the first splice-in of the second program in the stream to be consistent with the program clock reference in the first program; the splice command includes a specified splice time; and selecting a splice-in point for the first component in the second program includes selecting the splice-in point closest in time to the time specified for the splice time; selecting a splice-out point of the first component includes selecting the splice-out point which is closer in time to the splice-in point of the first component in the second program than any other one of a multitude of previous splice-out points of the first component, for which multitude of previous splice-out points the begin-presentation time for the first portion of the first component presented after the splice-in of the first component that is equal or later than the end-presentation time for the last presented portion of the first component before the splice-out of the first component; selecting a splice-out of the second component, includes: determining the number of frames of the second component that must be dropped in order to prevent overflowing a decoding buffer for the second component; and selecting splice-in and splice-out points of the second component depending on the determination in order to drop the determined number of frames; one or more portions of the second component are dropped including either: portions with begin-presentation times before the end-presentation time of the last portion of the first component before the splice-out of the first component; portions with end-presentation times after the begin-presentation time of the first portion of the first component after the splice-out of the first component; or both; the first component is a video component and the second component is an audio component; video, audio or other component seamless splice-out points are indicated in a packet for the respective component immediately before the splice-out point by setting one or more of: the splicing_point_flag=1; the splice_coutdown=0; and the seamless_splice_flag=1; and selecting a splice-out point for the respective component includes searching for packets with one or more of: the splicing_point_flag=1; the splice_coutdown=0; and the seamless_splice_flag=1; video, audio or other component seamless splice-out points are also indicated in a packet for the respective component immediately before the splice-out point by if PID=PCR_PID, then setting PCR_flag=1 and providing the PCR value in the packet; and selecting a splice-out point for the respective component includes searching for packets with PID=PCR_PID, PCR_flag=1, and a PCR value; video, audio or other component seamless splice-in points are indicated in a packet for the respective component immediately after the splice-out point by setting one or more of: the splicing_point_flag=1; the splice_coutdown=−1; and the seamless_splice_flag=1; and selecting a splice-in point for the respective component includes searching for packets with one or more of: the splicing_point_flag=1; the splice_coutdown=−1; and the seamless splice_flag=1; video, audio, or other component seamless splice-in points are also indicated in a packet that follows a splice-in point for a respective component by if PID=PCR_PID, then setting PCR_flag=1 and providing a PCR value in the header of the packet; and selecting a splice-in point for the respective component includes searching for packets with PID=PCR_PID, PCR_flag=1, and a PCR value; selecting the audio splice-out point includes searching for the last presented audio frame in the first program with an end-presentation time which is equal or before the begin-presentation time of the first presented video picture after the video splice-in point; selecting the audio splice-in point includes searching in the second program for the first presented audio frame in the second program with a begin-presentation time which is equal or after the end-presentation time of the last presented video picture before the video splice-out point in the first program; the first program is received from a first encoder in a first data stream and the second program is received from a second encoder in a second stream, and the first and second encoders cooperate to constrain the programs so that at every video splice-in point in one program there is a corresponding video splice-out point approximately aligned in time with the splice-in point in the other program; the encoder for the first program and the encoder for the second program cooperate so that at the video splice-in point in the second program, the ending delay of the first program at the corresponding video splice-out point is at least the period of one video picture in the first program less than the startup delay for the second program at the video splice-in point so that all video splice-in points are seamless splice points; one of the components in each of the first and second programs includes only self contained decodable frames which define a splice point at both the point immediately before the beginning of the first packet of the frame and the point immediately after the end of the last packet of the frame, and all the splice points for the component are both splice-in points and also splice-out points; for portions of the first and second components approximately aligned in the stream, the begin-presentation time and a begin-decoding time of the first component is delayed for approximately 33 to 300 milliseconds with respect to the begin-presentation time of the second component; the splice command is received by a play-to-air splicer in which: each of the first and second programs arrive at the same splicer input or at separate splicer inputs in different respective data streams; and only one of the programs exits from a data stream output of the splicer; providing first and second programs includes providing multiple seamless video splice-in points and multiple seamless video splice-out points in each of the first and second programs; the frame rates for the first and second programs are different and the splicer inserts a sequence_end_code in the output stream between the last video picture of the first program and the first video picture of the second program in the stream; the MPEG-2 group of pictures in presentation order, begin with an I-frame and end with a P-frame; and the first and second programs include a third media component which is captions for the video pictures.
- 25. The method of claim 18 in which:
selecting a splice-in point of the first component includes selecting the next splice-in point recognized in the stream after receiving the command to splice; each of the first and second programs is compressed by an independent respective encoder which guarantees a predetermined start-up delay at each seamless splice-in point and a predetermined ending delay at each splice-out point whereby overrun is prevented when splicing such encoded programs; selecting a splice-out of the first component includes: determining the number of portions of the first component that must be skipped in order to prevent overflowing a decoding buffer for the first component; and selecting a splice-out point of the first component in the first program that is sufficiently previous to the splice-in point of the first component in the second program depending on the determination so as to prevent overflowing the decoder buffer for the first component so that the first component may be spliced seamlessly; selecting a splice-out point in the second component includes selecting a splice-out point at which the end-presentation time of the latest presented portion of the second component before the splice-out point for the second component is closer than the end-presentation time of any other portion of the second component before the splice-out point to the begin-presentation time of the first presented portion of the second component before the splice-out point; providing first and second programs includes providing a program association table that identifies a packet identifier for a program map table for each of the first and second programs in the stream; and the splice command to switch from a first program to a second program is received by a decoder which receives both of the first and second programs in the same data stream and the decoder selects packets for copying into a decoder buffer depending on the splice command, a packet identifier which identifies a segment of a component of a program for each packet of the first and second media of the first and second programs, and a program map table which identifies the packet identifiers for a program.
- 26. A multimedia data stream of signals decodable in a physical device, and containing a spiced output program comprising:
a first sequential portion output program containing portions of a first media component of a first program and a second media component of the first program; and containing no portions of a first and second media components of a second program; a second portion of the output program adjacently following the first sequential portion and containing portions of a first media component of a second program and other portions of the second media component of the first program; and containing no portions of the first media component of the first program and no portions of a second media component of the second program; and a third portion of the output program adjacently following the second sequential portion and containing other portions of the first media component of the second program and other portions of the second media component of the second program; and containing no portions of the first and second media components of the first program.
- 27. The data stream of claim 26 in which:
the first components of the first and second programs include multiple splice-in points and multiple splice-out points and for a plurality of the splice points a packet adjacent to the splice point includes an indication of the splice point; the multimedia data stream includes an MPEG-2 video data stream; audio components of both programs are compressed using either MPEG audio or Dolby AC-3; the first media component of each of the first and second programs is a video component and the second media component of each of the first and second programs is an audio component; the first and second programs each further include at least one auxiliary component; the last packets before respective splice-out points include a program clock reference; the first packets following respective splice-in points include a program clock reference value in the header; the stream further comprises a multitude of additional multimedia programs; each video component of each of the first and second programs includes multiple seamless splice-in points and multiple seamless splice-out points, the programs conforming to a predetermined scheme so that with respect to other programs conforming to the scheme, splices between a video seamless splice-in point of the program and a corresponding approximately aligned video seamless splice-out point of the other program will always be seamless; a video seamless splice-in point is indicated in each packet of the first and second media of the first and second programs immediately before multiple respective first packets of MPEG-2 I-frames of the first and second programs; a video splice-out point is indicated in the packet immediately before first packets of multiple respective MPEG-2 I-frames and P-frames of the first and second programs; an audio splice-in point is indicated in the first packets of multiple respective audio frames of the first and second programs; and an audio splice-out point is indicated in the last packets of multiple respective audio frames of the first and second programs.
- 28. A multimedia encoder, comprising:
a processing unit; memory communicating with the processing unit including one or more buffers; one or more network inputs; at least one network output; means for receiving the uncompressed multimedia programs from the inputs into the buffers; means for compressing the uncompressed portions of the multimedia programs in the buffers into compressed portions of the multimedia programs in the buffers; means for transmitting the compressed multimedia programs from the buffers onto the network output; video seamless splice-out providing means to control the encoding for providing a multitude of video seamless splice-out points in at least one of the compressed programs; and video seamless splice-in providing means to control the encoding for providing a multitude of video seamless splice-in points in at least one of the compressed programs.
- 29. A multimedia encoder, comprising:
a processing unit; memory communicating with the processing unit and including one or more buffers; one or more network inputs for uncompressed programs communicating with the buffers of the memory; at least one network output for a data stream of one or more compressed programs communicating with the buffers of the memory; means for receiving the uncompressed programs from the inputs into the buffers; means for compressing the uncompressed portions of the programs in the buffers into compressed portions of the programs in the buffers; means for transmitting the compressed programs from the buffers onto the network output; and means to control the encoding for preventing audio anomalies due to splicing the compressed programs.
- 30. The multimedia encoder of claim 29, in which:
the programs include a video component and the encoding includes MPEG-2 encoding for compressing the programs and the video splice-in providing means provide a seamless video splice-in point at the beginning of every I-frame in the video component of the at least one compressed program; the encoder further comprises video splice-out providing means for providing a multitude of video splice-out points in the at least one compressed program; the encoder further comprises video seamless splice-in indicating means for indicating the locations of the seamless video splice-in points in the compressed programs; if PID=PCR_PID, then the video seamless splice-in indicating means set PCR_flag=1 in the packet header of the first packet following the seamless video splice-in point; the encoder further comprises video seamless splice-out providing means for providing a multitude of seamless video splice-out points in the at least one compressed program; the video seamless splice-out providing means provide a seamless video splice-out point at the end of every I and P-frame in the video component in presentation order; the encoder further comprises video seamless splice-out indicating means for indicating the locations of the video seamless splice-out points in the compressed programs; if PID=PCR_PID, then the video splice-out indicating means set PCR_flag=1 in the packet header of the last packet before the video seamless splice-out point; the encoder further comprises seamless video means for providing that at video seamless splice-in points and at video seamless splice-out points, the ending delay at the video seamless splice-out points is the period of one frame less than a predetermined startup delay at the video seamless spice-in points so that all the video seamless splice-in and video seamless splice-out points are seamless; the encoder further comprises audio corresponding splice-in providing means for providing an audio splice-in point corresponding to every video seamless splice-in point in the at least one compressed program, at a beginning of respective corresponding audio frames; the encoder further comprises audio corresponding splice-in indicating means for indicating the locations of the audio splice-in points that correspond to the video seamless splice-in points in the compressed programs; the locations of the audio corresponding splice-in points being indicated in a packet immediately following respective corresponding audio splice-in point; if PID=PCR_PID, then the audio splice-in indicating means set PCR_flag=1 in the packet header of the first packet following the splice-in point; the encoder further comprises audio corresponding splice-out providing means for providing an audio splice-out point corresponding to every video seamless splice-out point in the at least one compressed program at an end of respective audio frames; the encoder further comprises audio corresponding splice-out indicating means for indicating the locations of the audio splice-out points in the at least one compressed program that correspond to seamless video splice-out points; the locations of the audio corresponding splice-out points being indicated in a packet immediately preceding a respective audio corresponding splice-out point; if PID=PCR_PID, then the audio splice-out indicating means set PCR_flag=1 in the packet header of the last packet before the splice-out point; and the encoder further comprises means for preventing audio buffer overflow by selecting audio corresponding splice-in points at which the begin-presentation time of the first audio frame following the audio corresponding splice-in point is the same or after the begin-presentation time of the first presented video picture that follows the corresponding video seamless splice-in point, and selecting audio corresponding splice-out points at which the end-presentation time of the last audio frame before the audio corresponding splice-out point is equal or before the end-presentation time of the last presented video picture that precedes the corresponding video seamless splice-out point.
- 31. A multimedia data stream splicer, comprising:
a processing unit; memory communicating with the processing unit and including one or more buffers; one or more network inputs communicating with the buffers in the memory; at least one network output communicating with the buffers in the memory; means for receiving one or more data streams from the network inputs into the buffers, the input data streams include a first and second programs, each of the first and second programs including a first component of a first media and a second component of a second media; means for transmitting the components of one or more programs from the buffers onto the network output as one or more data streams, the transmitting means being adapted to transmit the first and second component of the first program as an output program; means for receiving a splice command to splice the second program to the first program as the output program; means for selecting a splice-in point from multiple splice-in points of the first component in the second program depending on the splice command; means for selecting a splice-out point from multiple splice-out points of the first component in the first program, the splice-out point for the first component being approximately aligned in the stream with the splice-in point for the first component, and the end-presentation time of the last presented portion of the first component before the splice-out point for the first component is equal or before the begin-presentation time of the first presented portion of the first component after the splice-in point for the first component; the transmitting means being adapted to splice the first component of the first program out at the selected splice-out point of the first component and splice the first component of the second program in at the selected splice-in point of the first component for transmitting the second component of the first program together with the first component of the second program as an output program; means for selecting a splice-in point for the second component in the second program, at which the begin-presentation time of the earliest presented portion of the second component after the splice-in for the second component is equal or after the end-presentation time of the latest presented portion of the first component before the splice-out point for the first component; means for selecting a splice-out point for the second component in the first program, at which the end-presentation time of the latest presented portion of the second component before the splice-out point for the second component is equal or before the begin-presentation times for the earliest presented portions of both: the first component after the splice-in point for the first component; and the second component after the splice-in point for the second component; and the transmitting means splice the second component of the first program out at the selected splice-out of the second component and splice the second component of the second program in at the selected splice-in point of the second component for transmitting the first and second component of the second program as the output program.
- 32. The splicer of claim 31 in which:
the means for receiving the splice command store a specified splice time and the means for selecting a splice-in point select the splice-in point closest in time to the time specified for the splice time; the means for selecting a splice-out point of the first component in the first program select the splice-out point which is closer in time to the splice-in point of the first component in the second program than any other one of a multitude of previous splice-out points of the first component in the first program wherein the end-presentation time of the last presented portion of the first component before the splice-out point for the first component is equal or before the begin-presentation time of the first presented portion of the first component after the splice-in point; the means for selecting a splice-out of the second component determine the number of frames of the second component that must be skipped in order to prevent overflowing a buffer for the second component; and select the latest splice-out point in the stream for the second component at which the end-presentation time of the latest presented portion previous to the splice-out point of the second component is sufficiently earlier than the begin-presentation time of the earliest presented portion after the splice-in point in the second program, depending on the determination so as to prevent overflowing the decoder buffer for the second component; the means for receiving and means for transmitting respectfully receive and transmit MPEG-2 data streams; the first component of both the first and second programs is a video component and the second component of both the first and second programs is an audio component; the seamless video splice-out points are predetermined and the packets in the program include information indicating the location of the seamless video splice-out points and the means for selecting video splice-out points recognize video splice-out indications; the means for selecting video splice-out points recognize as a splice-in point, the end of a packet in which: the splicing_point_flag=1, the splice-coutdown=0, the seamless_splice_flag=1, and if PID=PCR_PID then PCR_flag=1 and the PCR value is provided in the MPEG-2 packet headers; the seamless video splice-in points are predetermined and the packets in the programs include information indicating the location of the seamless video splice-in points and the means for selecting video splice-in points recognize the video splice-out indications; the means for selecting video splice-in points recognize as a splice-out point, the end of a packet in which: splicing_point_flag=1, splice_coutdown=−1, seamless_splice_flag=1 and if PID=PCR_PID then PCR_flag=1 and the PCR value is provided in the MPEG-2 packet header; the means for selecting the audio splice-out point search in the first program for the last packet of an audio frame in the first program with an end-presentation time which is equal or before the begin-presentation time of the first video picture presented after the video splice-in point in the second program; the means for selecting the audio splice-in point search in the second program for the first audio frame with a begin-presentation time which is equal or after the begin-presentation time of the first video picture after the video splice-in point in the second program; the splicer includes means for dropping one or more audio frames before or after or both before and after the audio splice-in or splice-out point in order to prevent overflowing the audio buffer; the splicer further comprises means to insert a sequence_end_code between the last video picture of the first stream and the first video picture of the second stream.
- 33. The splicer of claim 31 in which: the means for selecting a splice-in point of the first component select the next splice-in point recognized by the splicer after receiving the command to splice;
the means for selecting a splice-out of the first component point:determine the number of video pictures that must be skipped to prevent overflowing a video decoding buffer; and select a splice-out point of the first component in the first program that is previous to the splice-in point of the first component in the second program depending on the determination so as to prevent overflowing the decoder buffer; the means selecting a splice-out point in the second component of the first program select a splice-out point that is closer in begin-presentation time to the second component splice-in point in the second program than any other previous second component splice-out point in the first program; the means for determining seamless video splice-in points calculate whether a potential splice-in point is seamless; means for switching output from one program to another program received in the same data stream; multiple programs are received in at least one input data stream and means for receiving receive a program association table that identifies a packet identifier for a program map table for programs in the stream.
- 34. A selective decoder for a multimedia data stream including multiple programs, comprising:
a processing unit; memory communicating with the processing unit, including one or more buffers; one or more network inputs communicating with the buffers of the memory; at least one output for uncompresses data of one or more programs, communicating with the memory; means for selecting fewer than all the programs available in the multimedia data stream; means for receiving a selection command for selecting fewer than all the programs from the network input, including the selection of a first program and non-selection of a second program; means for receiving portions of compressed programs from the input data streams into the buffers; conversion means for reading portions of the compressed programs from the buffers, decoding the portions into uncompressed data, and storing the uncompressed data into the buffers as uncompressed programs depending on the selection, the conversion means converting portions of a first component of a first media and portions of a second component of a different second media of the first program into an uncompressed output program; means for transmitting the uncompressed portions of programs from the buffers onto the output as an uncompressed, digital, data stream; means for receiving a change selection command to splice the second program to the first program; means for selecting a splice-in point of a first component of a first media in the second program depending on the change channel command; means for selecting a splice-out point of a first component of the first media in the first program, approximately aligned in the stream with the splice-in point of the first component, and with an end-presentation time of the last presented portion after the splice-out equal or previous to the begin-presentation time of the first presented portion of the first component after the splice-in point of the first component; the converting means splice the first component of the first program out at the selected splice-out point of the first component and splice the first component of the second program in at the selected splice-in point of the first component for converting the first component of the second program and the second component of the first program into the output program; means for selecting a splice-in point in the stream for the second component, at which the begin-presentation time of the earliest presented portion of the second component after the splice-in for the second component is equal or after the end-presentation time of the latest presented portion of the first component before the splice-out point for the first component; means for selecting a splice-out point in the stream for the second component, which is approximately aligned in the stream with the splice-in point for the second component, and at which the end-presentation time for the latest presented portion of the second component in the first program before the splice-out point for the second component is equal or before the begin-presentation time for the earliest presented portion of both: the first component after the splice-in point of the first component; and the second component after the splice-in point of the second component; the converting means splice the second component of the first program out at the selected splice-out of the second component and splice the second component of the second program in at the selected splice-in point of the second component for converting the first and second component of the second program into the output program.
- 35. A method of operating a multimedia system, comprising:
providing uncompressed multimedia data for two or more programs; encoding the uncompressed data into one or more multimedia data streams, including a first and second programs, each of the first and second programs including a first media component of the same first media and a second media component of the same second media which is different than the first media, each of the first and second media components of each of the first and second programs having: a multitude of splice-in points with begin-presentation times of first portions after the splice-in; and a multitude of splice-out points with end-presentation times of the last portion before the splice-out, which times are relative to their positions in the stream in which they are contained; receiving a command to splice the second program to the first program; selecting a splice-in point in the stream for the first component in the second program; selecting a splice-out point in the stream for the first component in the first program, with a position in the stream aligned or before the position in the stream of the splice-in point of the first component of the second program; splicing the first component of the first program out at the selected splice-out point for the first component and splicing the first component of the second program in at the selected splice-in point for the first component; selecting a splice-in point in the stream for the second component in the second program, at which a begin-presentation time of the earliest presented portion of the second component after the splice-in is equal or after the end-presentation time of the latest presented portion of the first component before the splice-out point of the first component; selecting a splice-out point in the stream for the second component in the first program, at which an end-presentation time of the latest presented portion of the second component before the splice-out point is equal or before the begin-presentation time of both: the earliest presented portion of the first component after the splice-in point for the first component; and the earliest presented portion of the second component after the splice-in point of the second component; splicing the second component of the first program out at the selected splice-out of the second component and splicing the second component of the second program in at the selected splice-in point of the second component; decoding the first component of the first program until the splice-out point for the first component; decoding the first component of the second program starting at the splice-in point for the first component; decoding the second component of the first program until the splice-out point for the second component; and decoding the second component of the second program starting at the splice-in point for the second component to provide continuous decompressed data for a program.
- 36. A multimedia network system, comprising:
means for producing and transmitting uncompressed multimedia data for a multitude of programs including a first and a second program, each of the first and second programs including a first and a second component, the first components of both the first and second programs being the same first type of media and the second components of both the first and second programs being the same second type of media, the first type of media being different than the second type of media; one or more encoder processing units; an encoder memory communicating with the encoder processing units, each encoder memory including one or more buffers; one or more encoder inputs for each encoder processing unit for receiving uncompressed data of programs, the encoder processing units communicating with the buffers of the respective encoder memory; at least one encoder output for the encoder processing units for a data stream including compressed data for one or more programs, the output communicating with the buffers in the respective encoder memory; means for receiving the uncompressed program data from the encoder inputs into the buffers of the encoder memory; means for compressing portions of the uncompressed data of the programs contained in the buffers into corresponding portions of the uncompressed data of the programs in the buffers of the encoder memory; means for transmitting the compressed data of the programs from the buffers onto the network output of the encoders, in one or more data streams; splice-out providing means for providing a multitude of seamless splice-out points in at least the first component of the first program; splice-in providing means for providing a multitude of seamless splice-in points in at least the first of the second program; a splicer processing unit; a splicer memory communicating with the splicer processing unit, including one or more buffers; one or more network inputs communicating with the buffers in the splicer memory, for one or more input data streams including the first and second programs; at least one network output for an output data stream with one or more programs, communicating with the buffers in the splicer memory; means for receiving the programs from the input data streams into the buffers of the splicer memory; means for transmitting the programs from the buffers of the splicer memory onto the network output as a data stream; and means for receiving a splice command to splice the second program to the first program; means for selecting a splice-in point of the first component in the second program depending on the splice command; means for selecting a splice-out point of the first component in the first program, which is approximately aligned in the stream with the splice-in point of the first component of the second program, and at which the end-presentation time of the latest presented portion of the first component of the first program after the splice-out is equal or after the begin-presentation time of the earliest presented portion of the first component of the second program after the splice-in point so as to provide a seamless splice; means for splicing the first component of the first program out at the selected splice-out point of the first component and splicing the first component of the second program in at the selected splice-in point of the first component; means for selecting a splice-in point for the second component in the second program, at which the begin-presentation time of a earliest presented portion of the second component after the splice-in for the second component is equal or after the end-presentation time of the latest presented portion of the first component before the splice-out point for the first component; means for selecting a splice-out point for the second component in the first program, at which the end-presentation time for a latest presented portion of the second component after the splice-out for the second component is equal or before the begin-presentation time for both: the earliest presented portion of the first component after the splice-in point of the first component; and the earliest presented portion of the second component after the splice-in point of the second component; means for splicing the second component of the first program out at the selected splice-out of the second component and splicing the second component of the second program in at the selected splice-in point of the second component; a decoder processing unit; a decoder memory communicating with the decoder processing unit, including one or more buffers of the decoder memory; one or more network inputs communicating with the buffers in the decoder memory, for one or more input data streams including either the first or second programs and including one or more other programs each including a first media component of the same first media and a second media component of the same second media which is different than the first media, each media component of each program having a multitude of splice-in points and splice-out points associated with at least a relative begin-presentation time; means for selecting less than all the programs from a multitude of programs in a data stream; at least one output for uncompressed data of the selected programs, communicating with the memory; means for receiving portions of the selected programs from the input data streams into buffers; means to read only portions of selected programs from the buffers, to decode the read portions of the selected programs, and to output uncompressed data into the buffers; and means for transmitting the programs from the buffers onto the output as an uncompressed digital data stream.
- 37. A data stream of signals decodable in a physical device, the stream having a first program spliced to a second program in which:
a splice-out point in the stream for a first component in the first program, with a position in the stream approximately aligned with a position in the stream of a splice-in point of the first component of the second program; and a begin-presentation time for the first portion of the first component presented after the splice-in of the first component is equal or later than an end-presentation time for the last presented portion of the first component before the splice-out of the first component; a splice-in point in the stream for a second component in the second program at which the begin-presentation time of a first presented portion of the second component after the splice-in is equal or after an end-presentation time of the latest presented portion of the first component before the splice-out point of the first component; a splice-out point in the stream for the second component in the first program, with a position in the stream approximately aligned with the position in the stream of the splice-in point of a second component of the second program; and an end-presentation time of the latest presented portion of the second component before the splice-out is equal or before the begin-presentation times of the earliest presented portions of both: the first component after the splice-in of the first component; and the second component after the splice-in of the second component.
- 38. The stream of claim 37 in which:
the begin-presentation time for the earliest presented portion of the second component after the splice-in for the second component is equal or after the begin-presentation time for the earliest presented portion of the first component after the selected splice-in for the first component; the end-presentation time for the latest presented portion of the second component before the splice-out is equal or before the end-presentation time for the latest presented portion of the first component before the selected splice-out for the first component; portions of at least one of the components of the first and second programs contain presentation time data from which a begin-presentation time and end-presentation time for the portions can be derived and the time data for the one component in the second program after the splice-in point for the one component has been adjusted to be consistent with the time data of the one component in the first program; at least one of the components of the first and second programs contain a decode time data from which a begin-decoding time can be derived and the decode time data for the component in the second program after the splice-in point for the one component has been adjusted to be consistent with the decode times of the one component in the first program; the first and second programs include a program clock reference and the program clock reference time in the second program after the first splice-in of the second program in the stream has been adjusted to be consistent with the program clock reference in the first program; the first component is a video component and the second component is an audio component; video, audio or other component splice-out points are also indicated in a packet for the respective component immediately before the splice-out point by if PID=PCR_PID, then setting PCR_flag=1; providing the PCR value in the packet; and selecting a splice-out point for the respective component includes searching for such flag value; video, audio, or other component splice-in points are also indicated in a packet that follows a splice-in point for a respective component by if PID=PCR_PID, then setting PCR_flag=1 and providing a PCR value in the header of the packet; and selecting a splice-in point for the respective component includes searching for such flag value; one of the components of the same type of media in each of the first and second programs includes only self contained decodable frames which define a splice point at both the point immediately before the beginning of the first packet of the frame and the point immediately after the end of the last packet of the frame, and all the splice points for the component are both splice-in points and also splice-out points; multiple seamless video splice-in points and multiple seamless video splice-out points are provided in each of the first and second programs, the stream conforming to a predetermined scheme so that with respect to other streams conforming to the standard, splices between the video seamless splice-in point and the video seamless splice-out points will always be seamless; the frame rates for the first and second programs are different and the splicer inserts a sequence_end_code in the output stream between the last video picture of the first program and the first video picture of the second program in the stream; the MPEG-2 group of pictures in presentation order, begin with an I-frame, end with a P-frame, and contains multiple B frames; and the first and second programs include a third media component which contains captions for the video pictures.
- 39. The encoder of claim 28 in which:
the ending delay at each video seamless splice-out point is at least the period of one video picture less than the startup delay for the program at each video seamless splice-in point so that all the video seamless splice-out points are seamless and all of the video seamless splice-in points are seamless.
- 40. A multimedia data stream of signals decodable in a physical device, the stream comprising:
a first multimedia program with a first component of multiple packets of a first type of media and a second component of multiple packets of a second different media type; multiple splice-in points and multiple splice-out points in the first component, a plurality of the splice-in points are each indicated in a respective next packet of the first component following the splice-in point of the first component.
- 41. The stream of claim 40, in which:
the indication is a program clock reference contained in the first packet following each splice-in point; the first component is a video component and the splice-in points include splice-in points before each I-frame in the video component.
- 42. A multimedia data stream of signals decodable in a physical device, the stream comprising:
a first multimedia program with a first component of multiple packets of a first type of media and a second component of multiple packets of a second different media type; multiple splice-in points and multiple splice-out points in the first component, a plurality of the splice-out points are each indicated in a respective last packet of the first component that precedes the splice-out point.
- 43. The stream of claim 42, in which:
the indication is a program clock reference contained in the last packet proceeding each splice-out point; the first component is a video component and the splice-out points include splice-out points before each I-frame and P-frame in the video component.
- 44. A pair of related multimedia data streams of signals decodable in a physical device, the streams comprising:
each multimedia data stream including a video component of multiple packets; the video components including multiple seamless splice-in points and multiple seamless splice-out points, each video seamless splice-in point in one stream has a corresponding video seamless splice-out point in the other stream in approximately the same location; the locations of the video seamless splice-in and video seamless splice-out points being determinable; at each video seamless splice-in point in the one stream, an ending delay of the other stream at the corresponding video seamless splice-out point is at least the period of one video picture in the other stream less than the startup delay for the video component in the one stream at the video seamless splice-in point so that the one stream may be seamlessly spliced with the other stream at all video seamless splice-in points of the pair of streams.
- 45. The streams of claim 44, in which:
the streams are contained in the same signal at the input to an MPEG splicer.
- 46. The stream of claim 26 embodied as an electromagnetic signal decodable in at least one device that is adapted to present audio and video material to a user.
- 47. The stream of claim 37 embodied as an electromagnetic signal decodable in at least one device that is adapted to present audio and video material to a user.
- 48. The stream of claim 40 embodied as an electromagnetic signal decodable in at least one device that is adapted to present audio and video material to a user.
- 49. The stream of claim 42 embodied as an electromagnetic signal decodable in at least one device that is adapted to present audio and video material to a user.
- 50. The streams of claim 44 embodied as electromagnetic signals decodable in at least one device that is adapted to present audio and video material to a user.
- 51. A program data stream for controlling the operation of a physical device, the program stream containing a first program spliced to a second program, the program stream comprising:
multiple sequential portions of the program stream, each sequential portion including portions of a first medium component of the program stream and portions of a second medium component of the program stream; the portions of the program stream including: a first portion of the program stream wherein all the portions of the first media component are portions of the first program and all the portions of the second media component are portions of the first program; a second portion of the program stream that immediately follows the first portion of the program stream and wherein all the portions of the first media component are portions of the first program and all the portions of the second media component are portions of the second program; and a third portion of the program stream that immediately follows the second portion of the program stream and wherein all the portions of a first media component are portions of the second program and all the portions of the second media component are portions of the second program.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of provisional application No. 60/039,528 filed Mar. 3, 1997.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60039528 |
Mar 1997 |
US |
Continuations (1)
|
Number |
Date |
Country |
Parent |
09033730 |
Mar 1998 |
US |
Child |
10856227 |
May 2004 |
US |