# US 10,313,734 B1 · Switching content

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,313,734 B1
- Document ID: US10313734B1
- Status: Granted
- Kind: B1
- Application number: 14/883,533
- Filed: 2015-10-14
- Granted: 2019-06-04
- Earliest claimed: 2009-03-23
- Assignees: Conviva Inc.
- Applicants: Conviva Inc.
- Inventors: Ningning Hu; John W. Heffner; Mei-Hsuan Lu; Aditya Ravikumar Ganjam; Ion Stoica
- Web page: https://patentgrep.com/patent/US10313734B1

## CPC

- H04H 20/10: Arrangements for replacing or switching information during the broadcast or the distribution
- H04N 5/268: Signal distribution or switching
- H04N 21/20: Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N 21/2187: Live feed
- H04N 21/222: Secondary servers, e.g. proxy server, cable television Head-end {(provisioning of proxy services in data packet switching networks H04L67/56)}
- H04N 21/234: Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N 21/40: Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N 21/4302: {Content synchronisation processes, e.g. decoder synchronisation}
- H04N 21/43072: {of multiple content streams on the same device}
- H04N 21/4438: {Window management, e.g. event handling following interaction with the user interface}
- H04N 21/4622: {Retrieving content or additional data from different sources, e.g. from a broadcast channel and the Internet (web site content organization and management for information retrieval from the Internet G06F16/958; transmission by internet of broadcast information H04H60/82; stock exchange data over packet-switching network H04L12/1804; push services including data channel over packet-switching network H04L12/1859)}
- H04N 21/631: {Multimode Transmission, e.g. transmitting basic layers and enhancement layers of the content over different transmission paths or transmitting with different error corrections, different keys or with different transmission protocols}
- H04N 21/8455: {involving pointers to the content, e.g. pointers to the I-frames of the video stream}
- H04N 21/8456: {by decomposing the content in the time domain, e.g. in time segments}
- H04H: BROADCAST COMMUNICATION (multiplex communication H04J; pictorial communication aspects of broadcast systems H04N)
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

Displaying video on a video display device is disclosed. A first video stream from a first video streaming source is displayed on the display device. A second video stream from a second video streaming source is processed on the display device without displaying the second video stream. Displaying the first video stream is ceased and instead the second video stream is displayed. Supporting operations on a video stream is also disclosed. At least one video chunk is received at a first granularity. A determination is made that an operation is to be performed at a different granularity. At least one video chunk is requested at the different granularity.

## Claims

### Claim 1

A system, comprising:
one or more computer processors configured to:
display, using a first instance of a video player, a first video stream from a first remote video streaming source;
while the first video stream is being displayed using the first instance of the video player in a first region of a display, process, by a second instance of the video player, a second video stream from a second remote video streaming source, wherein the processing performed by the second instance of the video player while the first video stream is being displayed using the first instance of the video player includes establishing a network connection with the second remote video streaming source and fetching video chunks from the second remote video streaming source;
cease display of the first video stream in the first region of the display and instead display, in the first region of the display, the second video stream at least in part by switching from playing a video chunk from the first video stream by the first instance of the video player to playing, by the second instance of the video player, a video chunk that was fetched from the second remote video streaming source while the first video stream was being displayed; and
subsequent to the switching, receive, by the second instance of the video player via the established network connection, additional video chunks from the second remote video streaming source;
while the second video stream is being displayed in the first region of the display using the second instance of the video player, process, by the first instance of the video player, a third video stream from a third remote video streaming source, wherein the processing performed by the first instance of the video player while the second video stream is being displayed in the first region of the display using the second instance of the video player includes establishing a network connection with the third remote video streaming source and fetching video chunks from the third remote video streaming source;
cease display of the second video stream in the first region of the display and instead display the third video stream at least in part by switching from playing a video chunk from the second video stream by the second instance of the video player to playing, by the first instance of the video player, a video chunk that was fetched from the third remote video streaming source while the second video stream was being displayed; and
a memory coupled to the one or more computer processors and configured to provide the one or more computer processors with instructions.

