CA2670688C

Content distribution and switching amongst data streams

Abstract

In lieu of merely forwarding different selected content including originally received decoder information (e.g., timing information) to a respective user for a newly selected data stream, a server modifies decoder information of a newly transmitted data stream in accordance with a previously transmitted stream (or a master clock associated with the user) such that respective decoder state information used to decode a first stream of content can also be used to decode a second stream of content. That is, the server encodes and transmits newly selected content to a requestor in accordance with current decoder state information already used by the requestor to decode previously received content. This enables splicing of content together from two or more asynchronous data streams into a single, contiguous data stream even though the data streams originate with different sets of timing information.

CA2670688C, drawing sheet 1
Sheet 1 of 13

Term

1.2 yearsleft in the term

Expires 28 November 2027.

  1. Priority
  2. Filed
  3. Granted
  4. Today
  5. Expires

30 claims: 30 independent, 0 dependent

  1. 1
    CA 02670688 2011-10-12 What is claimed is:1. A method comprising: receiving a first content stream on a first channel as a first sequence of multiplexed transport packets, the first content stream having first decoding information based on first timing information generated from a first master clock;receiving a second content stream on a second channel as a second sequence of multiplexed transport packets, the second content stream having second decoding information based on second timing information generated from a second master clock, wherein the first master clock is asynchronous with respect to the second master clock;transmitting the first content stream in an outputted data stream;receiving a command from a recipient of the outputted data stream, the command including a request to switch the outputted data stream from the first channel to the second channel;modifying the second decoding information in the second sequence of multiplexed transport packets in the second content stream to synchronize the second timing information with the first master clock;and transmitting the second content stream in accordance with the modified second decoding information in the outputted data stream to enable seamless play back of the outputted data stream by the recipient.
  2. 2
    A method as in claim 1 further comprising:buffering the first content stream in a first buffer, and buffering the second content stream in a second buffer.
  3. 3
    A method as in claim 2, wherein the modifying of the second decoding information includes modifying the second timing information in the second buffer to synchronize the second timing information with the first master clock.
  4. 4
    A method as in claim 1, wherein the modifying of the second decoding information prevents the recipient from having to abandon synchronization with respect CA 02670688 2011-10-12 to the content from the first content stream and resynchronize with the content from the second content stream.
  5. 5
    A method as in claim 4, wherein the modifying of the second decoding information includes modifying timing information associated with the content from the second content stream, the modified timing information associated with the content from the second content stream used by the corresponding remote recipient to receive the content from the second content stream even though the first content stream and the second content stream are originated to have independent timing information with respect to each other.
  6. 6
    A method as in claim 5, wherein the modifying of the timing information includes modifying the timing information associated with the content from the second content stream based at least in part on a location of a frame associated with the second content stream.
  7. 7
    A method as in claim 1 further comprising:swapping the second decoding information associated with the content from the second content stream with the modified second decoding information to enable the recipient to seamlessly decode and play back the content from the second content stream after decoding and playing back the content from the first content stream.
  8. 8
    A method as in claim 1 further comprising:updating the modified second decoding information in the outputted data stream at multiple locations of the outputted data stream, recovery of the modified second decoding information in the outputted data stream enabling the recipient to playback the content from the second content stream,
  9. 9
    A method as in claim 1 further comprising:maintaining a repository that stores a respective window of most recently received streamed content for each of the first content stream and the second content stream, the CA 02670688 2011-10-12 respective window of content being wide enough to store at least two corresponding anchor frames from each of the first content stream and the second content stream.
  10. 10
    A method as in claim 9 furflier comprising:utilizing a time offset between a content frame in the first content stream and a content frame in the second content stream to adjust the decoding information associated with the outputted data stream for purposes of enabling seamless playback of the outputted data stream without the recipient having to resynchronize itself with the second decoding information associated with the content from the second content stream.
  11. 11
    A method as in claim 1, wherein receiving the command occurs in response to a respective user at the recipient initiating a channel change on a respective media player to view the content associated with the second content stream in lieu of viewing the content from the first content stream.
  12. 12
    A method as in claim 1 further comprising:receiving data on the first channel and the second channel over a network;and utilizing an MPEG (Moving Pictures Expert Group) type of protocol to convert the received data to multiple asynchronous content streams including the first content stream and the second content stream.
  13. 13
    A method as in claim 11, wherein the modifying of the second decoding information enables the recipient to seamlessly.decode the outputted data stream including the content associated with the first content stream and the content associated with the second content stream without reacquiring synchronization even though the first content stream and the second content stream are received as asynchronous content streams with respect to each other.
  14. 14
    A method comprising:generating an outputted data stream to include content from a first content stream of multiple asynchronous content streams on multiple channels, the content from the first CA 02670688 2011-10-12 content stream associated with a first channel as a first sequence of multiplexed transport packets, and having first decoding information based on first timing information generated from a first master clock and enabling a corresponding remote recipient over a network to decode the data stream and play back the content from the first content stream;receiving a command from a recipient of the outputted data stream, the command including a request to switch the outputted data stream from the first channel to a second channel;modifying second decoding information, based on second timing information generated from a second master clock that is asynchronous with respect to the first master clock, in the second content stream to synchronize the second timing information with the first master clock, the second content stream associated with the second channel as a second sequence of multiplexed transport packets, wherein the modifying of the second decoding information is in the second sequence of multiplexed transport packets in the second content stream;and transmitting the second content stream, in accordance with the modified second decoding information, in the outputted data stream to enable the corresponding remote recipient to seamlessly decode the content in from the second content stream using decoder state information used by the corresponding remote recipient to decode the first content stream. 15, A method as in claim 14, wherein the modifying of the second decoding information includes modifying timing information associated with the data stream, the timing information enabling the corresponding recipient to lock onto and play back the outputted data stream, which is an MPEG (Moving Pictures Expert Group) encoded data stream.
  15. 15
    16. A method as in claim 15, wherein modifying the timing information includes modifying the timing information associated with the data stream based at least in part on a time offset representing a time delay between an I-frame in the first content stream and an I-frame in the second content stream. CA 02670688 2011-10-12
  16. 16
    17. A method as in daim 16, wherein receiving the command occurs in response to a respective user at the corresponding remote recipient initiating a channel change on a respective media player to view the content associated with the second content stream in lieu of the content from the first content stream.
  17. 17
    18. A method as in claim 17 further comprising:maintaining a repository that stores a respective window of most recently received streamed content for each of the multiple asynchronous content streams, the respective window of content being wide enough to store at least two corresponding I-frames from each of the multiple asynchronous content streams.
  18. 18
    19. An apparatus comprising:buffers to at least temporarily store a respective window of most recently received streamed content for each of multiple asynchronous content streams on multiple channels including a first content stream associated with a first channel as a first sequence of multiplexed transport packets, and having first decoding information based on first timing information generated from a first master clock and a second content stream associated with a second channel as a second sequence of multiplexed transport packets, and having second decoding information based on second timing information generated from a second master clock, the first master clock being asynchronous with respect to the second master clock;a data stream manager that transmits content from the first content stream in an outputted data stream and, in response to receiving a command, thereafter transmits content from the second content stream in the outputted data stream in lieu of transmitting the content from the first content stream in the oulputted data stream;and the data stream manager modifying the second timing information in the second sequence of multiplexed transport packets in the second content stream to synchronize the second timing information with the first master clock, and enable a recipient of the outputted data stream to seamlessly play back the outputted data stream based on same CA 02670688 2011-10-12 decoder state information that is used to decode both the content from the first content stream and the content from the second content stream in the outputted data stream.
  19. 19
    20. An apparatus as in claim 19, wherein each of the buffers stores a respective window of content including at least two corresponding content frames associated with a corresponding stored content stream.
  20. 20
    21. An apparatus as in claim 19 further comprising:a repository to store switchover information indicating timing correction information indicating how to modify the timing information associated with the content from the second content stream.
  21. 21
    22. An apparatus as in claim 21, wherein the switchover information further identifies a readpoint from which to retrieve data from a respective buffer storing the second content stream.
  22. 22
    23. An apparatus as in claim 22, wherein the readpoint indicates a location of an Iframe in the respective buffer.
  23. 23
    24. A computer system comprising:a processor;a memory unit that stores instructions associated with an application executed by the processor;and an interconnect coupling the processor and the memory unit, enabling the Computer system to execute the application and perform operations of: receiving a first content stream on a first channel as a first sequence of multiplexed transport packets, the first content stream having first decoding information based on first timing information generated from a first master clock;receiving a second content stream on a second channel as a second sequence of multiplexed transport packets, the second content stream having second decoding information based on second timing information generated from a second CA 02670688 2011-10-12 master clock, wherein the first master clock is asynchronous with respect to the second master clock;transmitting the first content stream in an outputted data stream;receiving a command from a recipient of the outputted data stream, the command including a request to switch the outputted data stream from the first channel to a second channel;modifying the second decoding information in the second sequence of multiplexed transport packets in the second content stream to synchronize the second timing information with the first master clock;and transmitting the second content stream in accordance with the modified second decoding information in the outputted data stream to enable seamless play back of the outputted data stream by the recipient,
  24. 24
    25. A computer system as In claim 24 further supporting operations of:buffering the first content stream in a first buffer;and buffering the second content stream in a second buffer.
  25. 25
    26. A computer system as in claim 25, wherein the modifying of the second decoding information includes modifying the second timing information in the second buffer to synchronize the second timing information with the first master clock.
  26. 26
    27. A computer system as in claim 24, wherein the modifying of the second decoding information prevents the recipient from having to abandon synchronization with respect to the content from the first content stream and resynchronise with the content from the second content stream.
  27. 27
    28. A computer system as in claim 24, wherein the modifying of the second decoding information includes modifying the timing information associated with the content from the second content stream based at least in part on time correction information representing at least in part a time difference between respective master clocks generating the first content stream and the second content stream. CA 02670688 2011-10-12
  28. 28
    29. A computer system as in claim 24 further supporting operations of:swapping the second decoding information associated with the content from the second content stream with the modified second decoding information to enable the recipient to seamlessly decode and play back the content from the second content stream after decoding and playing back the content from the first content stream.
  29. 29
    30. A computer system as in claim 24 further supporting operations of:maintaining a repository of buffers that store a respective window of most recently received streamed content for each of the first content stream and the second content stream, the respective window of content being wide enough to store at least two corresponding anchor frames from each of the first content stream and the second content stream.
  30. 30
    31. A computer system as in claim 24, wherein receiving the command occurs in response to a respective user at the recipient initiating a channel change on a respective media player to view the content associated with the second content stream in lieu of viewing the content from the first content stream.
Independent claims30