Skip to content

Commit 34cf3b5

Browse files
committed
Remover mixer sanitation
1 parent 01ffa95 commit 34cf3b5

File tree

4 files changed

+5
-123
lines changed

4 files changed

+5
-123
lines changed

include/MixHelpers.h

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ bool useNaNHandler();
4040

4141
void setNaNHandler( bool use );
4242

43-
bool sanitize( sampleFrame * src, int frames );
44-
4543
/*! \brief Add samples from src to dst */
4644
void add( sampleFrame* dst, const sampleFrame* src, int frames );
4745

@@ -60,15 +58,6 @@ void addMultipliedByBuffer( sampleFrame* dst, const sampleFrame* src, float coef
6058
/*! \brief Add samples from src multiplied by coeffSrc and coeffSrcBuf to dst */
6159
void addMultipliedByBuffers( sampleFrame* dst, const sampleFrame* src, ValueBuffer * coeffSrcBuf1, ValueBuffer * coeffSrcBuf2, int frames );
6260

63-
/*! \brief Same as addMultiplied, but sanitize output (strip out infs/nans) */
64-
void addSanitizedMultiplied( sampleFrame* dst, const sampleFrame* src, float coeffSrc, int frames );
65-
66-
/*! \brief Add samples from src multiplied by coeffSrc and coeffSrcBuf to dst - sanitized version */
67-
void addSanitizedMultipliedByBuffer( sampleFrame* dst, const sampleFrame* src, float coeffSrc, ValueBuffer * coeffSrcBuf, int frames );
68-
69-
/*! \brief Add samples from src multiplied by coeffSrc and coeffSrcBuf to dst - sanitized version */
70-
void addSanitizedMultipliedByBuffers( sampleFrame* dst, const sampleFrame* src, ValueBuffer * coeffSrcBuf1, ValueBuffer * coeffSrcBuf2, int frames );
71-
7261
/*! \brief Add samples from src multiplied by coeffSrcLeft/coeffSrcRight to dst */
7362
void addMultipliedStereo( sampleFrame* dst, const sampleFrame* src, float coeffSrcLeft, float coeffSrcRight, int frames );
7463

src/core/EffectChain.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,15 +191,12 @@ bool EffectChain::processAudioBuffer( sampleFrame * _buf, const fpp_t _frames, b
191191
return false;
192192
}
193193

194-
MixHelpers::sanitize( _buf, _frames );
195-
196194
bool moreEffects = false;
197195
for (const auto& effect : m_effects)
198196
{
199197
if (hasInputNoise || effect->isRunning())
200198
{
201199
moreEffects |= effect->processAudioBuffer(_buf, _frames);
202-
MixHelpers::sanitize(_buf, _frames);
203200
}
204201
}
205202

src/core/MixHelpers.cpp

Lines changed: 0 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -89,46 +89,6 @@ void setNaNHandler( bool use )
8989
s_NaNHandler = use;
9090
}
9191

