51 lines
2.2 KiB
Protocol Buffer
51 lines
2.2 KiB
Protocol Buffer
// Generated by https://github.com/foxglove/foxglove-sdk
|
|
|
|
syntax = "proto3";
|
|
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
package foxglove;
|
|
|
|
// A single frame of a compressed video bitstream
|
|
message CompressedVideo {
|
|
// Timestamp of video frame
|
|
google.protobuf.Timestamp timestamp = 1;
|
|
|
|
// Frame of reference for the video.
|
|
//
|
|
// The origin of the frame is the optical center of the camera. +x points to the right in the video, +y points down, and +z points into the plane of the video.
|
|
string frame_id = 2;
|
|
|
|
// Compressed video frame data.
|
|
//
|
|
// For packet-based video codecs this data must begin and end on packet boundaries (no partial packets), and must contain enough video packets to decode exactly one image (either a keyframe or delta frame). Note: Foxglove does not support video streams that include B frames because they require lookahead.
|
|
//
|
|
// Specifically, the requirements for different `format` values are:
|
|
//
|
|
// - `h264`
|
|
// - Use Annex B formatted data
|
|
// - Each CompressedVideo message should contain enough NAL units to decode exactly one video frame
|
|
// - Each message containing a key frame (IDR) must also include a SPS NAL unit
|
|
//
|
|
// - `h265` (HEVC)
|
|
// - Use Annex B formatted data
|
|
// - Each CompressedVideo message should contain enough NAL units to decode exactly one video frame
|
|
// - Each message containing a key frame (IRAP) must also include relevant VPS/SPS/PPS NAL units
|
|
//
|
|
// - `vp9`
|
|
// - Each CompressedVideo message should contain exactly one video frame
|
|
//
|
|
// - `av1`
|
|
// - Use the "Low overhead bitstream format" (section 5.2)
|
|
// - Each CompressedVideo message should contain enough OBUs to decode exactly one video frame
|
|
// - Each message containing a key frame must also include a Sequence Header OBU
|
|
bytes data = 3;
|
|
|
|
// Video format.
|
|
//
|
|
// Supported values: `h264`, `h265`, `vp9`, `av1`.
|
|
//
|
|
// Note: compressed video support is subject to hardware limitations and patent licensing, so not all encodings may be supported on all platforms. See more about [H.265 support](https://caniuse.com/hevc), [VP9 support](https://caniuse.com/webm), and [AV1 support](https://caniuse.com/av1).
|
|
string format = 4;
|
|
}
|