blob: 6ac011bdce57219f4e7fa5a7755ac2f409b7486a [file] [log] [blame]
// Copyright 2021 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.mediastreams;
using fuchsia.math;
/// Describes a format used for video elementary streams without
/// reference to compression. Where compression is supported, this
/// type should be combined with a `Compression` struct.
@available(removed=HEAD, legacy=true)
type VideoFormat = struct {
/// Describes the manner in which pixels are encoded.
pixel_format PixelFormat;
/// Vendor-specific pixel format modifier.
pixel_format_modifier uint64;
/// Indicates the color space used to interpret pixel values.
color_space ColorSpace;
/// The size of a frame in terms of the number of pixels that
/// are represented in a frame payload.
coded_size fuchsia.math.Size;
/// The size of a frame in terms of the number of pixels that
/// should be displayed. These values will always be less than
/// or equal to the corresponding `coded_size` values.
display_size fuchsia.math.Size;
/// Aspect ratio of a single pixel as the video is intended to
/// be displayed.
aspect_ratio box<fuchsia.math.Size>;
// TODO: fuchsia.sysmem2.ImageFormat has bytes_per_row, but
// that’s a function of pixel_format and coded_size. Do we
// need that?
};
/// Expresses the manner in which video pixels are encoded.
@available(removed=HEAD, legacy=true)
type PixelFormat = strict enum {
INVALID = 0;
R8G8B8A8 = 1;
BGRA32 = 101;
I420 = 102;
M420 = 103;
NV12 = 104;
YUY2 = 105;
MJPEG = 106;
YV12 = 107;
BGR24 = 108;
RGB565 = 109;
RGB332 = 110;
RGB2220 = 111;
L8 = 112;
R8 = 113;
R8G8 = 114;
};
/// Expresses the color space used to interpret video pixel values.
@available(removed=HEAD, legacy=true)
type ColorSpace = strict enum {
INVALID = 0;
SRGB = 1;
REC601_NTSC = 2;
REC601_NTSC_FULL_RANGE = 3;
REC601_PAL = 4;
REC601_PAL_FULL_RANGE = 5;
REC709 = 6;
REC2020 = 7;
REC2100 = 8;
};