import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; /** A single frame of a compressed video bitstream */ export interface CompressedVideo { $type: "foxglove.CompressedVideo"; /** Timestamp of video frame */ timestamp: Date | undefined; /** * 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. */ frameId: string; /** * 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 */ data: Uint8Array; /** * 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). */ format: string; } export declare const CompressedVideo: MessageFns; type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; type DeepPartial = T extends Builtin ? T : T extends globalThis.Array ? globalThis.Array> : T extends ReadonlyArray ? ReadonlyArray> : T extends {} ? { [K in Exclude]?: DeepPartial; } : Partial; type KeysOfUnion = T extends T ? keyof T : never; type Exact = P extends Builtin ? P : P & { [K in keyof P]: Exact; } & { [K in Exclude | "$type">]: never; }; interface MessageFns { readonly $type: V; encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; fromJSON(object: any): T; toJSON(message: T): unknown; create, I>>(base?: I): T; fromPartial, I>>(object: I): T; } export {};