# US 11,445,229 B2 · Managing deep and shallow buffers in a thin-client device of a digital media distribution network

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

- Number: US 11,445,229 B2
- Document ID: US11445229B2
- Status: Granted
- Kind: B2
- Application number: 16/697,073
- Filed: 2019-11-26
- Published: 2020-03-26
- Granted: 2022-09-13
- Earliest claimed: 2014-12-24
- Assignees: Active Video Networks, Inc.
- Applicants: Activevideo Networks, Inc.
- Inventors: Bert Visscher; Gerrit Hiddink; Maarten Hoeben
- Web page: https://patentgrep.com/patent/US11445229B2

## CPC

- H04N 21/23892: {involving embedding information at multiplex stream level, e.g. embedding a watermark at packet level}
- H04N 21/234: Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N 21/23406: {involving management of server-side video buffer}
- H04N 21/234309: {by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo (conversion of standards in analog television systems H04N7/01)}
- H04N 21/23614: {Multiplexing of additional data and video streams (arrangements for simultaneous broadcast of plural pieces of information H04H20/28)}
- H04N 21/4316: {for displaying supplemental content in a region of the screen, e.g. an advertisement in a separate window}
- H04N 21/44: Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N 21/44004: {involving video buffer management, e.g. video decoder buffer or video display buffer}
- 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/4821: {using a grid, e.g. sorted out by channel and broadcast time}
- H04N 21/637: Control signals issued by the client directed to the server or network components
- H04N 21/6377: directed to server {(one-way streaming services wherein the source is controlled by the destination H04L65/613)}
- H04N 21/6587: Control parameters, e.g. trick play commands, viewpoint selection
- H04N 21/8455: {involving pointers to the content, e.g. pointers to the I-frames of the video stream}
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## 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 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 substantially simultaneously with buffering the first content in the first buffer. The client device receives a command from a virtual set-top application, running on the server, that corresponds to the client device. The client device runs a virtual set-top local client that receives the command from the virtual set-top application and selects the first buffer as a content source. The selecting is performed in accordance with the command. The client device provides the selected content for display.

## Claims

### Claim 1

A method, comprising, at a client device:
receiving, from a server, first content that includes one or more user-interface elements directed to a first buffer in the client device;
receiving, from the server, second content that includes video content directed to a second buffer in the client device;
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;
running a virtual set-top local client that receives commands from a virtual set-top application, wherein the virtual set-top application controls assembly of content from the first and second buffers for the client device;
receiving, at the virtual set-top local client, a command to insert one or more user-interface elements, from the first buffer, between one or more frames that are stored in the second buffer, from the virtual set-top application, running on the server, that corresponds to the client device; and
selecting, by the virtual set-top local client, the first buffer as a content source, wherein the selecting is performed in accordance with the command received from the virtual set-top application; and
providing the selected content for display.

### Claim 2 (depends on 1)

The method of claim 1, wherein the one or more user-interface elements are directed to the first buffer in the client device in accordance with a determination by the virtual set-top application that the one or more user-interface elements satisfy a first size threshold.

### Claim 3 (depends on 1)

The method of claim 1, wherein the video content is directed to the second buffer in the client device in accordance with a determination by the virtual set-top application that the video content satisfies a second size threshold.

### Claim 4 (depends on 1)

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

### Claim 5 (depends on 1)

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.

### Claim 6 (depends on 1)

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

### Claim 7 (depends on 1)

The method of claim 1, wherein:
the first content comprises a still-frame user-interface element; and
the second content comprises multi-frame video.

### Claim 8 (depends on 7)

The method of claim 7, further comprising, at the client device:
receiving a user input corresponding to the still-frame user-interface element; and
in response to receiving the user input, sending a second 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 second 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.

### Claim 9 (depends on 7)

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

### Claim 10 (depends on 1)

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 an undamaged replacement packet for the damaged packet;
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.

### Claim 11

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 one or more user-interface elements directed to a first buffer in the client device;
receiving, from the server, second content that includes video content directed to a second buffer in the client device; 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;
running a virtual set-top local client that receives commands from a virtual set-top application, wherein the virtual set-top application controls assembly of content from the first and second buffers for the client device;
receiving, at the virtual set-top local client, a command to insert one or more user-interface elements, from the first buffer, between one or more frames that are stored in the second buffer, from the virtual set-top application, running on the server, that corresponds to the client device; and
selecting, by the virtual set-top local client, the first buffer as a content source, wherein the selecting is performed in accordance with the command received from the virtual set-top application; and
providing the selected content for display.

### Claim 12

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 one or more user-interface elements directed to a first buffer in the client device;
receiving, from the server, second content that includes video content directed to a second buffer in the client device; 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;
running a virtual set-top local client that receives commands from a virtual set-top application, wherein the virtual set-top application controls assembly of content from the first and second buffers for the client device;
receiving, at the virtual set-top local client, a command to insert one or more user-interface elements, from the first buffer, between one or more frames that are stored in the second buffer, from the virtual set-top application, running on the server, that corresponds to the client device; and
selecting, by the virtual set-top local client, the first buffer as a content source, wherein the selecting is performed in accordance with the command received from the virtual set-top application; and
providing the selected content for display.
