IP Library Granted Patent US 11,736,240
Granted Patent B2
US 11,736,240 · App. 17/347,745 · Granted Aug 22, 2023

Optimized kernel for concurrent streaming sessions

Inventors: Rajendran Pichaimurthy (Karnataka, IN); Dolphin Masilamany Santha (Karnataka, IN); Gyanveer Singh (Bangalore, IN); Prakash Viswanathan (Karnataka, IN)
Assignee: ROVI GUIDES, INC.
H04L1/1832H04L1/187H04L1/1838H04L1/1877H04L65/61
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 11,736,240
App. No.
17/347,745
Granted
Aug 22, 2023
Kind
B2
Abstract

Systems and methods are described for streaming content to multiple devices from a shared sliding window buffer in kernel space, thereby reducing memory resource use and minimizing context/mode switching between kernel space and user space. For example, concurrent streaming sessions may be seen, e.g., as a live multimedia stream. If a live video is being transmitted as a multicast stream to many devices, rather than each device having a corresponding sliding window buffer in kernel space, each device will share a shared sliding buffer in kernel space. The sliding window buffer size will be at least large enough to stream the slowest connection speed and can be, e.g., multiple times as large as necessary, in case of the issues beyond the worst-case scenario. The system then transmits chunks of the content from the shared sliding window buffer to each of the plurality of client devices.

Claims (43)

1. A method of streaming content to multiple devices from shared buffer memory, the method comprising:

accessing, by a server, content for transmission to a plurality of client devices;

receiving a first connection request from one of the plurality of client devices;

in response to receiving the first connection request, generating, by the server in a first part of memory, a first socket;

receiving a second connection request from a second of the plurality of client devices;

in response to receiving the second connection request, generating, by the server in the first part of memory, a second socket;

creating a shared buffer for the content in a second part of memory;

determining, at the server, connection speed data for each of the first socket and the second socket;

dynamically adjusting a size of the shared buffer based on the connection speed data for each of the first socket and the second socket; and

transmitting, by the server, the content from the shared buffer to each of the plurality of client devices.

2. The method of claim 1 , wherein the creating of the shared buffer is triggered by a connection management map after receipt of the first connection request.

3. The method of claim 2 , wherein the connection management map manages a life cycle of the shared buffer in kernel space.

4. The method of claim 3 , wherein the connection management map is configured to remove a chunk of content from the shared buffer once the chunk of content is served to all connected devices of the plurality of client devices.

5. The method of claim 1 , wherein the content is a live multimedia stream.

6. The method of claim 5 , wherein an encoding of the content is one of MPEG-DASH, HTTP Dynamic streaming, HTTP Live Streaming (HLS), or Smooth Streaming.

7. The method of claim 1 , wherein transmitting includes copying to a ring buffer corresponding to each device prior to transmitting.

8. The method of claim 1 , wherein the first part of memory is user space and the second part of memory is kernel space.

9. The method of claim 1 , wherein the connection speed data of the second socket is at least half as fast as the connection speed data of the first socket and the shared buffer is dynamically adjusted based on the slower connection speed data.

10. The method of claim 1 , wherein the connection speed data of the second socket is at least twice as fast large as the connection speed data of the first socket and the shared buffer is dynamically adjusted based on the slower connection speed data.

11. A system for streaming content to multiple devices from a shared buffer in kernel space, the system comprising:

first input/output circuitry configured to:

access content for transmission to a plurality of client devices;

receive a first connection request from one of the plurality of client devices;

receive a second connection request from a second of the plurality of client devices;

memory comprising:

a first part of memory; and

a second part of memory;

processing circuitry configured to:

generate, in response to receiving the first connection request, a first socket in the first part of memory;

generate, in response to receiving the second connection request, a second socket in the first part of memory;

create a shared buffer for the content in the second part of memory;

determining, at the server, connection speed data for each of the first socket and the second socket;

dynamically adjusting a size of the shared buffer based on the connection speed data for each of the first socket and the second socket; and

second input/output circuitry configured to transmit the content from the shared buffer to each of the plurality of client devices.

12. The system of claim 11 , wherein the processing circuitry is further configured to create the shared buffer, triggered by a connection management map on receipt of the first connection request.

13. The system of claim 12 , wherein the connection management map manages a life cycle of the shared buffer in kernel space.

14. The system of claim 13 , wherein the connection management map is configured to remove a chunk of content from the shared buffer once the chunk of content is served to all connected devices of the plurality of client devices.

15. The system of claim 11 , wherein the content is a live multimedia stream.

16. The system of claim 15 , wherein an encoding of the content is one of MPEG-DASH, HTTP Dynamic streaming, HTTP Live Streaming (HLS), or Smooth Streaming.

17. The system of claim 11 , wherein the second input/output circuitry is further configured to include copying to a ring buffer corresponding to each device prior to transmitting.

18. The system of claim 11 , wherein the first part of memory is user space and the second part of memory is kernel space.

19. The system of claim 11 , wherein the connection speed data of the second socket is at least half as fast as the connection speed data of the first socket and the shared buffer is dynamically adjusted based on the slower connection speed data.

20. The system of claim 11 , wherein the connection speed data of the second socket is at least twice as fast as the connection speed data of the first socket and the shared buffer is dynamically adjusted based on the slower connection speed data.

Assignments (3)
CHANGE OF NAME Recorded Oct 3, 2024
From: ROVI GUIDES, INC.
To: ADEIA GUIDES INC.
Reel/Frame 069106/0207 →
SECURITY INTEREST Recorded May 19, 2023
From: ADEIA GUIDES INC.; ADEIA MEDIA HOLDINGS LLC; ADEIA MEDIA SOLUTIONS INC.; ADEIA SEMICONDUCTOR BONDING TECHNOLOGIES INC.; ADEIA SEMICONDUCTOR SOLUTIONS LLC; ADEIA SEMICONDUCTOR TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 063707/0884 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 15, 2021
From: PICHAIMURTHY, RAJENDRAN; SANTHA, DOLPHIN MASILAMANY; SINGH, GYANVEER; VISWANATHAN, PRAKASH
To: ROVI GUIDES, INC.
Reel/Frame 056549/0533 →
Continuity (2)
Continuation 16804716 · Feb 28, 2020
Related Publication 20210314103A1 · Oct 7, 2021