From eb12be6f8315973bfb3e39c259c00d325889c32c Mon Sep 17 00:00:00 2001 From: Nathan Perry Date: Sat, 29 Jul 2017 16:39:57 -0400 Subject: refactor works --- wav/wav.go | 45 +++++++-------------------------------------- 1 file changed, 7 insertions(+), 38 deletions(-) (limited to 'wav') diff --git a/wav/wav.go b/wav/wav.go index c505a32..089466e 100644 --- a/wav/wav.go +++ b/wav/wav.go @@ -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 -- cgit v1.3.1