| // 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.audio; |
| |
| /// Describes a format used for audio streams without reference to compression. Where |
| /// compression is supported, this type should be combined with `fuchsia.media2.Compression`. |
| /// An uncompressed audio stream uses LPCM encoding. |
| type Format = table { |
| /// The type of individual samples. |
| 1: sample_type SampleType; |
| |
| /// The number of samples per frame. |
| 2: channel_count uint32; |
| |
| /// The number of frames per second. |
| 3: frames_per_second uint32; |
| |
| /// The spatial assignment of each channel. |
| 4: channel_layout ChannelLayout; |
| }; |
| |
| /// Expresses the type of individual audio samples. |
| type SampleType = flexible enum { |
| UINT_8 = 1; |
| INT_16 = 2; |
| INT_32 = 3; |
| FLOAT_32 = 4; |
| FLOAT_64 = 5; |
| }; |
| |
| /// Expresses the intended assignment of channels in an audio elementary stream. |
| type ChannelLayout = flexible union { |
| /// This value describes the assignment of every channel. Channel |
| /// configuration must agree with `channel_count`. |
| 1: config ChannelConfig; |
| }; |
| |
| /// Spatial assignment of channels. |
| type ChannelConfig = flexible enum { |
| /// Front.C (CENTER) |
| MONO = 0x01; |
| |
| /// Front.L (LEFT) | Front.R (RIGHT) |
| STEREO = 0x02; |
| |
| /// Front.L | Front.R | Back.L | Back.R, aka “Four corners” |
| QUAD = 0x03; |
| |
| /// Front.L | Front.R | Back.C, aka “LRS” |
| SURROUND_3 = 0x04; |
| |
| /// Front.L | Front.R | Front.C | Back.C, aka “LRCS” |
| SURROUND_4 = 0x05; |
| |
| /// Front.L | Front.R | Front.C | LFE | Side.L | Side.R |
| SURROUND_5_1 = 0x06; |
| }; |