92-
/*! \brief Function for sanitizing a buffer of infs/nans - returns true if those are found */
93-
bool sanitize( sampleFrame * src, int frames )
94-
{
95-
if( !useNaNHandler() )
96-
{
97-
return false;
98-
}
99-
100-
bool found = false;
101-
for( int f = 0; f < frames; ++f )
102-
{
103-
for( int c = 0; c < 2; ++c )
104-
{
105-
if( std::isinf( src[f][c] ) || std::isnan( src[f][c] ) )
106-
{
107-
#ifdef LMMS_DEBUG
108-
// TODO don't use printf here
109-
printf("Bad data, clearing buffer. frame: ");
110-
printf("%d: value %f\n", f, src[f][c]);
111-
#endif
112-
for( int f = 0; f < frames; ++f )
113-
{
114-
for( int c = 0; c < 2; ++c )
115-
{
116-
src[f][c] = 0.0f;
117-
}
118-
}
119-
found = true;
120-
return found;
121-
}
122-
else
123-
{
124-
src[f][c] = std::clamp(src[f][c], -1000.0f, 1000.0f);
125-
}
126-
}
127-
}
128-
return found;
129-
}
130-
131-
13292
struct AddOp
13393
{
13494
void operator()( sampleFrame& dst, const sampleFrame& src ) const
@@ -212,70 +172,6 @@ void addMultipliedByBuffers( sampleFrame* dst, const sampleFrame* src, ValueBuff
212172

213173
}
214174

215-
void addSanitizedMultipliedByBuffer( sampleFrame* dst, const sampleFrame* src, float coeffSrc, ValueBuffer * coeffSrcBuf, int frames )
216-
{
217-
if ( !useNaNHandler() )
218-
{
219-
addMultipliedByBuffer( dst, src, coeffSrc, coeffSrcBuf,
220-
frames );
221-
return;
222-
}
223-
224-
for( int f = 0; f < frames; ++f )
225-
{
226-
dst[f][0] += ( std::isinf( src[f][0] ) || std::isnan( src[f][0] ) ) ? 0.0f : src[f][0] * coeffSrc * coeffSrcBuf->values()[f];
227-
dst[f][1] += ( std::isinf( src[f][1] ) || std::isnan( src[f][1] ) ) ? 0.0f : src[f][1] * coeffSrc * coeffSrcBuf->values()[f];
228-
}
229-
}
230-
231-
void addSanitizedMultipliedByBuffers( sampleFrame* dst, const sampleFrame* src, ValueBuffer * coeffSrcBuf1, ValueBuffer * coeffSrcBuf2, int frames )
232-
{
233-
if ( !useNaNHandler() )
234-
{
235-
addMultipliedByBuffers( dst, src, coeffSrcBuf1, coeffSrcBuf2,
236-
frames );
237-
return;
238-
}
239-
240-
for( int f = 0; f < frames; ++f )
241-
{
242-
dst[f][0] += ( std::isinf( src[f][0] ) || std::isnan( src[f][0] ) )
243-
? 0.0f
244-
: src[f][0] * coeffSrcBuf1->values()[f] * coeffSrcBuf2->values()[f];
245-
dst[f][1] += ( std::isinf( src[f][1] ) || std::isnan( src[f][1] ) )
246-
? 0.0f
247-
: src[f][1] * coeffSrcBuf1->values()[f] * coeffSrcBuf2->values()[f];
248-
}
249-
250-
}
251-
252-
253-
struct AddSanitizedMultipliedOp
254-
{
255-
AddSanitizedMultipliedOp( float coeff ) : m_coeff( coeff ) { }
256-
257-
void operator()( sampleFrame& dst, const sampleFrame& src ) const
258-
{
259-
dst[0] += ( std::isinf( src[0] ) || std::isnan( src[0] ) ) ? 0.0f : src[0] * m_coeff;
260-
dst[1] += ( std::isinf( src[1] ) || std::isnan( src[1] ) ) ? 0.0f : src[1] * m_coeff;
261-
}
262-
263-
const float m_coeff;
264-
};
265-
266-
void addSanitizedMultiplied( sampleFrame* dst, const sampleFrame* src, float coeffSrc, int frames )
267-
{
268-
if ( !useNaNHandler() )
269-
{
270-
addMultiplied( dst, src, coeffSrc, frames );
271-
return;
272-
}
273-
274-
run<>( dst, src, frames, AddSanitizedMultipliedOp(coeffSrc) );
275-
}
276-
277-
278-
279175
struct AddMultipliedStereoOp
280176
{
281177
AddMultipliedStereoOp( float coeffLeft, float coeffRight )

src/core/Mixer.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -140,21 +140,21 @@ void MixerChannel::doProcessing()
140140
if( ! volBuf && ! sendBuf ) // neither volume nor send has sample-exact data...
141141
{
142142
const float v = sender->m_volumeModel.value() * sendModel->value();
143-
MixHelpers::addSanitizedMultiplied( m_buffer, ch_buf, v, fpp );
143+
MixHelpers::addMultiplied(m_buffer, ch_buf, v, fpp);
144144
}
145145
else if( volBuf && sendBuf ) // both volume and send have sample-exact data
146146
{
147-
MixHelpers::addSanitizedMultipliedByBuffers( m_buffer, ch_buf, volBuf, sendBuf, fpp );
147+
MixHelpers::addMultipliedByBuffers(m_buffer, ch_buf, volBuf, sendBuf, fpp);
148148
}
149149
else if( volBuf ) // volume has sample-exact data but send does not
150150
{
151151
const float v = sendModel->value();
152-
MixHelpers::addSanitizedMultipliedByBuffer( m_buffer, ch_buf, v, volBuf, fpp );
152+
MixHelpers::addMultipliedByBuffer(m_buffer, ch_buf, v, volBuf, fpp);
153153
}
154154
else // vice versa
155155
{
156156
const float v = sender->m_volumeModel.value();
157-
MixHelpers::addSanitizedMultipliedByBuffer( m_buffer, ch_buf, v, sendBuf, fpp );
157+
MixHelpers::addMultipliedByBuffer(m_buffer, ch_buf, v, sendBuf, fpp);
158158
}
159159
m_hasInput = true;
160160
}
@@ -679,7 +679,7 @@ void Mixer::masterMix( sampleFrame * _buf )
679679
const float v = volBuf
680680
? 1.0f
681681
: m_mixerChannels[0]->m_volumeModel.value();
682-
MixHelpers::addSanitizedMultiplied( _buf, m_mixerChannels[0]->m_buffer, v, fpp );
682+
MixHelpers::addMultiplied(_buf, m_mixerChannels[0]->m_buffer, v, fpp);
683683

684684
// clear all channel buffers and
685685
// reset channel process state

0 commit comments

Comments
 (0)