IP Library Granted Patent US 9,621,606
Granted Patent B2
US 9,621,606 · App. 13/919,971 · Granted Apr 11, 2017

Real-time video detector

Inventors: Erik R. Swenson (San Jose, CA); Nitin Bhandari (Fremont, CA); Jaime Heilpern (San Francisco, CA); Robert Oberhofer (Belmont, CA); John Hansen (San Jose, CA)
Assignee: Opera Software Ireland Limited
H04L65/60H04L65/1076H04L65/80H04L67/2823H04L67/303H04N19/156H04N19/40H04N21/234309H04N21/6379
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,621,606
App. No.
13/919,971
Granted
Apr 11, 2017
Kind
B2
Abstract

A request to retrieve data from a client device is intercepted by a video detector. The video detector determines if the request is for retrieving a video file. If the request is for a video file, and the video file is deemed to be transcoded to be displayed on the client device, the video detector forwards the request to a video optimizer along with encoding parameters. Encoding parameters are selected by the video detector based on properties of the client device, networks accessible by the client device, conditions of those networks, properties of the requested video and the type of video requested. The encoding parameters also include a file format type to which the requested video is to be transcoded.

Claims (51)

1. A method for detecting a video seek request, the method comprising:

receiving a hold-off status from an optimizer indicating that the optimizer is not receiving new transcoding sessions, the optimizer determining the hold-off status based on an estimate of a number of decode and encode macroblocks needed across existing transcoding sessions at the optimizer reaching a maximum capacity of macroblocks the optimizer can decode and encode per second, and wherein existing sessions at the optimizer are suspended for a period of time in response to a current video seek request prior to removal from a session table;

monitoring communications on a network to detect a video seek request originating from a client device, the video seek request indicating a new position for video playback in a video;

identifying whether the video seek request is associated with an existing session in the session table or constitutes a new session; and

redirecting the video seek request originating from the client to the optimizer in hold-off status in response to identifying that the video seek request is associated with an existing session in the session table, the optimizer configured for, in response to receiving the redirected video seek request from the client device:

establishing a first session with an origin server for retrieving video data from the origin server corresponding to the new position for video playback,

transcoding the video data retrieved from the origin server over the first session corresponding to the new position for video playback, and

establishing a second session with the client device for providing the transcoded video data corresponding to the new position for video playback to the client device.

2. The method of claim 1 , wherein redirecting the video seek request originating from the client device comprises generating a uniform resource locator (URL) with a redirect request to the optimizer.

3. The method of claim 1 , wherein redirecting the video seek request originating from the client device to the optimizer comprises:

generating a URL with a redirect request, the redirect request directing the client device to the optimizer for establishing the second session; and

transmitting the URL with the redirect request to the client device.

4. The method of claim 3 , wherein the URL with the redirect request further comprises the video seek request indicating the new position for video playback.

5. The method of claim 1 , wherein a unique identifier is assigned to each session directed to the optimizer and established with the client device.

6. The method of claim 5 , wherein the unique identifier for the second session is based on one or more of a URL corresponding to the video, internet protocol address of the origin server where the video is stored, or internet protocol address of the client device.

7. The method of claim 1 , further comprising replacing the existing session with the second session.

8. The method of claim 1 , further comprising identifying metadata associated with the existing session and reusing the metadata for the second session, the metadata corresponding to parameters for transcoding the video data transmitted to the client device.

9. A non-transitory computer-readable storage medium storing executable computer program instructions for detecting a video seek request, the computer program instructions comprising instructions for:

receiving a hold-off status from an optimizer indicating that the optimizer is not receiving new transcoding sessions, the optimizer determining the hold-off status based on an estimate of a number of decode and encode macroblocks needed across existing transcoding sessions at the optimizer reaching a maximum capacity of macroblocks the optimizer can decode and encode per second, and wherein existing sessions at the optimizer are suspended for a period of time in response to a current video seek request prior to removal from a session table;

monitoring communications on a network to detect a video seek request originating from a client device, the video seek request indicating a new position for video playback in a video;

