unsigned long ChannelStream::GetTotalPlayTime() { if (!IsPlaying()) { if (this->pausePos) return (this->pausePos-this->playStart) + this->playOffset; else return 0; } return GetOutputTime(); }
int WaveOut::NextBuffer() { int b = _wrpos; printf("Buffers: %5d time: %d\r",_pending,GetOutputTime()/1000); if (_buffers[_wrpos] == 0 || (_buffers[_wrpos]->dwFlags & WHDR_DONE)) { if (_buffers[_wrpos]) { waveOutUnprepareHeader(_device,_buffers[_wrpos],sizeof(*_buffers[_wrpos])); free(_buffers[_wrpos]->lpData); _played += _buffers[_wrpos]->dwBufferLength; delete _buffers[_wrpos]; _buffers[_wrpos] = 0; _pending--; } _wrpos++; if (_wrpos>= MAXBUFFERS) _wrpos = 0; return b; } return -1; }