File tree Expand file tree Collapse file tree 1 file changed +27
-9
lines changed
DataTool/ConvertLogic/WEM Expand file tree Collapse file tree 1 file changed +27
-9
lines changed Original file line number Diff line number Diff line change @@ -155,22 +155,40 @@ public WwiseRIFFOpus(Stream stream, bool forceStereo) {
155
155
WAVEChannelMask . SEVENPOINT1 => 2 ,
156
156
_ => 0 ,
157
157
} ;
158
+
159
+ if ( DEBUGForceStereo && Header . Channels > 2 ) {
160
+ Header . CoupledCount = 1 ;
161
+ Header . Channels = 2 ;
162
+ MappingFamily = 1 ;
163
+ }
164
+
158
165
Header . StreamCount = Header . Channels - Header . CoupledCount ;
159
166
167
+ Header . ChannelMapping = new byte [ Header . Channels ] ;
160
168
if ( MappingFamily == 1 ) {
161
169
for ( var i = 0 ; i < Header . Channels ; i ++ ) {
162
170
Header . ChannelMapping [ i ] = MappingMatrix [ Header . Channels - 1 ] [ i ] ;
163
171
}
164
172
} else {
165
- if ( DEBUGForceStereo && Header . Channels > 2 ) {
166
- Header . StreamCount = Header . Channels ;
167
- Header . Channels = 2 ;
168
- MappingFamily = 1 ;
169
- }
170
-
171
- Header . ChannelMapping = new byte [ Header . Channels ] ;
172
- for ( var i = 0 ; i < Header . Channels ; i ++ ) {
173
- Header . ChannelMapping [ i ] = ( byte ) i ;
173
+ if ( ( Header . ChannelLayout & 8 ) == 0 ) {
174
+ for ( var i = 0 ; i < Header . Channels ; i ++ ) {
175
+ Header . ChannelMapping [ i ] = ( byte ) i ;
176
+ }
177
+ } else {
178
+ for ( var i = 0 ; i < Header . Channels ; i ++ ) {
179
+ var idx = 0 ;
180
+ for ( var j = Header . ChannelLayout & 7 ; j > 0 ; j &= j - 1 ) {
181
+ idx ++ ;
182
+ }
183
+
184
+ if ( idx == i ) {
185
+ Header . ChannelMapping [ i ] = ( byte ) ( idx - 1 ) ;
186
+ } else if ( i > idx ) {
187
+ Header . ChannelMapping [ i ] = ( byte ) ( i - 1 ) ;
188
+ } else {
189
+ Header . ChannelMapping [ i ] = ( byte ) i ;
190
+ }
191
+ }
174
192
}
175
193
}
176
194
}
You can’t perform that action at this time.
0 commit comments