// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.video;

/// The maximum size of `Compression.parameters`.
const MAX_COMPRESSION_PARAMETERS_SIZE uint64 = 32768;

/// Describes the compression applied to a stream.
type Compression = table {
    /// The type of compression applied to the stream.
    1: type CompressionType;

    /// Opaque ‘out-of-band’ parameters describing the compression of the stream. The format of
    /// this field is a function of the `CompressionType`. It communicates to decoders parameters
    /// that are required to decompress the described stream. Many compression types do not require
    /// this field.
    2: oob_parameters vector<uint8>:<MAX_COMPRESSION_PARAMETERS_SIZE>;
};

// Type of compression applied to a stream.
type CompressionType = flexible enum {
    NONE = 0;

    H263 = 1;
    H264 = 2;
    MPEG4 = 3;
    THEORA = 4;
    VP3 = 5;
    VP8 = 6;
    VP9 = 7;
    HEVC = 8;
    AV1 = 9;
    MJPEG = 10;
};
