1/*
2Copyright 2018 Google Inc. All Rights Reserved.
3
4Licensed under the Apache License, Version 2.0 (the "License");
5you may not use this file except in compliance with the License.
6You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10Unless required by applicable law or agreed to in writing, software
11distributed under the License is distributed on an "AS-IS" BASIS,
12WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13See the License for the specific language governing permissions and
14limitations under the License.
15*/
16
17// Copyright 2017 Google Inc. All rights reserved.
18//
19// Licensed under the Apache License, Version 2.0 (the "License");
20// you may not use this file except in compliance with the License.
21// You may obtain a copy of the License at
22//
23// http://www.apache.org/licenses/LICENSE-2.0
24//
25// Unless required by applicable law or agreed to in writing, software
26// distributed under the License is distributed on an "AS-IS" BASIS,
27// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
28// See the License for the specific language governing permissions and
29// limitations under the License.
30#ifndef RESONANCE_AUDIO_PLATFORM_COMMON_ROOM_PROPERTIES_H_
31#define RESONANCE_AUDIO_PLATFORM_COMMON_ROOM_PROPERTIES_H_
32
33namespace vraudio {
34
35// Room surface material names, used to set room properties.
36// Note that this enum is C-compatible by design to be used across external
37// C/C++ and C# implementations.
38enum MaterialName {
39 kTransparent = 0,
40 kAcousticCeilingTiles,
41 kBrickBare,
42 kBrickPainted,
43 kConcreteBlockCoarse,
44 kConcreteBlockPainted,
45 kCurtainHeavy,
46 kFiberGlassInsulation,
47 kGlassThin,
48 kGlassThick,
49 kGrass,
50 kLinoleumOnConcrete,
51 kMarble,
52 kMetal,
53 kParquetOnConcrete,
54 kPlasterRough,
55 kPlasterSmooth,
56 kPlywoodPanel,
57 kPolishedConcreteOrTile,
58 kSheetrock,
59 kWaterOrIceSurface,
60 kWoodCeiling,
61 kWoodPanel,
62 kUniform,
63 kNumMaterialNames
64};
65
66// Acoustic room properties. This struct can be used to describe an acoustic
67// environment with a given geometry and surface properties.
68// Note that this struct is C-compatible by design to be used across external
69// C/C++ and C# implementations.
70struct RoomProperties {
71 // Constructs |RoomProperties| with the default values.
72 RoomProperties()
73 : position{0.0f, 0.0f, 0.0f},
74 rotation{0.0f, 0.0f, 0.0f, 1.0f},
75 dimensions{0.0f, 0.0f, 0.0f},
76 material_names{MaterialName::kTransparent, MaterialName::kTransparent,
77 MaterialName::kTransparent, MaterialName::kTransparent,
78 MaterialName::kTransparent, MaterialName::kTransparent},
79 reflection_scalar(1.0f),
80 reverb_gain(1.0f),
81 reverb_time(1.0f),
82 reverb_brightness(0.0f) {}
83
84 // Center position of the room in world space, uses right-handed coordinate
85 // system.
86 float position[3];
87
88 // Rotation (quaternion) of the room in world space, uses right-handed
89 // coordinate system.
90 float rotation[4];
91
92 // Size of the shoebox room in world space, uses right-handed coordinate
93 // system.
94 float dimensions[3];
95
96 // Material name of each surface of the shoebox room in this order:
97 // [0] (-)ive x-axis wall (left)
98 // [1] (+)ive x-axis wall (right)
99 // [2] (-)ive y-axis wall (bottom)
100 // [3] (+)ive y-axis wall (top)
101 // [4] (-)ive z-axis wall (front)
102 // [5] (+)ive z-axis wall (back)
103 MaterialName material_names[6];
104
105 // User defined uniform scaling factor for all reflection coefficients.
106 float reflection_scalar;
107
108 // User defined reverb tail gain multiplier.
109 float reverb_gain;
110
111 // Adjusts the reverberation time across all frequency bands. RT60 values
112 // are multiplied by this factor. Has no effect when set to 1.0f.
113 float reverb_time;
114
115 // Controls the slope of a line from the lowest to the highest RT60 values
116 // (increases high frequency RT60s when positive, decreases when negative).
117 // Has no effect when set to 0.0f.
118 float reverb_brightness;
119};
120
121} // namespace vraudio
122
123#endif // RESONANCE_AUDIO_PLATFORM_COMMON_ROOM_PROPERTIES_H_
124

source code of qtmultimedia/src/3rdparty/resonance-audio/platforms/common/room_properties.h