Files
crosstyan 213adee887 feat: add streamer-owned recording control service
Introduce a dedicated streamer-side recording control plane instead of sharing the producer recorder API.

- register streamer-owned recorder endpoints as a NATS micro service
- add explicit MP4 and MCAP recorder control protobufs and subject helpers
- wire recorder lifecycle handling into the pipeline runtime
- add MP4 writer and depth-alignment support files used by the new recording flow
2026-04-12 20:22:28 +08:00

89 lines
1.7 KiB
Protocol Buffer

syntax = "proto3";
package cvmmap_streamer.proto;
option cc_enable_arenas = true;
enum RpcCode {
RPC_CODE_OK = 0;
RPC_CODE_INVALID_REQUEST = 1;
RPC_CODE_UNSUPPORTED = 2;
RPC_CODE_BUSY = 3;
RPC_CODE_INTERNAL = 4;
}
message Mp4RecorderState {
bool can_record = 1;
bool is_recording = 2;
bool last_frame_ok = 3;
uint32 frames_ingested = 4;
uint32 frames_encoded = 5;
string active_path = 6;
string error_message = 7;
}
message Mp4StartRequest {
string output_path = 1;
}
message Mp4StartResponse {
RpcCode code = 1;
string error_message = 2;
Mp4RecorderState state = 3;
}
message Mp4StopRequest {}
message Mp4StopResponse {
RpcCode code = 1;
string error_message = 2;
Mp4RecorderState state = 3;
}
message Mp4StatusRequest {}
message Mp4StatusResponse {
RpcCode code = 1;
string error_message = 2;
Mp4RecorderState state = 3;
}
message McapRecorderState {
bool can_record = 1;
bool is_recording = 2;
bool last_frame_ok = 3;
uint32 frames_ingested = 4;
uint32 frames_encoded = 5;
string active_path = 6;
string error_message = 7;
}
message McapStartRequest {
string output_path = 1;
optional string compression = 2;
optional string topic = 3;
optional string depth_topic = 4;
optional string body_topic = 5;
optional string frame_id = 6;
}
message McapStartResponse {
RpcCode code = 1;
string error_message = 2;
McapRecorderState state = 3;
}
message McapStopRequest {}
message McapStopResponse {
RpcCode code = 1;
string error_message = 2;
McapRecorderState state = 3;
}
message McapStatusRequest {}
message McapStatusResponse {
RpcCode code = 1;
string error_message = 2;
McapRecorderState state = 3;
}