@@ 10,6 10,7 @@ void AudioCallback(void *userdata, Uint8
void AudioCallback3(void *userdata, Uint8 *stream, int len);
void AudioCallback4(void *userdata, Uint8 *stream, int len);
void AudioCallback5(void *userdata, Uint8 *stream, int len);
+void AudioCallback6(void *userdata, Uint8 *stream, int len);
*/
import "C"
import (
@@ 36,7 37,7 @@ const (
// Global
var g_d_phase = 0.0
var g_ctx_player_lib *player_lib.Context
-
+var g_player_has_exited = false
// INFO: https://gist.github.com/jonbro/a2cff8aa1238af31bec8
@@ 255,22 256,34 @@ func AudioCallback5(userdata unsafe.Poin
println("xret:", xret)
numBytes := int(len_bytes)
+ _ = numBytes
+ lenBytes := int(len_bytes)
+ _ = lenBytes
+
+ xlen := numBytes/2
// stereo ?
//for i := 0; i < numBytes/2; i++ {
//for i := 0; i < numBytes; i += 2 {
//for i := 0; i < numBytes-2; i += 2 {
//for i := 0; i < numBytes; i++ {
- for i := 0; i < numBytes-1; i++ {
+ //for i := 0; i < numBytes-1; i++ {
+ //for i := 0; i < lenBytes/2; i++ {
+ for i := 0; i < xlen; i += 2 {
//println("-> i:", i)
// XXX
s := renderBuf[i]
+ s1 := renderBuf[i+1]
v := C.Sint16(s)
+ v1 := C.Sint16(s1)
+ _ = v1
buf[i] = v
+ buf[i+1] = v
+ //buf[i+1] = v1
/*
//idx := i*2
@@ 294,6 307,39 @@ func AudioCallback5(userdata unsafe.Poin
}
}
+///*
+//export AudioCallback6
+func AudioCallback6(userdata unsafe.Pointer, stream *C.Uint8, len_bytes C.int) {
+ println("AudioCallback6")
+ n := int(len_bytes)
+ hdr := reflect.SliceHeader{Data: uintptr(unsafe.Pointer(stream)), Len: n, Cap: n}
+ //buf := *(*[]C.Uint8)(unsafe.Pointer(&hdr))
+ // XXX ?
+ // Copy of c code ? cast to Sint16 (from Uint8: stream)
+ // buf/buffer is Sint16
+ buf := *(*[]C.Sint16)(unsafe.Pointer(&hdr))
+
+ fmt.Println("len_bytes:", len_bytes)
+
+ //panic(2)
+
+ lenBytes := int(len_bytes)
+
+ // stereo ?
+ //for i := 0; i < lenBytes; i++ {
+ for i := 0; i < lenBytes/2; i++ {
+
+ //println("-> i:", i)
+
+ // XXX
+
+ //buf[i] = 0
+ //buf[i+1] = 0
+
+ buf[i] = 0
+ }
+}
+
//*/
@@ 326,6 372,35 @@ func FillBuffer(bufSizeBytes int) ([]byt
//break
panic(2)
}
+
+ var outF *os.File
+ _ = outF
+
+ if true {
+ var err error
+ //outF, err = os.Create("/tmp/out_fillbuffer.raw")
+ //outF, err = os.OpenFile("/tmp/out_fillbuffer.raw", os.O_RDWR | os.O_CREATE, 0666)
+ outF, err = os.OpenFile("/tmp/out_fillbuffer.raw", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666)
+ if err != nil {
+ panic(err)
+ }
+ }
+
+ // This writes buf (one)
+ if true {
+ outF.Write(buf)
+ }
+
+ if true {
+ //outF.Close()
+ // XXX ?
+ //outF.Flush()
+ err := outF.Sync()
+ if err != nil {
+ panic(err)
+ }
+ }
+
//return nil, false
return buf, ret
@@ 333,6 408,16 @@ func FillBuffer(bufSizeBytes int) ([]byt
func main() {
fmt.Println("main()")
+
+ // XXX init
+ println("init...")
+ if true {
+ err := os.Rename("/tmp/out_fillbuffer.raw", "/tmp/out_fillbuffer.raw.orig")
+
+ if err != nil {
+ panic(err)
+ }
+ }
// XXX
// Audio output ?
@@ 368,6 453,7 @@ func main() {
//Callback: sdl.AudioCallback(C.AudioCallback3),
//Callback: sdl.AudioCallback(C.AudioCallback4),
Callback: sdl.AudioCallback(C.AudioCallback5),
+ //Callback: sdl.AudioCallback(C.AudioCallback6),
}
if err := sdl.OpenAudio(spec, nil); err != nil {
log.Println(err)
@@ 443,9 529,16 @@ func main() {
// XXX
sdl.PauseAudio(false)
sdl.Delay(5000) // play audio for long enough to understand whether it works
+ //sdl.Delay(1000) // play audio for long enough to understand whether it works
//sdl.Delay(120 * 1000) // play audio for long enough to understand whether it works
sdl.CloseAudio()
+ // XXX
+ player_lib.EndPlayer(g_ctx_player_lib)
+
+ println("exit ?")
+ panic(2)
+
//bufSize := 1024
//_ = bufSize