IP Library › Granted Patent US 8,630,512
Granted Patent B2
US 8,630,512 · App. 12/020,361 · Granted Jan 14, 2014

Dynamic client-server video tiling streaming

Inventors: Erik R. Swenson (San Jose, CA); Nitin Bhandari (Fremont, CA); Vijay Kumar (Santa Clara, CA)
Assignee: Skyfire Labs, Inc.
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 8,630,512
App. No.
12/020,361
Granted
Jan 14, 2014
Kind
B2
Abstract

A system and a method for communicating video data associated with content across a network are disclosed. A server partitions the content into a plurality of tiles where each tile includes a subset of the content and index data describing a relationship between a tile and one or more adjacent tiles. Each tile is then encoded as a video frame, for example each tile is encoded according to the H.264 standard. The plurality of tiles are then transmitted to a client which combines the plurality of tiles using the index data to locally recreate the content. The client associates a predetermined viewport tile with a client viewport representing the area of the content that is visible in a client display device to allow viewing of the content while tiles not associated with the client viewport are cached to expedite subsequent retrieval.

Claims (47)

1. A method for communicating content across a network using video frames, the method comprising:

partitioning the content into a plurality of tiles, each tile including a subset of the content and index data describing a relationship between a tile and one or more adjacent tiles;

encoding the content associated with each tile in the plurality of tiles as a reference frame;

transmitting the plurality of encoded tiles to a client to allow the client to combine the plurality of encoded tiles using the index data;

responsive to a modification to the content associated with a tile, generating a difference frame, the difference frame describing the modification to the content associated with the tile in relation to the reference frame;

comparing a storage size of the difference frame to a threshold specifying a maximum storage size of the difference frame;

responsive to the storage size of the difference frame being less than the threshold, transmitting the index data of the tile whose content has been modified and the difference frame to the client, the client configured to combine the difference frame with the reference frame associated with the tile identified by the index data; and

responsive to the storage size of the difference frame being greater than the threshold,

generating a replacement reference frame, the replacement reference frame including the modified content associated with the tile, and

transmitting the index data of the tile whose content has been modified and the replacement reference frame to the client to allow the client to combine the replacement reference frame with one or more of the plurality of encoded tiles using the index data.

2. The method of claim 1 , wherein the index data further comprises a tile identifier, a tile height and width, or clipping data, the clipping data describing editing of the content to not exceed the tile height and width.

3. The method of claim 1 , wherein partitioning the content into a plurality of tiles comprises:

segmenting the content into a grid, the grid comprising a plurality of tiles having a fixed height and width and each tile adjacent to one or more surrounding tiles.

4. The method of claim 1 , further comprising:

caching the reference frame associated with each tile in the plurality of tiles.

5. The method of claim 1 , further comprising:

caching the difference frame and the index data associating the difference frame with the reference frame including the modification to content.

6. A non-transitory computer-readable storage medium configured to store instructions for communicating content across a network using video frames, the instructions when executed by a processor causing the processor to:

partition the content into a plurality of tiles, each tile including a subset of the content and index data describing a relationship between a tile and one or more adjacent tiles;

encode the content associated with each tile in the plurality of tiles as a reference frame;

transmit the plurality of encoded tiles to a client to allow the client to combine the plurality of encoded tiles using the index data;

responsive to a modification to the content associated with a tile, generate a difference frame, the difference frame describing the modification to the content associated with the tile in relation to the reference frame;

compare a storage size of the difference frame to a threshold specifying a maximum storage size of the difference frame;

responsive to the storage size of the difference frame being less than the threshold, transmit the index data of the tile whose content has been modified and the difference frame to the client, the client configured to combine the difference frame with the reference frame associated with the tile identified by the index data; and

responsive to the storage size of the difference frame being greater than the threshold,

generate a replacement reference frame, the replacement reference frame including the modified content associated with the tile, and

transmit the index data of the tile whose content has been modified and the replacement reference frame to the client to allow the client to combine the replacement reference frame with one or more of the plurality of encoded tiles using the index data.

7. The non-transitory computer-readable storage medium of claim 6 , wherein the index data further comprises a tile identifier, a tile height and width, or clipping data, the clipping data describing editing of the content to not exceed the tile height and width.

