MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / WriteBand_Fmt17

Function WriteBand_Fmt17

AudioEncode/aencode.cpp:172–208  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

170}
171
172void WriteBand_Fmt17(Encoder &enc, int32_t colIndex, uint32_t formatId) {
173 const float currBitValue = static_cast<float>(enc.m_currBlockBitValue);
174 const float halfCurrBitValue = currBitValue * 0.5f;
175 const int32_t minValue = (int32_t)ceilf(-32767.0f / currBitValue);
176 const int32_t maxValue = (int32_t)floorf(32767.0f / currBitValue);
177
178 const float *pCurrSample = &enc.m_levelSlots[enc.m_levels][colIndex];
179 int32_t currSampleIndex = enc.m_samples_per_subband;
180 while (currSampleIndex) {
181 --currSampleIndex;
182 int32_t val = (int32_t)floorf((*pCurrSample + halfCurrBitValue) / currBitValue);
183 if (minValue > val) {
184 val = minValue;
185 } else if (maxValue < val) {
186 val = maxValue;
187 }
188
189 pCurrSample += enc.m_numColumns;
190 if (val == 0) {
191 if (currSampleIndex != 0 && !(int)floorf((*pCurrSample + halfCurrBitValue) / currBitValue)) {
192 enc.m_bits.WriteBits(0, 1);
193
194 if (currSampleIndex == 0)
195 return;
196 --currSampleIndex;
197 pCurrSample += enc.m_numColumns;
198 continue;
199 }
200
201 enc.m_bits.WriteBits(1, 2);
202 continue;
203 }
204
205 enc.m_bits.WriteBits(3, 2);
206 enc.m_bits.WriteBits((val == 1) ? 1 : 0, 1);
207 }
208}
209
210void WriteBand_Fmt18(Encoder &enc, int32_t colIndex, uint32_t formatId) {
211 const float currBlockBitValue = static_cast<float>(enc.m_currBlockBitValue);

Callers

nothing calls this directly

Calls 1

WriteBitsMethod · 0.80

Tested by

no test coverage detected