cubeb_sys/
channel.rs

1// Copyright © 2017-2018 Mozilla Foundation
2//
3// This program is made available under an ISC-style license.  See the
4// accompanying file LICENSE for details.
5
6#[cfg(all(windows, not(target_env = "gnu")))]
7use std::os::raw::c_int as c_enum;
8#[cfg(any(not(windows), all(windows, target_env = "gnu")))]
9use std::os::raw::c_uint as c_enum;
10
11cubeb_enum! {
12    pub enum cubeb_channel : c_enum {
13        CHANNEL_UNKNOWN = 0,
14        CHANNEL_FRONT_LEFT = 1 << 0,
15        CHANNEL_FRONT_RIGHT = 1 << 1,
16        CHANNEL_FRONT_CENTER = 1 << 2,
17        CHANNEL_LOW_FREQUENCY = 1 << 3,
18        CHANNEL_BACK_LEFT = 1 << 4,
19        CHANNEL_BACK_RIGHT = 1 << 5,
20        CHANNEL_FRONT_LEFT_OF_CENTER = 1 << 6,
21        CHANNEL_FRONT_RIGHT_OF_CENTER = 1 << 7,
22        CHANNEL_BACK_CENTER = 1 << 8,
23        CHANNEL_SIDE_LEFT = 1 << 9,
24        CHANNEL_SIDE_RIGHT = 1 << 10,
25        CHANNEL_TOP_CENTER = 1 << 11,
26        CHANNEL_TOP_FRONT_LEFT = 1 << 12,
27        CHANNEL_TOP_FRONT_CENTER = 1 << 13,
28        CHANNEL_TOP_FRONT_RIGHT = 1 << 14,
29        CHANNEL_TOP_BACK_LEFT = 1 << 15,
30        CHANNEL_TOP_BACK_CENTER = 1 << 16,
31        CHANNEL_TOP_BACK_RIGHT = 1 << 17,
32    }
33}
34
35cubeb_enum! {
36    pub enum cubeb_channel_layout : c_enum {
37        CUBEB_LAYOUT_UNDEFINED = 0,
38        CUBEB_LAYOUT_MONO = CHANNEL_FRONT_CENTER,
39        CUBEB_LAYOUT_MONO_LFE = CUBEB_LAYOUT_MONO | CHANNEL_LOW_FREQUENCY,
40        CUBEB_LAYOUT_STEREO = CHANNEL_FRONT_LEFT | CHANNEL_FRONT_RIGHT,
41        CUBEB_LAYOUT_STEREO_LFE = CUBEB_LAYOUT_STEREO | CHANNEL_LOW_FREQUENCY,
42        CUBEB_LAYOUT_3F = CHANNEL_FRONT_LEFT | CHANNEL_FRONT_RIGHT |
43                          CHANNEL_FRONT_CENTER,
44        CUBEB_LAYOUT_3F_LFE = CUBEB_LAYOUT_3F | CHANNEL_LOW_FREQUENCY,
45        CUBEB_LAYOUT_2F1 = CHANNEL_FRONT_LEFT | CHANNEL_FRONT_RIGHT |
46                           CHANNEL_BACK_CENTER,
47        CUBEB_LAYOUT_2F1_LFE = CUBEB_LAYOUT_2F1 | CHANNEL_LOW_FREQUENCY,
48        CUBEB_LAYOUT_3F1 = CHANNEL_FRONT_LEFT | CHANNEL_FRONT_RIGHT |
49                           CHANNEL_FRONT_CENTER | CHANNEL_BACK_CENTER,
50        CUBEB_LAYOUT_3F1_LFE = CUBEB_LAYOUT_3F1 | CHANNEL_LOW_FREQUENCY,
51        CUBEB_LAYOUT_2F2 = CHANNEL_FRONT_LEFT | CHANNEL_FRONT_RIGHT |
52                           CHANNEL_SIDE_LEFT | CHANNEL_SIDE_RIGHT,
53        CUBEB_LAYOUT_2F2_LFE = CUBEB_LAYOUT_2F2 | CHANNEL_LOW_FREQUENCY,
54        CUBEB_LAYOUT_QUAD = CHANNEL_FRONT_LEFT | CHANNEL_FRONT_RIGHT |
55                            CHANNEL_BACK_LEFT | CHANNEL_BACK_RIGHT,
56        CUBEB_LAYOUT_QUAD_LFE = CUBEB_LAYOUT_QUAD | CHANNEL_LOW_FREQUENCY,
57        CUBEB_LAYOUT_3F2 = CHANNEL_FRONT_LEFT | CHANNEL_FRONT_RIGHT |
58                           CHANNEL_FRONT_CENTER | CHANNEL_SIDE_LEFT |
59                           CHANNEL_SIDE_RIGHT,
60        CUBEB_LAYOUT_3F2_LFE = CUBEB_LAYOUT_3F2 | CHANNEL_LOW_FREQUENCY,
61        CUBEB_LAYOUT_3F2_BACK = CUBEB_LAYOUT_QUAD | CHANNEL_FRONT_CENTER,
62        CUBEB_LAYOUT_3F2_LFE_BACK = CUBEB_LAYOUT_3F2_BACK | CHANNEL_LOW_FREQUENCY,
63        CUBEB_LAYOUT_3F3R_LFE = CHANNEL_FRONT_LEFT | CHANNEL_FRONT_RIGHT |
64                                CHANNEL_FRONT_CENTER | CHANNEL_LOW_FREQUENCY |
65                                CHANNEL_BACK_CENTER | CHANNEL_SIDE_LEFT |
66                                CHANNEL_SIDE_RIGHT,
67        CUBEB_LAYOUT_3F4_LFE = CHANNEL_FRONT_LEFT | CHANNEL_FRONT_RIGHT |
68                               CHANNEL_FRONT_CENTER | CHANNEL_LOW_FREQUENCY |
69                               CHANNEL_BACK_LEFT | CHANNEL_BACK_RIGHT |
70                               CHANNEL_SIDE_LEFT | CHANNEL_SIDE_RIGHT,
71    }
72}