| // 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. |
| 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. |
| 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. |
| 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; |
| }; |