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  }