8. The non-transitory computer-readable storage medium of claim 6 , wherein the instructions that when executed cause the processor to partition the content into a plurality of tiles further comprises instructions that when executed cause the processor to segment the content into a grid, the grid comprising a plurality of tiles having a fixed height and width and each tile adjacent to one or more surrounding tiles.

9. The non-transitory computer-readable storage medium of claim 6 , further comprising instructions that when executed cause the processor to cache the reference frame associated with each tile in the plurality of tiles.

10. The non-transitory computer-readable storage medium of claim 6 , further comprising instructions that when executed cause the processor to cache the difference frame and the index data associating the difference frame with the reference frame including the modification to content.

11. A system for communicating content across a network using video frames, the system comprising:

a processor configured to execute computer program instructions; and

a non-transitory computer readable storage medium storing the computer program instructions executable by the processor, the instructions for:

partitioning the content into a plurality of tiles, each tile including a subset of the content and index data describing a relationship between a tile and one or more adjacent tiles;

encoding the content associated with each tile in the plurality of tiles as a reference frame;

transmitting the plurality of encoded tiles to a client to allow the client to combine the plurality of encoded tiles using the index data;

responsive to a modification to the content associated with a tile, generating a difference frame, the difference frame describing the modification to the content associated with the tile in relation to the reference frame;

comparing a storage size of the difference frame to a threshold specifying a maximum storage size of the difference frame;

responsive to the storage size of the difference frame being less than the threshold, transmitting the index data of the tile whose content has been modified and the difference frame to the client, the client configured to combine the difference frame with the reference frame associated with the tile identified by the index data; and

responsive to the storage size of the difference frame being greater than the threshold:

generating a replacement reference frame, the replacement reference frame including the modified content associated with the tile, and

transmitting the index data of the tile whose content has been modified and the replacement reference frame to the client to allow the client to combine the replacement reference frame with one or more of the plurality of encoded tiles using the index data.

12. The system of claim 11 , wherein the index data further comprises a tile identifier, a tile height and width, or clipping data, the clipping data describing editing of the content to not exceed the tile height and width.

13. The system of claim 11 , wherein the instructions for partitioning the content into a plurality of tiles further comprises instructions for segmenting the content into a grid, the grid comprising a plurality of tiles having a fixed height and width and each tile adjacent to one or more surrounding tiles.

14. The system of claim 11 , further comprising instructions for caching the reference frame associated with each tile in the plurality of tiles.

15. The system of claim 11 , further comprising instructions for caching the difference frame and the index data associating the difference frame with the reference frame including the modification to content.

Assignments (9)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2025
From: OTELLO CORPORATION ASA
To: TIR TECHNOLOGIES LIMITED
Reel/Frame 071165/0584 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2023
From: PERFORMANCE AND PRIVACY IRELAND LIMITED
To: OTELLO CORPORATION ASA
Reel/Frame 063188/0195 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2017
From: OPERA SOFTWARE IRELAND LTD.
To: PERFORMANCE AND PRIVACY IRELAND LTD.
Reel/Frame 042076/0473 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2014
From: SKYFIRE LABS, INC.
To: OPERA SOFTWARE IRELAND LIMITED
Reel/Frame 032827/0175 →
RELEASE OF SECURITY INTEREST Recorded Apr 3, 2013
From: COMERICA BANK
To: SKYFIRE LABS, INC.
Reel/Frame 030141/0182 →
CHANGE OF ADDRESS Recorded Aug 26, 2011
From: SKYFIRE LABS, INC.
To: SKYFIRE LABS, INC.
Reel/Frame 026817/0504 →
SECURITY AGREEMENT Recorded Oct 1, 2010
From: SKYFIRE LABS, INC.
To: COMERICA BANK
Reel/Frame 025082/0390 →
CHANGE OF NAME Recorded Mar 18, 2008
From: DVC LABS, INC.
To: SKYFIRE LABS, INC.
Reel/Frame 020667/0965 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2008
From: SWENSON, ERIK R.; BHANDARI, NITIN; KUMAR, VIJAY
To: DVC LABS, INC.
Reel/Frame 020419/0395 →
Continuity (2)
Provisional Application 60886577 · Jan 25, 2007
Related Publication 20080181498A1 · Jul 31, 2008