From e088a49a96bc0d49ddfe911036e404579b71f1c8 Mon Sep 17 00:00:00 2001 From: WeebDataHoarder <57538841+WeebDataHoarder@users.noreply.github.com> Date: Tue, 6 Dec 2022 10:40:54 +0100 Subject: [PATCH] Remove examples, tests, change module name --- README.md | 14 +--- encode.go | 2 +- encode_test.go | 136 ------------------------------------ examples/basic/basic.go | 48 ------------- examples/micgrab/micgrab.go | 96 ------------------------- go.mod | 3 + testdata/test.wav | Bin 34606 -> 0 bytes 7 files changed, 5 insertions(+), 294 deletions(-) delete mode 100644 encode_test.go delete mode 100644 examples/basic/basic.go delete mode 100644 examples/micgrab/micgrab.go create mode 100644 go.mod delete mode 100644 testdata/test.wav diff --git a/README.md b/README.md index e4b82c3..113e7a7 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,7 @@ ## aac-go -[![TravisCI Build Status](https://travis-ci.org/gen2brain/aac-go.svg?branch=master)](https://travis-ci.org/gen2brain/aac-go) -[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/cig800cju43dbn8u?svg=true)](https://ci.appveyor.com/project/gen2brain/aac-go) -[![GoDoc](https://godoc.org/github.com/gen2brain/aac-go?status.svg)](https://godoc.org/github.com/gen2brain/aac-go) -[![Go Report Card](https://goreportcard.com/badge/github.com/gen2brain/aac-go?branch=master)](https://goreportcard.com/report/github.com/gen2brain/aac-go) `aac-go` provides AAC codec encoder based on [VisualOn AAC encoder](https://github.com/mstorsjo/vo-aacenc) library. -### Installation - - go get -u github.com/gen2brain/aac-go - -### Examples - -See [micgrab](https://github.com/gen2brain/aac-go/blob/master/examples/micgrab/micgrab.go) example. - ### Usage ```go @@ -24,7 +12,7 @@ import ( "io/ioutil" "os" - "github.com/gen2brain/aac-go" + "git.gammaspectra.live/S.O.N.G/voaac-go" "github.com/youpy/go-wav" ) diff --git a/encode.go b/encode.go index 3892d90..3ea5dc3 100644 --- a/encode.go +++ b/encode.go @@ -8,7 +8,7 @@ import ( "io" "unsafe" - "github.com/aam335/aac-go/aacenc" + "git.gammaspectra.live/S.O.N.G/voaac-go/aacenc" ) // Options represent encoding options. diff --git a/encode_test.go b/encode_test.go deleted file mode 100644 index 0864d72..0000000 --- a/encode_test.go +++ /dev/null @@ -1,136 +0,0 @@ -package aac - -import ( - "bytes" - "io" - "io/ioutil" - "os" - "path/filepath" - "testing" - - "github.com/youpy/go-wav" -) - -func TestEncode(t *testing.T) { - file, err := os.Open(filepath.Join("testdata", "test.wav")) - if err != nil { - t.Fatal(err) - } - - wr := wav.NewReader(file) - f, err := wr.Format() - if err != nil { - t.Fatal(err) - } - - buf := bytes.NewBuffer(make([]byte, 0)) - - opts := &Options{} - opts.SampleRate = int(f.SampleRate) - opts.NumChannels = int(f.NumChannels) - - enc, err := NewEncoder(buf, opts) - if err != nil { - t.Fatal(err) - } - - err = enc.Encode(wr) - if err != nil { - t.Error(err) - } - - err = enc.Close() - if err != nil { - t.Error(err) - } - - err = ioutil.WriteFile(filepath.Join(os.TempDir(), "test.aac"), buf.Bytes(), 0644) - if err != nil { - t.Error(err) - } - - if want, got := 8192, len(buf.Bytes()); want != got { - t.Errorf("encoded file length %d is different from expected length %d", got, want) - } -} - -type testReader struct { - bufLen int - from io.Reader - adjust func() int -} - -func (t *testReader) Read(in []byte) (int, error) { - defer func() { - t.bufLen = t.adjust() - }() - if t.bufLen > len(in) { - t.bufLen = len(in) - } - if t.bufLen == 0 { - // This is not EOF, just unavailable data at this point. - return 0, nil - } - buf := make([]byte, t.bufLen) - n, err := t.from.Read(buf) - if n > 0 { - copy(in, buf[:n]) - } - return n, err -} - -func TestEncodeVariableReadLength(t *testing.T) { - file, err := os.Open(filepath.Join("testdata", "test.wav")) - if err != nil { - t.Fatal(err) - } - - wr := wav.NewReader(file) - f, err := wr.Format() - if err != nil { - t.Fatal(err) - } - - tr := &testReader{ - bufLen: 1, - from: wr, - } - bufLenPrev := 1 - tr.adjust = func() int { - bufLenPrev += 1 - if bufLenPrev%5 == 0 { - return 0 - } - return bufLenPrev - } - - buf := bytes.NewBuffer(make([]byte, 0)) - - opts := &Options{} - opts.SampleRate = int(f.SampleRate) - opts.NumChannels = int(f.NumChannels) - - enc, err := NewEncoder(buf, opts) - if err != nil { - t.Fatal(err) - } - - err = enc.Encode(tr) - if err != nil { - t.Error(err) - } - - err = enc.Close() - if err != nil { - t.Error(err) - } - - err = ioutil.WriteFile(filepath.Join(os.TempDir(), "test-2.aac"), buf.Bytes(), 0644) - if err != nil { - t.Error(err) - } - - if want, got := 8192, len(buf.Bytes()); want != got { - t.Errorf("encoded file length %d is different from expected length %d", got, want) - } -} diff --git a/examples/basic/basic.go b/examples/basic/basic.go deleted file mode 100644 index ef703ae..0000000 --- a/examples/basic/basic.go +++ /dev/null @@ -1,48 +0,0 @@ -package main - -import ( - "bytes" - "io/ioutil" - "os" - - aac "github.com/aam335/aac-go" -) - -func main() { - file, err := os.Open("test.wav") - if err != nil { - panic(err) - } - - wreader := wav.NewReader(file) - f, err := wreader.Format() - if err != nil { - panic(err) - } - - buf := bytes.NewBuffer(make([]byte, 0)) - - opts := &aac.Options{} - opts.SampleRate = int(f.SampleRate) - opts.NumChannels = int(f.NumChannels) - - enc, err := aac.NewEncoder(buf, opts) - if err != nil { - panic(err) - } - - err = enc.Encode(wreader) - if err != nil { - panic(err) - } - - err = enc.Close() - if err != nil { - panic(err) - } - - err = ioutil.WriteFile("test.aac", buf.Bytes(), 0644) - if err != nil { - panic(err) - } -} diff --git a/examples/micgrab/micgrab.go b/examples/micgrab/micgrab.go deleted file mode 100644 index 085b608..0000000 --- a/examples/micgrab/micgrab.go +++ /dev/null @@ -1,96 +0,0 @@ -package main - -import ( - "bytes" - "fmt" - "io/ioutil" - "os" - - "github.com/gen2brain/aac-go" - "github.com/gen2brain/malgo" -) - -func main() { - device := mal.NewDevice() - - numChannels := 2 - sampleRate := 48000 - - var capturedSampleCount uint32 - pCapturedSamples := make([]byte, 0) - - onRecvFrames := func(framecount uint32, pSamples []byte) { - sizeInBytes := device.SampleSizeInBytes(device.Format()) - sampleCount := framecount * device.Channels() * sizeInBytes - - newCapturedSampleCount := capturedSampleCount + sampleCount - pCapturedSamples = append(pCapturedSamples, pSamples...) - capturedSampleCount = newCapturedSampleCount - } - - err := device.ContextInit(nil, mal.ContextConfig{}) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - - defer device.ContextUninit() - - config := device.ConfigInit(mal.FormatS16, uint32(numChannels), uint32(sampleRate), onRecvFrames, nil) - - fmt.Println("Recording...") - err = device.Init(mal.Capture, nil, &config) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - - err = device.Start() - if err != nil { - fmt.Println(err) - os.Exit(1) - } - - fmt.Println("Press Enter to stop recording...") - fmt.Scanln() - - device.Uninit() - - fmt.Println("Encoding...") - buf := bytes.NewBuffer(make([]byte, 0)) - - opts := &aac.Options{} - opts.SampleRate = sampleRate - opts.NumChannels = numChannels - - enc, err := aac.NewEncoder(buf, opts) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - - reader := bytes.NewReader(pCapturedSamples) - - err = enc.Encode(reader) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - - err = enc.Close() - if err != nil { - fmt.Println(err) - os.Exit(1) - } - - err = ioutil.WriteFile("capture.aac", buf.Bytes(), 0644) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - - fmt.Println("Press Enter to quit...") - fmt.Scanln() - - os.Exit(0) -} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..f4cceff --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module git.gammaspectra.live/S.O.N.G/voaac-go + +go 1.17 diff --git a/testdata/test.wav b/testdata/test.wav deleted file mode 100644 index cc6c9bd9cf9dafdb37643242762ea8c61fd7cf2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34606 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 M|DE+;NeJ?P0HJ|1hX4Qo