github.com/c-darwin/mobile@v0.0.0-20160313183840-ff625c46f7c9/exp/audio/al/al_notandroid.go (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // +build darwin linux,!android 6 7 package al 8 9 /* 10 #cgo darwin CFLAGS: -DGOOS_darwin 11 #cgo linux CFLAGS: -DGOOS_linux 12 #cgo darwin LDFLAGS: -framework OpenAL 13 #cgo linux LDFLAGS: -lopenal 14 15 #ifdef GOOS_darwin 16 #include <stdlib.h> 17 #include <OpenAL/al.h> 18 #endif 19 20 #ifdef GOOS_linux 21 #include <stdlib.h> 22 #include <AL/al.h> 23 #endif 24 */ 25 import "C" 26 import "unsafe" 27 28 func alEnable(capability int32) { 29 C.alEnable(C.ALenum(capability)) 30 } 31 32 func alDisable(capability int32) { 33 C.alDisable(C.ALenum(capability)) 34 } 35 36 func alIsEnabled(capability int32) bool { 37 return C.alIsEnabled(C.ALenum(capability)) == C.AL_TRUE 38 } 39 40 func alGetInteger(k int) int32 { 41 return int32(C.alGetInteger(C.ALenum(k))) 42 } 43 44 func alGetFloat(k int) float32 { 45 return float32(C.alGetFloat(C.ALenum(k))) 46 } 47 48 func alGetString(v int) string { 49 value := C.alGetString(C.ALenum(v)) 50 return C.GoString((*C.char)(value)) 51 } 52 53 func alDistanceModel(v int32) { 54 C.alDistanceModel(C.ALenum(v)) 55 } 56 57 func alDopplerFactor(v float32) { 58 C.alDopplerFactor(C.ALfloat(v)) 59 } 60 61 func alDopplerVelocity(v float32) { 62 C.alDopplerVelocity(C.ALfloat(v)) 63 } 64 65 func alSpeedOfSound(v float32) { 66 C.alSpeedOfSound(C.ALfloat(v)) 67 } 68 69 func alGetError() int32 { 70 return int32(C.alGetError()) 71 } 72 73 func alGenSources(n int) []Source { 74 s := make([]Source, n) 75 C.alGenSources(C.ALsizei(n), (*C.ALuint)(unsafe.Pointer(&s[0]))) 76 return s 77 } 78 79 func alSourcePlayv(s []Source) { 80 C.alSourcePlayv(C.ALsizei(len(s)), (*C.ALuint)(unsafe.Pointer(&s[0]))) 81 } 82 83 func alSourcePausev(s []Source) { 84 C.alSourcePausev(C.ALsizei(len(s)), (*C.ALuint)(unsafe.Pointer(&s[0]))) 85 86 } 87 88 func alSourceStopv(s []Source) { 89 C.alSourceStopv(C.ALsizei(len(s)), (*C.ALuint)(unsafe.Pointer(&s[0]))) 90 } 91 92 func alSourceRewindv(s []Source) { 93 C.alSourceRewindv(C.ALsizei(len(s)), (*C.ALuint)(unsafe.Pointer(&s[0]))) 94 } 95 96 func alDeleteSources(s []Source) { 97 C.alDeleteSources(C.ALsizei(len(s)), (*C.ALuint)(unsafe.Pointer(&s[0]))) 98 } 99 100 func alGetSourcei(s Source, k int) int32 { 101 var v C.ALint 102 C.alGetSourcei(C.ALuint(s), C.ALenum(k), &v) 103 return int32(v) 104 } 105 106 func alGetSourcef(s Source, k int) float32 { 107 var v C.ALfloat 108 C.alGetSourcef(C.ALuint(s), C.ALenum(k), &v) 109 return float32(v) 110 } 111 112 func alGetSourcefv(s Source, k int, v []float32) { 113 C.alGetSourcefv(C.ALuint(s), C.ALenum(k), (*C.ALfloat)(unsafe.Pointer(&v[0]))) 114 } 115 116 func alSourcei(s Source, k int, v int32) { 117 C.alSourcei(C.ALuint(s), C.ALenum(k), C.ALint(v)) 118 } 119 120 func alSourcef(s Source, k int, v float32) { 121 C.alSourcef(C.ALuint(s), C.ALenum(k), C.ALfloat(v)) 122 } 123 124 func alSourcefv(s Source, k int, v []float32) { 125 C.alSourcefv(C.ALuint(s), C.ALenum(k), (*C.ALfloat)(unsafe.Pointer(&v[0]))) 126 } 127 128 func alSourceQueueBuffers(s Source, b []Buffer) { 129 C.alSourceQueueBuffers(C.ALuint(s), C.ALsizei(len(b)), (*C.ALuint)(unsafe.Pointer(&b[0]))) 130 } 131 132 func alSourceUnqueueBuffers(s Source, b []Buffer) { 133 C.alSourceUnqueueBuffers(C.ALuint(s), C.ALsizei(len(b)), (*C.ALuint)(unsafe.Pointer(&b[0]))) 134 } 135 136 func alGetListenerf(k int) float32 { 137 var v C.ALfloat 138 C.alGetListenerf(C.ALenum(k), &v) 139 return float32(v) 140 } 141 142 func alGetListenerfv(k int, v []float32) { 143 C.alGetListenerfv(C.ALenum(k), (*C.ALfloat)(unsafe.Pointer(&v[0]))) 144 } 145 146 func alListenerf(k int, v float32) { 147 C.alListenerf(C.ALenum(k), C.ALfloat(v)) 148 } 149 150 func alListenerfv(k int, v []float32) { 151 C.alListenerfv(C.ALenum(k), (*C.ALfloat)(unsafe.Pointer(&v[0]))) 152 } 153 154 func alGenBuffers(n int) []Buffer { 155 s := make([]Buffer, n) 156 C.alGenBuffers(C.ALsizei(n), (*C.ALuint)(unsafe.Pointer(&s[0]))) 157 return s 158 } 159 160 func alDeleteBuffers(b []Buffer) { 161 C.alDeleteBuffers(C.ALsizei(len(b)), (*C.ALuint)(unsafe.Pointer(&b[0]))) 162 } 163 164 func alGetBufferi(b Buffer, k int) int32 { 165 var v C.ALint 166 C.alGetBufferi(C.ALuint(b), C.ALenum(k), &v) 167 return int32(v) 168 } 169 170 func alBufferData(b Buffer, format uint32, data []byte, freq int32) { 171 C.alBufferData(C.ALuint(b), C.ALenum(format), unsafe.Pointer(&data[0]), C.ALsizei(len(data)), C.ALsizei(freq)) 172 } 173 174 func alIsBuffer(b Buffer) bool { 175 return C.alIsBuffer(C.ALuint(b)) == C.AL_TRUE 176 }