diff options
| author | Nathan Perry <avaglir@gmail.com> | 2017-07-29 16:39:57 -0400 |
|---|---|---|
| committer | Nathan Perry <avaglir@gmail.com> | 2017-07-29 16:39:57 -0400 |
| commit | eb12be6f8315973bfb3e39c259c00d325889c32c (patch) | |
| tree | edf28ba06a7184ff630401ea5ef967524b5fc596 /wav | |
| parent | b562764a74caa986b99b523dbf78beced6fc1e88 (diff) | |
refactor works
Diffstat (limited to 'wav')
| -rw-r--r-- | wav/wav.go | 45 |
1 files changed, 7 insertions, 38 deletions
@@ -12,13 +12,6 @@ import ( "layeh.com/gopus" ) -type State int - -const ( - Pause State = iota - Resume -) - // number of individual samples per channel per batch const samplesPerChannelPerBatch = 1920 @@ -29,9 +22,6 @@ type Wav struct { enc *gopus.Encoder wav *C.drwav - PlayState chan State - curState State - once sync.Once Done <-chan struct{} done chan<- struct{} @@ -67,9 +57,6 @@ func New(filename string) (*Wav, error) { enc: enc, wav: wav, - PlayState: make(chan State), - curState: Resume, - done: done, Done: done, }, nil @@ -101,31 +88,7 @@ func (w *Wav) Start(ch chan<- []byte) { readIdx := 0 - inner: for { - // check to see if we should die or pause - if w.curState == Pause { // if paused wait to die or get resumed - select { - case st := <-w.PlayState: - w.curState = st - continue inner - - case <-w.Done: - return - } - - } else { - select { - case st := <-w.PlayState: - w.curState = st - continue inner - - case <-w.Done: - return - default: - } - } - batchSamplesToFill := samplesPerBatch - idx readSamplesRemaining := int(readSamples) - readIdx @@ -143,7 +106,13 @@ func (w *Wav) Start(ch chan<- []byte) { log.Errorf("error encoding pcm: %q", err) continue } - ch <- b + + select { + case <-w.Done: + return + case ch <- b: + + } } batchSamplesToFill := samplesPerBatch - idx |
