IP Library Granted Patent US 10,523,985
Granted Patent B2
US 10,523,985 · App. 15/368,527 · Granted Dec 31, 2019

Managing deep and shallow buffers in a thin-client device of a digital media distribution network

Inventors: Bert Visscher (Hilversum, NL); Gerrit Hiddink (Amersfoort, NL); Maarten Hoeben (Amersfoort, NL)
Assignee: ACTIVEVIDEO NETWORKS, INC.
H04N21/23892H04N21/234H04N21/23406H04N21/23614H04N21/234309H04N21/4316H04N21/44H04N21/44004H04N21/4622H04N21/4821H04N21/637H04N21/8455
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,523,985
App. No.
15/368,527
Granted
Dec 31, 2019
Kind
B2
Abstract

A client device receives, from a server, first content directed to a first buffer in the client device and second content directed to a second buffer in the client device. The second buffer is deeper than the first buffer. The client device buffers the first content in the first buffer and buffers the second content in the second buffer. At least a portion of the second content is buffered in the second buffer simultaneously with buffering the first content in the first buffer. The client device selects between the first content in the first buffer and the second content in the second buffer, and provides the selected content for display.

Claims (76)

1. A method, comprising, at a client device:

receiving, from a server, first content that includes a first set of packets of video data directed to a first buffer in the client device, wherein the first content comprises a video segment of the first set of packets of video data;

receiving, from the server, second content directed to a second buffer in the client device, wherein:

the second content includes a second set of packets of video data,

the second set of packets of video data includes the first set of packets of the video data,

the second content includes an initial set of packets of video data of the video segment, and

the second buffer is deeper than the first buffer;

buffering the first content in the first buffer;

buffering the second content in the second buffer, wherein at least a portion of the second content is buffered in the second buffer substantially simultaneously with buffering the first content in the first buffer;

selecting the first buffer as a content source before output emerges from the second buffer;

detecting whether the second buffer satisfies a fullness criterion;

in accordance with a determination that the second buffer satisfies the fullness criterion, switching from selecting the first buffer having the first content that includes the first set of packets of video data as the content source to selecting the second buffer having the second content that includes the first set of packets of the video data as the content source; and

providing the selected content for display.

2. The method of claim 1 , wherein the server is an interactive-television server and the client device is a set-top box.

3. The method of claim 1 , wherein the first buffer and the second buffer comprise distinct first-in, first-out (FIFO) queues.

4. The method of claim 1 , wherein a depth of the second buffer is at least ten times greater than a depth of the first buffer.

5. The method of claim 1 , wherein the selecting comprises multiplexing outputs of the first and second buffers using a buffer selector.

6. The method of claim 1 , further comprising, at the client device, receiving commands from the server;

wherein the selecting is performed in accordance with the commands.

7. The method of claim 6 , wherein:

the commands are received from a virtual set-top application, running on the server, that corresponds to the client device;

the method further comprises, at the client device, running a virtual set-top local client that receives the commands from the virtual set-top application; and

the virtual set-top local client performs the selecting.

8. The method of claim 1 , wherein:

the first content comprises a still-frame user-interface element; and

the second content comprises multi-frame video.

9. The method of claim 8 , further comprising, at the client device:

receiving a user input corresponding to the still-frame user-interface element; and

in response to the user input, send a command to the server requesting the still-frame user-interface element; wherein:

the still-frame user-interface element is received from the server in response to the command; and

the selecting the first buffer as the content source comprises selecting the first buffer as a content source when the still-frame user-interface element is available in the first buffer.

10. The method of claim 8 , wherein the still-frame user-interface element comprises a menu-item graphic.

11. The method of claim 1 , wherein:

the first content comprises a video segment corresponding to a video program; and

the second content comprises a preview of the video program.

12. The method of claim 1 , wherein:

receiving and buffering the first content comprise receiving and buffering individually transmitted frames; and

receiving and buffering the second content comprise receiving and buffering a single transmission of multiple frames.

13. The method of claim 1 , wherein switching from selection of the first buffer as the content source to selection of the second buffer as the content source comprises switching on an I-frame of the video segment;

