diff --git a/api/datatype.proto b/api/datatype.proto index 4619d4a..782913e 100644 --- a/api/datatype.proto +++ b/api/datatype.proto @@ -107,3 +107,26 @@ message AnnotatedTensor { // e.g. pipeline latencies map metadata = 2; } + +enum PixelFormat { + kPixelFormatUnknown = 0; + kYUV420_888 = 1; + kRGB888 = 2; + kRGBA8888 = 3; + kGrayscale8 = 4; + kRAW10 = 5; + kRAW16 = 6; + kNV12 = 7; + kNV21 = 8; +} + +message ImageFrame { + uint32 width = 1; + uint32 height = 2; + PixelFormat format = 3; + uint32 sample_rate_hz = 4; + uint64 sequence_number = 5; + uint64 timestamp_ns = 6; + uint64 unix_timestamp_ns = 7; + bytes data = 8; +} diff --git a/api/device.proto b/api/device.proto index 8883fe2..477b509 100644 --- a/api/device.proto +++ b/api/device.proto @@ -13,6 +13,7 @@ message Peripheral { kElectricalStimulation = 2; kOpticalStimulation = 3; kSpikeSource = 4; + kCamera = 5; } string name = 1; string vendor = 2; diff --git a/api/node.proto b/api/node.proto index f3369c6..2eefb95 100644 --- a/api/node.proto +++ b/api/node.proto @@ -11,6 +11,7 @@ import "api/nodes/disk_writer.proto"; import "api/nodes/spike_source.proto"; import "api/nodes/spike_binner.proto"; import "api/nodes/application.proto"; +import "api/nodes/camera.proto"; enum NodeType { kNodeTypeUnknown = 0; @@ -27,6 +28,7 @@ enum NodeType { kDiskWriter = 9; kSpikeBinner = 10; kApplication = 11; + kCamera = 12; } message NodeConfig { @@ -47,6 +49,7 @@ message NodeConfig { SpikeSourceConfig spike_source = 12; SpikeBinnerConfig spike_binner = 13; ApplicationNodeConfig application = 14; + CameraConfig camera = 15; } } @@ -63,6 +66,7 @@ message NodeStatus { ApplicationNodeStatus application = 7; OpticalStimulationStatus optical_stimulation = 8; DiskWriterStatus disk_writer = 10; + CameraStatus camera = 11; } } diff --git a/api/nodes/camera.proto b/api/nodes/camera.proto new file mode 100644 index 0000000..42ba9c4 --- /dev/null +++ b/api/nodes/camera.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; + +package synapse; + +import "api/datatype.proto"; + +message CameraConfig { + uint32 peripheral_id = 1; + uint32 width = 2; + uint32 height = 3; + PixelFormat format = 4; + uint32 frame_rate_hz = 5; +} + +message CameraStatus { + uint64 frames_produced = 1; + uint64 frames_dropped = 2; +}