### Claim 2 (depends on 1)

The system of claim 1 wherein displaying the first video stream comprises sequentially rendering one or more video chunks in a first set of video chunks obtained from the first remote video streaming source.

### Claim 3 (depends on 1)

The system of claim 1 wherein the one or more computer processors are further configured to determine a switching point between the first and second video streams.

### Claim 4 (depends on 3)

The system of claim 3 wherein the video chunk switching is performed according to the determined switching point.

### Claim 5 (depends on 3)

The system of claim 3 wherein determining the switching point between the first and second video streams includes determining a time offset.

### Claim 6 (depends on 5)

The system of claim 5 wherein the display of the second video stream is adjusted according to the time offset to reduce any perceived discontinuity that might result from switching from the first video stream to the second video stream.

### Claim 7 (depends on 5)

The system of claim 5 wherein the time offset is derived from a first and second cue point included in the respective first and second video streams.

### Claim 8 (depends on 5)

The system of claim 5 wherein the time offset is determined by matching a signature in the first and second video streams.

### Claim 9 (depends on 8)

The system of claim 8 wherein the signature is based at least in part on a sequence of compressed frame sizes.

### Claim 10 (depends on 8)

The system of claim 8 wherein the signature is based at least in part on a decompressed frame bitmap.

### Claim 11 (depends on 1)

The system of claim 1 wherein the one or more computer processors are configured to process the second video stream in a hidden video player.

### Claim 12 (depends on 1)

The system of claim 1 wherein the first video stream is a live video stream and wherein the one or more computer processors are configured to process the second video stream by adjusting a buffer length.

### Claim 13 (depends on 1)

The system of claim 1 wherein the first video stream is a video-on-demand video stream and wherein the one or more computer processors are configured to process the second video stream by performing a series of pause and resume actions.

### Claim 14 (depends on 1)

The system of claim 1 wherein the first video stream is received via a first protocol and wherein the second video stream is received via a second protocol and wherein the first and second protocols are different.

### Claim 15 (depends on 1)

The system of claim 1 wherein one of the first video stream and second video stream is unencrypted and wherein the other of the first video stream and second video stream is encrypted.

### Claim 16 (depends on 1)

The system of claim 1 wherein the first video stream and second video stream are both provided by a single network node.

### Claim 17 (depends on 1)

The system of claim 1 wherein the first video stream and second video stream are respectively provided by two different network nodes.

### Claim 18 (depends on 1)

The system of claim 1 wherein the first video stream is streamed at a first bitrate and the second video stream is streamed at a second bitrate and wherein the first and the second bitrate are different.

### Claim 19

A method, comprising:
displaying, using a first instance of a video player, a first video stream from a first remote video streaming source;
while the first video stream is being displayed using the first instance of the video player in a first region of a display, processing, by a second instance of the video player and using one or more computer processors, a second video stream from a second remote video streaming source, wherein the processing performed by the second instance of the video player while the first video stream is being displayed using the first instance of the video player includes establishing a network connection with the second remote video streaming source and fetching video chunks from the second remote video streaming source;
ceasing display of the first video stream in the first region of the display and instead displaying, in the first region of the display, the second video stream at least in part by switching from playing a video chunk from the first video stream by the first instance of the video player to playing, by the second instance of the video player, a video chunk that was fetched from the second remote video streaming source while the first video stream was being displayed; and
subsequent to the switching, receiving, by the second instance of the video player via the established network connection, additional video chunks from the second remote video streaming source;
while the second video stream is being displayed in the first region of the display using the second instance of the video player, processing, by the first instance of the video player, a third video stream from a third remote video streaming source, wherein the processing performed by the first instance of the video player while the second video stream is being displayed in the first region of the display using the second instance of the video player includes establishing a network connection with the third remote video streaming source and fetching video chunks from the third remote video streaming source; and
ceasing display of the second video stream in the first region of the display and instead displaying the third video stream at least in part by switching from playing a video chunk from the second video stream by the second instance of the video player to playing, by the first instance of the video player, a video chunk that was fetched from the third remote video streaming source while the second video stream was being displayed.

