Add SetAudioStreamCallback, issue #279
This commit is contained in:
parent
b09590165d
commit
9f257fc589
1 changed files with 28 additions and 2 deletions
|
@ -4,16 +4,42 @@
|
||||||
package rl
|
package rl
|
||||||
|
|
||||||
/*
|
/*
|
||||||
//#include "external/stb_vorbis.c"
|
|
||||||
|
|
||||||
#include "raylib.h"
|
#include "raylib.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
extern void internalAudioStreamCallbackGo(void *, int);
|
||||||
|
|
||||||
|
static void audioStreamWrapperCallback(void *data, unsigned int frames) {
|
||||||
|
internalAudioStreamCallbackGo(data, frames);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void setAudioStreamCallbackWrapper(AudioStream stream) {
|
||||||
|
SetAudioStreamCallback(stream, audioStreamWrapperCallback);
|
||||||
|
}
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
import (
|
import (
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// AudioCallback function.
|
||||||
|
type AudioCallback func(data []float32, frames int)
|
||||||
|
|
||||||
|
var internalAudioStreamCallback AudioCallback
|
||||||
|
|
||||||
|
// SetAudioStreamCallback - Audio thread callback to request new data
|
||||||
|
func SetAudioStreamCallback(stream AudioStream, callback AudioCallback) {
|
||||||
|
internalAudioStreamCallback = callback
|
||||||
|
C.setAudioStreamCallbackWrapper(*stream.cptr())
|
||||||
|
}
|
||||||
|
|
||||||
|
//export internalAudioStreamCallbackGo
|
||||||
|
func internalAudioStreamCallbackGo(data unsafe.Pointer, frames C.int) {
|
||||||
|
if internalAudioStreamCallback != nil {
|
||||||
|
internalAudioStreamCallback(unsafe.Slice((*float32)(data), frames), int(frames))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// cptr returns C pointer
|
// cptr returns C pointer
|
||||||
func (w *Wave) cptr() *C.Wave {
|
func (w *Wave) cptr() *C.Wave {
|
||||||
return (*C.Wave)(unsafe.Pointer(w))
|
return (*C.Wave)(unsafe.Pointer(w))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue