Protocol Documentation¶
Table of Contents¶
-
u_query/proto/backend_api.proto
- AddLocalVideoRequest
- AddRTSPVideoRequest
- ClassifierId
- EncodedQueryType
- ExecutionId
- Folder
- Host
- HostHealth
- IndexedVideo
- IndexedVideos
- IndexedVideos.IndexedVideosEntry
- IndexerHost
- IndexerHostHealth
- IndexerHostId
- IndexerHosts
- IndexerHosts.IndexersEntry
- IndexingRequest
- IndexingResourceUseRequest
- IndexingStatusInfo
- NewAddRtspVideoRequest
- OldAddLocalVideoRequest
- PasswordChangeRequest
- Queries
- Queries.QueriesEntry
- Query
- QueryId
- QueryStatus
- QueryStatuses
- QueryTypeDescriptor
- QueryTypeId
- QueryTypeParamsSpec
- QueryTypes
- QueryTypes.TypesEntry
- RenameQueryExecutionRequest
- UpdateQueryRequest
- UploadAndAddVideoRequest
- UserRequest
- UserResponse
- VideoFilter
- VideoId
- IndexerAPI
- QueryAPI
- StatusAPI
- VideoAPI
-
u_query/proto/common_model.proto
- ClassifierDescriptor
- Classifiers
- Classifiers.TypesEntry
- EncodedClassifier
- FileVideoConfig
- GetFrameRequest
- GetVideoSegmentRequest
- IndexingParams
- IndexingStatus
- Mp4Metadata
- QueryExecutionState
- QueryExecutionStates
- QueryExecutionStates.ExecutionStatesEntry
- RTSPInfo
- RTSPMetadata
- RTSPTestResult
- RTSPVideoConfig
- RawMetadata
- Resources
- StreamVideoRequest
- StreamVideoResponse
- UpdateVideoRequest
- VideoInfo
- VideoInfos
- VideoInfos.VideosEntry
- VideoMetadata
- VideoMetadatas
- VideoMetadatas.MetadatasEntry
- VideoStatus
- VideoStatuses
- IndexingParams.DETECTOR_SPEED_RANGE_TRADEOFF
- IndexingStatus.STATUS
- QueryExecutionState.State
- StreamVideoRequest.Format
- VideoStatus.STATUS
u_query/proto/backend_api.proto¶
AddLocalVideoRequest¶
Field | Type | Label | Description |
---|---|---|---|
path | string | required | |
start_time | com.ultinous.Timestamp | required | |
video_metadata | com.ultinous.uquery.model.common.VideoMetadata | required |
AddRTSPVideoRequest¶
Field | Type | Label | Description |
---|---|---|---|
indexer_host_id | string | required | Indexer host ID |
video_metadata | com.ultinous.uquery.model.common.VideoMetadata | required | Video metadata |
rtsp_metadata | com.ultinous.uquery.model.common.RTSPMetadata | required | RTSP metadata |
ClassifierId¶
Field | Type | Label | Description |
---|---|---|---|
classifier_id | string | required |
EncodedQueryType¶
Field | Type | Label | Description |
---|---|---|---|
bytes | bytes | required | Encoded data |
ExecutionId¶
Field | Type | Label | Description |
---|---|---|---|
execution_id | string | required | Execution GUID |
Folder¶
Folder
Field | Type | Label | Description |
---|---|---|---|
id | string | required | |
name | string | required |
Host¶
Field | Type | Label | Description |
---|---|---|---|
storage_ip_address | string | required | IP address |
storage_port | uint32 | required | Storage port Default: 54101 |
indexer_ip_address | string | required | IP address |
indexer_port | uint32 | required | Indexer port Default: 54100 |
HostHealth¶
Field | Type | Label | Description |
---|---|---|---|
indexer_health | com.ultinous.ServiceHealth | required | Indexer health |
storage_health | com.ultinous.ServiceHealth | required | Video storage health |
IndexedVideo¶
Field | Type | Label | Description |
---|---|---|---|
host_id | string | required | Host ID |
video_info | com.ultinous.uquery.model.common.VideoInfo | required | Video info |
indexing_info | IndexingStatusInfo | required | Index info |
IndexedVideos¶
Field | Type | Label | Description |
---|---|---|---|
indexed_videos | IndexedVideos.IndexedVideosEntry | repeated | Indexed video mapping |
IndexedVideos.IndexedVideosEntry¶
Field | Type | Label | Description |
---|---|---|---|
key | string | optional | |
value | IndexedVideo | optional |
IndexerHost¶
Field | Type | Label | Description |
---|---|---|---|
ip_address | string | required | IP address |
indexer_port | uint32 | optional | Indexer port Default: 54100 |
video_storage_port | uint32 | optional | Storage port Default: 54101 |
IndexerHostHealth¶
Field | Type | Label | Description |
---|---|---|---|
indexer_health | com.ultinous.ServiceHealth | required | Indexer health |
video_storage_health | com.ultinous.ServiceHealth | required | Video storage health |
IndexerHostId¶
Indexer, video storage
Field | Type | Label | Description |
---|---|---|---|
indexer_host_id | string | required |
IndexerHosts¶
Field | Type | Label | Description |
---|---|---|---|
indexers | IndexerHosts.IndexersEntry | repeated | Indexer host mapping |
IndexerHosts.IndexersEntry¶
Field | Type | Label | Description |
---|---|---|---|
key | string | optional | |
value | IndexerHost | optional |
IndexingRequest¶
Field | Type | Label | Description |
---|---|---|---|
video_id | string | required | Video GUID |
params | com.ultinous.uquery.model.common.IndexingParams | required | Indexing parameters |
IndexingResourceUseRequest¶
Field | Type | Label | Description |
---|---|---|---|
indexer_host_id | string | required | Indexer host ID |
indexing_request | IndexingRequest | required | Indexing request |
IndexingStatusInfo¶
Field | Type | Label | Description |
---|---|---|---|
params | com.ultinous.uquery.model.common.IndexingParams | optional | Indexing parameters |
status | com.ultinous.uquery.model.common.IndexingStatus | required | Indexing status |
start | com.ultinous.Timestamp | optional | Index start time |
end | com.ultinous.Timestamp | optional | Index end time |
NewAddRtspVideoRequest¶
Field | Type | Label | Description |
---|---|---|---|
video_metadata | com.ultinous.uquery.model.common.VideoMetadata | required | |
rtsp_metadata | com.ultinous.uquery.model.common.RTSPMetadata | required |
OldAddLocalVideoRequest¶
Field | Type | Label | Description |
---|---|---|---|
indexer_host_id | string | required | Indexer host ID |
path | string | required | Video file path |
start_time | com.ultinous.Timestamp | required | Start time |
video_metadata | com.ultinous.uquery.model.common.VideoMetadata | required | Video metadata |
PasswordChangeRequest¶
Field | Type | Label | Description |
---|---|---|---|
original_password | string | required | |
new_password | string | required |
Queries¶
Field | Type | Label | Description |
---|---|---|---|
queries | Queries.QueriesEntry | repeated | Query mapping |
Queries.QueriesEntry¶
Field | Type | Label | Description |
---|---|---|---|
key | string | optional | |
value | Query | optional |
Query¶
Field | Type | Label | Description |
---|---|---|---|
type_id | string | required | Query type GUID |
name | string | required | Query name |
description | string | optional | Query description |
param_values | com.ultinous.uquery.model.query.QueryParamValues | optional | Query parameters |
QueryId¶
Field | Type | Label | Description |
---|---|---|---|
query_id | string | required | Query GUID |
QueryStatus¶
Field | Type | Label | Description |
---|---|---|---|
query_id | string | required | Query GUID |
query | Query | required | Query details |
state | com.ultinous.uquery.model.common.QueryExecutionState | optional | Execution state |
QueryStatuses¶
Field | Type | Label | Description |
---|---|---|---|
queries | QueryStatus | repeated | Query statuses |
QueryTypeDescriptor¶
Field | Type | Label | Description |
---|---|---|---|
name | string | required | Query type name |
description | string | optional | Query type description |
version | int32 | required | Version |
recommended | bool | optional | Recommended flag |
QueryTypeId¶
Field | Type | Label | Description |
---|---|---|---|
query_type_id | string | required | Query type GUID |
QueryTypeParamsSpec¶
Field | Type | Label | Description |
---|---|---|---|
params | com.ultinous.uquery.model.query.Param | repeated | Query parameters |
QueryTypes¶
Field | Type | Label | Description |
---|---|---|---|
types | QueryTypes.TypesEntry | repeated | Query type mapping |
QueryTypes.TypesEntry¶
Field | Type | Label | Description |
---|---|---|---|
key | string | optional | |
value | QueryTypeDescriptor | optional |
RenameQueryExecutionRequest¶
Field | Type | Label | Description |
---|---|---|---|
query_id | string | required | Query GUID |
name | string | required | New name |
UpdateQueryRequest¶
Field | Type | Label | Description |
---|---|---|---|
query_id | string | required | Query GUID |
query | Query | required | Query details |
UploadAndAddVideoRequest¶
Field | Type | Label | Description |
---|---|---|---|
metadata | VideoUploadMetadata | optional | Upload metadata |
chunk | bytes | optional | Video chunk |
UserRequest¶
User
Field | Type | Label | Description |
---|---|---|---|
username | string | required | |
password | string | required |
UserResponse¶
Field | Type | Label | Description |
---|---|---|---|
id | string | required | |
username | string | required |
VideoFilter¶
Field | Type | Label | Description |
---|---|---|---|
host_id | string | optional | Host ID filter |
indexed | bool | optional | Indexed filter |
VideoId¶
Field | Type | Label | Description |
---|---|---|---|
video_id | string | required | Video GUID |
VideoUploadMetadata¶
Field | Type | Label | Description |
---|---|---|---|
indexer_host_id | string | optional | Indexer host ID |
start_time | com.ultinous.Timestamp | required | Start time |
video_metadata | com.ultinous.uquery.model.common.VideoMetadata | required | Video metadata |
ClassifierAPI¶
API for managing classifiers
Method Name | Request Type | Response Type | Description |
---|---|---|---|
decodeClassifier | .com.ultinous.uquery.model.common.EncodedClassifier | .com.ultinous.uquery.model.common.ClassifierDescriptor | Decodes a classifier and returns its description. |
registerClassifier | .com.ultinous.uquery.model.common.EncodedClassifier | ClassifierId | Registers a new classifier. Returns the GUID of the classifier. |
unregisterClassifier | ClassifierId | .google.protobuf.Empty | Unregisters a classifier given by its GUID. |
listClassifiers | .google.protobuf.Empty | .com.ultinous.uquery.model.common.Classifiers | List all available classifiers. |
listClassifiersForObjectType | .google.protobuf.StringValue | .com.ultinous.uquery.model.common.Classifiers | List all available classifiers that are applicable to the given object type. |
IndexerAPI¶
API for indexer host handling: get health, add/remove/list indexers, get indexer resource usage.
Method Name | Request Type | Response Type | Description |
---|---|---|---|
listIndexers | .google.protobuf.Empty | IndexerHosts | Lists the registered indexer hosts. |
registerIndexer | IndexerHost | IndexerHostId | Register an indexer host. Returns the GUID of the indexer host. |
unregisterIndexer | IndexerHostId | .google.protobuf.Empty | Unregisters an indexer host given by its GUID. |
getIndexerHealth | IndexerHostId | IndexerHostHealth | Get health of an indexer host given by its GUID. |
getIndexerTotalResources | IndexerHostId | .com.ultinous.uquery.model.common.Resources | Gets the total compute resources of the indexer host given by its GUID. |
getIndexerAvailableResources | IndexerHostId | .com.ultinous.uquery.model.common.Resources | Gets the available compute resources of the indexer host given be its GUID. |
getIndexerResourceUse | IndexingResourceUseRequest | .com.ultinous.uquery.model.common.Resources | Calculate resource usage for a given indexing config. Call this before setIndex to make sure there are enough |
getObjectTypes | .google.protobuf.Empty | .com.ultinous.Strings | Returns all object types (eg.: person, car, dog, ...) |
QueryAPI¶
API for managing query types and queries.
Method Name | Request Type | Response Type | Description |
---|---|---|---|
decodeQueryType | EncodedQueryType | QueryTypeDescriptor | Decodes a query type and returns its description. |
registerQueryType | EncodedQueryType | QueryTypeId | Registers a new query type to the backend. GUID of the query type is returned. |
unregisterQueryType | QueryTypeId | .google.protobuf.Empty | Unregisters a query type given by its GUID. |
listQueryTypes | .google.protobuf.Empty | QueryTypes | List all available query types. |
getQueryType | QueryTypeId | QueryTypeParamsSpec | Returns a single query type |
newQuery | Query | QueryId | Creates a new query and returns its GUID. |
updateQuery | UpdateQueryRequest | .google.protobuf.Empty | Updates a query. Cannot be used for executed or previously executed queries. |
deleteQuery | QueryId | .google.protobuf.Empty | Deletes a query. It also deletes the result of the execution, if there was one, and stops it if it is currently running. |
startQuery | QueryId | .google.protobuf.Empty | Starts a query execution given by the query GUID. |
listQueries | .google.protobuf.Empty | QueryStatuses | List all queries (under execution, executed, not executed). |
getQuery | QueryId | QueryStatus | Get query (under execution, executed, not executed) by query GUID. |
renameExecution | RenameQueryExecutionRequest | .google.protobuf.Empty | Change the name of the execution. |
stopExecution | QueryId | .google.protobuf.Empty | Stops an execution (live or ad-hoc) given by the query GUID. |
StatusAPI¶
Health
Method Name | Request Type | Response Type | Description |
---|---|---|---|
getHealthStatus | .google.protobuf.Empty | .com.ultinous.ServiceHealth | Get health status. |
VideoAPI¶
API for video loading, indexing, and video access
Method Name | Request Type | Response Type | Description |
---|---|---|---|
testRTSP | .google.protobuf.StringValue | .com.ultinous.uquery.model.common.RTSPTestResult | Tests an RTSP url. Returns either error message or information (example image, fps, codec) about the stream. |
addRTSPVideo | AddRTSPVideoRequest | VideoId | Starts a new RTSP stream video recording to an indexer host. Returns the GUID of the video. |
uploadAndAddVideo | UploadAndAddVideoRequest stream | VideoId | |
addLocalVideo | OldAddLocalVideoRequest | VideoId | Selects a video file from a selected indexer host. Returns the GUID of the video. The video uploading to Video Storage will be started in the background. |
updateVideoMetadata | .com.ultinous.uquery.model.common.UpdateVideoRequest | .google.protobuf.Empty | Updates video metadata. |
setIndex | IndexingRequest | .google.protobuf.Empty | Sets indexing for a given video. By default no indexing is defined for a video. Calling this method will start indexing which is a resource-intensive process. It is possible to call this method multiple times with different indexing parameters. For live videos, calling multiple times will change the indexing from the time of call. For historic videos, calling multiple times will reindex the full video. |
deleteVideo | VideoId | .google.protobuf.Empty | Deletes a video given by video GUID. |
deleteIndexing | VideoId | .google.protobuf.Empty | Deletes an index given by video GUID. |
getVideos | VideoFilter | IndexedVideos | Returns all video and indexing parameters based on the filter parameters, in a batch |
getFrame | .com.ultinous.uquery.model.common.GetFrameRequest | .com.ultinous.JPEGImageWithTimestamp | Gets the frame for a given timestamp. If there is no frame for the exact timestamp it will return the closest. |
getVideoSegment | .com.ultinous.uquery.model.common.GetVideoSegmentRequest | .google.protobuf.BytesValue | Gets the video segment for a given start time. |
u_query/proto/common_model.proto¶
ClassifierDescriptor¶
Field | Type | Label | Description |
---|---|---|---|
name | string | required | Classifier name |
description | string | optional | Description |
applicable_object_types | string | repeated | Object types |
classes | string | repeated | Classes |
version | int32 | required | Version |
stability | ClassifierDescriptor.TYPE | required | Stability |
min_object_height | uint32 | optional | Min height Default: 80 |
applicable_to_full_crop | bool | optional | Full crop Default: true |
applicable_to_upper_body | bool | optional | Upper body Default: false |
Classifiers¶
Field | Type | Label | Description |
---|---|---|---|
types | Classifiers.TypesEntry | repeated | Classifiers by UUID |
Classifiers.TypesEntry¶
Field | Type | Label | Description |
---|---|---|---|
key | string | optional | |
value | ClassifierDescriptor | optional |
EncodedClassifier¶
Field | Type | Label | Description |
---|---|---|---|
bytes | bytes | required | Binary data |
FileVideoConfig¶
Field | Type | Label | Description |
---|---|---|---|
file_path | string | required | File path |
start_time | com.ultinous.Timestamp | required | Start time |
GetFrameRequest¶
Field | Type | Label | Description |
---|---|---|---|
video_id | string | required | GUID |
time | com.ultinous.Timestamp | required | Frame timestamp |
GetVideoSegmentRequest¶
Field | Type | Label | Description |
---|---|---|---|
video_id | string | required | GUID |
start_time | com.ultinous.Timestamp | required | Start time |
duration_ms | uint32 | optional | Duration Default: 10000 |
IndexingParams¶
Field | Type | Label | Description |
---|---|---|---|
fps | uint32 | optional | FPS Default: 4 |
object_detection | bool | optional | Object detection Default: true |
detector_speed_range_tradeoff | IndexingParams.DETECTOR_SPEED_RANGE_TRADEOFF | optional | Tradeoff Default: BALANCED |
generic_attribute_analysis | bool | optional | Generic analysis Default: true |
max_vector_calculations_per_frame | uint32 | optional | Max vectors Default: 2 |
upper_body_attribute_analysis | bool | optional | Upper body analysis Default: true |
max_upper_body_vector_calculations_per_frame | uint32 | optional | Max upper body vectors Default: 2 |
face_analysis | bool | optional | Face analysis Default: true |
max_face_vector_calculations_per_frame | uint32 | optional | Max face vectors Default: 2 |
lp_analysis | bool | optional | License plate analysis Default: true |
max_lp_per_frame | uint32 | optional | Max license plates Default: 2 |
background_analysis | bool | optional | Background analysis Default: true |
max_bg_vector_calculations_per_frame | uint32 | optional | Max background vectors Default: 1 |
IndexingStatus¶
Field | Type | Label | Description |
---|---|---|---|
status | IndexingStatus.STATUS | optional | Status Default: NO_INDEX |
message | string | optional | Message |
progress | uint32 | optional | Progress |
Mp4Metadata¶
QueryExecutionState¶
Field | Type | Label | Description |
---|---|---|---|
state | QueryExecutionState.State | required | State |
live | bool | optional | Live query Default: true |
progress_in_percent | uint32 | optional | Progress |
started | com.ultinous.Timestamp | optional | Start timestamp |
ended | com.ultinous.Timestamp | optional | End timestamp |
message | string | optional | Message |
QueryExecutionStates¶
Field | Type | Label | Description |
---|---|---|---|
execution_states | QueryExecutionStates.ExecutionStatesEntry | repeated | Query states by UUID |
QueryExecutionStates.ExecutionStatesEntry¶
Field | Type | Label | Description |
---|---|---|---|
key | string | optional | |
value | QueryExecutionState | optional |
RTSPInfo¶
Information about an RTSP stream.
Field | Type | Label | Description |
---|---|---|---|
frame | com.ultinous.JPEGImage | required | Snapshot frame |
fps | float | required | Frame rate of the stream. |
codec | string | required | Codec of the streams (eg.: h264) |
RTSPMetadata¶
Field | Type | Label | Description |
---|---|---|---|
rtsp_url | string | required | RTSP URL |
retention_in_seconds | uint32 | optional | Retention time Default: 86400 |
RTSPTestResult¶
Result of a testRTSP call.
Field | Type | Label | Description |
---|---|---|---|
error_message | string | optional | Human readable message if connection failed. |
rtsp_info | RTSPInfo | optional | Rtsp info if connection succeeded. |
RTSPVideoConfig¶
Field | Type | Label | Description |
---|---|---|---|
rtsp_url | string | required | RTSP URL |
retention_in_seconds | uint32 | optional | Retention time Default: 86400 |
RawMetadata¶
Field | Type | Label | Description |
---|---|---|---|
utc_ts_ms | int64 | required | UTC timestamp |
pts_us | uint64 | required | Presentation timestamp |
dts_us | uint64 | optional | Decoding timestamp |
Resources¶
Indexer node compute resources. Unit of resources are not specified it is implementation dependent however resources can be compared to each other For example load percentage can be calculated using the total and available resources.
Field | Type | Label | Description |
---|---|---|---|
decoding | float | required | Video decoding resources. |
inference | float | required | Deep learning inference resources. |
StreamVideoRequest¶
Field | Type | Label | Description |
---|---|---|---|
video_id | string | required | GUID |
format | StreamVideoRequest.Format | required | Format |
start_time | com.ultinous.Timestamp | required | Start time |
end_time | com.ultinous.Timestamp | optional | End time |
StreamVideoResponse¶
Field | Type | Label | Description |
---|---|---|---|
data | bytes | required | Video data |
raw_metadata | RawMetadata | optional | Raw metadata |
mp4_metadata | Mp4Metadata | optional | MP4 metadata |
UpdateVideoRequest¶
Field | Type | Label | Description |
---|---|---|---|
video_id | string | required | GUID |
video_metadata | VideoMetadata | required | Video metadata |
VideoInfo¶
Field | Type | Label | Description |
---|---|---|---|
video_metadata | VideoMetadata | required | Metadata |
rtsp_metadata | RTSPMetadata | optional | RTSP metadata |
is_live | bool | required | Live status |
status | VideoStatus | optional | Deprecated status |
start | com.ultinous.Timestamp | optional | Deprecated start |
end | com.ultinous.Timestamp | optional | Deprecated end |
VideoInfos¶
Field | Type | Label | Description |
---|---|---|---|
videos | VideoInfos.VideosEntry | repeated | UUID -> VideoInfo |
VideoInfos.VideosEntry¶
Field | Type | Label | Description |
---|---|---|---|
key | string | optional | |
value | VideoInfo | optional |
VideoMetadata¶
Field | Type | Label | Description |
---|---|---|---|
name | string | required | Name of the video source |
technical_name | string | optional | Placeholder for external id |
description | string | optional | Human readable description |
VideoMetadatas¶
Field | Type | Label | Description |
---|---|---|---|
metadatas | VideoMetadatas.MetadatasEntry | repeated | UUID -> VideoMetadata |
VideoMetadatas.MetadatasEntry¶
Field | Type | Label | Description |
---|---|---|---|
key | string | optional | |
value | VideoMetadata | optional |
VideoStatus¶
Field | Type | Label | Description |
---|---|---|---|
status | VideoStatus.STATUS | required | Status |
message | string | optional | Status message |
progress | uint32 | optional | Progress |
start | com.ultinous.Timestamp | optional | Start time |
end | com.ultinous.Timestamp | optional | End time |
VideoStatuses¶
Field | Type | Label | Description |
---|---|---|---|
videos | VideoStatuses.VideosEntry | repeated | UUID -> VideoStatus |
VideoStatuses.VideosEntry¶
Field | Type | Label | Description |
---|---|---|---|
key | string | optional | |
value | VideoStatus | optional |
ClassifierDescriptor.TYPE¶
Name | Number | Description |
---|---|---|
STABLE | 1 | Stable class |
UNSTABLE | 2 | Unstable class |
IndexingParams.DETECTOR_SPEED_RANGE_TRADEOFF¶
Name | Number | Description |
---|---|---|
HIGH_SPEED | 1 | High speed |
BALANCED | 2 | Balanced |
HIGH_RANGE | 3 | High range |
IndexingStatus.STATUS¶
Name | Number | Description |
---|---|---|
NO_INDEX | 1 | No index |
INITIALIZING | 2 | Initializing |
INDEXING | 3 | Indexing |
FINISHED | 4 | Finished |
ERROR | 7 | Error |
QueryExecutionState.State¶
Name | Number | Description |
---|---|---|
INITIALIZING | 1 | Initializing |
RUNNING | 2 | Running |
DONE | 3 | Done |
STOPPED | 4 | Stopped |
ERROR | 5 | Error |
StreamVideoRequest.Format¶
Name | Number | Description |
---|---|---|
RAW | 0 | Raw format |
MP4 | 1 | MP4 format |
VideoStatus.STATUS¶
Name | Number | Description |
---|---|---|
CONNECTING | 1 | Connecting |
RECONNECTING | 2 | Reconnecting |
RECORDING | 3 | Recording |
FINISHED | 4 | Finished |
ERROR | 7 | Error |
u_query/proto/index.proto¶
Detection¶
Field | Type | Label | Description |
---|---|---|---|
video_id | string | optional | GUID of the video. This is optional because it is not part of the serialized index. It is filled by the reader when the detection is read from the index. |
frame_time | int64 | required | milliseconds since the epoch (strictly monotonous increasing) |
track_id | int64 | required | track id is unique within a stream |
frame_width | int32 | required | Frame info |
frame_height | int32 | required | |
obj_type | string | required | Generic detection info |
object type (eg.: COCO class name) extended with "bg" as background | | box | Rect | required | | | confidence | float | required | | | features | com.ultinous.FeatureVector | optional | generic features (eg.: CLIP features) | | person_attributes | PersonAttributes | optional | Object type specific attributes. Some objects (like person, vehicles) have more detailed attributes. | | vehicle_attributes | VehicleAttributes | optional | | | end_of_frame | bool | optional | Default: false |
DetectionCluster¶
Field | Type | Label | Description |
---|---|---|---|
fv | com.ultinous.FeatureVector | optional | |
detections | Detection | repeated |
DetectionMeta¶
Field | Type | Label | Description |
---|---|---|---|
video_id | string | required | |
frame_time | int64 | required | |
track_id | int64 | required |
DetectionPair¶
Output structures TODO: move this to its proper place
Field | Type | Label | Description |
---|---|---|---|
left | Detection | required | |
right | Detection | required |
FaceAttributes¶
Field | Type | Label | Description |
---|---|---|---|
key_points | FaceKeyPoints | optional | |
confidence | float | optional | |
face_rec_features | com.ultinous.FeatureVector | optional | |
face_features | com.ultinous.FeatureVector | optional |
FaceKeyPoints¶
Field | Type | Label | Description |
---|---|---|---|
right_eye | com.ultinous.Point | optional | |
left_eye | com.ultinous.Point | optional | |
nose | com.ultinous.Point | optional | |
mouth_right | com.ultinous.Point | optional | |
mouth_left | com.ultinous.Point | optional |
FrameInfo¶
Field | Type | Label | Description |
---|---|---|---|
frame_width | int32 | required | |
frame_height | int32 | required |
IndexRecord¶
for every analyzed frame there is a FrameInfo after the detections ts: frame_ts_ms key: track_id or empty for frame info
Field | Type | Label | Description |
---|---|---|---|
detection | NewDetection | optional | |
frame_info | FrameInfo | optional |
IntKey¶
Field | Type | Label | Description |
---|---|---|---|
id | int64 | required |
LicensePlateAttributes¶
Field | Type | Label | Description |
---|---|---|---|
confidence | float | optional | TODO: lp keypoints |
licence_plate | string | optional |
NewDetection¶
Field | Type | Label | Description |
---|---|---|---|
obj_type | string | required | object type (eg.: COCO class name) extended with "bg" as background |
box | Rect | required | |
confidence | float | required | |
features | com.ultinous.FeatureVector | optional | generic features (eg.: CLIP features) |
person_attributes | PersonAttributes | optional | |
vehicle_attributes | VehicleAttributes | optional | |
meta | DetectionMeta | optional | beam needs this |
PersonAttributes¶
Field | Type | Label | Description |
---|---|---|---|
face_attributes | FaceAttributes | optional | |
upper_body_features | com.ultinous.FeatureVector | optional |
Rect¶
Field | Type | Label | Description |
---|---|---|---|
x | int32 | required | |
y | int32 | required | |
width | int32 | required | |
height | int32 | required |
VehicleAttributes¶
Field | Type | Label | Description |
---|---|---|---|
license_plate | LicensePlateAttributes | optional |
u_query/proto/indexer.proto¶
IndexerConfig¶
Field | Type | Label | Description |
---|---|---|---|
init | Indexings | optional | |
update | Indexing | optional | |
disable | string | optional | disables indexing for the specified video id |
Indexing¶
Field | Type | Label | Description |
---|---|---|---|
video_id | string | required | |
cfg | IndexingConfig | optional | not set if indexing is disabled (paused) |
IndexingConfig¶
Field | Type | Label | Description |
---|---|---|---|
params | com.ultinous.uquery.model.common.IndexingParams | required | |
bootstrap_servers | string | required | output kafka |
start | com.ultinous.Timestamp | optional | starts indexing from max(timestamp, highest ts from index + 1) |
end | com.ultinous.Timestamp | optional |
IndexingInfo¶
Field | Type | Label | Description |
---|---|---|---|
indexing | Indexing | required | |
status | com.ultinous.uquery.model.common.IndexingStatus | required | Status info. |
start | com.ultinous.Timestamp | optional | Earliest timestamp in the index. |
end | com.ultinous.Timestamp | optional |
IndexingInfos¶
Field | Type | Label | Description |
---|---|---|---|
infos | IndexingInfo | repeated |
Indexings¶
Field | Type | Label | Description |
---|---|---|---|
indexings | Indexing | repeated |
IndexerService¶
A video indexer. Input video comes from a kafka, output index goes to kafka (can be a different kafka instance) Main functions: - Index live or historic videos
Stored state: - Indexing config
Method Name | Request Type | Response Type | Description |
---|---|---|---|
getHealthStatus | .google.protobuf.Empty | .com.ultinous.ServiceHealth | Service health check |
getTotalResources | .google.protobuf.Empty | .com.ultinous.uquery.model.common.Resources | Gets the total compute resources of this indexer hardware. |
getAvailableResources | .google.protobuf.Empty | .com.ultinous.uquery.model.common.Resources | Gets the available compute resources of this indexer hardware. |
getResourceUse | Indexing | .com.ultinous.uquery.model.common.Resources | Calculate resource usage for a given indexing config. Call this before setIndex to make sure there are enough resources. |
pushConfigs | IndexerConfig stream | .google.protobuf.Empty | |
set | Indexing | .google.protobuf.Empty | Sets indexing for a given video. This starts a resource (video decoding, dnn inference), intensive process. Call getIndexingResourceUse to calculate the necessary resources. |
list | .google.protobuf.Empty | IndexingInfos | Get all video config and status |
calcCLIPFeatureVectorFromText | .google.protobuf.StringValue | .com.ultinous.FeatureVector | This is needed for the QueryEngine to translate free text to feature vector Implementation does not need to run on GPU as it is only used once per query. TODO: find a better place (eg.: separate service) |
getObjectTypes | .google.protobuf.Empty | .com.ultinous.Strings | Returns all object types (eg.: person, car, dog, ...) |
u_query/proto/video_storage.proto¶
AddLocalVideoRequest¶
Field | Type | Label | Description |
---|---|---|---|
id | string | optional | |
path | string | required | |
start_time | com.ultinous.Timestamp | required | |
video_metadata | com.ultinous.uquery.model.common.VideoMetadata | required |
AddRTSPVideoRequest¶
Field | Type | Label | Description |
---|---|---|---|
id | string | optional | |
video_metadata | com.ultinous.uquery.model.common.VideoMetadata | required | |
rtsp_metadata | com.ultinous.uquery.model.common.RTSPMetadata | required |
LocalVideoMetadata¶
Field | Type | Label | Description |
---|---|---|---|
path | string | required | |
start_time | com.ultinous.Timestamp | required |
StorageConfig¶
Field | Type | Label | Description |
---|---|---|---|
init | VideoConfigs | optional | |
update | VideoConfig | optional | |
delete | string | optional | Deletes a video (with all config and recorded video data) |
UploadAndAddVideoRequest¶
Field | Type | Label | Description |
---|---|---|---|
metadata | VideoUploadMetadata | optional | |
chunk | bytes | optional |
VideoConfig¶
Field | Type | Label | Description |
---|---|---|---|
video_id | string | required | |
rtsp | com.ultinous.uquery.model.common.RTSPMetadata | optional | |
local | LocalVideoMetadata | optional | |
uploaded | google.protobuf.Empty | optional |
VideoConfigs¶
Field | Type | Label | Description |
---|---|---|---|
configs | VideoConfig | repeated |
VideoUploadMetadata¶
Field | Type | Label | Description |
---|---|---|---|
id | string | optional | |
start_time | com.ultinous.Timestamp | required | |
video_metadata | com.ultinous.uquery.model.common.VideoMetadata | required |
VideoStorage¶
A video storage that can store both live and historic videos. Main functions: - Add video data from live (RTSP) or historic source (video files). - Access video data in various forms (jpeg image, short video sequence, direct packet level access from kafka) - Access config and status information
Stored state: - Encoded video data in kafka - VideoConfig for each video
libs/proto/utils.proto¶
FeatureVector¶
Field | Type | Label | Description |
---|---|---|---|
vals | float | repeated |
JPEGImage¶
Field | Type | Label | Description |
---|---|---|---|
content | bytes | required |
JPEGImageWithTimestamp¶
Field | Type | Label | Description |
---|---|---|---|
image | JPEGImage | required | |
timestamp | Timestamp | required |
KafkaTopic¶
Field | Type | Label | Description |
---|---|---|---|
broker | string | required | eg.: "localhost:9092" |
topic | string | required |
Point¶
Field | Type | Label | Description |
---|---|---|---|
x | int32 | required | |
y | int32 | required |
Polygon2D¶
Field | Type | Label | Description |
---|---|---|---|
points | Point | repeated |
ServiceHealth¶
Generic service health response.
Field | Type | Label | Description |
---|---|---|---|
message | string | optional | Human readable message describing the current state. |
status | ServiceHealth.STATUS | required | Current status. |
Strings¶
Field | Type | Label | Description |
---|---|---|---|
strs | string | repeated |
Timestamp¶
Field | Type | Label | Description |
---|---|---|---|
millis | int64 | required | Millisecond resolution UTC time. |
ServiceHealth.STATUS¶
Name | Number | Description |
---|---|---|
STARTING | 1 | The service is staring, calling endpoints can cause error as the service is not initialized yet. |
HEALTHY | 2 | Everything works normally. |
WARNING | 3 | Everything works normally but there are warnings requiring actions, (eg.: low on resource) |
UNHEALTHY | 4 | The service does not work normally. |
UNREACHABLE | 5 | The service is unreachable. |
File-level Extensions¶
Extension | Type | Base | Number | Description |
---|---|---|---|---|
enum_description | string | .google.protobuf.EnumOptions | 50100 | |
enum_value_description | string | .google.protobuf.EnumValueOptions | 50100 | |
field_description | string | .google.protobuf.FieldOptions | 50100 | |
description | string | .google.protobuf.MessageOptions | 50100 |