Comments (7)
I was not fully sure and it seemed to work in my tests. Thanks for fixing so quickly!
from portaudio.
func getBuffer(s *reflect.SliceHeader, p *C.PaStreamParameters) (unsafe.Pointer, int, error) {
if p.sampleFormat&C.paNonInterleaved == 0 {
n := int(p.channelCount)
if s.Len%n != 0 {
return nil, 0, fmt.Errorf("length of interleaved buffer not divisible by number of channels")
}
return unsafe.Pointer(s.Data), s.Len / n, nil
} else {
if s.Len != int(p.channelCount) {
return nil, 0, fmt.Errorf("buffer has wrong number of channels")
}
- buf := make([]uintptr, s.Len)
+ buf := make([]reflect.SliceHeader, s.Len)
frames := -1
- sp := s.Data
+ sp := (*[1 << 30]reflect.SliceHeader)(unsafe.Pointer(s.Data)) // convert s.Data to a SliceHeader slice
for i := range buf {
- ch := (*reflect.SliceHeader)(unsafe.Pointer(sp))
+ ch := &sp[i]
if frames == -1 {
frames = ch.Len
} else if ch.Len != frames {
return nil, 0, fmt.Errorf("channels have different lengths")
}
- buf[i] = ch.Data
+ buf[i] = *ch
- sp += unsafe.Sizeof(reflect.SliceHeader{})
}
- return unsafe.Pointer(&buf[0]), frames, nil
+ return unsafe.Pointer(&buf[0].Data), frames, nil
}
}
from portaudio.
I am running Go 1.20.4
from portaudio.
Thanks for the report!
from portaudio.
May I ask why you are not creating fixed Tags for this repo?
from portaudio.
I guess it never crossed my mind. It's not a very active repo. What's the benefit?
from portaudio.
To use it with clear versions as a dependency without having to specify commit hashes in go.mod. It's just easier to communicate a specific version. But it's not a big deal either..
from portaudio.
Related Issues (20)
- Opening a stream with a framesPerBuffer of 0 causes a buffer underrun and a stutter HOT 1
- "Unknow Error" in MacOS Big Sur HOT 1
- Get nothing using OpenDefaultStream in the latest mac os Big Sur. HOT 1
- unable to open on a device HOT 6
- Does not appear to work with PipeWire HOT 3
- Running mp3 example with hajimehoshi/go-mp3 library HOT 5
- Playing Opus stream causes playback half speed HOT 3
- Issues installing on Windows HOT 5
- how can I use go get ? HOT 2
- GEt live audio from microphone HOT 2
- Resulting windows apps built with golang 1.17.5 crash on startup. HOT 1
- windows dll HOT 4
- MacOS compile Windows error HOT 2
- Example `play.go` not working correctly HOT 1
- "go install <your portaudio module>" doesn't work HOT 3
- play.go example aiff file sounds "strange" HOT 2
- How do I get microphone level? [HELP] HOT 2
- examples/record.go not working keep getting panice error
- The built binary file cannot run another Windows HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from portaudio.