aboutsummaryrefslogtreecommitdiff
path: root/wav
diff options
context:
space:
mode:
authorNathan Perry <avaglir@gmail.com>2017-07-29 16:39:57 -0400
committerNathan Perry <avaglir@gmail.com>2017-07-29 16:39:57 -0400
commiteb12be6f8315973bfb3e39c259c00d325889c32c (patch)
treeedf28ba06a7184ff630401ea5ef967524b5fc596 /wav
parentb562764a74caa986b99b523dbf78beced6fc1e88 (diff)
refactor works
Diffstat (limited to 'wav')
-rw-r--r--wav/wav.go45
1 files changed, 7 insertions, 38 deletions
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