| 247 | |
| 248 | |
| 249 | void RingBuffer::writeAddingMultiplied( sampleFrame * src, f_cnt_t offset, f_cnt_t length, float level ) |
| 250 | { |
| 251 | const f_cnt_t pos = ( m_position + offset ) % m_size; |
| 252 | //qDebug( "pos %d m_pos %d ofs %d siz %d", pos, m_position, offset, m_size ); |
| 253 | if( length == 0 ) { length = m_fpp; } |
| 254 | |
| 255 | if( pos + length <= m_size ) // we won't go over the edge so we can just memcpy here |
| 256 | { |
| 257 | MixHelpers::addMultiplied( & m_buffer[pos], src, level, length ); |
| 258 | } |
| 259 | else |
| 260 | { |
| 261 | f_cnt_t first = m_size - pos; |
| 262 | f_cnt_t second = length - first; |
| 263 | |
| 264 | MixHelpers::addMultiplied( & m_buffer[pos], src, level, first ); |
| 265 | |
| 266 | MixHelpers::addMultiplied( m_buffer, & src [first], level, second ); |
| 267 | } |
| 268 | } |
| 269 | |
| 270 | |
| 271 | void RingBuffer::writeAddingMultiplied( sampleFrame * src, float offset, f_cnt_t length, float level ) |
no test coverage detected