# HG changeset patch # User coaljoe # Date 1737051859 -10800 # Thu Jan 16 21:24:19 2025 +0300 # Node ID c4bb3899a9b473c5d99bfec7db384f33e297610d # Parent 57ea4340a86c6b05d5c9f3689ac048a3f0195e1e sync diff --git a/player_lib/player_test_sdl/main.go b/player_lib/player_test_sdl/main.go --- a/player_lib/player_test_sdl/main.go +++ b/player_lib/player_test_sdl/main.go @@ -10,6 +10,7 @@ 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 @@ // 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 @@ 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 @@ } } +///* +//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 @@ //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 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 @@ //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 @@ // 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