1 files changed, 95 insertions(+), 2 deletions(-)

M player_lib/player_test_sdl/main.go
M player_lib/player_test_sdl/main.go +95 -2
@@ 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