IP Library Granted Patent US 11,720,423
Granted Patent B2
US 11,720,423 · App. 17/498,291 · Granted Aug 8, 2023

Methods and systems for multiple access to a single hardware data stream

Inventors: Ryan Fink (Vancouver, WA); Ryan Phelps (Portland, OR); Gary Peck (Portland, OR); Bryan Ransil (San Francisco, CA)
Assignee: WEST TEXAS TECHNOLOGY PARTNERS, LLC
G06F9/545G06F9/541G06F9/4411G06F9/44505G06F9/544
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,720,423
App. No.
17/498,291
Granted
Aug 8, 2023
Kind
B2
Abstract

Methods for providing simultaneous access to a hardware data stream to multiple applications are disclosed. The first application to access a hardware device is responsible for providing and publishing an application programming interface (API) that provides access to the hardware device's data stream, which other applications can then call to gain access to the data stream. In some examples, the first application may be a server process or daemon dedicated to managing the hardware device data stream and publishing the API. In some further examples, the first application may instead may carry out user functionality unrelated to managing the hardware device.

Claims (78)

1. A method comprising:

initializing, by a first application, a camera that generates an image stream;

establishing, by the first application, exclusive control of the camera, wherein:

the exclusive control of the camera comprises controlling settings of the camera; and

wherein a second application cannot control the settings of the camera;

receiving, from the camera, the image stream at the first application;

establishing, by the first application, an application programming interface (API);

advertising, by the first application, the API;

receiving, at the API, a first request from the second application to access the image stream;

sending, by the API, the image stream to the first application and the second application, wherein:

the image stream is a single image stream received from the camera; and

the image stream is the single image stream provided to both the first application and the second application at the same point in time;

analyzing, by the first application, the image stream to determine gesture information from a user;

analyzing, by the second application, the image stream to generate an augmented reality object to overlay onto the image stream;

executing, by the first application, an instruction based on the gesture information;

overlaying, by the second application, the augmented reality object onto the image stream;

receiving, at the first application, a second request from the second application to change a first setting of the camera;

determining, by the first application, whether the second request conflicts with a second setting required by the first application;

in response to the second request not conflicting with the second setting required by the first application, changing the first setting of the camera as indicated in the second request and

in response to the second request conflicting with the second setting required by the first application, maintaining the second setting of the camera.

2. The method of claim 1 , wherein the first application is a server daemon.

3. The method of claim 1 , wherein the first application is a user application.

4. The method of claim 1 , wherein initializing the camera further comprises:

querying the camera to determine capabilities and characteristics of the camera; and initiating the image stream.

5. The method of claim 1 , further comprising:

in response to receiving the first request to access the image stream of the camera, initiating the first application; and

in response to no further applications accessing the image stream, terminating the first application.

6. A system, comprising:

a data storage device configured to store instructions;

a processor coupled to the data storage device, the processor operable to execute the instructions; and

a camera coupled to the processor, the camera configured to generate an image stream, wherein the processor is configured to:

establish a first application with exclusive control of the camera, wherein:

the exclusive control of the camera comprises controlling the settings of the camera; and

wherein a second application cannot control the settings of the camera;

receive, at the first application, the image stream from the camera;

establish, by the first application, an application programming interface (API);

advertise, by the first application, the API;

receive, at the API, a first request from the second application to access the image stream;

send, by the API, the image stream to the first application and the second application, wherein:

the image stream is a single image stream received from the camera; and

the image stream is the single image stream provided to both the first application and the second application at the same point in time;

analyze, by the first application, the image stream to determine gesture information from a user;

analyze, by the second application, the image stream to generate an augmented reality object to overlay onto the image stream;

execute, by the first application, an instruction based on the gesture information;

overlay, by the second application, the augmented reality object onto the image stream;

receive, at the first application, a second request from the second application to change a first setting of the camera;

determine, by the first application, whether the second request conflicts with a second setting required by the first application;

in response to the second request not conflicting with the second setting required by the first application, change the first setting of the camera as indicated in the second request; and

in response to the second request conflicting with the second setting required by the first application, maintain the first setting of the camera.

7. The system of claim 6 , wherein the processor is further to: initialize the camera in response to receiving the first request from the first application access the camera.

8. The system of claim 6 , wherein the processor is further to initialize the API in response to the initializing the camera, wherein the API is a server daemon.

9. The system of claim 6 , wherein the processor is further to write the image stream into a buffer.

10. The system of claim 6 , wherein the processor is further to write the image stream into a buffer, wherein the buffer is a circular buffer.

11. A non-transitory computer-readable storage medium to store a set of instructions that when executed by a processor, cause the processor to:

initialize a hardware device;

receive a data stream from the hardware device;

establish a first application with exclusive control of the hardware device, wherein:

the exclusive control of the hardware device comprises controlling the settings of the hardware device; and

wherein a second application cannot control the settings of the hardware device;

receive the data stream at the first application;

establish an application programming interface (API);

advertise the API to the second application;

receive a first request from the second application to access the data stream;

send the data stream to the second application, wherein:

the data stream is a single data stream received from the hardware device; and

the data stream is the single data stream provided to both the first application and the second application at the same point in time;

analyze, by the first application, the data stream to determine gesture information from a user;

analyze, by the second application, the data stream to generate an augmented reality object to integrate into the data stream;

execute, by the first application, an instruction of the set of instructions based on the gesture information;

integrate, by the second application, the augmented reality object into the data stream;

receive, at the first application, a second request from the second application to change a first setting of the hardware device;

determine, by the first application, whether the second request conflicts with a second setting required by the first application;

in response to the second request not conflicting with the second setting required by the first application, change the setting of the hardware device as indicated in the second request and

in response to the second request conflicting with the second setting required by the first application, maintain the first setting of the hardware device.

12. The non-transitory computer-readable storage medium of claim 11 , wherein the processor is further to:

receive the data stream from the hardware device; and

store the data stream into a first buffer that is accessible by the first application and the second application.

13. The non-transitory computer-readable storage medium of claim 12 , wherein the processor is further to copy the data stream from the first buffer to a second buffer, wherein the first buffer is accessible by the first application and the second buffer is accessible by the second application.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 7, 2022
From: ATHEER, INC.
To: WEST TEXAS TECHNOLOGY PARTNERS, LLC
Reel/Frame 058962/0067 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2022
From: FINK, RYAN; RANSIL, BRYAN; PHELPS, RYAN
To: ATHEER, INC.
Reel/Frame 058637/0418 →
Continuity (4)
Continuation 16393436 · Apr 24, 2019
Continuation 14789797 · Jul 1, 2015
Provisional Application 62020321 · Jul 2, 2014
Related Publication 20220027212A1 · Jan 27, 2022