// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.cloud.visionai.v1; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Cloud.VisionAI.V1"; option go_package = "cloud.google.com/go/visionai/apiv1/visionaipb;visionaipb"; option java_multiple_files = true; option java_outer_classname = "StreamingResourcesProto"; option java_package = "com.google.cloud.visionai.v1"; option php_namespace = "Google\\Cloud\\VisionAI\\V1"; option ruby_package = "Google::Cloud::VisionAI::V1"; // The descriptor for a gstreamer buffer payload. message GstreamerBufferDescriptor { // The caps string of the payload. string caps_string = 1; // Whether the buffer is a key frame. bool is_key_frame = 2; // PTS of the frame. google.protobuf.Timestamp pts_time = 3; // DTS of the frame. google.protobuf.Timestamp dts_time = 4; // Duration of the frame. google.protobuf.Duration duration = 5; } // The descriptor for a raw image. message RawImageDescriptor { // Raw image format. Its possible values are: "srgb". string format = 1; // The height of the image. int32 height = 2; // The width of the image. int32 width = 3; } // The message that represents the data type of a packet. message PacketType { // The message that fully specifies the type of the packet. message TypeDescriptor { // Detailed information about the type. // // It is non-empty only for specific type class codecs. Needed only when the // type string alone is not enough to disambiguate the specific type. oneof type_details { // GstreamerBufferDescriptor is the descriptor for gstreamer buffer type. GstreamerBufferDescriptor gstreamer_buffer_descriptor = 2; // RawImageDescriptor is the descriptor for the raw image type. RawImageDescriptor raw_image_descriptor = 3; } // The type of the packet. Its possible values is codec dependent. // // The fully qualified type name is always the concatenation of the // value in `type_class` together with the value in `type`, separated by a // '/'. // // Note that specific codecs can define their own type hierarchy, and so the // type string here can in fact be separated by multiple '/'s of its own. // // Please see the open source SDK for specific codec documentation. string type = 1; } // The type class of the packet. Its possible values are: // "gst", "protobuf", and "string". string type_class = 1; // The type descriptor. TypeDescriptor type_descriptor = 2; } // The message that represents server metadata. message ServerMetadata { // The offset position for the packet in its stream. int64 offset = 1; // The timestamp at which the stream server receives this packet. This is // based on the local clock of on the server side. It is guaranteed to be // monotonically increasing for the packets within each session; however // this timestamp is not comparable across packets sent to the same stream // different sessions. Session here refers to one individual gRPC streaming // request to the stream server. google.protobuf.Timestamp ingest_time = 2; } // The message that represents series metadata. message SeriesMetadata { // Series name. It's in the format of // "projects/{project}/locations/{location}/clusters/{cluster}/series/{stream}". string series = 1 [ (google.api.resource_reference) = { type: "visionai.googleapis.com/Series" } ]; } // The message that represents packet header. message PacketHeader { // Input only. The capture time of the packet. google.protobuf.Timestamp capture_time = 1 [(google.api.field_behavior) = INPUT_ONLY]; // Input only. Immutable. The type of the payload. PacketType type = 2 [ (google.api.field_behavior) = INPUT_ONLY, (google.api.field_behavior) = IMMUTABLE ]; // Input only. This field is for users to attach user managed metadata. google.protobuf.Struct metadata = 3 [(google.api.field_behavior) = INPUT_ONLY]; // Output only. Metadata that the server appends to each packet before sending // it to receivers. You don't need to set a value for this field when sending // packets. ServerMetadata server_metadata = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Input only. Immutable. Metadata that the server needs to know where to // write the packets to. It's only required for the first packet. SeriesMetadata series_metadata = 5 [ (google.api.field_behavior) = INPUT_ONLY, (google.api.field_behavior) = IMMUTABLE ]; // Immutable. Packet flag set. SDK will set the flag automatically. int32 flags = 6 [(google.api.field_behavior) = IMMUTABLE]; // Immutable. Header string for tracing across services. It should be set when // the packet is first arrived in the stream server. // // The input format is a lowercase hex string: // - version_id: 1 byte, currently must be zero - hex encoded (2 characters) // - trace_id: 16 bytes (opaque blob) - hex encoded (32 characters) // - span_id: 8 bytes (opaque blob) - hex encoded (16 characters) // - trace_options: 1 byte (LSB means tracing enabled) - hex encoded (2 // characters) // Example: "00-404142434445464748494a4b4c4d4e4f-6162636465666768-01" // v trace_id span_id options string trace_context = 7 [(google.api.field_behavior) = IMMUTABLE]; } // The quanta of datum that the series accepts. message Packet { // The packet header. PacketHeader header = 1; // The payload of the packet. bytes payload = 2; }