| 139 | |
| 140 | |
| 141 | void RingBuffer::read( sampleFrame * dst, f_cnt_t offset ) |
| 142 | { |
| 143 | f_cnt_t pos = ( m_position + offset ) % m_size; |
| 144 | if( pos < 0 ) { pos += m_size; } |
| 145 | |
| 146 | if( pos + m_fpp <= m_size ) // we won't go over the edge so we can just memcpy here |
| 147 | { |
| 148 | memcpy( dst, & m_buffer [pos], m_fpp * sizeof( sampleFrame ) ); |
| 149 | } |
| 150 | else |
| 151 | { |
| 152 | f_cnt_t first = m_size - pos; |
| 153 | f_cnt_t second = m_fpp - first; |
| 154 | |
| 155 | memcpy( dst, & m_buffer [pos], first * sizeof( sampleFrame ) ); |
| 156 | |
| 157 | memcpy( & dst [first], m_buffer, second * sizeof( sampleFrame ) ); |
| 158 | } |
| 159 | } |
| 160 | |
| 161 | |
| 162 | void RingBuffer::read( sampleFrame * dst, float offset ) |
no test coverage detected