github.com/SkycoinProject/gomobile@v0.0.0-20190312151609-d3739f865fa6/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 windows
     6  
     7  package al
     8  
     9  /*
    10  #cgo darwin   CFLAGS:  -DGOOS_darwin
    11  #cgo linux    CFLAGS:  -DGOOS_linux
    12  #cgo windows  CFLAGS:  -DGOOS_windows
    13  #cgo darwin   LDFLAGS: -framework OpenAL
    14  #cgo linux    LDFLAGS: -lopenal
    15  #cgo windows  LDFLAGS: -lOpenAL32
    16  
    17  #ifdef GOOS_darwin
    18  #include <stdlib.h>
    19  #include <OpenAL/al.h>
    20  #endif
    21  
    22  #ifdef GOOS_linux
    23  #include <stdlib.h>
    24  #include <AL/al.h>  // install on Ubuntu with: sudo apt-get install libopenal-dev
    25  #endif
    26  
    27  #ifdef GOOS_windows
    28  #include <windows.h>
    29  #include <stdlib.h>
    30  #include <AL/al.h>
    31  #endif
    32  */
    33  import "C"
    34  import "unsafe"
    35  
    36  func alEnable(capability int32) {
    37  	C.alEnable(C.ALenum(capability))
    38  }
    39  
    40  func alDisable(capability int32) {
    41  	C.alDisable(C.ALenum(capability))
    42  }
    43  
    44  func alIsEnabled(capability int32) bool {
    45  	return C.alIsEnabled(C.ALenum(capability)) == C.AL_TRUE
    46  }
    47  
    48  func alGetInteger(k int) int32 {
    49  	return int32(C.alGetInteger(C.ALenum(k)))
    50  }
    51  
    52  func alGetIntegerv(k int, v []int32) {
    53  	C.alGetIntegerv(C.ALenum(k), (*C.ALint)(unsafe.Pointer(&v[0])))
    54  }
    55  
    56  func alGetFloat(k int) float32 {
    57  	return float32(C.alGetFloat(C.ALenum(k)))
    58  }
    59  
    60  func alGetFloatv(k int, v []float32) {
    61  	C.alGetFloatv(C.ALenum(k), (*C.ALfloat)(unsafe.Pointer(&v[0])))
    62  }
    63  
    64  func alGetBoolean(k int) bool {
    65  	return C.alGetBoolean(C.ALenum(k)) == C.AL_TRUE
    66  }
    67  
    68  func alGetBooleanv(k int, v []bool) {
    69  	val := make([]C.ALboolean, len(v))
    70  	for i, bv := range v {
    71  		if bv {
    72  			val[i] = C.AL_TRUE
    73  		} else {
    74  			val[i] = C.AL_FALSE
    75  		}
    76  	}
    77  	C.alGetBooleanv(C.ALenum(k), &val[0])
    78  }
    79  
    80  func alGetString(v int) string {
    81  	value := C.alGetString(C.ALenum(v))
    82  	return C.GoString((*C.char)(value))
    83  }
    84  
    85  func alDistanceModel(v int32) {
    86  	C.alDistanceModel(C.ALenum(v))
    87  }
    88  
    89  func alDopplerFactor(v float32) {
    90  	C.alDopplerFactor(C.ALfloat(v))
    91  }
    92  
    93  func alDopplerVelocity(v float32) {
    94  	C.alDopplerVelocity(C.ALfloat(v))
    95  }
    96  
    97  func alSpeedOfSound(v float32) {
    98  	C.alSpeedOfSound(C.ALfloat(v))
    99  }
   100  
   101  func alGetError() int32 {
   102  	return int32(C.alGetError())
   103  }
   104  
   105  func alGenSources(n int) []Source {
   106  	s := make([]Source, n)
   107  	C.alGenSources(C.ALsizei(n), (*C.ALuint)(unsafe.Pointer(&s[0])))
   108  	return s
   109  }
   110  
   111  func alSourcePlayv(s []Source) {
   112  	C.alSourcePlayv(C.ALsizei(len(s)), (*C.ALuint)(unsafe.Pointer(&s[0])))
   113  }
   114  
   115  func alSourcePausev(s []Source) {
   116  	C.alSourcePausev(C.ALsizei(len(s)), (*C.ALuint)(unsafe.Pointer(&s[0])))
   117  
   118  }
   119  
   120  func alSourceStopv(s []Source) {
   121  	C.alSourceStopv(C.ALsizei(len(s)), (*C.ALuint)(unsafe.Pointer(&s[0])))
   122  }
   123  
   124  func alSourceRewindv(s []Source) {
   125  	C.alSourceRewindv(C.ALsizei(len(s)), (*C.ALuint)(unsafe.Pointer(&s[0])))
   126  }
   127  
   128  func alDeleteSources(s []Source) {
   129  	C.alDeleteSources(C.ALsizei(len(s)), (*C.ALuint)(unsafe.Pointer(&s[0])))
   130  }
   131  
   132  func alGetSourcei(s Source, k int) int32 {
   133  	var v C.ALint
   134  	C.alGetSourcei(C.ALuint(s), C.ALenum(k), &v)
   135  	return int32(v)
   136  }
   137  
   138  func alGetSourcef(s Source, k int) float32 {
   139  	var v C.ALfloat
   140  	C.alGetSourcef(C.ALuint(s), C.ALenum(k), &v)
   141  	return float32(v)
   142  }
   143  
   144  func alGetSourcefv(s Source, k int, v []float32) {
   145  	C.alGetSourcefv(C.ALuint(s), C.ALenum(k), (*C.ALfloat)(unsafe.Pointer(&v[0])))
   146  }
   147  
   148  func alSourcei(s Source, k int, v int32) {
   149  	C.alSourcei(C.ALuint(s), C.ALenum(k), C.ALint(v))
   150  }
   151  
   152  func alSourcef(s Source, k int, v float32) {
   153  	C.alSourcef(C.ALuint(s), C.ALenum(k), C.ALfloat(v))
   154  }
   155  
   156  func alSourcefv(s Source, k int, v []float32) {
   157  	C.alSourcefv(C.ALuint(s), C.ALenum(k), (*C.ALfloat)(unsafe.Pointer(&v[0])))
   158  }
   159  
   160  func alSourceQueueBuffers(s Source, b []Buffer) {
   161  	C.alSourceQueueBuffers(C.ALuint(s), C.ALsizei(len(b)), (*C.ALuint)(unsafe.Pointer(&b[0])))
   162  }
   163  
   164  func alSourceUnqueueBuffers(s Source, b []Buffer) {
   165  	C.alSourceUnqueueBuffers(C.ALuint(s), C.ALsizei(len(b)), (*C.ALuint)(unsafe.Pointer(&b[0])))
   166  }
   167  
   168  func alGetListenerf(k int) float32 {
   169  	var v C.ALfloat
   170  	C.alGetListenerf(C.ALenum(k), &v)
   171  	return float32(v)
   172  }
   173  
   174  func alGetListenerfv(k int, v []float32) {
   175  	C.alGetListenerfv(C.ALenum(k), (*C.ALfloat)(unsafe.Pointer(&v[0])))
   176  }
   177  
   178  func alListenerf(k int, v float32) {
   179  	C.alListenerf(C.ALenum(k), C.ALfloat(v))
   180  }
   181  
   182  func alListenerfv(k int, v []float32) {
   183  	C.alListenerfv(C.ALenum(k), (*C.ALfloat)(unsafe.Pointer(&v[0])))
   184  }
   185  
   186  func alGenBuffers(n int) []Buffer {
   187  	s := make([]Buffer, n)
   188  	C.alGenBuffers(C.ALsizei(n), (*C.ALuint)(unsafe.Pointer(&s[0])))
   189  	return s
   190  }
   191  
   192  func alDeleteBuffers(b []Buffer) {
   193  	C.alDeleteBuffers(C.ALsizei(len(b)), (*C.ALuint)(unsafe.Pointer(&b[0])))
   194  }
   195  
   196  func alGetBufferi(b Buffer, k int) int32 {
   197  	var v C.ALint
   198  	C.alGetBufferi(C.ALuint(b), C.ALenum(k), &v)
   199  	return int32(v)
   200  }
   201  
   202  func alBufferData(b Buffer, format uint32, data []byte, freq int32) {
   203  	C.alBufferData(C.ALuint(b), C.ALenum(format), unsafe.Pointer(&data[0]), C.ALsizei(len(data)), C.ALsizei(freq))
   204  }
   205  
   206  func alIsBuffer(b Buffer) bool {
   207  	return C.alIsBuffer(C.ALuint(b)) == C.AL_TRUE
   208  }