identifying whether the video seek request is associated with an existing session in the session table or constitutes a new session; and

redirecting the video seek request originating from the client to the optimizer in hold-off status in response to identifying that the video seek request is associated with an existing session in the session table, the optimizer configured for, in response to receiving the redirected video seek request from the client device:

establishing a first session with an origin server for retrieving video data from the origin server corresponding to the new position for video playback,

transcoding the video data retrieved from the origin server over the first session corresponding to the new position for video playback, and

establishing a second session with the client device for providing the transcoded video data corresponding to the new position for video playback to the client device.

10. The storage medium of claim 9 , wherein redirecting the video seek request originating from the client device to the optimizer comprises:

generating a URL with a redirect request, the redirect request directing the client device to the optimizer for establishing the second session; and

transmitting the URL with the redirect request to the client device.

11. The storage medium of claim 10 , wherein the URL with the redirect request further comprises the video seek request indicating the new position for video playback.

12. The storage medium of claim 9 , wherein a unique identifier is assigned to each session directed to the optimizer and established with the client device.

13. The storage medium of claim 10 , wherein the unique identifier for the second session is based on one or more of a URL corresponding to the video, internet protocol address of the origin server where the video is stored, or internet protocol address of the client device.

14. The storage medium of claim 9 , further comprising instructions for identifying metadata associated with the existing session and reusing the metadata for the second session, the metadata corresponding to parameters for transcoding the video data transmitted to the client device.

15. A system comprising:

a video detector coupled to a network, the video detector configured to:

receive a hold-off status indicating that a video optimizer is not receiving new transcoding sessions,

monitor communications on a network to detect a video seek request originating from a client device coupled to the network, the video seek request indicating a new position for video playback in a video,

in response to detecting the video seek request, identify that the video seek request is associated with an existing session in a session table tracking existing sessions at a video optimizer in hold-off status or constitutes a new session, and

in response to identifying that the video seek request is associated with the existing session, transmit a redirect request to the client device from which the detected video seek request originated, the redirect request causing the client device to transmit a modified video seek request; and

a video optimizer coupled to the network, the video optimizer configured to:

determine a hold-off status based on an estimate of a number of decode and encode macroblocks needed across existing transcoding sessions at the video optimizer reaching a maximum capacity of macroblocks the video optimizer can decode and encode per second, and wherein existing sessions are suspended for a period of time in response to a current video seek request prior to removal from the session table,

receive the modified video seek request associated with the redirect request from the client device,

establish a first session with an origin server for retrieving video data from the origin server corresponding to the new position for video playback,

transcode the video data retrieved from the origin server over the first session corresponding to the new position for video playback, and

establish a second session with the client device for providing the transcoded video data corresponding to the new position for video playback to the client device.

16. The system of claim 15 , wherein redirecting the video seek request originating from the client device to the video optimizer comprises:

generating a URL with a redirect request, the redirect request directing the client device to the video optimizer for establishing the second session; and

transmitting the URL with the redirect request to the client device.

17. The system of claim 16 , wherein the URL with the redirect request further comprises the video seek request indicating the new position for video playback.

18. The system of claim 15 , wherein a unique identifier is assigned to each session directed to the video optimizer and established with the client device.

19. The system of claim 18 , wherein the unique identifier for the second session is based on one or more of a URL corresponding to the video, internet protocol address of the origin server where the video is stored, or internet protocol address of the client device.

20. The system of claim 15 , wherein the video optimizer identifies metadata associated with the existing session and reuses the metadata for the second session, the metadata corresponding to parameters for transcoding the video data transmitted to the client device.

Assignments (5)
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 28, 2025
From: SWENSON, ERIK R.; BHANDARI, NITIN; HEILPERN, JAIME; OBERHOFER, ROBERT; HANSEN, JOHN
To: SKYFIRE LABS, INC.
Reel/Frame 070665/0945 →
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 →
Continuity (3)
Continuation 13448227 · Apr 16, 2012
Provisional Application 61476214 · Apr 15, 2011
Related Publication 20130282874A1 · Oct 24, 2013