wherein switching from selection of the first buffer as the content source to selection of the second buffer as the content source is suppressed on frames that are not I-frames.

14. The method of claim 1 , further comprising synchronizing the first content and the second content using program time stamps.

15. The method of claim 1 , wherein:

receiving the second content comprises receiving a damaged packet;

buffering the second content comprises buffering the damaged packet in the second buffer;

receiving the first content comprises receiving an undamaged replacement packet for the damaged packet;

buffering the first content comprises buffering the undamaged replacement packet in the first buffer; and

the method further comprises swapping out the damaged packet with the undamaged replacement packet when the damaged packet emerges from the second buffer.

16. A client device, comprising:

one or more processors; and

memory storing one or more programs for execution by the one or more processors, the one or more programs including instructions for:

receiving, from a server, first content that includes a first set of packets of video data directed to a first buffer in the client device, wherein the first content comprises a video segment of the first set of packets of video data;

receiving, from the server, second content directed to a second buffer in the client device, wherein:

the second content includes a second set of packets of video data,

the second set of packets of video data includes the first set of packets of the video data,

the second content includes an initial set of packets of video data of the video segment, and

the second buffer is deeper than the first buffer;

buffering the first content in the first buffer;

buffering the second content in the second buffer, wherein at least a portion of the second content is buffered in the second buffer substantially simultaneously with buffering the first content in the first buffer;

selecting the first buffer as a content source before output emerges from the second buffer;

detecting whether the second buffer satisfies a fullness criterion;

in accordance with a determination that the second buffer satisfies the fullness criterion, switching from selecting the first buffer having the first content that includes the first set of packets of video data as the content source to selecting the second buffer having the second content that includes the first set of packets of the video data as the content source; and

providing the selected content for display.

17. A non-transitory computer-readable storage medium, storing one or more programs configured for execution by one or more processors of a client device, the one or more programs including instructions for:

receiving, from a server, first content that includes a first set of packets of video data directed to a first buffer in the client device, wherein the first content comprises a video segment of the first set of packets of video data;

receiving, from the server, second content directed to a second buffer in the client device, wherein:

the second content includes a second set of packets of video data,

the second set of packets of video data includes the first set of packets of the video data,

the second content includes an initial set of packets of video data of the video segment, and

the second buffer is deeper than the first buffer;

buffering the first content in the first buffer;

buffering the second content in the second buffer, wherein at least a portion of the second content is buffered in the second buffer substantially simultaneously with buffering the first content in the first buffer;

selecting the first buffer as a content source before output emerges from the second buffer;

detecting whether the second buffer satisfies a fullness criterion;

in accordance with a determination that the second buffer satisfies the fullness criterion, switching from selecting the first buffer having the first content that includes the first set of packets of video data as the content source to selecting the second buffer having the second content that includes the first set of packets of the video data as the content source; and

providing the selected content for display.

18. The method of claim 1 , wherein the content selected from the first buffer is displayed with a lower latency than the content selected from the second buffer.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2026
From: ACTIVEVIDEO NETWORKS, LLC
To: CCH I HOLDINGS, LLC
Reel/Frame 074039/0804 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2026
From: CCH I HOLDINGS, LLC
To: CHARTER COMMUNICATIONS OPERATING LLC
Reel/Frame 074039/0913 →
CONFIRMATORY ASSIGNMENT Recorded Mar 26, 2024
From: VISSCHER, BERT; HIDDINK, GERRIT WILLEM; HOEBEN, MAARTEN
To: ACTIVEVIDEO NETWORKS, LLC
Reel/Frame 066910/0732 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2018
From: VISSCHER, BERT; HIDDINK, GERRIT; HOEBEN, MAARTEN
To: ACTIVEVIDEO NETWORKS, INC.
Reel/Frame 044975/0362 →
Continuity (4)
Continuation In Part 14757935 · Dec 23, 2015
Provisional Application 62263551 · Dec 4, 2015
Provisional Application 62096790 · Dec 24, 2014
Related Publication 20170085928A1 · Mar 23, 2017