-// Time stretch the fragment to the real_output size
- if( speed > 1 ) {
- int out = 0;
- for( int in=0; in<len; ) {
-// samples in real output buffer for each to sample rendered.
- int end = (out+1) * speed;
- if( end > len ) end = len;
- int k = end - in;
- double sample = 0;
- while( in < end ) sample += current_buffer[in++];
- if( k > 0 ) sample /= k;
+ if( speed > 1 ) { // buffer gets shorter
+ int in = 0, out = 0;
+ while( in < len ) {
+ int next = (out+1) * speed;
+ if( next > len) next = len;
+ double sample = current_buffer[in];
+ for( int i=in; ++i<next; ) sample += current_buffer[i];
+ int l = next - in;
+ if( l > 1 ) sample /= l;