IP Library Granted Patent US 9,288,263
Granted Patent B2
US 9,288,263 · App. 14/487,045 · Granted Mar 15, 2016

Two tier multiple sliding window mechanism for multidestination media applications

Inventor: Ravi U. Rajapakse (San Francisco, CA)
Assignee: Blackfire Research Corporation
H04L67/1095H04L1/08H04L29/06469H04L43/0829H04L45/586H04L65/4076H04L65/601H04L65/608H04L65/80H04L67/108H04L69/163H04L69/166H04L69/324H04N13/0048H04N13/0059H04N21/20H04N21/238H04N21/40H04N21/438
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 9,288,263
App. No.
14/487,045
Granted
Mar 15, 2016
Kind
B2
Abstract

Some media applications use media that contains multiple types of media components in it and media sources with access to this media must send each type of media component to one or more media rendering destination devices. Furthermore there may be multiple destinations that can receive a particular type of media component and the media must be received at each destination without losses. This invention describes a two tier packet buffer structure at the media source with primary and virtual packet buffers that ensures minimal memory use at the media source and minimal network use. Furthermore the use of a sliding window with each virtual packet buffer associated with each destination, independently keeps control and track of destination state, ensuring the correct receipt of media data at each destination.

Claims (17)

1. A system for sending data over an IP network to data rendering devices, comprising:

a packet-based data communication network;

a first plurality of one or more first data rendering devices that render data of a first data type and are configured to communicate with the data communication network;

a second plurality of one or more second data rendering devices that render data of a second data type that is different from the first data type and are configured to communicate with the data communication network; and

a data source configured to communicate with the data communication network and having access to a data stream comprising at least a plurality of data packets of the first data type and a plurality of data packets of the second data type, wherein each data packet of either data type comprises, a reference counter field and a unique packet sequence number;

wherein the data source further comprises a demultiplexer configured to separate the data stream into a first demultiplexed data stream comprising the plurality of data packets of the first data type and a second demultiplexed data stream comprising the plurality of data packets of the second data type;

wherein the data source further comprises a first primary packet buffer for holding data packets from the first demultiplexed data stream and a first plurality of virtual packet buffers each comprising a plurality of packet sequence number references corresponding to a plurality of data packets of the first data type that are contained in the first primary packet buffer, each virtual packet buffer of the first plurality of virtual packet buffers being associated with a specific one of the first plurality of data rendering devices;

wherein a first packet of the first data type is put in the first primary packet buffer and a packet sequence number reference to the first packet of the first data type is placed in each of the virtual packet buffers of the first plurality of virtual buffers, and the reference counter field of the first packet of the first data type is set to the number of the virtual packet buffers of the first plurality of virtual packet buffers that have a packet sequence number reference to the first packet of the first data type;

wherein the data source further comprises a second primary packet buffer for holding data packets from the second demultiplexed data stream of the second data type and a second plurality of virtual packet buffers each comprising a plurality of packet sequence number references corresponding to a plurality of data packets of the second data type that are contained in the second primary packet buffer, each virtual packet buffer of the second plurality of virtual packet buffers being associated with a specific only one of the second plurality of data rendering devices; and

wherein a first packet of the second data type is put in the second primary packet buffer and a packet sequence number reference to the first packet of the second data type is placed in each of the virtual packet buffers of the second plurality of virtual buffers, and the reference counter field of the first packet of the second data type is set to the number of the virtual packet buffers of the second plurality of virtual packet buffers that have a packet sequence number reference to the first packet of the second data type; and

wherein the first packet in the first each virtual packet buffer is sent to the corresponding data rendering device.

2. The system of claim 1 in which the data source receives from a first data rendering device a received number that is the highest consecutive packet sequence number in the packets it has received and;

wherein the data source removes references to all packets with a packet sequence number that is lower than or equal to the received number from the virtual packet buffer associated with the media data rendering device and decrementing the reference [[s]] counter field in each packet removed from the virtual packet buffer.

3. The system of claim 1 in which a first virtual packet buffer in the data source maintains a first packet index, referencing the first packet stored in the first virtual packet buffer, and maintains a next packet index referencing the next stored packet in the first virtual packet buffer that may be sent to the data rendering device [[s]] associated with the first virtual packet buffer; and

wherein the packet referenced by the next packet index is sent to the data rendering device associated with the first virtual packet buffer and the next packet index of the first virtual packet buffer is incremented after sending the packet.

4. The system of claim 3 wherein the first virtual packet buffer will not send the packet referenced by the next packet index if the size of the difference between the next packet index and the first packet index is larger than a window threshold.

5. The system of claim 1 wherein the primary packet buffer holds a reference to the packet data.

Assignments (3)
SECURITY INTEREST Recorded Sep 18, 2024
From: ROKU, INC.
To: CITIBANK, N.A.
Reel/Frame 068982/0377 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2021
From: BLACKFIRE RESEARCH CORPORATION
To: ROKU, INC.
Reel/Frame 055695/0161 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2015
From: RAJAPAKSE, RAVI
To: BLACKFIRE RESEARCH CORPORATION
Reel/Frame 036816/0146 →
Continuity (3)
Continuation 13561030 · Jul 28, 2012
Provisional Application 61512924 · Jul 29, 2011
Related Publication 20150071293A1 · Mar 12, 2015