### Claim 20 (depends on 19)

The method of claim 19 wherein displaying the first video stream comprises sequentially rendering one or more video chunks in a first set of video chunks obtained from the first remote video streaming source.

### Claim 21 (depends on 19)

The method of claim 19 further comprising determining a switching point between the first and second video streams.

### Claim 22 (depends on 21)

The method of claim 21 wherein the video chunk switching is performed according to the determined switching point.

### Claim 23 (depends on 21)

The method of claim 21 wherein determining the switching point between the first and second video streams includes determining a time offset.

### Claim 24 (depends on 23)

The method of claim 23 wherein the display of the second video stream is adjusted according to the time offset to reduce any perceived discontinuity that might result from switching from the first video stream to the second video stream.

### Claim 25 (depends on 23)

The method of claim 23 wherein the time offset is derived from a first and second cue point included in the respective first and second video streams.

### Claim 26 (depends on 23)

The method of claim 23 wherein the time offset is determined by matching a signature in the first and second video streams.

### Claim 27 (depends on 26)

The method of claim 26 wherein the signature is based at least in part on a sequence of compressed frame sizes.

### Claim 28 (depends on 26)

The method of claim 26 wherein the signature is based at least in part on a decompressed frame bitmap.

### Claim 29 (depends on 19)

The method of claim 19 further comprising processing the second video stream in a hidden video player.

### Claim 30 (depends on 19)

The method of claim 19 wherein the first video stream is a live video stream and wherein the one or more computer processors are configured to process the second video stream by adjusting a buffer length.

### Claim 31 (depends on 19)

The method of claim 19 wherein the first video stream is a video-on-demand video stream and further comprising processing the second video stream by performing a series of pause and resume actions.

### Claim 32 (depends on 19)

The method of claim 19 wherein the first video stream is received via a first protocol and wherein the second video stream is received via a second protocol and wherein the first and second protocols are different.

### Claim 33 (depends on 19)

The method of claim 19 wherein one of the first video stream and second video stream is unencrypted and wherein the other of the first video stream and second video stream is encrypted.

### Claim 34 (depends on 19)

The method of claim 19 wherein the first video stream and second video stream are both provided by a single network node.

### Claim 35 (depends on 19)

The method of claim 19 wherein the first video stream and second video stream are respectively provided by two different network nodes.

### Claim 36 (depends on 19)

The method of claim 19 wherein the first video stream is streamed at a first bitrate and the second video stream is streamed at a second bitrate and wherein the first and the second bitrate are different.

### Claim 37

A computer program product embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
displaying, using a first instance of a video player, a first video stream from a first remote video streaming source;
while the first video stream is being displayed using the first instance of the video player in a first region of a display, processing, by a second instance of the video player and using one or more computer processors, a second video stream from a second remote video streaming source, wherein the processing performed by the second instance of the video player while the first video stream is being displayed using the first instance of the video player includes establishing a network connection with the second remote video streaming source and fetching video chunks from the second remote video streaming source;
ceasing display of the first video stream in the first region of the display and instead displaying, in the first region of the display, the second video stream at least in part by switching from playing a video chunk from the first video stream by the first instance of the video player to playing, by the second instance of the video player, a video chunk that was fetched from the second remote video streaming source while the first video stream was being displayed; and
subsequent to the switching, receiving, by the second instance of the video player via the established network connection, additional video chunks from the second remote video streaming source;
while the second video stream is being displayed in the first region of the display using the second instance of the video player, processing, by the first instance of the video player, a third video stream from a third remote video streaming source, wherein the processing performed by the first instance of the video player while the second video stream is being displayed in the first region of the display using the second instance of the video player includes establishing a network connection with the third remote video streaming source and fetching video chunks from the third remote video streaming source; and
ceasing display of the second video stream in the first region of the display and instead displaying the third video stream at least in part by switching from playing a video chunk from the second video stream by the second instance of the video player to playing, by the first instance of the video player, a video chunk that was fetched from the third remote video streaming source while the second video stream was being displayed.
