Commit 6e8cd461 authored by henryjandrew's avatar henryjandrew

Fixed issue with ITAInterpolation where linear interpolation did not work correctly

parent 0fbfa942
......@@ -24,17 +24,10 @@ bool CITASampleLinearInterpolation::Interpolate( const ITASampleBuffer* pInput,
if( iInputStartOffset < 1 )
return false;
// Samples, die aufgeholt (>0) bzw. abgebremst (<0) werden mssen
int iDeltaDelay = ( iInputLength - iInputStartOffset ) - iOutputLength;
// Resamplingfaktor
float r = 1 + iDeltaDelay / ( float ) iOutputLength;
float r = (iInputLength - iInputStartOffset + 1) / ( float ) iOutputLength;
// Grenzen prfen, in denen Resampling betrieben werden kann.
// Dies kann schon mal auftreten, wenn eine Quelle manuell versetzt wird
// und sich dadurch eine zu hohe Relativgeschwindigkeit ergibt.
if( ( r > 1.5 ) || ( r < 0.5 ) )
return false;
// TODO klren ob diese resampling grenzen berhaupt gelten, theor. gibt es keine einschrnkung hier!
......@@ -54,10 +47,6 @@ bool CITASampleLinearInterpolation::Interpolate( const ITASampleBuffer* pInput,
// Die Position des letzten Samples muss bereinstimmen mit dem letzten
// Eingabesample, dann wurde die Zeit erfolgreich eingeholt bzw.
// abgebremst.
if( i == iOutputLength - 1 )
{
assert( iOutputLength + iDeltaDelay == iInputLength - iInputStartOffset );
}
// Linkes/rechtes Nachbarsample in der Eingabe
int a = ( int ) floor( x_input );
......@@ -99,11 +88,6 @@ bool CITASampleLinearInterpolation::Interpolate( const ITASampleBuffer* pInput,
// Position in der Eingabe berechnen
float x_input = ( i + 1 )*r;
if( i == iOutputLength - 1 )
{
assert( std::lroundf( x_input ) == iInputLength - iInputStartOffset );
}
// Linkes/rechtes Nachbarsample in der Eingabe
int a = ( int ) floor( x_input );
int b = ( int ) ceil( x_input );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment