blob: 81310d2303595b29d3b9a0ea0067334744f77c6e [file] [log] [blame]
#ifndef ANDROID_DVR_TRACKING_TYPES_H_
#define ANDROID_DVR_TRACKING_TYPES_H_
#include <stdint.h>
#include <sys/cdefs.h>
__BEGIN_DECLS
typedef struct DvrTrackingBufferMetadata {
// Specifies the source of this image.
uint32_t camera_mask;
// Specifies the memory format of this image.
uint32_t format;
/// The width of the image data.
uint32_t width;
/// The height of the image data.
uint32_t height;
/// The number of bytes per scanline of image data.
uint32_t stride;
/// The frame number of this image.
int32_t frame_number;
/// The timestamp of this image in nanoseconds. Taken in the middle of the
/// exposure interval.
int64_t timestamp_ns;
// This is the timestamp for recording when the system using the HAL
// received the callback. It will not be populated by the HAL.
int64_t callback_timestamp_ns;
/// The exposure duration of this image in nanoseconds.
int64_t exposure_duration_ns;
} DvrTrackingBufferMetadata;
// Represents a set of features extracted from a camera frame. Note that this
// should be in sync with TangoHalCallbacks defined in tango-hal.h.
typedef struct DvrTrackingFeatures {
// Specifies the source of the features.
uint32_t camera_mask;
// This is unused.
uint32_t unused;
// The timestamp in nanoseconds from the image that generated the features.
// Taken in the middle of the exposure interval.
int64_t timestamp_ns;
// This is the timestamp for recording when the system using the HAL
// received the callback. It will not be populated by the HAL.
int64_t callback_timestamp_ns;
// The frame number from the image that generated the features.
int64_t frame_number;
// The number of features.
int count;
// An array of 2D image points for each feature in the current image.
// This is sub-pixel refined extremum location at the fine resolution.
float (*positions)[2];
// The id of these measurements.
int32_t* ids;
// The feature descriptors.
uint64_t (*descriptors)[8];
// Laplacian scores for each feature.
float* scores;
// Is this feature a minimum or maximum in the Laplacian image.
// 0 if the feature is a maximum, 1 if it is a minimum.
int32_t* is_minimum;
// This corresponds to the sub-pixel index of the laplacian image
// that the extremum was found.
float* scales;
// Computed orientation of keypoint as part of FREAK extraction, except
// it's represented in radians and measured anti-clockwise.
float* angles;
// Edge scores for each feature.
float* edge_scores;
} DvrTrackingFeatures;
// Represents a sensor event.
typedef struct DvrTrackingSensorEvent {
// The sensor type.
int32_t sensor;
// Event type.
int32_t type;
// This is the timestamp recorded from the device. Taken in the middle
// of the integration interval and adjusted for any low pass filtering.
int64_t timestamp_ns;
// The event data.
float x;
float y;
float z;
} DvrTrackingSensorEvent;
__END_DECLS
#endif // ANDROID_DVR_TRACKING_TYPES_H_