Architectures for processing of head tracking on a mobile device
First Claim
1. A computing device, comprising:
- at least one processor;
memory including instructions that, when executed by the at least one processor that when executed provide;
a second hardware interface, of a plurality of hardware interfaces, the second hardware interface configured to accept image data from a camera, the image data indicating at least location of a head, the image data provided at a first rate;
a first hardware interface, of the plurality of hardware interfaces, the first hardware interface configured to accept motion data from a motion sensor, the motion data indicating at least motion of the computing device, the motion data provided at a second rate that is faster than the first rate;
a synchronizer configured to;
receive and store the motion data;
receive the image data; and
generate a data object that represents synchronized image and motion data, the data object based at least in part on motion data generated during a first time period and image data generated at an end of the first time period;
an engine for processing the data object to generate input data corresponding to at least the location of the head and the motion of the computing device;
an inter-process communication layer;
an event publisher configured to filter the input data to produce first filtered input data and publish, using at least the inter-process communication layer, the first filtered input data as first event data to a listener client executing on the computing device, the listener client registered to receive the first event data; and
an event provider configured to filter the input data to produce second filtered input data and provide, using at least the inter-process communication layer, the second filtered input data as second event data in response to a polling request from a pull client executing on the computing device,wherein the listener client and the pull client are enabled to determine at least one of a change in head position or a gesture based at least in part upon at least one of the first event data or the second event data.
1 Assignment
0 Petitions
Accused Products
Abstract
A tracking architecture is provided that enables data for gestures and head positions to be provided to both native and non-native clients on a computing device. A pipeline component can obtain the raw image data and sensor data and synchronize that data to be processed to determine, for example, location and/or motion data that may correspond to device input. The data can be processed by separate components, such as an event publisher and an event provider, each capable of filtering the location, motion, and/or raw sensor data to generate a set of event data. The event data then can be published to registered listeners or provided in response to polling requests. Head coordinates, gesture data, and other such information can be passed through one or more interface layers enabling the data to be processed by a non-native client on the device.
12 Citations
21 Claims
-
1. A computing device, comprising:
-
at least one processor; memory including instructions that, when executed by the at least one processor that when executed provide; a second hardware interface, of a plurality of hardware interfaces, the second hardware interface configured to accept image data from a camera, the image data indicating at least location of a head, the image data provided at a first rate; a first hardware interface, of the plurality of hardware interfaces, the first hardware interface configured to accept motion data from a motion sensor, the motion data indicating at least motion of the computing device, the motion data provided at a second rate that is faster than the first rate; a synchronizer configured to; receive and store the motion data; receive the image data; and generate a data object that represents synchronized image and motion data, the data object based at least in part on motion data generated during a first time period and image data generated at an end of the first time period; an engine for processing the data object to generate input data corresponding to at least the location of the head and the motion of the computing device; an inter-process communication layer; an event publisher configured to filter the input data to produce first filtered input data and publish, using at least the inter-process communication layer, the first filtered input data as first event data to a listener client executing on the computing device, the listener client registered to receive the first event data; and an event provider configured to filter the input data to produce second filtered input data and provide, using at least the inter-process communication layer, the second filtered input data as second event data in response to a polling request from a pull client executing on the computing device, wherein the listener client and the pull client are enabled to determine at least one of a change in head position or a gesture based at least in part upon at least one of the first event data or the second event data. - View Dependent Claims (2, 3, 4, 21)
-
-
5. A computer-implemented method, comprising:
-
receiving motion sensor data indicating at least a motion of a computing device through a first hardware interface of the computing device, the motion sensor data being acquired during a first time period and at a first rate using at least one motion sensor of the computing device; storing the motion sensor data to a storage component; receiving image data indicating at least a location of a head through a second hardware interface of the computing device, the image data being acquired at an end of the first time period and at a second rate using a camera of the computing device, the second rate being slower than the first rate; retrieving the motion sensor data from the storage component; generating synchronized input data by processing, using at least one processor of the computing device, the image data and the motion sensor data, the synchronized input data including at least locations of feature points of the head and motion as represented by the motion sensor data; transmitting the synchronized input data to a publisher component; transmitting the synchronized input data to a polling component; causing, using the publisher component and at least an inter-process communication layer, the synchronized input data to be available as first event data to at least one listener client, the at least one listener client registered to receive the first event data; and providing, in response to a polling request from a pull client and using the polling component and at least the inter-process communication layer, second event data based at least in part on the synchronized input data. - View Dependent Claims (6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A computing device, comprising:
-
at least one processor; memory including instructions that, when executed by the at least one processor, cause the computing device to; receive motion sensor data indicating at least a motion of the computing device through a first hardware interface of the computing device, the motion sensor data being acquired during a first time period and at a first rate using at least one motion sensor of the computing device; store the motion sensor data to a storage component; receive image data indicating at least a location of a head through a second hardware interface of the computing device, the image data being acquired at an end of the first time period and at a second rate using a camera of the computing device, the second rate being slower than the first rate; retrieve the motion sensor data from the storage component; generate synchronized input data by processing, using the at least one processor of the computing device, the image data and the motion sensor data, the synchronized input data including at least locations of feature points of the head and motion as represented by the motion sensor data; provide, to at least one listener client and using an inter-process communication layer, the synchronized input data as first event data, the at least one listener client registered to receive the first event data; and provide, in response to a polling request from a pull client and using the inter-process communication layer, the synchronized input data as second event data. - View Dependent Claims (17, 18, 19, 20)
-
Specification