mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-24 18:58:54 +01:00
audio: Reduce the buffer size (OpenAL)
This commit is contained in:
parent
6a0c5dfb03
commit
17b7969764
@ -20,7 +20,6 @@ import (
|
|||||||
|
|
||||||
var audioEnabled = false
|
var audioEnabled = false
|
||||||
|
|
||||||
const bufferSize = 1024
|
|
||||||
const SampleRate = 44100
|
const SampleRate = 44100
|
||||||
|
|
||||||
var currentPosition = 0
|
var currentPosition = 0
|
||||||
@ -140,7 +139,7 @@ func isChannelsEmpty() bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadChannelBuffer(channel int) (l, r []int16) {
|
func loadChannelBuffer(channel int, bufferSize int) (l, r []int16) {
|
||||||
channelsLock.Lock()
|
channelsLock.Lock()
|
||||||
defer channelsLock.Unlock()
|
defer channelsLock.Unlock()
|
||||||
|
|
||||||
|
@ -24,6 +24,8 @@ import (
|
|||||||
var nodes = []js.Object{}
|
var nodes = []js.Object{}
|
||||||
var context js.Object
|
var context js.Object
|
||||||
|
|
||||||
|
const bufferSize = 1024
|
||||||
|
|
||||||
func audioProcess(channel int) func(e js.Object) {
|
func audioProcess(channel int) func(e js.Object) {
|
||||||
return func(e js.Object) {
|
return func(e js.Object) {
|
||||||
defer func() {
|
defer func() {
|
||||||
@ -32,7 +34,7 @@ func audioProcess(channel int) func(e js.Object) {
|
|||||||
|
|
||||||
l := e.Get("outputBuffer").Call("getChannelData", 0)
|
l := e.Get("outputBuffer").Call("getChannelData", 0)
|
||||||
r := e.Get("outputBuffer").Call("getChannelData", 1)
|
r := e.Get("outputBuffer").Call("getChannelData", 1)
|
||||||
inputL, inputR := loadChannelBuffer(channel)
|
inputL, inputR := loadChannelBuffer(channel, bufferSize)
|
||||||
const max = 1 << 15
|
const max = 1 << 15
|
||||||
for i := 0; i < bufferSize; i++ {
|
for i := 0; i < bufferSize; i++ {
|
||||||
// TODO: Use copyFromChannel?
|
// TODO: Use copyFromChannel?
|
||||||
|
@ -59,12 +59,13 @@ func initialize() {
|
|||||||
sources := openal.NewSources(MaxChannel)
|
sources := openal.NewSources(MaxChannel)
|
||||||
close(ch)
|
close(ch)
|
||||||
|
|
||||||
|
const bufferSize = 512
|
||||||
emptyBytes := make([]byte, 4*bufferSize)
|
emptyBytes := make([]byte, 4*bufferSize)
|
||||||
|
|
||||||
for _, source := range sources {
|
for _, source := range sources {
|
||||||
// 3 is the least number?
|
// 3 is the least number?
|
||||||
// http://stackoverflow.com/questions/14932004/play-sound-with-openalstream
|
// http://stackoverflow.com/questions/14932004/play-sound-with-openalstream
|
||||||
const bufferNum = 3
|
const bufferNum = 4
|
||||||
buffers := openal.NewBuffers(bufferNum)
|
buffers := openal.NewBuffers(bufferNum)
|
||||||
for _, buffer := range buffers {
|
for _, buffer := range buffers {
|
||||||
buffer.SetData(openal.FormatStereo16, emptyBytes, SampleRate)
|
buffer.SetData(openal.FormatStereo16, emptyBytes, SampleRate)
|
||||||
@ -88,7 +89,7 @@ func initialize() {
|
|||||||
buffers := make([]openal.Buffer, processed)
|
buffers := make([]openal.Buffer, processed)
|
||||||
source.UnqueueBuffers(buffers)
|
source.UnqueueBuffers(buffers)
|
||||||
for _, buffer := range buffers {
|
for _, buffer := range buffers {
|
||||||
l, r := loadChannelBuffer(channel)
|
l, r := loadChannelBuffer(channel, bufferSize)
|
||||||
b := toBytes(l, r)
|
b := toBytes(l, r)
|
||||||
buffer.SetData(openal.FormatStereo16, b, SampleRate)
|
buffer.SetData(openal.FormatStereo16, b, SampleRate)
|
||||||
source.QueueBuffer(buffer)
|
source.QueueBuffer(buffer)
|
||||||
|
Loading…
Reference in New Issue
Block a user