From 3f3bf325537f2f5a589e800c62c36e205c5613cf Mon Sep 17 00:00:00 2001 From: fumiama Date: Mon, 8 Aug 2022 11:28:21 +0800 Subject: [PATCH] drop cgo --- ogg.go | 27 --------------------------- play_nounix.go | 38 ++++++++++++++++++++++++++++++++++++++ play_stub.go | 11 +++++++++++ 3 files changed, 49 insertions(+), 27 deletions(-) create mode 100644 play_nounix.go create mode 100644 play_stub.go diff --git a/ogg.go b/ogg.go index 03735ea..7635a35 100644 --- a/ogg.go +++ b/ogg.go @@ -4,10 +4,8 @@ import ( "io" "net/http" "os" - "time" "github.com/faiface/beep" - "github.com/faiface/beep/speaker" "github.com/faiface/beep/vorbis" "github.com/faiface/beep/wav" ) @@ -96,28 +94,3 @@ func SaveOggToWriteSeeker(u string, f io.WriteSeeker) error { cutstream(s) return wav.Encode(f, s, format) } - -// PlayOgg cut leading demo text and play directly -func PlayOgg(u string) error { - resp, err := http.Get(u) - if err != nil { - return err - } - s, format, err := vorbis.Decode(resp.Body) - if err != nil { - _ = resp.Body.Close() - return err - } - defer s.Close() - cutstream(s) - err = speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/32)) - if err != nil { - return err - } - done := make(chan struct{}) - speaker.Play(beep.Seq(s, beep.Callback(func() { - done <- struct{}{} - }))) - <-done - return nil -} diff --git a/play_nounix.go b/play_nounix.go new file mode 100644 index 0000000..f43f4b5 --- /dev/null +++ b/play_nounix.go @@ -0,0 +1,38 @@ +//go:build android || darwin || js || windows +// +build android darwin js windows + +package ahsai + +import ( + "net/http" + "time" + + "github.com/faiface/beep" + "github.com/faiface/beep/speaker" + "github.com/faiface/beep/vorbis" +) + +// PlayOgg cut leading demo text and play directly +func PlayOgg(u string) error { + resp, err := http.Get(u) + if err != nil { + return err + } + s, format, err := vorbis.Decode(resp.Body) + if err != nil { + _ = resp.Body.Close() + return err + } + defer s.Close() + cutstream(s) + err = speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/32)) + if err != nil { + return err + } + done := make(chan struct{}) + speaker.Play(beep.Seq(s, beep.Callback(func() { + done <- struct{}{} + }))) + <-done + return nil +} diff --git a/play_stub.go b/play_stub.go new file mode 100644 index 0000000..468441a --- /dev/null +++ b/play_stub.go @@ -0,0 +1,11 @@ +//go:build !android && !darwin && !js && !windows +// +build !android,!darwin,!js,!windows + +package ahsai + +import "errors" + +// PlayOgg cut leading demo text and play directly +func PlayOgg(u string) error { + return errors.New("cannot play directly on this platform") +}