Ver código fonte

merged with master

danaugrs 7 anos atrás
pai
commit
750600bf71
100 arquivos alterados com 37252 adições e 2510 exclusões
  1. 1 0
      .gitattributes
  2. 52 38
      README.md
  3. 111 130
      audio/al/al.go
  4. 0 752
      audio/al/loader.c
  5. 0 251
      audio/al/loader.h
  6. 9 14
      audio/audio_file.go
  7. 2 4
      audio/doc.go
  8. 0 585
      audio/include/ogg/Makefile
  9. 0 25
      audio/include/ogg/config_types.h
  10. 8 1
      audio/listener.go
  11. 0 9
      audio/ov/build.go
  12. 0 348
      audio/ov/loader.c
  13. 0 103
      audio/ov/loader.h
  14. 9 52
      audio/ov/vorbisfile.go
  15. 2 2
      audio/player.go
  16. 0 9
      audio/vorbis/build.go
  17. 0 137
      audio/vorbis/loader.c
  18. 0 28
      audio/vorbis/loader.h
  19. 9 21
      audio/vorbis/vorbis.go
  20. 1 1
      audio/wave.go
  21. 86 0
      audio/windows/README.md
  22. BIN
      audio/windows/bin/OpenAL32.dll
  23. BIN
      audio/windows/bin/libogg.dll
  24. BIN
      audio/windows/bin/libvorbis.dll
  25. BIN
      audio/windows/bin/libvorbisfile.dll
  26. 7 0
      audio/windows/libogg-1.3.3/AUTHORS
  27. 94 0
      audio/windows/libogg-1.3.3/CHANGES
  28. 28 0
      audio/windows/libogg-1.3.3/COPYING
  29. 32 0
      audio/windows/libogg-1.3.3/Makefile.am
  30. 932 0
      audio/windows/libogg-1.3.3/Makefile.in
  31. 131 0
      audio/windows/libogg-1.3.3/README.md
  32. 10220 0
      audio/windows/libogg-1.3.3/aclocal.m4
  33. 347 0
      audio/windows/libogg-1.3.3/compile
  34. 1462 0
      audio/windows/libogg-1.3.3/config.guess
  35. 97 0
      audio/windows/libogg-1.3.3/config.h.in
  36. 1823 0
      audio/windows/libogg-1.3.3/config.sub
  37. 15231 0
      audio/windows/libogg-1.3.3/configure
  38. 185 0
      audio/windows/libogg-1.3.3/configure.ac
  39. 791 0
      audio/windows/libogg-1.3.3/depcomp
  40. 9 0
      audio/windows/libogg-1.3.3/doc/Makefile.am
  41. 689 0
      audio/windows/libogg-1.3.3/doc/Makefile.in
  42. BIN
      audio/windows/libogg-1.3.3/doc/fish_xiph_org.png
  43. 429 0
      audio/windows/libogg-1.3.3/doc/framing.html
  44. 105 0
      audio/windows/libogg-1.3.3/doc/index.html
  45. 39 0
      audio/windows/libogg-1.3.3/doc/libogg/Makefile.am
  46. 539 0
      audio/windows/libogg-1.3.3/doc/libogg/Makefile.in
  47. 103 0
      audio/windows/libogg-1.3.3/doc/libogg/bitpacking.html
  48. 59 0
      audio/windows/libogg-1.3.3/doc/libogg/datastructures.html
  49. 104 0
      audio/windows/libogg-1.3.3/doc/libogg/decoding.html
  50. 76 0
      audio/windows/libogg-1.3.3/doc/libogg/encoding.html
  51. 109 0
      audio/windows/libogg-1.3.3/doc/libogg/general.html
  52. 39 0
      audio/windows/libogg-1.3.3/doc/libogg/index.html
  53. 62 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_iovec_t.html
  54. 75 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_packet.html
  55. 64 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_packet_clear.html
  56. 75 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_page.html
  57. 65 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_page_bos.html
  58. 62 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_page_checksum_set.html
  59. 64 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_page_continued.html
  60. 65 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_page_eos.html
  61. 65 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_page_granulepos.html
  62. 75 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_page_packets.html
  63. 63 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_page_pageno.html
  64. 63 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_page_serialno.html
  65. 63 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_page_version.html
  66. 71 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_check.html
  67. 61 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_clear.html
  68. 71 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_destroy.html
  69. 62 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_eos.html
  70. 67 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_flush.html
  71. 74 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_flush_fill.html
  72. 66 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_init.html
  73. 80 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_iovecin.html
  74. 72 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_packetin.html
  75. 85 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_packetout.html
  76. 85 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_packetpeek.html
  77. 67 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_pagein.html
  78. 84 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_pageout.html
  79. 89 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_pageout_fill.html
  80. 61 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_reset.html
  81. 67 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_reset_serialno.html
  82. 121 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_state.html
  83. 67 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_buffer.html
  84. 71 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_check.html
  85. 62 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_clear.html
  86. 68 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_destroy.html
  87. 63 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_init.html
  88. 77 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_pageout.html
  89. 68 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_pageseek.html
  90. 63 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_reset.html
  91. 77 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_state.html
  92. 73 0
      audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_wrote.html
  93. 64 0
      audio/windows/libogg-1.3.3/doc/libogg/oggpack_adv.html
  94. 62 0
      audio/windows/libogg-1.3.3/doc/libogg/oggpack_adv1.html
  95. 62 0
      audio/windows/libogg-1.3.3/doc/libogg/oggpack_bits.html
  96. 66 0
      audio/windows/libogg-1.3.3/doc/libogg/oggpack_buffer.html
  97. 67 0
      audio/windows/libogg-1.3.3/doc/libogg/oggpack_bytes.html
  98. 62 0
      audio/windows/libogg-1.3.3/doc/libogg/oggpack_get_buffer.html
  99. 66 0
      audio/windows/libogg-1.3.3/doc/libogg/oggpack_look.html
  100. 0 0
      audio/windows/libogg-1.3.3/doc/libogg/oggpack_look1.html

+ 1 - 0
.gitattributes

@@ -0,0 +1 @@
+audio/windows/* linguist-vendored

+ 52 - 38
README.md

@@ -1,15 +1,18 @@
-# G3N - Go 3D Game Engine
-
-[![GoDoc](https://godoc.org/github.com/g3n/engine?status.svg)](https://godoc.org/github.com/g3n/engine)
 
+<p align="center"><img width="150" src="https://github.com/g3n/g3nd/blob/master/data/images/g3n_logo.png" alt="G3N Banner"/></p>
+<p align="center">
+  <a href="https://godoc.org/github.com/g3n/engine"><img src="https://godoc.org/github.com/g3n/engine?status.svg" alt="Godoc"></img></a>
+  <a href="https://goreportcard.com/report/github.com/g3n/engine"><img src="https://goreportcard.com/badge/github.com/g3n/engine"  alt="Go Report Card"/></a>
+</p>
+<p><h1 align="center">G3N - Go 3D Game Engine</h1></p>
 
-G3N is a basic (for now!) OpenGL 3D game engine written in Go.
-G3N was heavily inspired and based on the [three.js](https://threejs.org/) Javascript 3D library.
+G3N (pronounced "gen") is an OpenGL 3D game engine written in Go.
+G3N was heavily inspired by [three.js](https://threejs.org/).
 
-### **To see G3N in action try the [G3N demo](https://github.com/g3n/g3nd).**
+### **To see G3N in action try the [G3N demo](https://github.com/g3n/g3nd) or the [Gokoban](https://github.com/danaugrs/gokoban) award winning game.**
 
 <p align="center">
-  <img style="float: right;" src="https://github.com/g3n/g3n.github.io/blob/master/g3n_banner_small.png" alt="G3N Banner"/>
+  <img style="float: right;" src="https://raw.githubusercontent.com/g3n/g3nd/master/data/images/g3nd_screenshots.png" alt="G3ND In Action"/>
 </p>
 
 ## Highlighted Projects
@@ -18,29 +21,34 @@ G3N was heavily inspired and based on the [three.js](https://threejs.org/) Javas
 
 ## Dependencies
 
-The engine needs an OpenGL driver installed in the system and
-on Unix like systems depends on some C libraries that can be installed using the distribution package manager.
+The engine needs an OpenGL driver installed in the system and on Unix like systems
+depends on some C libraries that can be installed using the distribution package manager.
 In all cases it is necessary to have a gcc compatible C compiler installed.
 
-* For Ubuntu/Debian-like Linux distributions, install `libgl1-mesa-dev` and `xorg-dev` packages.
-* For CentOS/Fedora-like Linux distributions, install `libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel mesa-libGL-devel libXi-devel` packages.
-* Currently it was not tested on OS X.
-* For Windows we tested the build using the [mingw-w64](https://mingw-w64.org) toolchain.
-
-G3N supports spatial audio using external libraries but loads these libraries
-dynamically on demand, so you can install G3N and build a 3D application
-(not using audio) without installing these libraries.
-
-The following libraries are necessary for the optional audio support:
-
-* For Ubuntu/Debian-like Linux distributions, install `libopenal1` and `libvorbisfile3`
-* For CentOS/Fedora-like Linux distributions, install `libopenal1` and `libvorbisfile3 (to be verified)`
-* Currently it was not tested on OS X.
-* For Windows its is necessary to install the following dlls:
-  `OpenAL32.dll, libogg.dll, libvorbis.dll` and `libvorbisfile.dll`.
-  See [windows_audio_dlls](https://github.com/g3n/windows_audio_dlls) for how to get them.
-
-G3N was only tested with Go1.7.4+
+* For Ubuntu/Debian-like Linux distributions, install the following packages:
+  * `xorg-dev`
+  * `libgl1-mesa-dev`
+  * `libopenal1`
+  * `libopenal-dev`
+  * `libvorbis0a`
+  * `libvorbis-dev`
+  * `libvorbisfile3`
+* For CentOS/Fedora-like Linux distributions, install the following packages:
+  * `xorg-x11-devel.x86_64`
+  * `mesa-libGL.x86_64`
+  * `mesa-libGL-devel.x86_64`
+  * `openal-soft.x86_64`
+  * `openal-soft-devel.x86_64`
+  * `libvorbis.x86_64`
+  * `libvorbis-devel.x86_64`
+* For Windows the necessary audio libraries sources and `dlls` are supplied but they need to be installed
+  manually. Please see [Audio libraries for Windows](audio/windows) for details.
+  We tested the Windows build using the [mingw-w64](https://mingw-w64.org) toolchain.
+* (Not fully-tested on OSX) On OSX, you should install the development files of OpenAL and Vorbis. If
+  your are using [Homebrew](https://brew.sh/) as your package manager, run:
+  `brew install libvorbis openal-soft`
+
+G3N requires Go 1.8+
 
 ## Installation
 
@@ -66,6 +74,10 @@ install the packages. Make sure your GOPATH is set correctly.
 * Spatial audio support allowing playing sound from wave or Ogg Vorbis files.
 * Users' applications can use their own vertex and fragment shaders.
 
+<p align="center">
+  <img style="float: right;" src="https://github.com/g3n/g3n.github.io/blob/master/g3n_banner_small.png" alt="G3N Banner"/>
+</p>
+
 ## Basic application
 
 The following code shows a basic G3N application 
@@ -96,13 +108,17 @@ import (
 func main() {
 
 	// Creates window and OpenGL context
-	win, err := window.New("glfw", 800, 600, "Hello G3N", false)
+	wmgr, err := window.Manager("glfw")
+	if err != nil {
+		panic(err)
+	}
+	win, err := wmgr.CreateWindow(800, 600, "Hello G3N", false)
 	if err != nil {
 		panic(err)
 	}
 
 	// OpenGL functions must be executed in the same thread where
-	// the context was created (by window.New())
+	// the context was created (by CreateWindow())
 	runtime.LockOSThread()
 
 	// Create OpenGL state
@@ -113,7 +129,7 @@ func main() {
 
 	// Sets the OpenGL viewport size the same as the window size
 	// This normally should be updated if the window is resized.
-	width, height := win.GetSize()
+	width, height := win.Size()
 	gs.Viewport(0, 0, int32(width), int32(height))
 
 	// Creates scene for 3D objects
@@ -135,7 +151,7 @@ func main() {
 
 	// Creates a wireframe sphere positioned at the center of the scene
 	geom := geometry.NewSphere(2, 16, 16, 0, math.Pi*2, 0, math.Pi)
-	mat := material.NewStandard(math32.NewColor(1, 1, 1))
+	mat := material.NewStandard(math32.NewColor("White"))
 	mat.SetSide(material.SideDouble)
 	mat.SetWireframe(true)
 	sphere := graphic.NewMesh(geom, mat)
@@ -147,6 +163,7 @@ func main() {
 	if err != nil {
 		panic(err)
 	}
+	rend.SetScene(scene)
 
 	// Sets window background color
 	gs.ClearColor(0, 0, 0, 1.0)
@@ -154,20 +171,18 @@ func main() {
 	// Render loop
 	for !win.ShouldClose() {
 
-		// Clear buffers
-		gs.Clear(gls.DEPTH_BUFFER_BIT | gls.STENCIL_BUFFER_BIT | gls.COLOR_BUFFER_BIT)
-
 		// Rotates the sphere a bit around the Z axis (up)
 		sphere.AddRotationY(0.005)
 
 		// Render the scene using the specified camera
-		rend.Render(scene, camera)
+		rend.Render(camera)
 
 		// Update window and checks for I/O events
 		win.SwapBuffers()
-		win.PollEvents()
+		wmgr.PollEvents()
 	}
 }
+
 ```
 
 <p align="center">
@@ -196,4 +211,3 @@ send pull requests.
 ## Community
 
 Join our [channel](https://gophers.slack.com/messages/g3n) on Gophers Slack.
-

+ 111 - 130
audio/al/al.go

@@ -2,45 +2,38 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-/*
-Package al implements the Go bindings of a subset of the functions of the OpenAL C library.
-
-It also implements a loader so the library can be dynamically loaded.
-The OpenAL documentation can be accessed at https://openal.org/documentation/
-
-*/
+// Package al implements the Go bindings of a subset of the functions of the OpenAL C library.
+// The OpenAL documentation can be accessed at https://openal.org/documentation/
 package al
 
 /*
-#cgo darwin   CFLAGS:  -DGO_DARWIN  -I../include
-#cgo linux    CFLAGS:  -DGO_LINUX   -I../include
-#cgo windows  CFLAGS:  -DGO_WINDOWS -I../include
-#cgo darwin   LDFLAGS:
-#cgo linux    LDFLAGS: -ldl
-#cgo windows  LDFLAGS:
+#cgo darwin   CFLAGS:  -DGO_DARWIN  -I/usr/local/opt/openal-soft/include/AL -I/usr/include/AL
+#cgo linux    CFLAGS:  -DGO_LINUX   -I/usr/include/AL
+#cgo windows  CFLAGS:  -DGO_WINDOWS -I${SRCDIR}/../windows/openal-soft-1.18.2/include/AL
+#cgo darwin   LDFLAGS: -L/usr/local/opt/openal-soft/lib -lopenal
+#cgo linux    LDFLAGS: -lopenal
+#cgo windows  LDFLAGS: -L${SRCDIR}/../windows/bin -lOpenAL32
 
 #ifdef GO_DARWIN
 #include <stdlib.h>
-#include "AL/al.h"
-#include "AL/alc.h"
-#include "AL/efx.h"
+#include "al.h"
+#include "alc.h"
+#include "efx.h"
 #endif
 
 #ifdef GO_LINUX
 #include <stdlib.h>
-#include "AL/al.h"
-#include "AL/alc.h"
-#include "AL/efx.h"
+#include "al.h"
+#include "alc.h"
+#include "efx.h"
 #endif
 
 #ifdef GO_WINDOWS
 #include <stdlib.h>
-#include "AL/al.h"
-#include "AL/alc.h"
-#include "AL/efx.h"
+#include "al.h"
+#include "alc.h"
+#include "efx.h"
 #endif
-
-#include "loader.h"
 */
 import "C"
 
@@ -302,18 +295,6 @@ var mapDevice = map[*C.ALCdevice]*Device{}
 // Global statistics structure
 var stats Stats
 
-//
-// Loads try to load dynamically the OpenAL library if available
-//
-func Load() error {
-
-	cres := C.al_load()
-	if cres == 0 {
-		return nil
-	}
-	return fmt.Errorf("Error trying to load OpenAL library")
-}
-
 // GetStats returns copy of the statistics structure
 func GetStats() Stats {
 
@@ -334,40 +315,40 @@ func CreateContext(dev *Device, attrlist []int) (*Context, error) {
 	if len(attrlist) != 0 {
 		plist = (unsafe.Pointer)(&attrlist[0])
 	}
-	ctx := C._alcCreateContext(dev.cdev, (*C.ALCint)(plist))
+	ctx := C.alcCreateContext(dev.cdev, (*C.ALCint)(plist))
 	if ctx != nil {
 		return &Context{ctx}, nil
 	}
-	return nil, fmt.Errorf("%s", errCodes[uint(C._alcGetError(dev.cdev))])
+	return nil, fmt.Errorf("%s", errCodes[uint(C.alcGetError(dev.cdev))])
 }
 
 func MakeContextCurrent(ctx *Context) error {
 
-	cres := C._alcMakeContextCurrent(ctx.cctx)
+	cres := C.alcMakeContextCurrent(ctx.cctx)
 	if cres == C.ALC_TRUE {
 		return nil
 	}
-	return fmt.Errorf("%s", errCodes[uint(C._alGetError())])
+	return fmt.Errorf("%s", errCodes[uint(C.alGetError())])
 }
 
 func ProcessContext(ctx *Context) {
 
-	C._alcProcessContext(ctx.cctx)
+	C.alcProcessContext(ctx.cctx)
 }
 
 func SuspendContext(ctx *Context) {
 
-	C._alcSuspendContext(ctx.cctx)
+	C.alcSuspendContext(ctx.cctx)
 }
 
 func DestroyContext(ctx *Context) {
 
-	C._alcDestroyContext(ctx.cctx)
+	C.alcDestroyContext(ctx.cctx)
 }
 
 func GetContextsDevice(ctx *Context) *Device {
 
-	cdev := C._alcGetContextsDevice(ctx.cctx)
+	cdev := C.alcGetContextsDevice(ctx.cctx)
 	if cdev == nil {
 		return nil
 	}
@@ -378,28 +359,28 @@ func OpenDevice(name string) (*Device, error) {
 
 	cstr := (*C.ALCchar)(C.CString(name))
 	defer C.free(unsafe.Pointer(cstr))
-	cdev := C._alcOpenDevice(cstr)
+	cdev := C.alcOpenDevice(cstr)
 	if cdev != nil {
 		dev := &Device{cdev}
 		mapDevice[cdev] = dev
 		return dev, nil
 	}
-	return nil, fmt.Errorf("%s", errCodes[uint(C._alGetError())])
+	return nil, fmt.Errorf("%s", errCodes[uint(C.alGetError())])
 }
 
 func CloseDevice(dev *Device) error {
 
-	cres := C._alcCloseDevice(dev.cdev)
+	cres := C.alcCloseDevice(dev.cdev)
 	if cres == C.ALC_TRUE {
 		delete(mapDevice, dev.cdev)
 		return nil
 	}
-	return fmt.Errorf("%s", errCodes[uint(C._alGetError())])
+	return fmt.Errorf("%s", errCodes[uint(C.alGetError())])
 }
 
 func CtxGetError(dev *Device) error {
 
-	cerr := C._alcGetError(dev.cdev)
+	cerr := C.alcGetError(dev.cdev)
 	if cerr == C.AL_NONE {
 		return nil
 	}
@@ -410,7 +391,7 @@ func CtxIsExtensionPresent(dev *Device, extname string) bool {
 
 	cname := (*C.ALCchar)(C.CString(extname))
 	defer C.free(unsafe.Pointer(cname))
-	cres := C._alcIsExtensionPresent(dev.cdev, cname)
+	cres := C.alcIsExtensionPresent(dev.cdev, cname)
 	if cres == C.AL_TRUE {
 		return true
 	}
@@ -421,7 +402,7 @@ func CtxGetEnumValue(dev *Device, enumName string) uint32 {
 
 	cname := (*C.ALCchar)(C.CString(enumName))
 	defer C.free(unsafe.Pointer(cname))
-	cres := C._alcGetEnumValue(dev.cdev, cname)
+	cres := C.alcGetEnumValue(dev.cdev, cname)
 	return uint32(cres)
 }
 
@@ -431,68 +412,68 @@ func CtxGetString(dev *Device, param uint) string {
 	if dev != nil {
 		cdev = dev.cdev
 	}
-	cstr := C._alcGetString(cdev, C.ALCenum(param))
+	cstr := C.alcGetString(cdev, C.ALCenum(param))
 	return C.GoString((*C.char)(cstr))
 }
 
 func CtxGetIntegerv(dev *Device, param uint32, values []int32) {
 
-	C._alcGetIntegerv(dev.cdev, C.ALCenum(param), C.ALCsizei(len(values)), (*C.ALCint)(unsafe.Pointer(&values[0])))
+	C.alcGetIntegerv(dev.cdev, C.ALCenum(param), C.ALCsizei(len(values)), (*C.ALCint)(unsafe.Pointer(&values[0])))
 }
 
 func CaptureOpenDevice(devname string, frequency uint32, format uint32, buffersize uint32) (*Device, error) {
 
 	cstr := (*C.ALCchar)(C.CString(devname))
 	defer C.free(unsafe.Pointer(cstr))
-	cdev := C._alcCaptureOpenDevice(cstr, C.ALCuint(frequency), C.ALCenum(format), C.ALCsizei(buffersize))
+	cdev := C.alcCaptureOpenDevice(cstr, C.ALCuint(frequency), C.ALCenum(format), C.ALCsizei(buffersize))
 	if cdev != nil {
 		dev := &Device{cdev}
 		mapDevice[cdev] = dev
 		return dev, nil
 	}
-	return nil, fmt.Errorf("%s", errCodes[uint(C._alGetError())])
+	return nil, fmt.Errorf("%s", errCodes[uint(C.alGetError())])
 }
 
 func CaptureCloseDevice(dev *Device) error {
 
-	cres := C._alcCaptureCloseDevice(dev.cdev)
+	cres := C.alcCaptureCloseDevice(dev.cdev)
 	if cres == C.AL_TRUE {
 		return nil
 	}
-	return fmt.Errorf("%s", errCodes[uint(C._alGetError())])
+	return fmt.Errorf("%s", errCodes[uint(C.alGetError())])
 }
 
 func CaptureStart(dev *Device) {
 
-	C._alcCaptureStart(dev.cdev)
+	C.alcCaptureStart(dev.cdev)
 	checkCtxError(dev)
 }
 
 func CaptureStop(dev *Device) {
 
-	C._alcCaptureStop(dev.cdev)
+	C.alcCaptureStop(dev.cdev)
 	checkCtxError(dev)
 }
 
 func CaptureSamples(dev *Device, buffer []byte, nsamples uint) {
 
-	C._alcCaptureSamples(dev.cdev, unsafe.Pointer(&buffer[0]), C.ALCsizei(nsamples))
+	C.alcCaptureSamples(dev.cdev, unsafe.Pointer(&buffer[0]), C.ALCsizei(nsamples))
 	checkCtxError(dev)
 }
 
 func Enable(capability uint) {
 
-	C._alEnable(C.ALenum(capability))
+	C.alEnable(C.ALenum(capability))
 }
 
 func Disable(capability uint) {
 
-	C._alDisable(C.ALenum(capability))
+	C.alDisable(C.ALenum(capability))
 }
 
 func IsEnabled(capability uint) bool {
 
-	cres := C._alIsEnabled(C.ALenum(capability))
+	cres := C.alIsEnabled(C.ALenum(capability))
 	if cres == C.AL_TRUE {
 		return true
 	}
@@ -501,14 +482,14 @@ func IsEnabled(capability uint) bool {
 
 func GetString(param uint32) string {
 
-	cstr := C._alGetString(C.ALenum(param))
+	cstr := C.alGetString(C.ALenum(param))
 	return C.GoString((*C.char)(cstr))
 }
 
 func GetBooleanv(param uint32, values []bool) {
 
 	cvals := make([]C.ALboolean, len(values))
-	C._alGetBooleanv(C.ALenum(param), &cvals[0])
+	C.alGetBooleanv(C.ALenum(param), &cvals[0])
 	for i := 0; i < len(cvals); i++ {
 		if cvals[i] == C.AL_TRUE {
 			values[i] = true
@@ -520,22 +501,22 @@ func GetBooleanv(param uint32, values []bool) {
 
 func GetIntegerv(param uint32, values []int32) {
 
-	C._alGetIntegerv(C.ALenum(param), (*C.ALint)(unsafe.Pointer(&values[0])))
+	C.alGetIntegerv(C.ALenum(param), (*C.ALint)(unsafe.Pointer(&values[0])))
 }
 
 func GetFloatv(param uint32, values []float32) {
 
-	C._alGetFloatv(C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&values[0])))
+	C.alGetFloatv(C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&values[0])))
 }
 
 func GetDoublev(param uint32, values []float64) {
 
-	C._alGetDoublev(C.ALenum(param), (*C.ALdouble)(unsafe.Pointer(&values[0])))
+	C.alGetDoublev(C.ALenum(param), (*C.ALdouble)(unsafe.Pointer(&values[0])))
 }
 
 func GetBoolean(param uint32) bool {
 
-	cres := C._alGetBoolean(C.ALenum(param))
+	cres := C.alGetBoolean(C.ALenum(param))
 	if cres == C.AL_TRUE {
 		return true
 	}
@@ -544,25 +525,25 @@ func GetBoolean(param uint32) bool {
 
 func GetInteger(param uint32) int32 {
 
-	cres := C._alGetInteger(C.ALenum(param))
+	cres := C.alGetInteger(C.ALenum(param))
 	return int32(cres)
 }
 
 func GetFloat(param uint32) float32 {
 
-	cres := C._alGetFloat(C.ALenum(param))
+	cres := C.alGetFloat(C.ALenum(param))
 	return float32(cres)
 }
 
 func GetDouble(param uint32) float64 {
 
-	cres := C._alGetDouble(C.ALenum(param))
+	cres := C.alGetDouble(C.ALenum(param))
 	return float64(cres)
 }
 
 func GetError() error {
 
-	cerr := C._alGetError()
+	cerr := C.alGetError()
 	if cerr == C.AL_NONE {
 		return nil
 	}
@@ -573,7 +554,7 @@ func IsExtensionPresent(extName string) bool {
 
 	cstr := (*C.ALchar)(C.CString(extName))
 	defer C.free(unsafe.Pointer(cstr))
-	cres := C._alIsExtensionPresent(cstr)
+	cres := C.alIsExtensionPresent(cstr)
 	if cres == 0 {
 		return false
 	}
@@ -584,44 +565,44 @@ func GetEnumValue(enam string) uint32 {
 
 	cenam := (*C.ALchar)(C.CString(enam))
 	defer C.free(unsafe.Pointer(cenam))
-	cres := C._alGetEnumValue(cenam)
+	cres := C.alGetEnumValue(cenam)
 	return uint32(cres)
 }
 
 func Listenerf(param uint32, value float32) {
 
-	C._alListenerf(C.ALenum(param), C.ALfloat(value))
+	C.alListenerf(C.ALenum(param), C.ALfloat(value))
 }
 
 func Listener3f(param uint32, value1, value2, value3 float32) {
 
-	C._alListener3f(C.ALenum(param), C.ALfloat(value1), C.ALfloat(value2), C.ALfloat(value3))
+	C.alListener3f(C.ALenum(param), C.ALfloat(value1), C.ALfloat(value2), C.ALfloat(value3))
 }
 
 func Listenerfv(param uint32, values []float32) {
 
-	C._alListenerfv(C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&values[0])))
+	C.alListenerfv(C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&values[0])))
 }
 
 func Listeneri(param uint32, value int32) {
 
-	C._alListeneri(C.ALenum(param), C.ALint(value))
+	C.alListeneri(C.ALenum(param), C.ALint(value))
 }
 
 func Listener3i(param uint32, value1, value2, value3 int32) {
 
-	C._alListener3i(C.ALenum(param), C.ALint(value1), C.ALint(value2), C.ALint(value3))
+	C.alListener3i(C.ALenum(param), C.ALint(value1), C.ALint(value2), C.ALint(value3))
 }
 
 func Listeneriv(param uint32, values []int32) {
 
-	C._alListeneriv(C.ALenum(param), (*C.ALint)(unsafe.Pointer(&values[0])))
+	C.alListeneriv(C.ALenum(param), (*C.ALint)(unsafe.Pointer(&values[0])))
 }
 
 func GetListenerf(param uint32) float32 {
 
 	var cval C.ALfloat
-	C._alGetListenerf(C.ALenum(param), &cval)
+	C.alGetListenerf(C.ALenum(param), &cval)
 	return float32(cval)
 }
 
@@ -630,19 +611,19 @@ func GetListener3f(param uint32) (float32, float32, float32) {
 	var cval1 C.ALfloat
 	var cval2 C.ALfloat
 	var cval3 C.ALfloat
-	C._alGetListener3f(C.ALenum(param), &cval1, &cval2, &cval3)
+	C.alGetListener3f(C.ALenum(param), &cval1, &cval2, &cval3)
 	return float32(cval1), float32(cval2), float32(cval3)
 }
 
 func GetListenerfv(param uint32, values []uint32) {
 
-	C._alGetListenerfv(C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&values[0])))
+	C.alGetListenerfv(C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&values[0])))
 }
 
 func GetListeneri(param uint32) int32 {
 
 	var cval C.ALint
-	C._alGetListeneri(C.ALenum(param), &cval)
+	C.alGetListeneri(C.ALenum(param), &cval)
 	return int32(cval)
 }
 
@@ -651,7 +632,7 @@ func GetListener3i(param uint32) (int32, int32, int32) {
 	var cval1 C.ALint
 	var cval2 C.ALint
 	var cval3 C.ALint
-	C._alGetListener3i(C.ALenum(param), &cval1, &cval2, &cval3)
+	C.alGetListener3i(C.ALenum(param), &cval1, &cval2, &cval3)
 	return int32(cval1), int32(cval2), int32(cval3)
 }
 
@@ -660,38 +641,38 @@ func GetListeneriv(param uint32, values []int32) {
 	if len(values) < 3 {
 		panic("Slice length less than minimum")
 	}
-	C._alGetListeneriv(C.ALenum(param), (*C.ALint)(unsafe.Pointer(&values[0])))
+	C.alGetListeneriv(C.ALenum(param), (*C.ALint)(unsafe.Pointer(&values[0])))
 }
 
 func GenSource() uint32 {
 
 	var csource C.ALuint
-	C._alGenSources(1, &csource)
+	C.alGenSources(1, &csource)
 	stats.Sources++
 	return uint32(csource)
 }
 
 func GenSources(sources []uint32) {
 
-	C._alGenSources(C.ALsizei(len(sources)), (*C.ALuint)(unsafe.Pointer(&sources[0])))
+	C.alGenSources(C.ALsizei(len(sources)), (*C.ALuint)(unsafe.Pointer(&sources[0])))
 	stats.Sources += len(sources)
 }
 
 func DeleteSource(source uint32) {
 
-	C._alDeleteSources(1, (*C.ALuint)(unsafe.Pointer(&source)))
+	C.alDeleteSources(1, (*C.ALuint)(unsafe.Pointer(&source)))
 	stats.Sources--
 }
 
 func DeleteSources(sources []uint32) {
 
-	C._alDeleteSources(C.ALsizei(len(sources)), (*C.ALuint)(unsafe.Pointer(&sources[0])))
+	C.alDeleteSources(C.ALsizei(len(sources)), (*C.ALuint)(unsafe.Pointer(&sources[0])))
 	stats.Sources -= len(sources)
 }
 
 func IsSource(source uint32) bool {
 
-	cres := C._alIsSource(C.ALuint(source))
+	cres := C.alIsSource(C.ALuint(source))
 	if cres == C.AL_TRUE {
 		return true
 	}
@@ -700,12 +681,12 @@ func IsSource(source uint32) bool {
 
 func Sourcef(source uint32, param uint32, value float32) {
 
-	C._alSourcef(C.ALuint(source), C.ALenum(param), C.ALfloat(value))
+	C.alSourcef(C.ALuint(source), C.ALenum(param), C.ALfloat(value))
 }
 
 func Source3f(source uint32, param uint32, value1, value2, value3 float32) {
 
-	C._alSource3f(C.ALuint(source), C.ALenum(param), C.ALfloat(value1), C.ALfloat(value2), C.ALfloat(value3))
+	C.alSource3f(C.ALuint(source), C.ALenum(param), C.ALfloat(value1), C.ALfloat(value2), C.ALfloat(value3))
 }
 
 func Sourcefv(source uint32, param uint32, values []float32) {
@@ -713,17 +694,17 @@ func Sourcefv(source uint32, param uint32, values []float32) {
 	if len(values) < 3 {
 		panic("Slice length less than minimum")
 	}
-	C._alSourcefv(C.ALuint(source), C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&values[0])))
+	C.alSourcefv(C.ALuint(source), C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&values[0])))
 }
 
 func Sourcei(source uint32, param uint32, value int32) {
 
-	C._alSourcei(C.ALuint(source), C.ALenum(param), C.ALint(value))
+	C.alSourcei(C.ALuint(source), C.ALenum(param), C.ALint(value))
 }
 
 func Source3i(source uint32, param uint32, value1, value2, value3 int32) {
 
-	C._alSource3i(C.ALuint(source), C.ALenum(param), C.ALint(value1), C.ALint(value2), C.ALint(value3))
+	C.alSource3i(C.ALuint(source), C.ALenum(param), C.ALint(value1), C.ALint(value2), C.ALint(value3))
 }
 
 func Sourceiv(source uint32, param uint32, values []int32) {
@@ -731,13 +712,13 @@ func Sourceiv(source uint32, param uint32, values []int32) {
 	if len(values) < 3 {
 		panic("Slice length less than minimum")
 	}
-	C._alSourceiv(C.ALuint(source), C.ALenum(param), (*C.ALint)(unsafe.Pointer(&values[0])))
+	C.alSourceiv(C.ALuint(source), C.ALenum(param), (*C.ALint)(unsafe.Pointer(&values[0])))
 }
 
 func GetSourcef(source uint32, param uint32) float32 {
 
 	var value C.ALfloat
-	C._alGetSourcef(C.ALuint(source), C.ALenum(param), &value)
+	C.alGetSourcef(C.ALuint(source), C.ALenum(param), &value)
 	return float32(value)
 }
 
@@ -746,7 +727,7 @@ func GetSource3f(source uint32, param uint32) (float32, float32, float32) {
 	var cval1 C.ALfloat
 	var cval2 C.ALfloat
 	var cval3 C.ALfloat
-	C._alGetSource3f(C.ALuint(source), C.ALenum(param), &cval1, &cval2, &cval3)
+	C.alGetSource3f(C.ALuint(source), C.ALenum(param), &cval1, &cval2, &cval3)
 	return float32(cval1), float32(cval2), float32(cval3)
 }
 
@@ -755,13 +736,13 @@ func GetSourcefv(source uint32, param uint32, values []float32) {
 	if len(values) < 3 {
 		panic("Slice length less than minimum")
 	}
-	C._alGetSourcefv(C.ALuint(source), C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&values[0])))
+	C.alGetSourcefv(C.ALuint(source), C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&values[0])))
 }
 
 func GetSourcei(source uint32, param uint32) int32 {
 
 	var value C.ALint
-	C._alGetSourcei(C.ALuint(source), C.ALenum(param), &value)
+	C.alGetSourcei(C.ALuint(source), C.ALenum(param), &value)
 	return int32(value)
 }
 
@@ -770,7 +751,7 @@ func GetSource3i(source uint32, param uint32) (int32, int32, int32) {
 	var cval1 C.ALint
 	var cval2 C.ALint
 	var cval3 C.ALint
-	C._alGetSource3i(C.ALuint(source), C.ALenum(param), &cval1, &cval2, &cval3)
+	C.alGetSource3i(C.ALuint(source), C.ALenum(param), &cval1, &cval2, &cval3)
 	return int32(cval1), int32(cval2), int32(cval3)
 }
 
@@ -779,75 +760,75 @@ func GetSourceiv(source uint32, param uint32, values []int32) {
 	if len(values) < 3 {
 		panic("Slice length less than minimum")
 	}
-	C._alGetSourceiv(C.ALuint(source), C.ALenum(param), (*C.ALint)(unsafe.Pointer(&values[0])))
+	C.alGetSourceiv(C.ALuint(source), C.ALenum(param), (*C.ALint)(unsafe.Pointer(&values[0])))
 }
 
 func SourcePlayv(sources []uint32) {
 
-	C._alSourcePlayv(C.ALsizei(len(sources)), (*C.ALuint)(unsafe.Pointer(&sources[0])))
+	C.alSourcePlayv(C.ALsizei(len(sources)), (*C.ALuint)(unsafe.Pointer(&sources[0])))
 }
 
 func SourceStopv(sources []uint32) {
 
-	C._alSourceStopv(C.ALsizei(len(sources)), (*C.ALuint)(unsafe.Pointer(&sources[0])))
+	C.alSourceStopv(C.ALsizei(len(sources)), (*C.ALuint)(unsafe.Pointer(&sources[0])))
 }
 
 func SourceRewindv(sources []uint32) {
 
-	C._alSourceRewindv(C.ALsizei(len(sources)), (*C.ALuint)(unsafe.Pointer(&sources[0])))
+	C.alSourceRewindv(C.ALsizei(len(sources)), (*C.ALuint)(unsafe.Pointer(&sources[0])))
 }
 
 func SourcePausev(sources []uint32) {
 
-	C._alSourcePausev(C.ALsizei(len(sources)), (*C.ALuint)(unsafe.Pointer(&sources[0])))
+	C.alSourcePausev(C.ALsizei(len(sources)), (*C.ALuint)(unsafe.Pointer(&sources[0])))
 }
 
 func SourcePlay(source uint32) {
 
-	C._alSourcePlay(C.ALuint(source))
+	C.alSourcePlay(C.ALuint(source))
 }
 
 func SourceStop(source uint32) {
 
-	C._alSourceStop(C.ALuint(source))
+	C.alSourceStop(C.ALuint(source))
 }
 
 func SourceRewind(source uint32) {
 
-	C._alSourceRewind(C.ALuint(source))
+	C.alSourceRewind(C.ALuint(source))
 }
 
 func SourcePause(source uint32) {
 
-	C._alSourcePause(C.ALuint(source))
+	C.alSourcePause(C.ALuint(source))
 }
 
 func SourceQueueBuffers(source uint32, buffers ...uint32) {
 
-	C._alSourceQueueBuffers(C.ALuint(source), C.ALsizei(len(buffers)), (*C.ALuint)(unsafe.Pointer(&buffers[0])))
+	C.alSourceQueueBuffers(C.ALuint(source), C.ALsizei(len(buffers)), (*C.ALuint)(unsafe.Pointer(&buffers[0])))
 }
 
 func SourceUnqueueBuffers(source uint32, n uint32, buffers []uint32) {
 
 	removed := make([]C.ALuint, n)
-	C._alSourceUnqueueBuffers(C.ALuint(source), C.ALsizei(n), &removed[0])
+	C.alSourceUnqueueBuffers(C.ALuint(source), C.ALsizei(n), &removed[0])
 }
 
 func GenBuffers(n uint32) []uint32 {
 
 	buffers := make([]uint32, n)
-	C._alGenBuffers(C.ALsizei(len(buffers)), (*C.ALuint)(unsafe.Pointer(&buffers[0])))
+	C.alGenBuffers(C.ALsizei(len(buffers)), (*C.ALuint)(unsafe.Pointer(&buffers[0])))
 	return buffers
 }
 
 func DeleteBuffers(buffers []uint32) {
 
-	C._alDeleteBuffers(C.ALsizei(len(buffers)), (*C.ALuint)(unsafe.Pointer(&buffers[0])))
+	C.alDeleteBuffers(C.ALsizei(len(buffers)), (*C.ALuint)(unsafe.Pointer(&buffers[0])))
 }
 
 func IsBuffer(buffer uint32) bool {
 
-	cres := C._alIsBuffer(C.ALuint(buffer))
+	cres := C.alIsBuffer(C.ALuint(buffer))
 	if cres == C.AL_TRUE {
 		return true
 	}
@@ -856,73 +837,73 @@ func IsBuffer(buffer uint32) bool {
 
 func BufferData(buffer uint32, format uint32, data unsafe.Pointer, size uint32, freq uint32) {
 
-	C._alBufferData(C.ALuint(buffer), C.ALenum(format), data, C.ALsizei(size), C.ALsizei(freq))
+	C.alBufferData(C.ALuint(buffer), C.ALenum(format), data, C.ALsizei(size), C.ALsizei(freq))
 }
 
 func Bufferf(buffer uint32, param uint32, value float32) {
 
-	C._alBufferf(C.ALuint(buffer), C.ALenum(param), C.ALfloat(value))
+	C.alBufferf(C.ALuint(buffer), C.ALenum(param), C.ALfloat(value))
 }
 
 func Buffer3f(buffer uint32, param uint32, value1, value2, value3 float32) {
 
-	C._alBuffer3f(C.ALuint(buffer), C.ALenum(param), C.ALfloat(value1), C.ALfloat(value2), C.ALfloat(value3))
+	C.alBuffer3f(C.ALuint(buffer), C.ALenum(param), C.ALfloat(value1), C.ALfloat(value2), C.ALfloat(value3))
 }
 
 func Bufferfv(buffer uint32, param uint32, values []float32) {
 
-	C._alBufferfv(C.ALuint(buffer), C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&values[0])))
+	C.alBufferfv(C.ALuint(buffer), C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&values[0])))
 }
 
 func Bufferi(buffer uint32, param uint32, value int32) {
 
-	C._alBufferi(C.ALuint(buffer), C.ALenum(param), C.ALint(value))
+	C.alBufferi(C.ALuint(buffer), C.ALenum(param), C.ALint(value))
 }
 
 func Buffer3i(buffer uint32, param uint32, value1, value2, value3 int32) {
 
-	C._alBuffer3i(C.ALuint(buffer), C.ALenum(param), C.ALint(value1), C.ALint(value2), C.ALint(value3))
+	C.alBuffer3i(C.ALuint(buffer), C.ALenum(param), C.ALint(value1), C.ALint(value2), C.ALint(value3))
 }
 
 func Bufferiv(buffer uint32, param uint32, values []int32) {
 
-	C._alBufferiv(C.ALuint(buffer), C.ALenum(param), (*C.ALint)(unsafe.Pointer(&values[0])))
+	C.alBufferiv(C.ALuint(buffer), C.ALenum(param), (*C.ALint)(unsafe.Pointer(&values[0])))
 }
 
 func GetBufferf(buffer uint32, param uint32) float32 {
 
 	var value C.ALfloat
-	C._alGetBufferf(C.ALuint(buffer), C.ALenum(param), &value)
+	C.alGetBufferf(C.ALuint(buffer), C.ALenum(param), &value)
 	return float32(value)
 }
 
 func GetBuffer3f(buffer uint32, param uint32) (v1 float32, v2 float32, v3 float32) {
 
 	var value1, value2, value3 C.ALfloat
-	C._alGetBuffer3f(C.ALuint(buffer), C.ALenum(param), &value1, &value2, &value3)
+	C.alGetBuffer3f(C.ALuint(buffer), C.ALenum(param), &value1, &value2, &value3)
 	return float32(value1), float32(value2), float32(value3)
 }
 
 func GetBufferfv(buffer uint32, param uint32, values []float32) {
 
-	C._alGetBufferfv(C.ALuint(buffer), C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&values[0])))
+	C.alGetBufferfv(C.ALuint(buffer), C.ALenum(param), (*C.ALfloat)(unsafe.Pointer(&values[0])))
 }
 
 func GetBufferi(buffer uint32, param uint32) int32 {
 
 	var value C.ALint
-	C._alGetBufferi(C.ALuint(buffer), C.ALenum(param), &value)
+	C.alGetBufferi(C.ALuint(buffer), C.ALenum(param), &value)
 	return int32(value)
 }
 
 func GetBuffer3i(buffer uint32, param uint32) (int32, int32, int32) {
 
 	var value1, value2, value3 C.ALint
-	C._alGetBuffer3i(C.ALuint(buffer), C.ALenum(param), &value1, &value2, &value3)
+	C.alGetBuffer3i(C.ALuint(buffer), C.ALenum(param), &value1, &value2, &value3)
 	return int32(value1), int32(value2), int32(value3)
 }
 
 func GetBufferiv(buffer uint32, param uint32, values []int32) {
 
-	C._alGetBufferiv(C.ALuint(buffer), C.ALenum(param), (*C.ALint)(unsafe.Pointer(&values[0])))
+	C.alGetBufferiv(C.ALuint(buffer), C.ALenum(param), (*C.ALint)(unsafe.Pointer(&values[0])))
 }

+ 0 - 752
audio/al/loader.c

@@ -1,752 +0,0 @@
-#include "loader.h"
-
-typedef void (*alProc)(void);
-
-//
-// Windows --------------------------------------------------------------------
-//
-#ifdef _WIN32
-#define WIN32_LEAN_AND_MEAN 1
-#include <windows.h>
-
-static HMODULE libal;
-
-static int open_libal(void) {
- 
-	libal = LoadLibraryA("OpenAL32.dll");
-    if (libal == NULL) {
-        return -1;
-    }
-    return 0;
-}
-
-static void close_libal(void) {
-
-	FreeLibrary(libal);
-}
-
-static alProc get_proc(const char *proc) {
-
-    return (alProc) GetProcAddress(libal, proc);
-}
-//
-// Mac --------------------------------------------------------------------
-//
-#elif defined(__APPLE__)
-#include <dlfcn.h>
-
-static void *libal;
-
-static int open_libal(void) {
-
-    libal = dlopen("/System/Library/Frameworks/OpenAL.framework/OpenAL", RTLD_LAZY | RTLD_GLOBAL);
-    if (!libal) {
-        return -1;
-    }
-    return 0;
-}
-
-static void close_libal(void) {
-
-    dlclose(libal);
-}
-
-static void* get_proc(const char *proc) {
-
-    void* res;
-    *(void **)(&res) = dlsym(libal, proc);
-    return res;
-}
-//
-// Linux --------------------------------------------------------------------
-//
-#else
-#include <dlfcn.h>
-
-static void *libal;
-
-static char* lib_names[] = {
-    "libopenal.so",
-    "libopenal.so.1",
-    NULL
-};
-
-static int open_libal(void) {
-
-    int i = 0;
-    while (lib_names[i] != NULL) {
-	    libal = dlopen(lib_names[i], RTLD_LAZY | RTLD_GLOBAL);
-        if (libal != NULL) {
-            dlerror(); // clear errors
-            return 0;
-        }
-        i++;
-    }
-    return -1;
-}
-
-static void close_libal(void) {
-
-	dlclose(libal);
-}
-
-static alProc get_proc(const char *proc) {
-    
-    return dlsym(libal, proc);
-}
-#endif
-
-// Prototypes of local functions
-static void load_procs(void);
-static void load_efx_procs(void);
-
-
-// Pointers to functions loaded from shared library
-LPALENABLE                  palEnable;
-LPALDISABLE                 palDisable;
-LPALISENABLED               palIsEnabled;
-LPALGETSTRING               palGetString;
-LPALGETBOOLEANV             palGetBooleanv;
-LPALGETINTEGERV             palGetIntegerv;
-LPALGETFLOATV               palGetFloatv;
-LPALGETDOUBLEV              palGetDoublev;
-LPALGETBOOLEAN              palGetBoolean;
-LPALGETINTEGER              palGetInteger;
-LPALGETFLOAT                palGetFloat;
-LPALGETDOUBLE               palGetDouble;
-LPALGETERROR                palGetError;
-LPALISEXTENSIONPRESENT      palIsExtensionPresent;
-LPALGETPROCADDRESS          palGetProcAddress;
-LPALGETENUMVALUE            palGetEnumValue;
-LPALLISTENERF               palListenerf;
-LPALLISTENER3F              palListener3f;
-LPALLISTENERFV              palListenerfv;
-LPALLISTENERI               palListeneri;
-LPALLISTENER3I              palListener3i;
-LPALLISTENERIV              palListeneriv;
-LPALGETLISTENERF            palGetListenerf;
-LPALGETLISTENER3F           palGetListener3f;
-LPALGETLISTENERFV           palGetListenerfv;
-LPALGETLISTENERI            palGetListeneri;
-LPALGETLISTENER3I           palGetListener3i;
-LPALGETLISTENERIV           palGetListeneriv;
-LPALGENSOURCES              palGenSources;
-LPALDELETESOURCES           palDeleteSources;
-LPALISSOURCE                palIsSource;
-LPALSOURCEF                 palSourcef;
-LPALSOURCE3F                palSource3f;
-LPALSOURCEFV                palSourcefv;
-LPALSOURCEI                 palSourcei;
-LPALSOURCE3I                palSource3i;
-LPALSOURCEIV                palSourceiv;
-LPALGETSOURCEF              palGetSourcef;
-LPALGETSOURCE3F             palGetSource3f;
-LPALGETSOURCEFV             palGetSourcefv;
-LPALGETSOURCEI              palGetSourcei;
-LPALGETSOURCE3I             palGetSource3i;
-LPALGETSOURCEIV             palGetSourceiv;
-LPALSOURCEPLAYV             palSourcePlayv;
-LPALSOURCESTOPV             palSourceStopv;
-LPALSOURCEREWINDV           palSourceRewindv;
-LPALSOURCEPAUSEV            palSourcePausev;
-LPALSOURCEPLAY              palSourcePlay;
-LPALSOURCESTOP              palSourceStop;
-LPALSOURCEREWIND            palSourceRewind;
-LPALSOURCEPAUSE             palSourcePause;
-LPALSOURCEQUEUEBUFFERS      palSourceQueueBuffers;
-LPALSOURCEUNQUEUEBUFFERS    palSourceUnqueueBuffers;
-LPALGENBUFFERS              palGenBuffers;
-LPALDELETEBUFFERS           palDeleteBuffers;
-LPALISBUFFER                palIsBuffer;
-LPALBUFFERDATA              palBufferData;
-LPALBUFFERF                 palBufferf;
-LPALBUFFER3F                palBuffer3f;
-LPALBUFFERFV                palBufferfv;
-LPALBUFFERI                 palBufferi;
-LPALBUFFER3I                palBuffer3i;
-LPALBUFFERIV                palBufferiv;
-LPALGETBUFFERF              palGetBufferf;
-LPALGETBUFFER3F             palGetBuffer3f;
-LPALGETBUFFERFV             palGetBufferfv;
-LPALGETBUFFERI              palGetBufferi;
-LPALGETBUFFER3I             palGetBuffer3i;
-LPALGETBUFFERIV             palGetBufferiv;
-LPALDOPPLERFACTOR           palDopplerFactor;
-LPALDOPPLERVELOCITY         palDopplerVelocity;
-LPALSPEEDOFSOUND            palSpeedOfSound;
-LPALDISTANCEMODEL           palDistanceModel;
-
-LPALCCREATECONTEXT          palcCreateContext;
-LPALCMAKECONTEXTCURRENT     palcMakeContextCurrent;     
-LPALCPROCESSCONTEXT         palcProcessContext;
-LPALCSUSPENDCONTEXT         palcSuspendContext;
-LPALCDESTROYCONTEXT         palcDestroyContext;
-LPALCGETCURRENTCONTEXT      palcGetCurrentContext;
-LPALCGETCONTEXTSDEVICE      palcGetContextsDevice;
-LPALCOPENDEVICE             palcOpenDevice;
-LPALCCLOSEDEVICE            palcCloseDevice;
-LPALCGETERROR               palcGetError;
-LPALCISEXTENSIONPRESENT     palcIsExtensionPresent;
-LPALCGETPROCADDRESS         palcGetProcAddress;
-LPALCGETENUMVALUE           palcGetEnumValue;
-LPALCGETSTRING              palcGetString;
-LPALCGETINTEGERV            palcGetIntegerv;
-LPALCCAPTUREOPENDEVICE      palcCaptureOpenDevice;
-LPALCCAPTURECLOSEDEVICE     palcCaptureCloseDevice;
-LPALCCAPTURESTART           palcCaptureStart;
-LPALCCAPTURESTOP            palcCaptureStop;
-LPALCCAPTURESAMPLES         palcCaptureSamples;
-
-// Pointers to EFX extension functions
-LPALGENEFFECTS                   palGenEffects;
-LPALDELETEEFFECTS                palDeleteEffects;
-LPALISEFFECT                     palIsEffect;
-LPALEFFECTI                      palEffecti;
-LPALEFFECTIV                     palEffectiv;
-LPALEFFECTF                      palEffectf;
-LPALEFFECTFV                     palEffectfv;
-LPALGETEFFECTI                   palGetEffecti;
-LPALGETEFFECTIV                  palGetEffectiv;
-LPALGETEFFECTF                   palGetEffectf;
-LPALGETEFFECTFV                  palGetEffectfv;
-
-LPALGENFILTERS                   palGenFilters;
-LPALDELETEFILTERS                palDeleteFilters;
-LPALISFILTER                     palIsFilter;
-LPALFILTERI                      palFilteri;
-LPALFILTERIV                     palFilteriv;
-LPALFILTERF                      palFilterf;
-LPALFILTERFV                     palFilterfv;
-LPALGETFILTERI                   palGetFilteri;
-LPALGETFILTERIV                  palGetFilteriv;
-LPALGETFILTERF                   palGetFilterf;
-LPALGETFILTERFV                  palGetFilterfv;
-
-LPALGENAUXILIARYEFFECTSLOTS      palGenAuxiliaryEffectsSlots;
-LPALDELETEAUXILIARYEFFECTSLOTS   palDeleteAuxiliaryEffectsSlots;
-LPALISAUXILIARYEFFECTSLOT        palIsAuxiliaryEffectSlot;
-LPALAUXILIARYEFFECTSLOTI         palAuxiliaryEffectSloti;
-LPALAUXILIARYEFFECTSLOTIV        palAuxiliaryEffectSlotiv;
-LPALAUXILIARYEFFECTSLOTF         palAuxiliaryEffectSlotf;
-LPALAUXILIARYEFFECTSLOTFV        palAuxiliaryEffectSlotfv;
-LPALGETAUXILIARYEFFECTSLOTI      palGetAuxiliaryEffectSloti;
-LPALGETAUXILIARYEFFECTSLOTIV     palGetAuxiliaryEffectSlotif;
-LPALGETAUXILIARYEFFECTSLOTF      palGetAuxiliaryEffectSlotf;
-LPALGETAUXILIARYEFFECTSLOTFV     palGetAuxiliaryEffectSlotfv;
-
-
-int al_load() {
-
-    int res = open_libal();
-    if (res) {
-        return res;
-    }
-    load_procs();
-    load_efx_procs();
-    return 0;
-}
-
-static void load_procs(void) {
-    palEnable               = (LPALENABLE)get_proc("alEnable");
-    palDisable              = (LPALDISABLE)get_proc("alDisable");
-    palIsEnabled            = (LPALISENABLED)get_proc("alIsEnabled");
-    palGetString            = (LPALGETSTRING)get_proc("alGetString");
-    palGetBooleanv          = (LPALGETBOOLEANV)get_proc("alGetBooleanv");
-    palGetIntegerv          = (LPALGETINTEGERV)get_proc("alGetIntegerv");
-    palGetFloatv            = (LPALGETFLOATV)get_proc("alGetFloatv");
-    palGetDoublev           = (LPALGETDOUBLEV)get_proc("alGetDoublev");
-    palGetBoolean           = (LPALGETBOOLEAN)get_proc("alGetBoolean");
-    palGetInteger           = (LPALGETINTEGER)get_proc("alGetInteger");
-    palGetFloat             = (LPALGETFLOAT)get_proc("alGetFloat");
-    palGetDouble            = (LPALGETDOUBLE)get_proc("alGetDouble");
-    palGetError             = (LPALGETERROR)get_proc("alGetError");
-    palIsExtensionPresent   = (LPALISEXTENSIONPRESENT)get_proc("alIsExtensionPresent");
-    palGetProcAddress       = (LPALGETPROCADDRESS)get_proc("alGetProcAddress");
-    palGetEnumValue         = (LPALGETENUMVALUE)get_proc("alGetEnumValue");
-    palListenerf            = (LPALLISTENERF)get_proc("alListeners");
-    palListener3f           = (LPALLISTENER3F)get_proc("alListener3f");
-    palListenerfv           = (LPALLISTENERFV)get_proc("alListenerfv");
-    palListeneri            = (LPALLISTENERI)get_proc("alListeneri");
-    palListener3i           = (LPALLISTENER3I)get_proc("alListener3i");
-    palListeneriv           = (LPALLISTENERIV)get_proc("alListeneriv");
-    palGetListenerf         = (LPALGETLISTENERF)get_proc("alGetListenerf");
-    palGetListener3f        = (LPALGETLISTENER3F)get_proc("alGetListener3f");
-    palGetListenerfv        = (LPALGETLISTENERFV)get_proc("alGetListenerfv");
-    palGetListeneri         = (LPALGETLISTENERI)get_proc("alGetListeneri");
-    palGetListener3i        = (LPALGETLISTENER3I)get_proc("alGetListener3i");
-    palGetListeneriv        = (LPALGETLISTENERIV)get_proc("alGetListeneriv");
-    palGenSources           = (LPALGENSOURCES)get_proc("alGenSources");
-    palDeleteSources        = (LPALDELETESOURCES)get_proc("alDeleteSources");
-    palIsSource             = (LPALISSOURCE)get_proc("alIsSource");
-    palSourcef              = (LPALSOURCEF)get_proc("alSourcef");
-    palSource3f             = (LPALSOURCE3F)get_proc("alSource3f");
-    palSourcefv             = (LPALSOURCEFV)get_proc("alSourcefv");
-    palSourcei              = (LPALSOURCEI)get_proc("alSourcei");
-    palSource3i             = (LPALSOURCE3I)get_proc("alSource3i");
-    palSourceiv             = (LPALSOURCEIV)get_proc(" alSourceiv");
-    palGetSourcef           = (LPALGETSOURCEF)get_proc("alGetSourcef");
-    palGetSource3f          = (LPALGETSOURCE3F)get_proc("alGetSource3f");
-    palGetSourcefv          = (LPALGETSOURCEFV)get_proc("alGetSourcefv");
-    palGetSourcei           = (LPALGETSOURCEI)get_proc("alGetSourcei");
-    palGetSource3i          = (LPALGETSOURCE3I)get_proc("alGetSource3i");
-    palGetSourceiv          = (LPALGETSOURCEIV)get_proc("alGetSourceiv");
-    palSourcePlayv          = (LPALSOURCEPLAYV)get_proc("alSourcePlayv");
-    palSourceStopv          = (LPALSOURCESTOPV)get_proc("alSourceStopv");
-    palSourceRewindv        = (LPALSOURCEREWINDV)get_proc("alSourceRewindv");
-    palSourcePausev         = (LPALSOURCEPAUSEV)get_proc("alSourcePausev");
-    palSourcePlay           = (LPALSOURCEPLAY)get_proc("alSourcePlay");
-    palSourceStop           = (LPALSOURCESTOP)get_proc("alSourceStop");
-    palSourceRewind         = (LPALSOURCEREWIND)get_proc("alSourceRewind");
-    palSourcePause          = (LPALSOURCEPAUSE)get_proc("alSourcePause");
-    palSourceQueueBuffers   = (LPALSOURCEQUEUEBUFFERS)get_proc("alSourceQueueBuffers");
-    palSourceUnqueueBuffers = (LPALSOURCEUNQUEUEBUFFERS)get_proc("alSourceUnqueueBuffers");
-    palGenBuffers           = (LPALGENBUFFERS)get_proc("alGenBuffers");
-    palDeleteBuffers        = (LPALDELETEBUFFERS)get_proc("alDeleteBuffers");
-    palIsBuffer             = (LPALISBUFFER)get_proc("alIsBuffer");
-    palBufferData           = (LPALBUFFERDATA)get_proc("alBufferData");
-    palBufferf              = (LPALBUFFERF)get_proc("alBufferf");
-    palBuffer3f             = (LPALBUFFER3F)get_proc("alBuffer3f");
-    palBufferfv             = (LPALBUFFERFV)get_proc("alBufferfv");
-    palBufferi              = (LPALBUFFERI)get_proc("alBufferi");
-    palBuffer3i             = (LPALBUFFER3I)get_proc("alBuffer3i");
-    palBufferiv             = (LPALBUFFERIV)get_proc("alBufferiv");
-    palGetBufferf           = (LPALGETBUFFERF)get_proc("alGetBufferf");
-    palGetBuffer3f          = (LPALGETBUFFER3F)get_proc("alGetBuffer3f");
-    palGetBufferfv          = (LPALGETBUFFERFV)get_proc("alGetBufferfv");
-    palGetBufferi           = (LPALGETBUFFERI)get_proc("alGetBufferi");
-    palGetBuffer3i          = (LPALGETBUFFER3I)get_proc("alGetBuffer3i");
-    palGetBufferiv          = (LPALGETBUFFERIV)get_proc("alGetBufferiv");
-    palDopplerFactor        = (LPALDOPPLERFACTOR)get_proc("alDopplerFactor");
-    palDopplerVelocity      = (LPALDOPPLERVELOCITY)get_proc("alDopplerVelocity");
-    palSpeedOfSound         = (LPALSPEEDOFSOUND)get_proc("alSpeedOfSound");
-    palDistanceModel        = (LPALDISTANCEMODEL)get_proc("alDistanceModel");
-
-    palcCreateContext       = (LPALCCREATECONTEXT)get_proc("alcCreateContext");
-    palcMakeContextCurrent  = (LPALCMAKECONTEXTCURRENT)get_proc("alcMakeContextCurrent");     
-    palcProcessContext      = (LPALCPROCESSCONTEXT)get_proc("alcProcessContext");
-    palcSuspendContext      = (LPALCSUSPENDCONTEXT)get_proc("alcSuspendContext");
-    palcDestroyContext      = (LPALCDESTROYCONTEXT)get_proc("alcDestroyContext");
-    palcGetCurrentContext   = (LPALCGETCURRENTCONTEXT)get_proc("alcGetCurrentContext");
-    palcGetContextsDevice   = (LPALCGETCONTEXTSDEVICE)get_proc("alcGetContextsDevice");
-    palcOpenDevice          = (LPALCOPENDEVICE)get_proc("alcOpenDevice");
-    palcCloseDevice         = (LPALCCLOSEDEVICE)get_proc("alcCloseDevice");
-    palcGetError            = (LPALCGETERROR)get_proc("alcGetError");
-    palcIsExtensionPresent  = (LPALCISEXTENSIONPRESENT)get_proc("alcIsExtensionPresent");
-    palcGetProcAddress      = (LPALCGETPROCADDRESS)get_proc("alcGetProcAddress");
-    palcGetEnumValue        = (LPALCGETENUMVALUE)get_proc("alcGetEnumValue");
-    palcGetString           = (LPALCGETSTRING)get_proc("alcGetString");
-    palcGetIntegerv         = (LPALCGETINTEGERV)get_proc("alcGetIntegerv");
-    palcCaptureOpenDevice   = (LPALCCAPTUREOPENDEVICE)get_proc("alcCaptureOpenDevice");
-    palcCaptureCloseDevice  = (LPALCCAPTURECLOSEDEVICE)get_proc("alcCaptureCloseDevice");
-    palcCaptureStart        = (LPALCCAPTURESTART)get_proc("alcCaptureStart");
-    palcCaptureStop         = (LPALCCAPTURESTOP)get_proc("alcCaptureStop");
-    palcCaptureSamples      = (LPALCCAPTURESAMPLES)get_proc("alcCaptureSamples");
-}
-
-static void load_efx_procs(void) {
-
-    palGenEffects       = palGetProcAddress("alGenEffects");
-    palDeleteEffects    = palGetProcAddress("alDeleteEffects");
-    palIsEffect         = palGetProcAddress("alIsEffect");
-    palEffecti          = palGetProcAddress("alEffecti");
-    palEffectiv         = palGetProcAddress("alEffectiv");
-    palEffectf          = palGetProcAddress("alEffectf");
-    palEffectfv         = palGetProcAddress("alEffectfv");
-    palGetEffecti       = palGetProcAddress("alGetEffectiv");
-    palGetEffectiv      = palGetProcAddress("alGetEffectiv");
-    palGetEffectf       = palGetProcAddress("alGetEffectf");
-    palGetEffectfv      = palGetProcAddress("alGetEffectfv");
-
-    palGenFilters       = palGetProcAddress("alGenFilters");
-    palDeleteFilters    = palGetProcAddress("alDeleteFilters");
-    palIsFilter         = palGetProcAddress("alIsFilter");
-    palFilteri          = palGetProcAddress("alFilteri");
-    palFilteriv         = palGetProcAddress("alFilteriv");
-    palFilterf          = palGetProcAddress("alFilterf");
-    palFilterfv         = palGetProcAddress("alFilterfv");
-    palGetFilteri       = palGetProcAddress("GetFilteri");
-    palGetFilteriv      = palGetProcAddress("GetFilteriv");
-    palGetFilterf       = palGetProcAddress("GetFilterf");
-    palGetFilterfv      = palGetProcAddress("GetFilterfv");
-
-    palGenAuxiliaryEffectsSlots     = palGetProcAddress("alGenAuxiliaryEffectSlots");
-    palDeleteAuxiliaryEffectsSlots  = palGetProcAddress("alDeleteAuxiliaryEffectsSlots");
-    palIsAuxiliaryEffectSlot        = palGetProcAddress("alIsAuxiliaryEffectSlot");
-    palAuxiliaryEffectSloti         = palGetProcAddress("alAuxiliaryEffectSloti");
-    palAuxiliaryEffectSlotiv        = palGetProcAddress("alAuxiliaryEffectSlotiv");
-    palAuxiliaryEffectSlotf         = palGetProcAddress("alAuxiliaryEffectSlotf");
-    palAuxiliaryEffectSlotfv        = palGetProcAddress("alAuxiliaryEffectSlotfv");
-    palGetAuxiliaryEffectSloti      = palGetProcAddress("alGetAuxiliaryEffectSloti");
-    palGetAuxiliaryEffectSlotif     = palGetProcAddress("alGetAuxiliaryEffectSlotif");
-    palGetAuxiliaryEffectSlotf      = palGetProcAddress("alGetAuxiliaryEffectSlotf");
-    palGetAuxiliaryEffectSlotfv     = palGetProcAddress("alGetAuxiliaryEffectSlotfv");
-}
-
-//
-// Go code cannot call C function pointers directly
-// The following C functions call the corresponding function pointers and can be
-// called by Go code.
-//
-
-//
-// alc.h
-//
-ALCcontext* _alcCreateContext(ALCdevice *device, const ALCint* attrlist) {
-    return palcCreateContext(device, attrlist);
-}
-
-ALCboolean _alcMakeContextCurrent(ALCcontext *context) {
-    return palcMakeContextCurrent(context);
-}
-
-void _alcProcessContext(ALCcontext *context) {
-    palcProcessContext(context);
-}
-
-void _alcSuspendContext(ALCcontext *context) {
-    palcSuspendContext(context);
-}
-
-void _alcDestroyContext(ALCcontext *context) {
-    palcDestroyContext(context);
-}
-
-ALCcontext* _alcGetCurrentContext(void) {
-    return palcGetCurrentContext();
-}
-
-ALCdevice* _alcGetContextsDevice(ALCcontext *context) {
-    return palcGetContextsDevice(context);
-}
-
-ALCdevice* _alcOpenDevice(const ALCchar *devicename) {
-    return palcOpenDevice(devicename);
-}
-
-ALCboolean _alcCloseDevice(ALCdevice *device) {
-    return palcCloseDevice(device);
-}
-
-ALCenum _alcGetError(ALCdevice *device) {
-    return palcGetError(device);
-}
-
-ALCboolean _alcIsExtensionPresent(ALCdevice *device, const ALCchar *extname) {
-    return palcIsExtensionPresent(device, extname);
-}
-
-void* _alcGetProcAddress(ALCdevice *device, const ALCchar *funcname) {
-    return palcGetProcAddress(device, funcname);
-}
-
-ALCenum _alcGetEnumValue(ALCdevice *device, const ALCchar *enumname) {
-    return palcGetEnumValue(device, enumname);
-}
-
-const ALCchar* _alcGetString(ALCdevice *device, ALCenum param) {
-    return palcGetString(device, param);
-}
-
-void _alcGetIntegerv(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values) {
-    return palcGetIntegerv(device, param, size, values);
-}
-
-ALCdevice* _alcCaptureOpenDevice(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize) {
-    return palcCaptureOpenDevice(devicename, frequency, format, buffersize);
-}
-
-ALCboolean _alcCaptureCloseDevice(ALCdevice *device) {
-    return palcCaptureCloseDevice(device);
-}
-
-void _alcCaptureStart(ALCdevice *device) {
-    palcCaptureStart(device);
-}
-
-void _alcCaptureStop(ALCdevice *device) {
-    palcCaptureStop(device);
-}
-
-void _alcCaptureSamples(ALCdevice *device, ALCvoid *buffer, ALCsizei samples) {
-    palcCaptureSamples(device, buffer, samples);
-}
-
-//
-// al.h
-//
-void _alEnable(ALenum capability) {
-    palEnable(capability);
-}
-
-void _alDisable(ALenum capability) {
-    palDisable(capability);
-}
-
-ALboolean _alIsEnabled(ALenum capability) {
-    return palIsEnabled(capability);
-}
-
-const ALchar* _alGetString(ALenum param) {
-    return palGetString(param);
-}
-
-void _alGetBooleanv(ALenum param, ALboolean *values) {
-    palGetBooleanv(param, values);
-}
-
-void _alGetIntegerv(ALenum param, ALint *values) {
-    palGetIntegerv(param, values);
-}
-
-void _alGetFloatv(ALenum param, ALfloat *values) {
-    palGetFloatv(param, values);
-}
-
-void _alGetDoublev(ALenum param, ALdouble *values) {
-    palGetDoublev(param, values);
-}
-
-ALboolean _alGetBoolean(ALenum param) {
-    return palGetBoolean(param);
-}
-
-ALint _alGetInteger(ALenum param) {
-    return palGetInteger(param);
-}
-
-ALfloat _alGetFloat(ALenum param) {
-    return palGetFloat(param);
-}
-
-ALdouble _alGetDouble(ALenum param) {
-    return palGetDouble(param);
-}
-
-ALenum _alGetError(void) {
-    return palGetError();
-}
-
-ALboolean _alIsExtensionPresent(const ALchar *extname) {
-    return palIsExtensionPresent(extname);
-}
-
-void* _alGetProcAddress(const ALchar *fname) {
-    return palGetProcAddress(fname);
-}
-
-ALenum _alGetEnumValue(const ALchar *ename) {
-    return palGetEnumValue(ename);
-}
-
-void _alListenerf(ALenum param, ALfloat value) {
-    palListenerf(param, value);
-}
-
-void _alListener3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3) {
-    palListener3f(param, value1, value2, value3);
-}
-
-void _alListenerfv(ALenum param, const ALfloat *values) {
-    palListenerfv(param, values);
-}
-
-void _alListeneri(ALenum param, ALint value) {
-    palListeneri(param, value);
-}
-
-void _alListener3i(ALenum param, ALint value1, ALint value2, ALint value3) {
-    palListener3i(param, value1, value2, value3);
-}
-
-void _alListeneriv(ALenum param, const ALint *values) {
-    palListeneriv(param, values);
-}
-
-void  _alGetListenerf(ALenum param, ALfloat *value) {
-    palGetListenerf(param, value);
-}
-
-void  _alGetListener3f(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3) {
-    palGetListener3f(param, value1, value2, value3);
-}
-
-void _alGetListenerfv(ALenum param, ALfloat *values) {
-    palGetListenerfv(param, values);
-}
-
-void _alGetListeneri(ALenum param, ALint *value) {
-    palGetListeneri(param, value);
-}
-
-void _alGetListener3i(ALenum param, ALint *value1, ALint *value2, ALint *value3) {
-    palGetListener3i(param, value1, value2, value3);
-}
-
-void _alGetListeneriv(ALenum param, ALint *values) {
-    palGetListeneriv(param, values);
-}
-
-void _alGenSources(ALsizei n, ALuint *sources) {
-    palGenSources(n, sources);
-}
-
-void  _alDeleteSources(ALsizei n, const ALuint *sources) {
-    palDeleteSources(n, sources);
-}
-
-ALboolean _alIsSource(ALuint source) {
-    return palIsSource(source);
-}
-
-void _alSourcef(ALuint source, ALenum param, ALfloat value) {
-    palSourcef(source, param, value);
-}
-
-void _alSource3f(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3) {
-    palSource3f(source, param, value1, value2, value3);
-}
-
-void _alSourcefv(ALuint source, ALenum param, const ALfloat *values) {
-    palSourcefv(source, param, values);
-}
-
-void _alSourcei(ALuint source, ALenum param, ALint value) {
-    palSourcei(source, param, value);
-}
-
-void _alSource3i(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3) {
-    palSource3i(source, param, value1, value2, value3);
-}
-
-void _alSourceiv(ALuint source, ALenum param, const ALint *values) {
-    palSourceiv(source, param, values);
-}
-
-void _alGetSourcef(ALuint source, ALenum param, ALfloat *value) {
-    palGetSourcef(source, param, value);
-}
-
-void _alGetSource3f(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3) {
-    palGetSource3f(source, param, value1, value2, value3);
-}
-
-void _alGetSourcefv(ALuint source, ALenum param, ALfloat *values) {
-    palGetSourcefv(source, param, values);
-}
-
-void _alGetSourcei(ALuint source, ALenum param, ALint *value) {
-    palGetSourcei(source, param, value);
-}
-
-void _alGetSource3i(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3) {
-    palGetSource3i(source, param, value1, value2, value3);
-}
-
-void _alGetSourceiv(ALuint source, ALenum param, ALint *values) {
-    palGetSourceiv(source, param, values);
-}
-
-void _alSourcePlayv(ALsizei n, const ALuint *sources) {
-    palSourcePlayv(n, sources);
-}
-
-void _alSourceStopv(ALsizei n, const ALuint *sources) {
-    palSourceStopv(n, sources);
-}
-
-void _alSourceRewindv(ALsizei n, const ALuint *sources) {
-    palSourceRewindv(n, sources);
-}
-
-void _alSourcePausev(ALsizei n, const ALuint *sources) {
-    palSourcePausev(n, sources);
-}
-
-void _alSourcePlay(ALuint source) {
-    palSourcePlay(source);
-}
-
-void _alSourceStop(ALuint source) {
-    palSourceStop(source);
-}
-
-void _alSourceRewind(ALuint source) {
-    palSourceRewind(source);
-}
-
-void _alSourcePause(ALuint source) {
-    palSourcePause(source);
-}
-
-void _alSourceQueueBuffers(ALuint source, ALsizei nb, const ALuint *buffers) {
-    palSourceQueueBuffers(source, nb, buffers);
-}
-
-void _alSourceUnqueueBuffers(ALuint source, ALsizei nb, ALuint *buffers) {
-    palSourceUnqueueBuffers(source, nb, buffers);
-}
-
-void _alGenBuffers(ALsizei n, ALuint *buffers) {
-    palGenBuffers(n, buffers);
-}
-
-void _alDeleteBuffers(ALsizei n, const ALuint *buffers) {
-    palDeleteBuffers(n, buffers);
-}
-
-ALboolean _alIsBuffer(ALuint buffer) {
-    return palIsBuffer(buffer);
-}
-
-void _alBufferData(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq) {
-    palBufferData(buffer, format, data, size, freq);
-}
-
-void _alBufferf(ALuint buffer, ALenum param, ALfloat value) {
-    palBufferf(buffer, param, value);
-}
-
-void _alBuffer3f(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3) {
-    palBuffer3f(buffer, param, value1, value2, value3);
-}
-
-void _alBufferfv(ALuint buffer, ALenum param, const ALfloat *values) {
-    palBufferfv(buffer, param, values);
-}
-
-void _alBufferi(ALuint buffer, ALenum param, ALint value) {
-    palBufferi(buffer, param, value);
-}
-
-void _alBuffer3i(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3) {
-    palBuffer3i(buffer, param, value1, value2, value3);
-}
-
-void _alBufferiv(ALuint buffer, ALenum param, const ALint *values) {
-    palBufferiv(buffer, param, values);
-}
-
-void _alGetBufferf(ALuint buffer, ALenum param, ALfloat *value) {
-    palGetBufferf(buffer, param, value);
-}
-
-void _alGetBuffer3f(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3) {
-    palGetBuffer3f(buffer, param, value1, value2, value3);
-}
-
-void _alGetBufferfv(ALuint buffer, ALenum param, ALfloat *values) {
-    palGetBufferfv(buffer, param, values);
-}
-
-void _alGetBufferi(ALuint buffer, ALenum param, ALint *value) {
-    palGetBufferi(buffer, param, value);
-}
-
-void _alGetBuffer3i(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3) {
-    palGetBuffer3i(buffer, param, value1, value2, value3);
-}
-
-void _alGetBufferiv(ALuint buffer, ALenum param, ALint *values) {
-    palGetBufferiv(buffer, param, values);
-}
-

+ 0 - 251
audio/al/loader.h

@@ -1,251 +0,0 @@
-#ifndef LOADER_H
-#define LOADER_H
-
-#ifdef _WIN32
-#include <stdlib.h>
-#include <stdio.h>
-#include "AL/al.h"
-#include "AL/alc.h"
-#include "AL/efx.h"
-#elif defined(__APPLE__) || defined(__APPLE_CC__)
-#include <stdlib.h>
-#include "AL/al.h"
-#include "AL/alc.h"
-#include "AL/efx.h"
-#else
-#include <stdlib.h>
-#include <stdio.h>
-#include "AL/al.h"
-#include "AL/alc.h"
-#include "AL/efx.h"
-#endif
-
-// Function declarations
-int al_load();
-
-ALCcontext* _alcCreateContext(ALCdevice *device, const ALCint* attrlist);
-ALCboolean _alcMakeContextCurrent(ALCcontext *context);
-void _alcProcessContext(ALCcontext *context);
-void _alcSuspendContext(ALCcontext *context);
-void _alcDestroyContext(ALCcontext *context);
-ALCcontext* _alcGetCurrentContext(void);
-ALCdevice* _alcGetContextsDevice(ALCcontext *context);
-ALCdevice* _alcOpenDevice(const ALCchar *devicename);
-ALCboolean _alcCloseDevice(ALCdevice *device);
-ALCenum _alcGetError(ALCdevice *device);
-ALCboolean _alcIsExtensionPresent(ALCdevice *device, const ALCchar *extname);
-void* _alcGetProcAddress(ALCdevice *device, const ALCchar *funcname);
-ALCenum _alcGetEnumValue(ALCdevice *device, const ALCchar *enumname);
-const ALCchar* _alcGetString(ALCdevice *device, ALCenum param);
-void _alcGetIntegerv(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values);
-ALCdevice* _alcCaptureOpenDevice(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize);
-ALCboolean _alcCaptureCloseDevice(ALCdevice *device);
-void _alcCaptureStart(ALCdevice *device);
-void _alcCaptureStop(ALCdevice *device);
-void _alcCaptureSamples(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
-
-void _alEnable(ALenum capability);
-void _alDisable(ALenum capability);
-ALboolean _alIsEnabled(ALenum capability);
-const ALchar* _alGetString(ALenum param);
-void _alGetBooleanv(ALenum param, ALboolean *values);
-void _alGetIntegerv(ALenum param, ALint *values);
-void _alGetFloatv(ALenum param, ALfloat *values);
-void _alGetDoublev(ALenum param, ALdouble *values);
-ALboolean _alGetBoolean(ALenum param);
-ALint _alGetInteger(ALenum param);
-ALfloat _alGetFloat(ALenum param);
-ALdouble _alGetDouble(ALenum param);
-ALenum _alGetError(void);
-ALboolean _alIsExtensionPresent(const ALchar *extname);
-void* _alGetProcAddress(const ALchar *fname);
-ALenum _alGetEnumValue(const ALchar *ename);
-void _alListenerf(ALenum param, ALfloat value);
-void _alListener3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
-void _alListenerfv(ALenum param, const ALfloat *values);
-void _alListeneri(ALenum param, ALint value);
-void _alListener3i(ALenum param, ALint value1, ALint value2, ALint value3);
-void _alListeneriv(ALenum param, const ALint *values);
-void  _alGetListenerf(ALenum param, ALfloat *value);
-void  _alGetListener3f(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
-void _alGetListenerfv(ALenum param, ALfloat *values);
-void _alGetListeneri(ALenum param, ALint *value);
-void _alGetListener3i(ALenum param, ALint *value1, ALint *value2, ALint *value3);
-void _alGetListeneriv(ALenum param, ALint *values);
-void _alGenSources(ALsizei n, ALuint *sources);
-void  _alDeleteSources(ALsizei n, const ALuint *sources);
-ALboolean _alIsSource(ALuint source);
-void _alSourcef(ALuint source, ALenum param, ALfloat value);
-void _alSource3f(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
-void _alSourcefv(ALuint source, ALenum param, const ALfloat *values);
-void _alSourcei(ALuint source, ALenum param, ALint value);
-void _alSource3i(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3);
-void _alSourceiv(ALuint source, ALenum param, const ALint *values);
-void _alGetSourcef(ALuint source, ALenum param, ALfloat *value);
-void _alGetSource3f(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
-void _alGetSourcefv(ALuint source, ALenum param, ALfloat *values);
-void _alGetSourcei(ALuint source, ALenum param, ALint *value);
-void _alGetSource3i(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3);
-void _alGetSourceiv(ALuint source, ALenum param, ALint *values);
-void _alSourcePlayv(ALsizei n, const ALuint *sources);
-void _alSourceStopv(ALsizei n, const ALuint *sources);
-void _alSourceRewindv(ALsizei n, const ALuint *sources);
-void _alSourcePausev(ALsizei n, const ALuint *sources);
-void _alSourcePlay(ALuint source);
-void _alSourceStop(ALuint source);
-void _alSourceRewind(ALuint source);
-void _alSourcePause(ALuint source);
-void _alSourceQueueBuffers(ALuint source, ALsizei nb, const ALuint *buffers);
-void _alSourceUnqueueBuffers(ALuint source, ALsizei nb, ALuint *buffers);
-void _alGenBuffers(ALsizei n, ALuint *buffers);
-void _alDeleteBuffers(ALsizei n, const ALuint *buffers);
-ALboolean _alIsBuffer(ALuint buffer);
-void _alBufferData(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);
-void _alBufferf(ALuint buffer, ALenum param, ALfloat value);
-void _alBuffer3f(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
-void _alBufferfv(ALuint buffer, ALenum param, const ALfloat *values);
-void _alBufferi(ALuint buffer, ALenum param, ALint value);
-void _alBuffer3i(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3);
-void _alBufferiv(ALuint buffer, ALenum param, const ALint *values);
-void _alGetBufferf(ALuint buffer, ALenum param, ALfloat *value);
-void _alGetBuffer3f(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
-void _alGetBufferfv(ALuint buffer, ALenum param, ALfloat *values);
-void _alGetBufferi(ALuint buffer, ALenum param, ALint *value);
-void _alGetBuffer3i(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3);
-void _alGetBufferiv(ALuint buffer, ALenum param, ALint *values);
-
-// Function pointers declarations
-extern LPALENABLE                  palEnable;
-extern LPALDISABLE                 palDisable;
-extern LPALISENABLED               palIsEnabled;
-extern LPALGETSTRING               palGetString;
-extern LPALGETBOOLEANV             palGetBooleanv;
-extern LPALGETINTEGERV             palGetIntegerv;
-extern LPALGETFLOATV               palGetFloatv;
-extern LPALGETDOUBLEV              palGetDoublev;
-extern LPALGETBOOLEAN              palGetBoolean;
-extern LPALGETINTEGER              palGetInteger;
-extern LPALGETFLOAT                palGetFloat;
-extern LPALGETDOUBLE               palGetDouble;
-extern LPALGETERROR                palGetError;
-extern LPALISEXTENSIONPRESENT      palIsExtensionPresent;
-extern LPALGETPROCADDRESS          palGetProcAddress;
-extern LPALGETENUMVALUE            palGetEnumValue;
-extern LPALLISTENERF               palListenerf;
-extern LPALLISTENER3F              palListener3f;
-extern LPALLISTENERFV              palListenerfv;
-extern LPALLISTENERI               palListeneri;
-extern LPALLISTENER3I              palListener3i;
-extern LPALLISTENERIV              palListeneriv;
-extern LPALGETLISTENERF            palGetListenerf;
-extern LPALGETLISTENER3F           palGetListener3f;
-extern LPALGETLISTENERFV           palGetListenerfv;
-extern LPALGETLISTENERI            palGetListeneri;
-extern LPALGETLISTENER3I           palGetListener3i;
-extern LPALGETLISTENERIV           palGetListeneriv;
-extern LPALGENSOURCES              palGenSources;
-extern LPALDELETESOURCES           palDeleteSources;
-extern LPALISSOURCE                palIsSource;
-extern LPALSOURCEF                 palSourcef;
-extern LPALSOURCE3F                palSource3f;
-extern LPALSOURCEFV                palSourcefv;
-extern LPALSOURCEI                 palSourcei;
-extern LPALSOURCE3I                palSource3i;
-extern LPALSOURCEIV                palSourceiv;
-extern LPALGETSOURCEF              palGetSourcef;
-extern LPALGETSOURCE3F             palGetSource3f;
-extern LPALGETSOURCEFV             palGetSourcefv;
-extern LPALGETSOURCEI              palGetSourcei;
-extern LPALGETSOURCE3I             palGetSource3i;
-extern LPALGETSOURCEIV             palGetSourceiv;
-extern LPALSOURCEPLAYV             palSourcePlayv;
-extern LPALSOURCESTOPV             palSourceStopv;
-extern LPALSOURCEREWINDV           palSourceRewindv;
-extern LPALSOURCEPAUSEV            palSourcePausev;
-extern LPALSOURCEPLAY              palSourcePlay;
-extern LPALSOURCESTOP              palSourceStop;
-extern LPALSOURCEREWIND            palSourceRewind;
-extern LPALSOURCEPAUSE             palSourcePause;
-extern LPALSOURCEQUEUEBUFFERS      palSourceQueueBuffers;
-extern LPALSOURCEUNQUEUEBUFFERS    palSourceUnqueueBuffers;
-extern LPALGENBUFFERS              palGenBuffers;
-extern LPALDELETEBUFFERS           palDeleteBuffers;
-extern LPALISBUFFER                palIsBuffer;
-extern LPALBUFFERDATA              palBufferData;
-extern LPALBUFFERF                 palBufferf;
-extern LPALBUFFER3F                palBuffer3f;
-extern LPALBUFFERFV                palBufferfv;
-extern LPALBUFFERI                 palBufferi;
-extern LPALBUFFER3I                palBuffer3i;
-extern LPALBUFFERIV                palBufferiv;
-extern LPALGETBUFFERF              palGetBufferf;
-extern LPALGETBUFFER3F             palGetBuffer3f;
-extern LPALGETBUFFERFV             palGetBufferfv;
-extern LPALGETBUFFERI              palGetBufferi;
-extern LPALGETBUFFER3I             palGetBuffer3i;
-extern LPALGETBUFFERIV             palGetBufferiv;
-extern LPALDOPPLERFACTOR           palDopplerFactor;
-extern LPALDOPPLERVELOCITY         palDopplerVelocity;
-extern LPALSPEEDOFSOUND            palSpeedOfSound;
-extern LPALDISTANCEMODEL           palDistanceModel;
-
-extern LPALCCREATECONTEXT          palcCreateContext;
-extern LPALCMAKECONTEXTCURRENT     palcMakeContextCurrent;     
-extern LPALCPROCESSCONTEXT         palcProcessContext;
-extern LPALCSUSPENDCONTEXT         palcSuspendContext;
-extern LPALCDESTROYCONTEXT         palcDestroyContext;
-extern LPALCGETCURRENTCONTEXT      palcGetCurrentContext;
-extern LPALCGETCONTEXTSDEVICE      palcGetContextsDevice;
-extern LPALCOPENDEVICE             palcOpenDevice;
-extern LPALCCLOSEDEVICE            palcCloseDevice;
-extern LPALCGETERROR               palcGetError;
-extern LPALCISEXTENSIONPRESENT     palcIsExtensionPresent;
-extern LPALCGETPROCADDRESS         palcGetProcAddress;
-extern LPALCGETENUMVALUE           palcGetEnumValue;
-extern LPALCGETSTRING              palcGetString;
-extern LPALCGETINTEGERV            palcGetIntegerv;
-extern LPALCCAPTUREOPENDEVICE      palcCaptureOpenDevice;
-extern LPALCCAPTURECLOSEDEVICE     palcCaptureCloseDevice;
-extern LPALCCAPTURESTART           palcCaptureStart;
-extern LPALCCAPTURESTOP            palcCaptureStop;
-extern LPALCCAPTURESAMPLES         palcCaptureSamples;
-
-// EFX extension
-extern LPALGENEFFECTS              palGenEffects;
-extern LPALDELETEEFFECTS           palDeleteEffects;
-extern LPALISEFFECT                palIsEffect;
-extern LPALEFFECTI                 palEffecti;
-extern LPALEFFECTIV                palEffectiv;
-extern LPALEFFECTF                 palEffectf;
-extern LPALEFFECTFV                palEffectfv;
-extern LPALGETEFFECTI              palGetEffecti;
-extern LPALGETEFFECTIV             palGetEffectiv;
-extern LPALGETEFFECTF              palGetEffectf;
-extern LPALGETEFFECTFV             palGetEffectfv;
-
-extern LPALGENFILTERS              palGenFilters;
-extern LPALDELETEFILTERS           palDeleteFilters;
-extern LPALISFILTER                palIsFilter;
-extern LPALFILTERI                 palFilteri;
-extern LPALFILTERIV                palFilteriv;
-extern LPALFILTERF                 palFilterf;
-extern LPALFILTERFV                palFilterfv;
-extern LPALGETFILTERI              palGetFilteri;
-extern LPALGETFILTERIV             palGetFilteriv;
-extern LPALGETFILTERF              palGetFilterf;
-extern LPALGETFILTERFV             palGetFilterfv;
-
-extern LPALGENAUXILIARYEFFECTSLOTS      palGenAuxiliaryEffectSlos;
-extern LPALDELETEAUXILIARYEFFECTSLOTS   palDeleteAuxiliaryEffectSlots;
-extern LPALISAUXILIARYEFFECTSLOT        palIsAuxiliaryEffectSlot;
-extern LPALAUXILIARYEFFECTSLOTI         palAuxiliaryEffectSloti;
-extern LPALAUXILIARYEFFECTSLOTIV        palAuxiliaryEffectSlotiv;
-extern LPALAUXILIARYEFFECTSLOTF         palAuxiliaryEffectSlotf;
-extern LPALAUXILIARYEFFECTSLOTFV        palAuxiliaryEffectSlotfv;
-extern LPALGETAUXILIARYEFFECTSLOTI      palGetAuxiliaryEffectSloti;
-extern LPALGETAUXILIARYEFFECTSLOTIV     palGetAuxiliaryEffectSlotif;
-extern LPALGETAUXILIARYEFFECTSLOTF      palGetAuxiliaryEffectSlotf;
-extern LPALGETAUXILIARYEFFECTSLOTFV     palGetAuxiliaryEffectSlotfv;
-
-#endif
-

+ 9 - 14
audio/audio_file.go

@@ -13,6 +13,7 @@ import (
 	"unsafe"
 )
 
+// AudioInfo represents the information associated to an audio file
 type AudioInfo struct {
 	Format     int     // OpenAl Format
 	Channels   int     // Number of channels
@@ -23,6 +24,7 @@ type AudioInfo struct {
 	TotalTime  float64 // Total time in seconds
 }
 
+// AudioFile represents an audio file
 type AudioFile struct {
 	wavef   *os.File  // Pointer to wave file opened filed (nil for vorbis)
 	vorbisf *ov.File  // Pointer to vorbis file structure (nil for wave)
@@ -131,26 +133,24 @@ func (af *AudioFile) Seek(pos uint) error {
 	return ov.PcmSeek(af.vorbisf, int64(pos))
 }
 
-// AudioInfo returns the audio info structure for this audio file
+// Info returns the audio info structure for this audio file
 func (af *AudioFile) Info() AudioInfo {
 
 	return af.info
 }
 
-// CurrenTime returns the current time in seconds for the current
-// file read position
+// CurrentTime returns the current time in seconds for the current file read position
 func (af *AudioFile) CurrentTime() float64 {
 
 	if af.vorbisf != nil {
 		pos, _ := ov.TimeTell(af.vorbisf)
 		return pos
-	} else {
-		pos, err := af.wavef.Seek(0, 1)
-		if err != nil {
-			return 0
-		}
-		return float64(pos) / float64(af.info.BytesSec)
 	}
+	pos, err := af.wavef.Seek(0, 1)
+	if err != nil {
+		return 0
+	}
+	return float64(pos) / float64(af.info.BytesSec)
 }
 
 // Looping returns the current looping state of this audio file
@@ -247,11 +247,6 @@ func (af *AudioFile) openWave(filename string) error {
 // and if succesfull, sets up the player for playing this file
 func (af *AudioFile) openVorbis(filename string) error {
 
-	// Checks for Ogg Vorbis support
-	if !ov.IsLoaded() {
-		return fmt.Errorf("Unsupported file type")
-	}
-
 	// Try to open file as ogg vorbis
 	vf, err := ov.Fopen(filename)
 	if err != nil {

+ 2 - 4
audio/doc.go

@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-/*
- Package audio contains sub packages for binding to external audio libraries and
- implements a spatial audio player.
-*/
+// Package audio contains sub packages for binding to external audio libraries and
+// implements a spatial audio player.
 package audio

+ 0 - 585
audio/include/ogg/Makefile

@@ -1,585 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# include/ogg/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/libogg
-pkgincludedir = $(includedir)/libogg
-pkglibdir = $(libdir)/libogg
-pkglibexecdir = $(libexecdir)/libogg
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-unknown-linux-gnu
-host_triplet = x86_64-unknown-linux-gnu
-subdir = include/ogg
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(srcdir)/config_types.h.in $(ogginclude_HEADERS)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = config_types.h
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(oggincludedir)" \
-	"$(DESTDIR)$(oggincludedir)"
-HEADERS = $(nodist_ogginclude_HEADERS) $(ogginclude_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /home/leonel/Downloads/libogg-1.3.2/missing aclocal-1.13
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = ar
-AUTOCONF = ${SHELL} /home/leonel/Downloads/libogg-1.3.2/missing autoconf
-AUTOHEADER = ${SHELL} /home/leonel/Downloads/libogg-1.3.2/missing autoheader
-AUTOMAKE = ${SHELL} /home/leonel/Downloads/libogg-1.3.2/missing automake-1.13
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CFLAGS = -O20 -Wall -ffast-math -fsigned-char -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEBUG = -g -Wall -fsigned-char -g -O2
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-EGREP = /bin/grep -E
-EXEEXT = 
-FGREP = /bin/grep -F
-GREP = /bin/grep
-INCLUDE_INTTYPES_H = 1
-INCLUDE_STDINT_H = 1
-INCLUDE_SYS_TYPES_H = 1
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-LD = /usr/bin/ld -m elf_x86_64
-LDFLAGS = 
-LIBOBJS = 
-LIBS = 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = ./ltmain.sh
-LIB_AGE = 8
-LIB_CURRENT = 8
-LIB_REVISION = 2
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-MAINT = 
-MAKEINFO = ${SHELL} /home/leonel/Downloads/libogg-1.3.2/missing makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /bin/mkdir -p
-NM = /usr/bin/nm -B
-NMEDIT = 
-OBJDUMP = objdump
-OBJEXT = o
-OPT = 
-OTOOL = 
-OTOOL64 = 
-PACKAGE = libogg
-PACKAGE_BUGREPORT = ogg-dev@xiph.org
-PACKAGE_NAME = libogg
-PACKAGE_STRING = libogg 1.3.2
-PACKAGE_TARNAME = libogg
-PACKAGE_URL = 
-PACKAGE_VERSION = 1.3.2
-PATH_SEPARATOR = :
-PROFILE = -Wall -W -pg -g -O20 -ffast-math -fsigned-char -g -O2
-RANLIB = ranlib
-SED = /bin/sed
-SET_MAKE = 
-SHELL = /bin/bash
-SIZE16 = int16_t
-SIZE32 = int32_t
-SIZE64 = int64_t
-STRIP = strip
-USIZE16 = uint16_t
-USIZE32 = uint32_t
-VERSION = 1.3.2
-abs_builddir = /home/leonel/Downloads/libogg-1.3.2/include/ogg
-abs_srcdir = /home/leonel/Downloads/libogg-1.3.2/include/ogg
-abs_top_builddir = /home/leonel/Downloads/libogg-1.3.2
-abs_top_srcdir = /home/leonel/Downloads/libogg-1.3.2
-ac_ct_AR = ar
-ac_ct_CC = gcc
-ac_ct_DUMPBIN = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = $${TAR-tar} chof - "$$tardir"
-am__untar = $${TAR-tar} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-unknown-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = unknown
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-unknown-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = unknown
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = ${SHELL} /home/leonel/Downloads/libogg-1.3.2/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../../
-top_builddir = ../..
-top_srcdir = ../..
-oggincludedir = $(includedir)/ogg
-ogginclude_HEADERS = ogg.h os_types.h
-nodist_ogginclude_HEADERS = config_types.h
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/ogg/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu include/ogg/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-config_types.h: $(top_builddir)/config.status $(srcdir)/config_types.h.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-nodist_oggincludeHEADERS: $(nodist_ogginclude_HEADERS)
-	@$(NORMAL_INSTALL)
-	@list='$(nodist_ogginclude_HEADERS)'; test -n "$(oggincludedir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(oggincludedir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(oggincludedir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(oggincludedir)'"; \
-	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(oggincludedir)" || exit $$?; \
-	done
-
-uninstall-nodist_oggincludeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(nodist_ogginclude_HEADERS)'; test -n "$(oggincludedir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(oggincludedir)'; $(am__uninstall_files_from_dir)
-install-oggincludeHEADERS: $(ogginclude_HEADERS)
-	@$(NORMAL_INSTALL)
-	@list='$(ogginclude_HEADERS)'; test -n "$(oggincludedir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(oggincludedir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(oggincludedir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(oggincludedir)'"; \
-	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(oggincludedir)" || exit $$?; \
-	done
-
-uninstall-oggincludeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(ogginclude_HEADERS)'; test -n "$(oggincludedir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(oggincludedir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(oggincludedir)" "$(DESTDIR)$(oggincludedir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-nodist_oggincludeHEADERS \
-	install-oggincludeHEADERS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-nodist_oggincludeHEADERS \
-	uninstall-oggincludeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool cscopelist-am ctags ctags-am distclean \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man \
-	install-nodist_oggincludeHEADERS install-oggincludeHEADERS \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am \
-	uninstall-nodist_oggincludeHEADERS uninstall-oggincludeHEADERS
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:

+ 0 - 25
audio/include/ogg/config_types.h

@@ -1,25 +0,0 @@
-#ifndef __CONFIG_TYPES_H__
-#define __CONFIG_TYPES_H__
-
-/* these are filled in by configure */
-#define INCLUDE_INTTYPES_H 1
-#define INCLUDE_STDINT_H 1
-#define INCLUDE_SYS_TYPES_H 1
-
-#if INCLUDE_INTTYPES_H
-#  include <inttypes.h>
-#endif
-#if INCLUDE_STDINT_H
-#  include <stdint.h>
-#endif
-#if INCLUDE_SYS_TYPES_H
-#  include <sys/types.h>
-#endif
-
-typedef int16_t ogg_int16_t;
-typedef uint16_t ogg_uint16_t;
-typedef int32_t ogg_int32_t;
-typedef uint32_t ogg_uint32_t;
-typedef int64_t ogg_int64_t;
-
-#endif

+ 8 - 1
audio/listener.go

@@ -11,11 +11,12 @@ import (
 	"github.com/g3n/engine/math32"
 )
 
-// Listener embeds a core.Node and
+// Listener is an audio listener positioned in space
 type Listener struct {
 	core.Node
 }
 
+// NewListener returns a pointer to a new Listener object.
 func NewListener() *Listener {
 
 	l := new(Listener)
@@ -23,32 +24,38 @@ func NewListener() *Listener {
 	return l
 }
 
+// SetVelocity sets the velocity of the listener with x, y, z components
 func (l *Listener) SetVelocity(vx, vy, vz float32) {
 
 	al.Listener3f(al.Velocity, vx, vy, vz)
 }
 
+// SetVelocityVec sets the velocity of the listener with a vector
 func (l *Listener) SetVelocityVec(v *math32.Vector3) {
 
 	al.Listener3f(al.Velocity, v.X, v.Y, v.Z)
 }
 
+// Velocity returns the velocity of the listener as x, y, z components
 func (l *Listener) Velocity() (float32, float32, float32) {
 
 	return al.GetListener3f(al.Velocity)
 }
 
+// VelocityVec returns the velocity of the listener as a vector
 func (l *Listener) VelocityVec() math32.Vector3 {
 
 	vx, vy, vz := al.GetListener3f(al.Velocity)
 	return math32.Vector3{vx, vy, vz}
 }
 
+// SetGain sets the gain of the listener
 func (l *Listener) SetGain(gain float32) {
 
 	al.Listenerf(al.Gain, gain)
 }
 
+// Gain returns the gain of the listener
 func (l *Listener) Gain() float32 {
 
 	return al.GetListenerf(al.Gain)

+ 0 - 9
audio/ov/build.go

@@ -1,9 +0,0 @@
-package ov
-
-// #cgo darwin   CFLAGS:  -DGO_DARWIN
-// #cgo linux    CFLAGS:  -DGO_LINUX   -I../include
-// #cgo windows  CFLAGS:  -DGO_WINDOWS -I../include
-// #cgo darwin   LDFLAGS:
-// #cgo linux    LDFLAGS: -ldl
-// #cgo windows  LDFLAGS:
-import "C"

+ 0 - 348
audio/ov/loader.c

@@ -1,348 +0,0 @@
-//
-// Dynamically loads the vorbis file shared library / dll 
-//
-#include "loader.h"
-
-
-typedef void (*alProc)(void);
-
-//
-// Windows --------------------------------------------------------------------
-//
-#ifdef _WIN32
-#define WIN32_LEAN_AND_MEAN 1
-#include <windows.h>
-
-static HMODULE libvbf;
-
-static int open_libvbf(void) {
-
-	libvbf = LoadLibraryA("libvorbisfile.dll");
-    if (libvbf == NULL) {
-        return -1;
-    }
-    return 0;
-}
-
-static void close_libvbf(void) {
-
-	FreeLibrary(libvbf);
-}
-
-static alProc get_proc(const char *proc) {
-
-    return (alProc) GetProcAddress(libvbf, proc);
-}
-//
-// Mac --------------------------------------------------------------------
-//
-#elif defined(__APPLE__)
-#include <dlfcn.h>
-
-static void *libvbf;
-
-static int open_libvbf(void) {
-
-    libvbf = dlopen("/System/Library/Frameworks/libvorbisfile.framework/libvorbisfile", RTLD_LAZY | RTLD_GLOBAL);
-    if (!libvbf) {
-        return -1;
-    }
-    return 0;
-}
-
-static void close_libvbf(void) {
-
-    dlclose(libvbf);
-}
-
-static void* get_proc(const char *proc) {
-
-    void* res;
-    *(void **)(&res) = dlsym(libvbf, proc);
-    return res;
-}
-//
-// Linux --------------------------------------------------------------------
-//
-#else
-#include <dlfcn.h>
-
-static void *libvbf;
-
-static char* lib_names[] = {
-    "libvorbisfile.so.3",
-    "libvorbisfile.so",
-    NULL
-};
-
-static int open_libvbf(void) {
-
-    int i = 0;
-    while (lib_names[i] != NULL) {
-	    libvbf = dlopen(lib_names[i], RTLD_LAZY | RTLD_GLOBAL);
-        if (libvbf != NULL) {
-            dlerror(); // clear errors
-            return 0;
-        }
-        i++;
-    }
-    return -1;
-}
-
-static void close_libvbf(void) {
-
-	dlclose(libvbf);
-}
-
-static alProc get_proc(const char *proc) {
-
-    return dlsym(libvbf, proc);
-}
-#endif
-
-// Prototypes of local functions
-static void load_procs(void);
-
-
-// Pointers to functions loaded from shared library
-LPOVCLEAR           p_ov_clear;
-LPOVFOPEN           p_ov_fopen;
-LPOVOPEN            p_ov_open;
-LPOVOPENCALLBACKS   p_ov_open_callbacks;
-LPOVTEST            p_ov_test;
-LPOVTESTCALLBACKS   p_ov_test_callbacks;
-LPOVTESTOPEN        p_ov_test_open;
-LPOVBITRATE         p_ov_bitrate;
-LPOVBITRATEINSTANT  p_ov_bitrate_instant;
-LPOVSTREAMS         p_ov_streams;
-LPOVSEEKABLE        p_ov_seekable;
-LPOVSERIALNUMBER    p_ov_serialnumber;
-LPOVRAWTOTAL        p_ov_raw_total;
-LPOVPCMTOTAL        p_ov_pcm_total;
-LPOVTIMETOTAL       p_ov_time_total;
-LPOVRAWSEEK         p_ov_raw_seek;
-LPOVPCMSEEK         p_ov_pcm_seek;
-LPOVPCMSEEKPAGE     p_ov_pcm_seek_page;
-LPOVTIMESEEK        p_ov_time_seek;
-LPOVTIMESEEKPAGE    p_ov_time_seek_page;
-LPOVRAWSEEKLAP      p_ov_raw_seek_lap;
-LPOVPCMSEEKLAP      p_ov_pcm_seek_lap;
-LPOVPCMSEEKPAGELAP  p_ov_pcm_seek_page_lap;
-LPOVTIMESEEKLAP     p_ov_time_seek_lap;
-LPOVTIMESEEKPAGELAP p_ov_time_seek_page_lap;
-LPOVRAWTELL         p_ov_raw_tell;
-LPOVPCMTELL         p_ov_pcm_tell;
-LPOVTIMETELL        p_ov_time_tell;
-LPOVINFO            p_ov_info;
-LPOVCOMMENT         p_ov_comment;
-LPOVREADFLOAT       p_ov_read_float;
-LPOVREADFILTER      p_ov_read_filter;
-LPOVREAD            p_ov_read;
-LPOVCROSSLAP        p_ov_crosslap;
-LPOVHALFRATE        p_ov_halfrate;
-LPOVHALFRATEP       p_ov_halfrate_p;
-
-
-// Load functions from shared library
-int vorbisfile_load() {
-
-    int res = open_libvbf();
-    if (res) {
-        return res;
-    }
-    load_procs();
-    return 0;
-}
-
-// Loads function addresses and store in the pointers
-static void load_procs(void) {
-    p_ov_clear              = (LPOVCLEAR)get_proc("ov_clear");
-    p_ov_fopen              = (LPOVFOPEN)get_proc("ov_fopen");
-    p_ov_open               = (LPOVOPEN)get_proc("ov_open");
-    p_ov_open_callbacks     = (LPOVOPENCALLBACKS)get_proc("ov_open_callbacks");
-    p_ov_test               = (LPOVTEST)get_proc("ov_test");
-    p_ov_test_callbacks     = (LPOVTESTCALLBACKS)get_proc("ov_test_callbacks");
-    p_ov_test_open          = (LPOVTESTOPEN)get_proc("ov_test_open");
-    p_ov_bitrate            = (LPOVBITRATE)get_proc("ov_bitrate");
-    p_ov_bitrate_instant    = (LPOVBITRATEINSTANT)get_proc("ov_bitrate_instant");
-    p_ov_streams            = (LPOVSTREAMS)get_proc("ov_streams");
-    p_ov_seekable           = (LPOVSEEKABLE)get_proc("ov_seekable");
-    p_ov_serialnumber       = (LPOVSERIALNUMBER)get_proc("ov_serialnumber");
-    p_ov_raw_total          = (LPOVRAWTOTAL)get_proc("ov_raw_total");
-    p_ov_pcm_total          = (LPOVPCMTOTAL)get_proc("ov_pcm_total");
-    p_ov_time_total         = (LPOVTIMETOTAL)get_proc("ov_time_total");
-    p_ov_raw_seek           = (LPOVRAWSEEK)get_proc("ov_raw_seek");
-    p_ov_pcm_seek           = (LPOVPCMSEEK)get_proc("ov_pcm_seek");
-    p_ov_pcm_seek_page      = (LPOVPCMSEEKPAGE)get_proc("ov_pcm_seek_page");
-    p_ov_time_seek          = (LPOVTIMESEEK)get_proc("ov_time_seek");
-    p_ov_time_seek_page     = (LPOVTIMESEEKPAGE)get_proc("ov_time_seek_page");
-    p_ov_raw_seek_lap       = (LPOVRAWSEEKLAP)get_proc("ov_raw_seek_lap");
-    p_ov_pcm_seek_lap       = (LPOVPCMSEEKLAP)get_proc("ov_pcm_seek_lap");
-    p_ov_pcm_seek_page_lap  = (LPOVPCMSEEKPAGELAP)get_proc("ov_pcm_seek_page_lap");
-    p_ov_time_seek_lap      = (LPOVTIMESEEKLAP)get_proc("ov_time_seek_lap");
-    p_ov_time_seek_page_lap = (LPOVTIMESEEKPAGELAP)get_proc("ov_time_seek_page_lap");
-    p_ov_raw_tell           = (LPOVRAWTELL)get_proc("ov_raw_tell");
-    p_ov_pcm_tell           = (LPOVPCMTELL)get_proc("ov_pcm_tell");
-    p_ov_time_tell          = (LPOVTIMETELL)get_proc("ov_time_tell");
-    p_ov_info               = (LPOVINFO)get_proc("ov_info");
-    p_ov_comment            = (LPOVCOMMENT)get_proc("ov_comment");
-    p_ov_read_float         = (LPOVREADFLOAT)get_proc("ov_read_float");
-    p_ov_read_filter        = (LPOVREADFILTER)get_proc("ov_read_filter");
-    p_ov_read               = (LPOVREAD)get_proc("ov_read");
-    p_ov_crosslap           = (LPOVCROSSLAP)get_proc("ov_crosslap");
-    p_ov_halfrate           = (LPOVHALFRATE)get_proc("ov_halfrate");
-    p_ov_halfrate_p         = (LPOVHALFRATEP)get_proc("ov_halfrate_p");
-}
-
-//
-// Go code cannot directly call the vorbis file function pointers loaded dynamically
-// The following C functions call the corresponding function pointers and can be
-// called by Go code.
-//
-
-int ov_clear(OggVorbis_File *vf) {
-    return p_ov_clear(vf);
-}
-
-int ov_fopen(const char *path,OggVorbis_File *vf) {
-    return p_ov_fopen(path, vf);
-}
-
-int ov_open(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes) {
-    return ov_open(f, vf, initial, ibytes);
-}
-
-int ov_open_callbacks(void *datasource, OggVorbis_File *vf, const char *initial, long ibytes, ov_callbacks callbacks) {
-    return p_ov_open_callbacks(datasource, vf, initial, ibytes, callbacks);
-}
-
-int ov_test(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes) {
-    return p_ov_test(f, vf, initial, ibytes);
-}
-
-int ov_test_callbacks(void *datasource, OggVorbis_File *vf, const char *initial, long ibytes, ov_callbacks callbacks) {
-    return p_ov_test_callbacks(datasource, vf, initial, ibytes, callbacks);
-}
-
-int ov_test_open(OggVorbis_File *vf) {
-    return p_ov_test_open(vf);
-}
-
-long ov_bitrate(OggVorbis_File *vf,int i) {
-    return p_ov_bitrate(vf, i);
-}
-
-long ov_bitrate_instant(OggVorbis_File *vf) {
-    return p_ov_bitrate_instant(vf);
-}
-
-long ov_streams(OggVorbis_File *vf) {
-    return p_ov_streams(vf);
-}
-
-long ov_seekable(OggVorbis_File *vf) {
-    return p_ov_seekable(vf);
-}
-
-long ov_serialnumber(OggVorbis_File *vf,int i) {
-    return p_ov_serialnumber(vf, i);
-}
-
-ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i) {
-    return p_ov_raw_total(vf, i);
-}
-
-ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i) {
-    return p_ov_pcm_total(vf, i);
-}
-
-double ov_time_total(OggVorbis_File *vf,int i) {
-    return p_ov_time_total(vf, i);
-}
-
-int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos) {
-    return p_ov_raw_seek(vf, pos);
-}
-
-int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos) {
-    return p_ov_pcm_seek(vf, pos);
-}
-
-int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos) {
-    return p_ov_pcm_seek_page(vf, pos);
-}
-
-int ov_time_seek(OggVorbis_File *vf,double pos) {
-    return p_ov_time_seek(vf, pos);
-}
-
-int ov_time_seek_page(OggVorbis_File *vf,double pos) {
-    return p_ov_time_seek(vf, pos);
-}
-
-int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos) {
-    return p_ov_raw_seek_lap(vf, pos);
-}
-
-int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos) {
-    return p_ov_pcm_seek(vf, pos);
-}
-
-int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos) {
-    return p_ov_pcm_seek_page_lap(vf, pos);
-}
-
-int ov_time_seek_lap(OggVorbis_File *vf,double pos) {
-    return p_ov_time_seek_lap(vf, pos);
-}
-
-int ov_time_seek_page_lap(OggVorbis_File *vf,double pos) {
-    return p_ov_time_seek_page_lap(vf, pos);
-}
-
-ogg_int64_t ov_raw_tell(OggVorbis_File *vf) {
-    return p_ov_raw_tell(vf);
-}
-
-ogg_int64_t ov_pcm_tell(OggVorbis_File *vf) {
-    return p_ov_pcm_tell(vf);
-}
-
-double ov_time_tell(OggVorbis_File *vf) {
-    return p_ov_time_tell(vf);
-}
-
-vorbis_info *ov_info(OggVorbis_File *vf,int link) {
-    return p_ov_info(vf, link);
-}
-
-vorbis_comment *ov_comment(OggVorbis_File *vf,int link) {
-    return p_ov_comment(vf, link);
-}
-
-long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int samples, int *bitstream) {
-    return p_ov_read_float(vf, pcm_channels, samples, bitstream);
-}
-
-long ov_read_filter(OggVorbis_File *vf,char *buffer,int length, int bigendianp,int word,int sgned,int *bitstream,
-                          void (*filter)(float **pcm,long channels,long samples,void *filter_param),void *filter_param) {
-    return p_ov_read_filter(vf, buffer, length, bigendianp, word, sgned, bitstream, filter, filter_param);
-}
-
-long ov_read(OggVorbis_File *vf,char *buffer,int length, int bigendianp,int word,int sgned,int *bitstream) {
-    return p_ov_read(vf, buffer, length, bigendianp, word, sgned, bitstream);
-}
-
-int ov_crosslap(OggVorbis_File *vf1,OggVorbis_File *vf2) {
-    return p_ov_crosslap(vf1, vf2);
-}
-
-int ov_halfrate(OggVorbis_File *vf,int flag) {
-    return p_ov_halfrate(vf, flag);
-}
-
-int ov_halfrate_p(OggVorbis_File *vf) {
-    return p_ov_halfrate_p(vf);
-}
-
-

+ 0 - 103
audio/ov/loader.h

@@ -1,103 +0,0 @@
-#ifndef VBF_LOADER_H
-#define VBF_LOADER_H
-
-#include "vorbis/vorbisfile.h"
-
-#if defined(_WIN32)
- #define VBF_APIENTRY __cdecl
-#else
- #define VBF_APIENTRY
-#endif
-
-
-// API function pointers type definitions
-typedef int (VBF_APIENTRY *LPOVCLEAR)(OggVorbis_File *vf);
-typedef int (VBF_APIENTRY *LPOVFOPEN)(const char *path,OggVorbis_File *vf);
-typedef int (VBF_APIENTRY *LPOVOPEN)(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes);
-typedef int (VBF_APIENTRY *LPOVOPENCALLBACKS)(void *datasource, OggVorbis_File *vf, const char *initial, long ibytes, ov_callbacks callbacks);
-
-typedef int (VBF_APIENTRY *LPOVTEST)(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes);
-typedef int (VBF_APIENTRY *LPOVTESTCALLBACKS)(void *datasource, OggVorbis_File *vf, const char *initial, long ibytes, ov_callbacks callbacks);
-typedef int (VBF_APIENTRY *LPOVTESTOPEN)(OggVorbis_File *vf);
-
-typedef long (VBF_APIENTRY *LPOVBITRATE)(OggVorbis_File *vf,int i);
-typedef long (VBF_APIENTRY *LPOVBITRATEINSTANT)(OggVorbis_File *vf);
-typedef int (VBF_APIENTRY *LPOVSTREAMS)(OggVorbis_File *vf);
-typedef int (VBF_APIENTRY *LPOVSEEKABLE)(OggVorbis_File *vf);
-typedef int (VBF_APIENTRY *LPOVSERIALNUMBER)(OggVorbis_File *vf,int i);
-
-typedef ogg_int64_t (VBF_APIENTRY *LPOVRAWTOTAL)(OggVorbis_File *vf,int i);
-typedef ogg_int64_t (VBF_APIENTRY *LPOVPCMTOTAL)(OggVorbis_File *vf,int i);
-typedef double (VBF_APIENTRY *LPOVTIMETOTAL)(OggVorbis_File *vf,int i);
-
-typedef int (VBF_APIENTRY *LPOVRAWSEEK)(OggVorbis_File *vf,ogg_int64_t pos);
-typedef int (VBF_APIENTRY *LPOVPCMSEEK)(OggVorbis_File *vf,ogg_int64_t pos);
-typedef int (VBF_APIENTRY *LPOVPCMSEEKPAGE)(OggVorbis_File *vf,ogg_int64_t pos);
-typedef int (VBF_APIENTRY *LPOVTIMESEEK)(OggVorbis_File *vf,double pos);
-typedef int (VBF_APIENTRY *LPOVTIMESEEKPAGE)(OggVorbis_File *vf,double pos);
-
-typedef int (VBF_APIENTRY *LPOVRAWSEEKLAP)(OggVorbis_File *vf,ogg_int64_t pos);
-typedef int (VBF_APIENTRY *LPOVPCMSEEKLAP)(OggVorbis_File *vf,ogg_int64_t pos);
-typedef int (VBF_APIENTRY *LPOVPCMSEEKPAGELAP)(OggVorbis_File *vf,ogg_int64_t pos);
-typedef int (VBF_APIENTRY *LPOVTIMESEEKLAP)(OggVorbis_File *vf,double pos);
-typedef int (VBF_APIENTRY *LPOVTIMESEEKPAGELAP)(OggVorbis_File *vf,double pos);
-
-typedef ogg_int64_t (VBF_APIENTRY *LPOVRAWTELL)(OggVorbis_File *vf);
-typedef ogg_int64_t (VBF_APIENTRY *LPOVPCMTELL)(OggVorbis_File *vf);
-typedef double (VBF_APIENTRY *LPOVTIMETELL)(OggVorbis_File *vf);
-
-typedef vorbis_info* (VBF_APIENTRY *LPOVINFO)(OggVorbis_File *vf,int link);
-typedef vorbis_comment* (VBF_APIENTRY *LPOVCOMMENT)(OggVorbis_File *vf,int link);
-
-typedef long (VBF_APIENTRY *LPOVREADFLOAT)(OggVorbis_File *vf,float ***pcm_channels,int samples, int *bitstream);
-typedef long (VBF_APIENTRY *LPOVREADFILTER)(OggVorbis_File *vf,char *buffer,int length, int bigendianp,int word,int sgned,int *bitstream, void (*filter)(float **pcm,long channels,long samples,void *filter_param),void *filter_param); 
-typedef long (VBF_APIENTRY *LPOVREAD)(OggVorbis_File *vf,char *buffer,int length, int bigendianp,int word,int sgned,int *bitstream);
-typedef int (VBF_APIENTRY *LPOVCROSSLAP)(OggVorbis_File *vf1,OggVorbis_File *vf2);
-typedef int (VBF_APIENTRY *LPOVHALFRATE)(OggVorbis_File *vf,int flag);
-typedef int (VBF_APIENTRY *LPOVHALFRATEP)(OggVorbis_File *vf);
-
-
-int vorbisfile_load();
-
-
-extern LPOVCLEAR           p_ov_clear;
-extern LPOVFOPEN           p_ov_fopen;
-extern LPOVOPEN            p_ov_open;
-extern LPOVOPENCALLBACKS   p_ov_open_callbacks;
-extern LPOVTEST            p_ov_test;
-extern LPOVTESTCALLBACKS   p_ov_test_callbacks;
-extern LPOVTESTOPEN        p_ov_test_open;
-extern LPOVBITRATE         p_ov_bitrate;
-extern LPOVBITRATEINSTANT  p_ov_bitrate_instant;
-extern LPOVSTREAMS         p_ov_streams;
-extern LPOVSEEKABLE        p_ov_seekable;
-extern LPOVSERIALNUMBER    p_ov_serialnumber;
-extern LPOVRAWTOTAL        p_ov_raw_total;
-extern LPOVPCMTOTAL        p_ov_pcm_total;
-extern LPOVTIMETOTAL       p_ov_time_total;
-extern LPOVRAWSEEK         p_ov_raw_seek;
-extern LPOVPCMSEEK         p_ov_pcm_seek;
-extern LPOVPCMSEEKPAGE     p_ov_pcm_seek_page;
-extern LPOVTIMESEEK        p_ov_time_seek;
-extern LPOVTIMESEEKPAGE    p_ov_time_seek_page;
-extern LPOVRAWSEEKLAP      p_ov_raw_seek_lap;
-extern LPOVPCMSEEKLAP      p_ov_pcm_seek_lap;
-extern LPOVPCMSEEKPAGELAP  p_ov_pcm_seek_page_lap;
-extern LPOVTIMESEEKLAP     p_ov_time_seek_lap;
-extern LPOVTIMESEEKPAGELAP p_ov_time_seek_page_lap;
-extern LPOVRAWTELL         p_ov_raw_tell;
-extern LPOVPCMTELL         p_ov_pcm_tell;
-extern LPOVTIMETELL        p_ov_time_tell;
-extern LPOVINFO            p_ov_info;
-extern LPOVCOMMENT         p_ov_comment;
-extern LPOVREADFLOAT       p_ov_read_float;
-extern LPOVREADFILTER      p_ov_read_filter;
-extern LPOVREAD            p_ov_read;
-extern LPOVCROSSLAP        p_ov_crosslap;
-extern LPOVHALFRATE        p_ov_halfrate;
-extern LPOVHALFRATEP       p_ov_halfrate_p;
-
-
-
-#endif
-

+ 9 - 52
audio/ov/vorbisfile.go

@@ -2,18 +2,18 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-/*
-Package ov implements the Go bindings of a subset of the functions of the Ogg Vorbis File C library.
-
-It also implements a loader so the library can be dynamically loaded.
-The libvorbisfile C API reference is at: https://xiph.org/vorbis/doc/vorbisfile/reference.html
-
-*/
+// Package ov implements the Go bindings of a subset of the functions of the Ogg Vorbis File C library.
+// The libvorbisfile C API reference is at: https://xiph.org/vorbis/doc/vorbisfile/reference.html
 package ov
 
+// #cgo darwin   CFLAGS:  -DGO_DARWIN  -I/usr/include/vorbis -I/usr/local/include/vorbis
+// #cgo linux    CFLAGS:  -DGO_LINUX   -I/usr/include/vorbis
+// #cgo windows  CFLAGS:  -DGO_WINDOWS -I${SRCDIR}/../windows/libvorbis-1.3.5/include/vorbis -I${SRCDIR}/../windows/libogg-1.3.3/include
+// #cgo darwin   LDFLAGS: -L/usr/lib -L/usr/local/lib -lvorbisfile
+// #cgo linux    LDFLAGS: -lvorbisfile
+// #cgo windows  LDFLAGS: -L${SRCDIR}/../windows/bin -llibvorbisfile
 // #include <stdlib.h>
-// #include "vorbis/vorbisfile.h"
-// #include "loader.h"
+// #include "vorbisfile.h"
 import "C"
 
 import (
@@ -64,39 +64,10 @@ var errCodes = map[C.int]string{
 	C.OV_ENOSEEK:    "EnoSeek",
 }
 
-// Flag indicating if library has been loaded
-var loaded = false
-
-// Load tries to load dinamically the libvorbisfile shared library/dll.
-// Most of the functions of this package can only be called only
-// after the library was successfully loaded.
-func Load() error {
-
-	// Checks if already loaded
-	if loaded {
-		return nil
-	}
-
-	// Loads libvorbisfile
-	cres := C.vorbisfile_load()
-	if cres == 0 {
-		loaded = true
-		return nil
-	}
-	return fmt.Errorf("Error loading libvorbisfile shared library/dll")
-}
-
-// IsLoaded returns if library has been loaded succesfully
-func IsLoaded() bool {
-
-	return loaded
-}
-
 // Fopen opens an ogg vorbis file for decoding
 // Returns an opaque pointer to the internal decode structure and an error
 func Fopen(path string) (*File, error) {
 
-	checkLoaded()
 	// Allocates pointer to vorbisfile structure using C memory
 	var f File
 	f.vf = (*C.OggVorbis_File)(C.malloc(C.size_t(unsafe.Sizeof(C.OggVorbis_File{}))))
@@ -113,7 +84,6 @@ func Fopen(path string) (*File, error) {
 // Clear clears the decoded buffers and closes the file
 func Clear(f *File) error {
 
-	checkLoaded()
 	cerr := C.ov_clear(f.vf)
 	if cerr == 0 {
 		C.free(unsafe.Pointer(f.vf))
@@ -127,7 +97,6 @@ func Clear(f *File) error {
 // returns the number of bytes read, the number of current logical bitstream and an error
 func Read(f *File, buffer unsafe.Pointer, length int, bigendianp bool, word int, sgned bool) (int, int, error) {
 
-	checkLoaded()
 	var cbigendianp C.int = 0
 	var csgned C.int = 0
 	var bitstream C.int
@@ -149,7 +118,6 @@ func Read(f *File, buffer unsafe.Pointer, length int, bigendianp bool, word int,
 // information about the audio in a vorbis stream
 func Info(f *File, link int, info *VorbisInfo) error {
 
-	checkLoaded()
 	vi := C.ov_info(f.vf, C.int(link))
 	if vi == nil {
 		return fmt.Errorf("Error returned from 'ov_info'")
@@ -167,7 +135,6 @@ func Info(f *File, link int, info *VorbisInfo) error {
 // Seekable returns indication whether or not the bitstream is seekable
 func Seekable(f *File) bool {
 
-	checkLoaded()
 	cres := C.ov_seekable(f.vf)
 	if cres == 0 {
 		return false
@@ -181,7 +148,6 @@ func Seekable(f *File) bool {
 // and get data from the newly seeked to position.
 func PcmSeek(f *File, pos int64) error {
 
-	checkLoaded()
 	cres := C.ov_pcm_seek(f.vf, C.ogg_int64_t(pos))
 	if cres == 0 {
 		return nil
@@ -193,7 +159,6 @@ func PcmSeek(f *File, pos int64) error {
 // To retrieve the total pcm samples for the entire physical bitstream, the 'link' parameter should be set to -1
 func PcmTotal(f *File, i int) (int64, error) {
 
-	checkLoaded()
 	cres := C.ov_pcm_total(f.vf, C.int(i))
 	if cres < 0 {
 		return 0, fmt.Errorf("Error:%s from 'ov_pcm_total()'", errCodes[C.int(cres)])
@@ -205,7 +170,6 @@ func PcmTotal(f *File, i int) (int64, error) {
 // To retrieve the time total for the entire physical bitstream, 'i' should be set to -1.
 func TimeTotal(f *File, i int) (float64, error) {
 
-	checkLoaded()
 	cres := C.ov_time_total(f.vf, C.int(i))
 	if cres < 0 {
 		return 0, fmt.Errorf("Error:%s from 'ov_time_total()'", errCodes[C.int(cres)])
@@ -216,16 +180,9 @@ func TimeTotal(f *File, i int) (float64, error) {
 // TimeTell returns the current decoding offset in seconds.
 func TimeTell(f *File) (float64, error) {
 
-	checkLoaded()
 	cres := C.ov_time_tell(f.vf)
 	if cres < 0 {
 		return 0, fmt.Errorf("Error:%s from 'ov_time_total()'", errCodes[C.int(cres)])
 	}
 	return float64(cres), nil
 }
-
-func checkLoaded() {
-	if !loaded {
-		panic("libvorbisfile shared library/dll was not loaded")
-	}
-}

+ 2 - 2
audio/player.go

@@ -195,7 +195,7 @@ func (p *Player) SetMinGain(gain float32) {
 	al.Sourcef(p.source, al.MinGain, gain)
 }
 
-// MinGain returns the current maximum gain of this player
+// MaxGain returns the current maximum gain of this player
 func (p *Player) MaxGain() float32 {
 
 	return al.GetSourcef(p.source, al.MaxGain)
@@ -282,7 +282,7 @@ func (p *Player) VelocityVec() math32.Vector3 {
 	return math32.Vector3{vx, vy, vz}
 }
 
-// SetRollofFactor sets this player rolloff factor user to calculate
+// SetRolloffFactor sets this player rolloff factor user to calculate
 // the gain attenuation by distance
 func (p *Player) SetRolloffFactor(rfactor float32) {
 

+ 0 - 9
audio/vorbis/build.go

@@ -1,9 +0,0 @@
-package vorbis
-
-// #cgo darwin   CFLAGS:  -DGO_DARWIN
-// #cgo linux    CFLAGS:  -DGO_LINUX   -I../include
-// #cgo windows  CFLAGS:  -DGO_WINDOWS -I../include
-// #cgo darwin   LDFLAGS:
-// #cgo linux    LDFLAGS: -ldl
-// #cgo windows  LDFLAGS:
-import "C"

+ 0 - 137
audio/vorbis/loader.c

@@ -1,137 +0,0 @@
-//
-// Dynamically loads the vorbis shared library / dll
-// Currently only get the pointer to the function to get the library version
-//
-#include "loader.h"
-
-
-typedef void (*alProc)(void);
-
-//
-// Windows --------------------------------------------------------------------
-//
-#ifdef _WIN32
-#define WIN32_LEAN_AND_MEAN 1
-#include <windows.h>
-
-static HMODULE libvb;
-
-static int open_libvb(void) {
-
-	libvb = LoadLibraryA("libvorbis.dll");
-    if (libvb == NULL) {
-        return -1;
-    }
-    return 0;
-}
-
-static void close_libvb(void) {
-
-	FreeLibrary(libvb);
-}
-
-static alProc get_proc(const char *proc) {
-
-    return (alProc) GetProcAddress(libvb, proc);
-}
-//
-// Mac --------------------------------------------------------------------
-//
-#elif defined(__APPLE__)
-#include <dlfcn.h>
-
-static void *libvb;
-
-static int open_libvb(void) {
-
-    libvb = dlopen("/System/Library/Frameworks/libvorbis.framework/libvorbis", RTLD_LAZY | RTLD_GLOBAL);
-    if (!libvb) {
-        return -1;
-    }
-    return 0;
-}
-
-static void close_libvb(void) {
-
-    dlclose(libvb);
-}
-
-static void* get_proc(const char *proc) {
-
-    void* res;
-    *(void **)(&res) = dlsym(libvb, proc);
-    return res;
-}
-//
-// Linux --------------------------------------------------------------------
-//
-#else
-#include <dlfcn.h>
-
-static void *libvb;
-
-static char* lib_names[] = {
-    "libvorbis.so",
-    "libvorbis.so.0",
-    NULL
-};
-
-static int open_libvb(void) {
-
-    int i = 0;
-    while (lib_names[i] != NULL) {
-	    libvb = dlopen(lib_names[i], RTLD_LAZY | RTLD_GLOBAL);
-        if (libvb != NULL) {
-            dlerror(); // clear errors
-            return 0;
-        }
-        i++;
-    }
-    return -1;
-}
-
-static void close_libvb(void) {
-
-	dlclose(libvb);
-}
-
-static alProc get_proc(const char *proc) {
-
-    return dlsym(libvb, proc);
-}
-#endif
-
-// Prototypes of local functions
-static void load_procs(void);
-
-
-// Pointers to functions loaded from shared library
-LPVORBISVERSIONSTRING   p_vorbis_version_string;
-
-
-// Load functions from shared library
-int vorbis_load() {
-
-    int res = open_libvb();
-    if (res) {
-        return res;
-    }
-    load_procs();
-    return 0;
-}
-
-static void load_procs(void) {
-
-    p_vorbis_version_string = (LPVORBISVERSIONSTRING)get_proc("vorbis_version_string");
-}
-
-//
-// Go code cannot directly call the vorbis file function pointers loaded dynamically
-// The following C functions call the corresponding function pointers and can be
-// called by Go code.
-//
-const char *vorbis_version_string(void) {
-
-    return p_vorbis_version_string();
-}
-

+ 0 - 28
audio/vorbis/loader.h

@@ -1,28 +0,0 @@
-#ifndef VB_LOADER_H
-#define VB_LOADER_H
-
-#include "vorbis/vorbisenc.h"
-
-#if defined(_WIN32)
- #define VB_APIENTRY __cdecl
-#else
- #define VB_APIENTRY
-#endif
-
-
-// API function pointers type definitions
-typedef const char* (VB_APIENTRY *LPVORBISVERSIONSTRING)(void);
-
-
-// Loader
-int vorbis_load();
-
-
-// Pointers to functions
-extern LPVORBISVERSIONSTRING   p_vorbis_version_string;
-
-
-
-#endif
-
-

+ 9 - 21
audio/vorbis/vorbis.go

@@ -2,31 +2,19 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-/*
- Package vorbis implements the Go bindings of a subset (only one function) of the functions of the libvorbis library
- It also implements a loader so the library can be dynamically loaded
- See API reference at: https://xiph.org/vorbis/doc/libvorbis/reference.html
-*/
+// Package vorbis implements the Go bindings of a subset (only one function) of the functions of the libvorbis library
+// See API reference at: https://xiph.org/vorbis/doc/libvorbis/reference.html
 package vorbis
 
-// #include "loader.h"
+// #cgo darwin   CFLAGS:  -DGO_DARWIN  -I/usr/include/vorbis -I/usr/local/include/vorbis
+// #cgo linux    CFLAGS:  -DGO_LINUX   -I/usr/include/vorbis
+// #cgo windows  CFLAGS:  -DGO_WINDOWS -I${SRCDIR}/../windows/libvorbis-1.3.5/include/vorbis -I${SRCDIR}/../windows/libogg-1.3.3/include
+// #cgo darwin   LDFLAGS: -L/usr/lib -L/usr/local/lib -lvorbis
+// #cgo linux    LDFLAGS: -lvorbis
+// #cgo windows  LDFLAGS: -L${SRCDIR}/../windows/bin -llibvorbis
+// #include "codec.h"
 import "C"
 
-import (
-	"fmt"
-)
-
-// Load tries to load dinamically libvorbis share library/dll
-func Load() error {
-
-	// Loads libvorbis
-	cres := C.vorbis_load()
-	if cres != 0 {
-		return fmt.Errorf("Error loading libvorbis shared library/dll")
-	}
-	return nil
-}
-
 // VersionString returns a string giving version information for libvorbis
 func VersionString() string {
 

+ 1 - 1
audio/wave.go

@@ -10,7 +10,7 @@ import (
 	"os"
 )
 
-// WaveSpecs describes the characterists of the audio encoded in a wave file.
+// WaveSpecs describes the characteristics of the audio encoded in a wave file.
 type WaveSpecs struct {
 	Format     int     // OpenAl Format
 	Type       int     // Type field from wave header

+ 86 - 0
audio/windows/README.md

@@ -0,0 +1,86 @@
+# Audio libraries for Windows
+
+The G3N engine audio support currently depends on the following external libraries:
+
+- `OpenAL`        - for spatial audio
+- `libogg`        - for Ogg container format
+- `libvorbis`     - for vorbis decoder support
+- `libvorbisfile` - for reading/decoding ogg vorbis files
+
+These libraries are easily installed in Linux systems using the distribution package manager.
+
+For compiling `G3N` for windows, the directory `<GOPATH>/src/github.com/g3n/engine/audio/windows`
+contains the sources of these libraries, and the subdirectory `bin` contains compiled `dlls`,
+used during the link process. For running an application which uses `G3N`, you will need
+to copy these dlls to the directory from which will run your application.
+It is recommended to avoid copying them to the Windows system directory.
+
+The library sources were obtained from:
+- http://kcat.strangesoft.net/openal-releases/openal-soft-1.18.2.tar.bz2
+- http://downloads.xiph.org/releases/ogg/libogg-1.3.3.zip
+- http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.zip
+
+The original file `libvorbis-1.3.5/win32/VS2010/libogg.props` was changed to setup
+`libogg` version and location.
+
+If you want to build the `dlls` from source instead of using the supplied `dlls` you
+can use the following procedure:
+
+1. Download and install *Microsoft Studio Community* from https://www.visualstudio.com/downloads/.
+   Under the *Workloads* tab, select ***Desktop development with C++***.
+   We are assuming here that *Microsoft Studio 2017* will be used. If you are using the previous
+   version of *Microsoft Studio* replace *Microsoft Studio 15 2017* by *Microsoft Studio 14 2015*
+   in the *CMake* command line in item 4.
+
+2. Download and install *CMake* from https://cmake.org/download/.
+
+3. Execute the *Developer Command Prompt for VS 2017* (or the equivalent for the 2015 version)
+   installed by *Microsoft Visual Studio*.
+   It is a command prompt window with environment variables correctly initialized to use
+   the MS compiler and tools.
+
+4. In the command prompt navigate to the *build* directory inside the *openal-soft-1.18.2* directory, and then execute:
+   ```
+   >mkdir build
+   >cd build
+   >cmake -G "Visual Studio 15 2017 Win64" ..
+   ``` 
+  
+   It is important to check in the messages generated by *CMake* that *OpenAL* will be built
+   with support for *DirectSound*.
+   If everything is OK, a file named `OpenAL.sln` should have been generated in this
+   directory (along with many others).
+
+5. Execute *Visual Studio* and from its menu select *Open -> Project/Solution...*.
+   Select the file `OpenAL.sln` generated previously by *CMake*.
+   In the *Visual Studio* toolbar, below the menu, select the build mode *Release*
+   and *x64* architecture.
+   Then select *Build -> Build Solution* in the menu to start the build.
+   Once the build is complete the file `OpenAL.dll` should have been generated in the directory `build/Release`.
+    
+6. Execute *Visual Studio* and from its menu select *Open -> Project/Solution...*.
+   Select the file `libogg-1.3.3\win32\VS2015\libogg_dynamic.sln`.
+   In the *Visual Studio* toolbar, below the menu, select the build mode *Release*
+   and *x64* architecture.
+   Then select the menu *Build -> Build Solution* to start the build.
+   If during the build *Visual Studio* indicates an error related to
+   the installed platform toolset you may need to retarget the solution,
+   selecting the menu *Project -> Retarget solution"* and then try to build again.
+   If everything goes OK then `libogg.dll` should be in the directory:
+   `libogg-1.3.3\win32\VS2015\x64\Release`.
+
+7. Execute *Visual Studio* and from its menu select *Open -> Project/Solution...*.
+   Select the file `libvorbis-1.3.5\win32\VS2010\vorbis_dynamic.sln`.
+   In the *Visual Studio* toolbar, below the menu, select the build mode *Release*
+   and *x64* architecture.
+   Then select the menu *Build -> Build Solution* to start the build.
+   If during the build *Visual Studio* indicates an error related to
+   the installed platform toolset you may need to retarget the solution,
+   selecting the menu *Project -> Retarget solution"* and then try the build again.
+   If everything goes OK, then `libvorbis.dll` and `libvorbisfile.dll` should be in the directory:
+   `libvorbis-1.3.5\win32\VS2010\x64\Release`.
+
+8. Copy the dlls: `OpenAL32.dll, libogg.dll, libvorbis.dll` and `libvorbisfile.dll`
+   to the directory from which you will execute a G3N application.
+
+

BIN
audio/windows/bin/OpenAL32.dll


BIN
audio/windows/bin/libogg.dll


BIN
audio/windows/bin/libvorbis.dll


BIN
audio/windows/bin/libvorbisfile.dll


+ 7 - 0
audio/windows/libogg-1.3.3/AUTHORS

@@ -0,0 +1,7 @@
+Monty <monty@xiph.org>
+Greg Maxwell <greg@xiph.org>
+Ralph Giles <giles@xiph.org>
+Cristian Adam <cristian.adam@gmail.com>
+Tim Terriberry <tterribe@xiph.org>
+
+and the rest of the Xiph.Org Foundation.

+ 94 - 0
audio/windows/libogg-1.3.3/CHANGES

@@ -0,0 +1,94 @@
+Version 1.3.3 (2017 November 7)
+
+ * Fix and issue with corrupt continued packet handling.
+ * Update Windows projects and build settings.
+ * Remove Mac OS 9 build support.
+
+Version 1.3.2 (2014 May 27)
+
+ * Fix an bug in oggpack_writecopy().
+
+Version 1.3.1 (2013 May 12)
+
+* Guard against very large packets.
+* Respect the configure --docdir override.
+* Documentation fixes.
+* More Windows build fixes.
+
+Version 1.3.0 (2011 August 4)
+
+* Add ogg_stream_flush_fill() call
+  This produces longer packets on flush, similar to
+  what ogg_stream_pageout_fill() does for single pages.
+* Windows build fixes
+
+Version 1.2.2 (2010 December 07)
+
+* Build fix (types correction) for Mac OS X
+* Update win32 project files to Visual Studio 2008
+* ogg_stream_pageout_fill documentation fix
+
+Version 1.2.1 (2010 November 01)
+
+* Various build updates (see SVN)
+* Add ogg_stream_pageout_fill() to API to allow applications
+  greater explicit flexibility in page sizing.
+* Documentation updates including multiplexing description,
+  terminology and API (incl. ogg_packet_clear(),
+  ogg_stream_pageout_fill())
+* Correct possible buffer overwrite in stream encoding on 32 bit
+  when a single packet exceed 250MB.
+* Correct read-buffer overrun [without side effects] under
+  similar circumstances.
+* Update unit testing to work properly with new page spill
+  heuristic.
+
+Version 1.2.0 (2010 March 25)
+
+* Alter default flushing behavior to span less often and use larger page
+  sizes when packet sizes are large.
+* Build fixes for additional compilers
+* Documentation updates
+
+Version 1.1.4 (2009 June 24)
+
+* New async error reporting mechanism. Calls made after a fatal error are
+  now safely handled in the event an error code is ignored
+* Added allocation checks useful to some embedded applications
+* fix possible read past end of buffer when reading 0 bits
+* Updates to API documentation
+* Build fixes
+
+Version 1.1.3 (2005 November 27)
+
+ * Correct a bug in the granulepos field of pages where no packet ends
+ * New VS2003 and XCode builds, minor fixes to other builds
+ * documentation fixes and cleanup
+
+Version 1.1.2 (2004 September 23)
+
+ * fix a bug with multipage packet assembly after seek
+
+Version 1.1.1 (2004 September 12)
+
+ * various bugfixes
+ * important bugfix for 64-bit platforms
+ * various portability fixes
+ * autotools cleanup from Thomas Vander Stichele
+ * Symbian OS build support from Colin Ward at CSIRO
+ * new multiplexed Ogg stream documentation
+
+Version 1.1 (2003 November 17)
+
+ * big-endian bitpacker routines for Theora
+ * various portability fixes
+ * improved API documenation
+ * RFC 3533 documentation of the format by Silvia Pfeiffer at CSIRO
+ * RFC 3534 documentation of the application/ogg mime-type by Linus Walleij
+
+Version 1.0 (2002 July 19)
+
+ * First stable release
+ * little-endian bitpacker routines for Vorbis
+ * basic Ogg bitstream sync and coding support
+

+ 28 - 0
audio/windows/libogg-1.3.3/COPYING

@@ -0,0 +1,28 @@
+Copyright (c) 2002, Xiph.org Foundation
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of the Xiph.org Foundation nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 32 - 0
audio/windows/libogg-1.3.3/Makefile.am

@@ -0,0 +1,32 @@
+## Process this file with automake to produce Makefile.in
+
+
+#AUTOMAKE_OPTIONS = foreign 1.6 dist-zip
+AUTOMAKE_OPTIONS = foreign 1.11 dist-zip dist-xz
+
+SUBDIRS = src include doc
+
+m4datadir = $(datadir)/aclocal
+m4data_DATA = ogg.m4
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = ogg.pc
+
+EXTRA_DIST = README.md AUTHORS CHANGES COPYING \
+	libogg.spec libogg.spec.in \
+	ogg.m4 ogg.pc.in ogg-uninstalled.pc.in \
+	macosx win32
+
+dist-hook:
+	for item in $(EXTRA_DIST); do \
+	  if test -d $$item; then \
+	    echo -n "cleaning dir $$item for distribution..."; \
+	    rm -rf `find $(distdir)/$$item -name .svn`; \
+	    echo "OK"; \
+	  fi; \
+	done
+debug:
+	$(MAKE) all CFLAGS="@DEBUG@"
+
+profile:
+	$(MAKE) all CFLAGS="@PROFILE@"

+ 932 - 0
audio/windows/libogg-1.3.3/Makefile.in

@@ -0,0 +1,932 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+	$(am__configure_deps) $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = libogg.spec ogg.pc ogg-uninstalled.pc
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)"
+DATA = $(m4data_DATA) $(pkgconfig_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+	$(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+	$(srcdir)/libogg.spec.in $(srcdir)/ogg-uninstalled.pc.in \
+	$(srcdir)/ogg.pc.in AUTHORS COPYING compile config.guess \
+	config.sub install-sh ltmain.sh missing
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz $(distdir).zip
+GZIP_ENV = --best
+DIST_TARGETS = dist-xz dist-gzip dist-zip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INCLUDE_INTTYPES_H = @INCLUDE_INTTYPES_H@
+INCLUDE_STDINT_H = @INCLUDE_STDINT_H@
+INCLUDE_SYS_TYPES_H = @INCLUDE_SYS_TYPES_H@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LIB_AGE = @LIB_AGE@
+LIB_CURRENT = @LIB_CURRENT@
+LIB_REVISION = @LIB_REVISION@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OPT = @OPT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIZE16 = @SIZE16@
+SIZE32 = @SIZE32@
+SIZE64 = @SIZE64@
+STRIP = @STRIP@
+USIZE16 = @USIZE16@
+USIZE32 = @USIZE32@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+#AUTOMAKE_OPTIONS = foreign 1.6 dist-zip
+AUTOMAKE_OPTIONS = foreign 1.11 dist-zip dist-xz
+SUBDIRS = src include doc
+m4datadir = $(datadir)/aclocal
+m4data_DATA = ogg.m4
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = ogg.pc
+EXTRA_DIST = README.md AUTHORS CHANGES COPYING \
+	libogg.spec libogg.spec.in \
+	ogg.m4 ogg.pc.in ogg-uninstalled.pc.in \
+	macosx win32
+
+all: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh: Makefile
+	@:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	$(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+	@test -f $@ || rm -f stamp-h1
+	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
+	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f config.h stamp-h1
+libogg.spec: $(top_builddir)/config.status $(srcdir)/libogg.spec.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+ogg.pc: $(top_builddir)/config.status $(srcdir)/ogg.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+ogg-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/ogg-uninstalled.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool config.lt
+install-m4dataDATA: $(m4data_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(m4datadir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(m4datadir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(m4datadir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(m4datadir)" || exit $$?; \
+	done
+
+uninstall-m4dataDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(m4datadir)'; $(am__uninstall_files_from_dir)
+install-pkgconfigDATA: $(pkgconfig_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
+	done
+
+uninstall-pkgconfigDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+	test ! -s cscope.files \
+	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+	-rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	test -d "$(distdir)" || mkdir "$(distdir)"
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+	$(MAKE) $(AM_MAKEFLAGS) \
+	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+	  dist-hook
+	-test -n "$(am__skip_mode_fix)" \
+	|| find "$(distdir)" -type d ! -perm -755 \
+		-exec chmod u+rwx,go+rx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
+	$(am__post_remove_distdir)
+
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+	$(am__post_remove_distdir)
+
+dist-lzip: distdir
+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+	$(am__post_remove_distdir)
+dist-xz: distdir
+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+	$(am__post_remove_distdir)
+
+dist-tarZ: distdir
+	@echo WARNING: "Support for distribution archives compressed with" \
+		       "legacy program 'compress' is deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__post_remove_distdir)
+
+dist-shar: distdir
+	@echo WARNING: "Support for shar distribution archives is" \
+	               "deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+	shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
+	$(am__post_remove_distdir)
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__post_remove_distdir)
+
+dist dist-all:
+	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+	$(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.lz*) \
+	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+	*.tar.xz*) \
+	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir)
+	chmod u+w $(distdir)
+	mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+	chmod a-w $(distdir)
+	test -d $(distdir)/_build || exit 0; \
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && am__cwd=`pwd` \
+	  && $(am__cd) $(distdir)/_build/sub \
+	  && ../../configure \
+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	    --srcdir=../.. --prefix="$$dc_install_base" \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+	  && cd "$$am__cwd" \
+	  || exit 1
+	$(am__post_remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+	@test -n '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: trying to run $@ with an empty' \
+	       '$$(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	$(am__cd) '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+	distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-m4dataDATA install-pkgconfigDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-m4dataDATA uninstall-pkgconfigDATA
+
+.MAKE: $(am__recursive_targets) all install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+	am--refresh check check-am clean clean-cscope clean-generic \
+	clean-libtool cscope cscopelist-am ctags ctags-am dist \
+	dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
+	dist-tarZ dist-xz dist-zip distcheck distclean \
+	distclean-generic distclean-hdr distclean-libtool \
+	distclean-tags distcleancheck distdir distuninstallcheck dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-m4dataDATA install-man \
+	install-pdf install-pdf-am install-pkgconfigDATA install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+	uninstall-am uninstall-m4dataDATA uninstall-pkgconfigDATA
+
+.PRECIOUS: Makefile
+
+
+dist-hook:
+	for item in $(EXTRA_DIST); do \
+	  if test -d $$item; then \
+	    echo -n "cleaning dir $$item for distribution..."; \
+	    rm -rf `find $(distdir)/$$item -name .svn`; \
+	    echo "OK"; \
+	  fi; \
+	done
+debug:
+	$(MAKE) all CFLAGS="@DEBUG@"
+
+profile:
+	$(MAKE) all CFLAGS="@PROFILE@"
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

+ 131 - 0
audio/windows/libogg-1.3.3/README.md

@@ -0,0 +1,131 @@
+# Ogg
+
+[![Travis Build Status](https://travis-ci.org/xiph/ogg.svg?branch=master)](https://travis-ci.org/xiph/ogg)
+[![Jenkins Build Status](https://mf4.xiph.org/jenkins/job/libogg/badge/icon)](https://mf4.xiph.org/jenkins/job/libogg/)
+[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/xiph/ogg?branch=master&svg=true)](https://ci.appveyor.com/project/rillian/ogg)
+
+Ogg project codecs use the Ogg bitstream format to arrange the raw,
+compressed bitstream into a more robust, useful form. For example,
+the Ogg bitstream makes seeking, time stamping and error recovery
+possible, as well as mixing several sepearate, concurrent media
+streams into a single physical bitstream.
+
+## What's here ##
+This source distribution includes libogg and nothing else. Other modules
+(eg, the modules libvorbis, vorbis-tools for the Vorbis music codec,
+libtheora for the Theora video codec) contain the codec libraries for
+use with Ogg bitstreams.
+
+Directory:
+
+- `src` The source for libogg, a BSD-license inplementation of the public domain Ogg bitstream format
+
+- `include` Library API headers
+
+- `doc` Ogg specification and libogg API documents
+
+- `win32` Win32 projects and build automation
+
+- `macosx` Mac OS X project and build files
+
+## Contact ##
+
+The Ogg homepage is located at https://www.xiph.org/ogg/ .
+Up to date technical documents, contact information, source code and
+pre-built utilities may be found there.
+
+## Building ##
+
+#### Building from tarball distributions ####
+
+    ./configure
+    make
+
+and optionally (as root):
+
+    make install
+
+This will install the Ogg libraries (static and shared) into
+/usr/local/lib, includes into /usr/local/include and API
+documentation into /usr/local/share/doc.
+
+#### Building from repository source ####
+
+A standard svn build should consist of nothing more than:
+
+    ./autogen.sh
+    ./configure
+    make
+
+and as root if desired :
+
+    make install
+
+#### Building on Windows ####
+
+Use the project file in the win32 directory. It should compile out of the box.
+
+#### Cross-compiling from Linux to Windows ####
+
+It is also possible to cross compile from Linux to windows using the MinGW
+cross tools and even to run the test suite under Wine, the Linux/*nix
+windows emulator.
+
+On Debian and Ubuntu systems, these cross compiler tools can be installed
+by doing:
+
+    sudo apt-get mingw32 mingw32-binutils mingw32-runtime wine
+
+Once these tools are installed its possible to compile and test by
+executing the following commands, or something similar depending on
+your system:
+
+    ./configure --host=i586-mingw32msvc --target=i586-mingw32msvc --build=i586-linux
+    make
+    make check
+
+(Build instructions for Ogg codecs such as vorbis are similar and may
+be found in those source modules' README files)
+
+## Building with CMake ##
+
+Ogg supports building using [CMake](http://www.cmake.org/). CMake is a meta build system that generates native projects for each platform.
+To generate projects just run cmake replacing `YOUR-PROJECT-GENERATOR` with a proper generator from a list [here](http://www.cmake.org/cmake/help/v3.2/manual/cmake-generators.7.html):
+
+    cmake -G YOUR-PROJECT-GENERATOR .
+
+Note that by default cmake generates projects that will build static libraries.
+To generate projects that will build dynamic library use `BUILD_SHARED_LIBS` option like this:
+
+    cmake -G YOUR-PROJECT-GENERATOR -DBUILD_SHARED_LIBS=1 .
+
+After projects are generated use them as usual
+
+#### Building on Windows ####
+
+Use proper generator for your Visual Studio version like:
+
+    cmake -G "Visual Studio 12 2013" .
+
+#### Building on Mac OS X ####
+
+Use Xcode generator. To build framework run:
+
+    cmake -G Xcode -DBUILD_FRAMEWORK=1 .
+
+#### Building on Linux ####
+
+Use Makefile generator which is default one.
+
+    cmake .
+    make
+
+## License ##
+
+THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.
+USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS
+GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE
+IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.
+
+THE OggVorbis SOURCE CODE IS COPYRIGHT (C) 1994-2015
+by the Xiph.Org Foundation https://www.xiph.org/

Diferenças do arquivo suprimidas por serem muito extensas
+ 10220 - 0
audio/windows/libogg-1.3.3/aclocal.m4


+ 347 - 0
audio/windows/libogg-1.3.3/compile

@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""	$nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+	# lazily determine how to convert abs files
+	case `uname -s` in
+	  MINGW*)
+	    file_conv=mingw
+	    ;;
+	  CYGWIN*)
+	    file_conv=cygwin
+	    ;;
+	  *)
+	    file_conv=wine
+	    ;;
+	esac
+      fi
+      case $file_conv/,$2, in
+	*,$file_conv,*)
+	  ;;
+	mingw/*)
+	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+	  ;;
+	cygwin/*)
+	  file=`cygpath -m "$file" || echo "$file"`
+	  ;;
+	wine/*)
+	  file=`winepath -w "$file" || echo "$file"`
+	  ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+	-o)
+	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
+	  eat=1
+	  case $2 in
+	    *.o | *.[oO][bB][jJ])
+	      func_file_conv "$2"
+	      set x "$@" -Fo"$file"
+	      shift
+	      ;;
+	    *)
+	      func_file_conv "$2"
+	      set x "$@" -Fe"$file"
+	      shift
+	      ;;
+	  esac
+	  ;;
+	-I)
+	  eat=1
+	  func_file_conv "$2" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-I*)
+	  func_file_conv "${1#-I}" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-l)
+	  eat=1
+	  func_cl_dashl "$2"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-l*)
+	  func_cl_dashl "${1#-l}"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-L)
+	  eat=1
+	  func_cl_dashL "$2"
+	  ;;
+	-L*)
+	  func_cl_dashL "${1#-L}"
+	  ;;
+	-static)
+	  shared=false
+	  ;;
+	-Wl,*)
+	  arg=${1#-Wl,}
+	  save_ifs="$IFS"; IFS=','
+	  for flag in $arg; do
+	    IFS="$save_ifs"
+	    linker_opts="$linker_opts $flag"
+	  done
+	  IFS="$save_ifs"
+	  ;;
+	-Xlinker)
+	  eat=1
+	  linker_opts="$linker_opts $2"
+	  ;;
+	-*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+	  func_file_conv "$1"
+	  set x "$@" -Tp"$file"
+	  shift
+	  ;;
+	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+	  func_file_conv "$1" mingw
+	  set x "$@" "$file"
+	  shift
+	  ;;
+	*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+	# configure might choose to run compile as 'compile cc -o foo foo.c'.
+	# So we strip '-o arg' only if arg is an object.
+	eat=1
+	case $2 in
+	  *.o | *.obj)
+	    ofile=$2
+	    ;;
+	  *)
+	    set x "$@" -o "$2"
+	    shift
+	    ;;
+	esac
+	;;
+      *.c)
+	cfile=$1
+	set x "$@" "$1"
+	shift
+	;;
+      *)
+	set x "$@" "$1"
+	shift
+	;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:

Diferenças do arquivo suprimidas por serem muito extensas
+ 1462 - 0
audio/windows/libogg-1.3.3/config.guess


+ 97 - 0
audio/windows/libogg-1.3.3/config.h.in

@@ -0,0 +1,97 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#undef LT_OBJDIR
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* The size of `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of `int16_t', as computed by sizeof. */
+#undef SIZEOF_INT16_T
+
+/* The size of `int32_t', as computed by sizeof. */
+#undef SIZEOF_INT32_T
+
+/* The size of `int64_t', as computed by sizeof. */
+#undef SIZEOF_INT64_T
+
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of `long long', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG
+
+/* The size of `short', as computed by sizeof. */
+#undef SIZEOF_SHORT
+
+/* The size of `uint16_t', as computed by sizeof. */
+#undef SIZEOF_UINT16_T
+
+/* The size of `uint32_t', as computed by sizeof. */
+#undef SIZEOF_UINT32_T
+
+/* The size of `u_int16_t', as computed by sizeof. */
+#undef SIZEOF_U_INT16_T
+
+/* The size of `u_int32_t', as computed by sizeof. */
+#undef SIZEOF_U_INT32_T
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const

Diferenças do arquivo suprimidas por serem muito extensas
+ 1823 - 0
audio/windows/libogg-1.3.3/config.sub


Diferenças do arquivo suprimidas por serem muito extensas
+ 15231 - 0
audio/windows/libogg-1.3.3/configure


+ 185 - 0
audio/windows/libogg-1.3.3/configure.ac

@@ -0,0 +1,185 @@
+dnl Process this file with autoconf to produce a configure script.
+
+AC_INIT([libogg],[1.3.3],[ogg-dev@xiph.org])
+
+AC_CONFIG_SRCDIR(src/framing.c)
+
+AM_INIT_AUTOMAKE
+AM_MAINTAINER_MODE([enable])
+
+dnl Library versioning
+
+LIB_CURRENT=8
+LIB_REVISION=3
+LIB_AGE=8
+AC_SUBST(LIB_CURRENT)
+AC_SUBST(LIB_REVISION)
+AC_SUBST(LIB_AGE)
+
+AC_PROG_CC
+AM_PROG_LIBTOOL
+AM_PROG_CC_C_O
+
+dnl Set some options based on environment
+
+cflags_save="$CFLAGS"
+if test -z "$GCC"; then
+        case $host in 
+        *-*-irix*)
+                DEBUG="-g -signed" 
+                CFLAGS="-O2 -w -signed"
+                PROFILE="-p -g3 -O2 -signed"
+		;;
+        sparc-sun-solaris*)
+                DEBUG="-v -g"
+                CFLAGS="-xO4 -fast -w -fsimple -native -xcg92"
+                PROFILE="-v -xpg -g -xO4 -fast -native -fsimple -xcg92 -Dsuncc"
+		;;
+        *)
+                DEBUG="-g"
+                CFLAGS="-O"
+                PROFILE="-g -p" 
+		;;
+        esac
+else
+        case $host in 
+        *-*-linux*)
+                DEBUG="-g -Wall -fsigned-char"
+                CFLAGS="-O20 -Wall -ffast-math -fsigned-char"
+                PROFILE="-Wall -W -pg -g -O20 -ffast-math -fsigned-char"
+		;;
+        sparc-sun-*)
+                DEBUG="-g -Wall -fsigned-char"
+                CFLAGS="-O20 -ffast-math -fsigned-char"
+                PROFILE="-pg -g -O20 -fsigned-char" 
+		;;
+	*-*-darwin*)
+		DEBUG="-fno-common -g -Wall -fsigned-char"
+		CFLAGS="-fno-common -O4 -Wall -fsigned-char -ffast-math"
+		PROFILE="-fno-common -O4 -Wall -pg -g -fsigned-char -ffast-math"
+		;;
+        *)
+                DEBUG="-g -Wall -fsigned-char"
+                CFLAGS="-O20 -fsigned-char"
+                PROFILE="-O20 -g -pg -fsigned-char" 
+		;;
+        esac
+fi
+CFLAGS="$CFLAGS $cflags_save"
+DEBUG="$DEBUG $cflags_save"
+PROFILE="$PROFILE $cflags_save"
+
+dnl Checks for programs.
+
+dnl Checks for libraries.
+
+dnl Checks for header files.
+AC_HEADER_STDC
+INCLUDE_INTTYPES_H=0
+INCLUDE_STDINT_H=0
+INCLUDE_SYS_TYPES_H=0
+AC_CHECK_HEADER(inttypes.h,INCLUDE_INTTYPES_H=1)
+AC_CHECK_HEADER(stdint.h,INCLUDE_STDINT_H=1)
+AC_CHECK_HEADER(sys/types.h,INCLUDE_SYS_TYPES_H=1)
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_C_CONST
+
+dnl Check for types
+
+AC_CHECK_SIZEOF(int16_t)
+AC_CHECK_SIZEOF(uint16_t)
+AC_CHECK_SIZEOF(u_int16_t)
+AC_CHECK_SIZEOF(int32_t)
+AC_CHECK_SIZEOF(uint32_t)
+AC_CHECK_SIZEOF(u_int32_t)
+AC_CHECK_SIZEOF(int64_t)
+AC_CHECK_SIZEOF(short)
+AC_CHECK_SIZEOF(int)
+AC_CHECK_SIZEOF(long)
+AC_CHECK_SIZEOF(long long)
+
+case 2 in
+     $ac_cv_sizeof_int16_t) SIZE16="int16_t";;
+     $ac_cv_sizeof_short) SIZE16="short";;
+     $ac_cv_sizeof_int) SIZE16="int";;
+esac
+
+case 2 in
+     $ac_cv_sizeof_uint16_t) USIZE16="uint16_t";;
+     $ac_cv_sizeof_short) USIZE16="unsigned short";;
+     $ac_cv_sizeof_int) USIZE16="unsigned int";;
+     $ac_cv_sizeof_u_int16_t) USIZE16="u_int16_t";;
+esac
+
+case 4 in
+     $ac_cv_sizeof_int32_t) SIZE32="int32_t";;
+     $ac_cv_sizeof_short) SIZE32="short";;
+     $ac_cv_sizeof_int) SIZE32="int";;
+     $ac_cv_sizeof_long) SIZE32="long";;
+esac
+
+case 4 in
+     $ac_cv_sizeof_uint32_t) USIZE32="uint32_t";;
+     $ac_cv_sizeof_short) USIZE32="unsigned short";;
+     $ac_cv_sizeof_int) USIZE32="unsigned int";;
+     $ac_cv_sizeof_long) USIZE32="unsigned long";;
+     $ac_cv_sizeof_u_int32_t) USIZE32="u_int32_t";;
+esac
+
+case 8 in
+     $ac_cv_sizeof_int64_t) SIZE64="int64_t";;
+     $ac_cv_sizeof_int) SIZE64="int";;
+     $ac_cv_sizeof_long) SIZE64="long";;
+     $ac_cv_sizeof_long_long) SIZE64="long long";;
+esac
+
+if test -z "$SIZE16"; then
+        AC_MSG_ERROR(No 16 bit type found on this platform!)
+fi
+if test -z "$USIZE16"; then
+        AC_MSG_ERROR(No unsigned 16 bit type found on this platform!)
+fi
+if test -z "$SIZE32"; then
+        AC_MSG_ERROR(No 32 bit type found on this platform!)
+fi
+if test -z "$USIZE32"; then
+        AC_MSG_ERROR(No unsigned 32 bit type found on this platform!)
+fi
+if test -z "$SIZE64"; then
+        AC_MSG_WARN(No 64 bit type found on this platform!)
+fi
+
+dnl Checks for library functions.
+AC_FUNC_MEMCMP
+
+dnl Make substitutions
+
+AC_SUBST(LIBTOOL_DEPS)
+AC_SUBST(INCLUDE_INTTYPES_H)
+AC_SUBST(INCLUDE_STDINT_H)
+AC_SUBST(INCLUDE_SYS_TYPES_H)
+AC_SUBST(SIZE16)
+AC_SUBST(USIZE16)
+AC_SUBST(SIZE32)
+AC_SUBST(USIZE32)
+AC_SUBST(SIZE64)
+AC_SUBST(OPT)
+AC_SUBST(LIBS)
+AC_SUBST(DEBUG)
+AC_SUBST(CFLAGS)
+AC_SUBST(PROFILE)
+
+
+AC_CONFIG_FILES([
+Makefile
+src/Makefile
+doc/Makefile doc/libogg/Makefile
+include/Makefile include/ogg/Makefile include/ogg/config_types.h
+libogg.spec
+ogg.pc
+ogg-uninstalled.pc
+])
+AC_CONFIG_HEADERS([config.h])
+
+AC_OUTPUT

+ 791 - 0
audio/windows/libogg-1.3.3/depcomp

@@ -0,0 +1,791 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2013-05-30.07; # UTC
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+  '')
+    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+    exit 1;
+    ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by 'PROGRAMS ARGS'.
+  object      Object file output by 'PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputting dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'.  Note that this directory component will
+# be either empty or ending with a '/' character.  This is deliberate.
+set_dir_from ()
+{
+  case $1 in
+    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+      *) dir=;;
+  esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+  echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+  # If the compiler actually managed to produce a dependency file,
+  # post-process it.
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form 'foo.o: dependency.h'.
+    # Do two passes, one to just change these to
+    #   $object: dependency.h
+    # and one to simply output
+    #   dependency.h:
+    # which is needed to avoid the deleted-header problem.
+    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+    } > "$depfile"
+    rm -f "$tmpdepfile"
+  else
+    make_dummy_depfile
+  fi
+}
+
+# A tabulation character.
+tab='	'
+# A newline character.
+nl='
+'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+  # This is just like dashmstdout with a different argument.
+  dashmflag=-xM
+  depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+  # This is just like msvisualcpp but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+  # This is just like msvc7 but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+  gccflag=-qmakedep=gcc,-MF
+  depmode=gcc
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).  Also, it might not be
+##   supported by the other compilers which use the 'gcc' depmode.
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The second -e expression handles DOS-style file names with drive
+  # letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the "deleted header file" problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+## Some versions of gcc put a space before the ':'.  On the theory
+## that the space means something, we add a space to the output as
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like '#:fec' to the end of the
+    # dependency line.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+      | tr "$nl" ' ' >> "$depfile"
+    echo >> "$depfile"
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+      >> "$depfile"
+  else
+    make_dummy_depfile
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+xlc)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts '$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  set_dir_from "$object"
+  set_base_from "$object"
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  aix_post_process_depfile
+  ;;
+
+tcc)
+  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+  # FIXME: That version still under development at the moment of writing.
+  #        Make that this statement remains true also for stable, released
+  #        versions.
+  # It will wrap lines (doesn't matter whether long or short) with a
+  # trailing '\', as in:
+  #
+  #   foo.o : \
+  #    foo.c \
+  #    foo.h \
+  #
+  # It will put a trailing '\' even on the last line, and will use leading
+  # spaces rather than leading tabs (at least since its commit 0394caf7
+  # "Emit spaces for -MD").
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+  # We have to change lines of the first kind to '$object: \'.
+  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+  # And for each line of the second kind, we have to emit a 'dep.h:'
+  # dummy dependency, to avoid the deleted-header problem.
+  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file.  A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+  # Portland's C compiler understands '-MD'.
+  # Will always output deps to 'file.d' where file is the root name of the
+  # source file under compilation, even if file resides in a subdirectory.
+  # The object file name does not affect the name of the '.d' file.
+  # pgcc 10.2 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using '\' :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+  set_dir_from "$object"
+  # Use the source, not the object, to determine the base name, since
+  # that's sadly what pgcc will do too.
+  set_base_from "$source"
+  tmpdepfile=$base.d
+
+  # For projects that build the same source file twice into different object
+  # files, the pgcc approach of using the *source* file root name can cause
+  # problems in parallel builds.  Use a locking strategy to avoid stomping on
+  # the same $tmpdepfile.
+  lockdir=$base.d-lock
+  trap "
+    echo '$0: caught signal, cleaning up...' >&2
+    rmdir '$lockdir'
+    exit 1
+  " 1 2 13 15
+  numtries=100
+  i=$numtries
+  while test $i -gt 0; do
+    # mkdir is a portable test-and-set.
+    if mkdir "$lockdir" 2>/dev/null; then
+      # This process acquired the lock.
+      "$@" -MD
+      stat=$?
+      # Release the lock.
+      rmdir "$lockdir"
+      break
+    else
+      # If the lock is being held by a different process, wait
+      # until the winning process is done or we timeout.
+      while test -d "$lockdir" && test $i -gt 0; do
+        sleep 1
+        i=`expr $i - 1`
+      done
+    fi
+    i=`expr $i - 1`
+  done
+  trap - 1 2 13 15
+  if test $i -le 0; then
+    echo "$0: failed to acquire lock after $numtries attempts" >&2
+    echo "$0: check lockdir '$lockdir'" >&2
+    exit 1
+  fi
+
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  set_dir_from  "$object"
+  set_base_from "$object"
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add 'dependent.h:' lines.
+    sed -ne '2,${
+               s/^ *//
+               s/ \\*$//
+               s/$/:/
+               p
+             }' "$tmpdepfile" >> "$depfile"
+  else
+    make_dummy_depfile
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+  # The Tru64 compiler uses -MD to generate dependencies as a side
+  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+  # dependencies in 'foo.d' instead, so we check for that too.
+  # Subdirectories are respected.
+  set_dir_from  "$object"
+  set_base_from "$object"
+
+  if test "$libtool" = yes; then
+    # Libtool generates 2 separate objects for the 2 libraries.  These
+    # two compilations output dependencies in $dir.libs/$base.o.d and
+    # in $dir$base.o.d.  We have to check for both files, because
+    # one of the two compilations can be disabled.  We should prefer
+    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+    # automatically cleaned when .libs/ is deleted, while ignoring
+    # the former would cause a distcleancheck panic.
+    tmpdepfile1=$dir$base.o.d          # libtool 1.5
+    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
+    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
+    "$@" -Wc,-MD
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    tmpdepfile3=$dir$base.d
+    "$@" -MD
+  fi
+
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  # Same post-processing that is required for AIX mode.
+  aix_post_process_depfile
+  ;;
+
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/'"$tab"'/
+  G
+  p
+}' >> "$depfile"
+  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for ':'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
+  "$@" $dashmflag |
+    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this sed invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process the last invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed '1,2d' "$tmpdepfile" \
+    | tr ' ' "$nl" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E \
+    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+    | sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+        set fnord "$@"
+        shift
+        shift
+        ;;
+    *)
+        set fnord "$@" "$arg"
+        shift
+        shift
+        ;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+  echo "$tab" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:

+ 9 - 0
audio/windows/libogg-1.3.3/doc/Makefile.am

@@ -0,0 +1,9 @@
+## Process this with automake to create Makefile.in
+
+SUBDIRS = libogg
+
+dist_html_DATA = framing.html index.html oggstream.html ogg-multiplex.html \
+	fish_xiph_org.png multiplex1.png packets.png pages.png stream.png \
+	vorbisword2.png white-ogg.png white-xifish.png \
+	rfc3533.txt rfc5334.txt skeleton.html
+

+ 689 - 0
audio/windows/libogg-1.3.3/doc/Makefile.in

@@ -0,0 +1,689 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(dist_html_DATA) \
+	$(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(htmldir)"
+DATA = $(dist_html_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INCLUDE_INTTYPES_H = @INCLUDE_INTTYPES_H@
+INCLUDE_STDINT_H = @INCLUDE_STDINT_H@
+INCLUDE_SYS_TYPES_H = @INCLUDE_SYS_TYPES_H@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LIB_AGE = @LIB_AGE@
+LIB_CURRENT = @LIB_CURRENT@
+LIB_REVISION = @LIB_REVISION@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OPT = @OPT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIZE16 = @SIZE16@
+SIZE32 = @SIZE32@
+SIZE64 = @SIZE64@
+STRIP = @STRIP@
+USIZE16 = @USIZE16@
+USIZE32 = @USIZE32@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = libogg
+dist_html_DATA = framing.html index.html oggstream.html ogg-multiplex.html \
+	fish_xiph_org.png multiplex1.png packets.png pages.png stream.png \
+	vorbisword2.png white-ogg.png white-xifish.png \
+	rfc3533.txt rfc5334.txt skeleton.html
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-dist_htmlDATA: $(dist_html_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_html_DATA)'; test -n "$(htmldir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
+	done
+
+uninstall-dist_htmlDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_html_DATA)'; test -n "$(htmldir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(htmldir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(htmldir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-dist_htmlDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-dist_htmlDATA
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am \
+	install-dist_htmlDATA install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+	uninstall-am uninstall-dist_htmlDATA
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

BIN
audio/windows/libogg-1.3.3/doc/fish_xiph_org.png


+ 429 - 0
audio/windows/libogg-1.3.3/doc/framing.html

@@ -0,0 +1,429 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Ogg logical bitstream framing</h1>
+
+<h2>Ogg bitstreams</h2>
+
+<p>The Ogg transport bitstream is designed to provide framing, error
+protection and seeking structure for higher-level codec streams that
+consist of raw, unencapsulated data packets, such as the Vorbis audio
+codec or Theora video codec.</p>
+
+<h2>Application example: Vorbis</h2>
+
+<p>Vorbis encodes short-time blocks of PCM data into raw packets of
+bit-packed data. These raw packets may be used directly by transport
+mechanisms that provide their own framing and packet-separation
+mechanisms (such as UDP datagrams). For stream based storage (such as
+files) and transport (such as TCP streams or pipes), Vorbis uses the
+Ogg bitstream format to provide framing/sync, sync recapture
+after error, landmarks during seeking, and enough information to
+properly separate data back into packets at the original packet
+boundaries without relying on decoding to find packet boundaries.</p>
+
+<h2>Design constraints for Ogg bitstreams</h2>
+
+<ol>
+<li>True streaming; we must not need to seek to build a 100%
+  complete bitstream.</li>
+<li>Use no more than approximately 1-2% of bitstream bandwidth for
+  packet boundary marking, high-level framing, sync and seeking.</li>
+<li>Specification of absolute position within the original sample
+  stream.</li>
+<li>Simple mechanism to ease limited editing, such as a simplified
+  concatenation mechanism.</li>
+<li>Detection of corruption, recapture after error and direct, random
+  access to data at arbitrary positions in the bitstream.</li>
+</ol>
+
+<h2>Logical and Physical Bitstreams</h2>
+
+<p>A <em>logical</em> Ogg bitstream is a contiguous stream of
+sequential pages belonging only to the logical bitstream. A
+<em>physical</em> Ogg bitstream is constructed from one or more
+than one logical Ogg bitstream (the simplest physical bitstream
+is simply a single logical bitstream). We describe below the exact
+formatting of an Ogg logical bitstream. Combining logical
+bitstreams into more complex physical bitstreams is described in the
+<a href="oggstream.html">Ogg bitstream overview</a>. The exact
+mapping of raw Vorbis packets into a valid Ogg Vorbis physical
+bitstream is described in the Vorbis I Specification.</p>
+
+<h2>Bitstream structure</h2>
+
+<p>An Ogg stream is structured by dividing incoming packets into
+segments of up to 255 bytes and then wrapping a group of contiguous
+packet segments into a variable length page preceded by a page
+header. Both the header size and page size are variable; the page
+header contains sizing information and checksum data to determine
+header/page size and data integrity.</p>
+
+<p>The bitstream is captured (or recaptured) by looking for the beginning
+of a page, specifically the capture pattern. Once the capture pattern
+is found, the decoder verifies page sync and integrity by computing
+and comparing the checksum. At that point, the decoder can extract the
+packets themselves.</p>
+
+<h3>Packet segmentation</h3>
+
+<p>Packets are logically divided into multiple segments before encoding
+into a page. Note that the segmentation and fragmentation process is a
+logical one; it's used to compute page header values and the original
+page data need not be disturbed, even when a packet spans page
+boundaries.</p>
+
+<p>The raw packet is logically divided into [n] 255 byte segments and a
+last fractional segment of &lt; 255 bytes. A packet size may well
+consist only of the trailing fractional segment, and a fractional
+segment may be zero length. These values, called "lacing values" are
+then saved and placed into the header segment table.</p>
+
+<p>An example should make the basic concept clear:</p>
+
+<pre>
+<tt>
+raw packet:
+  ___________________________________________
+ |______________packet data__________________| 753 bytes
+
+lacing values for page header segment table: 255,255,243
+</tt>
+</pre>
+
+<p>We simply add the lacing values for the total size; the last lacing
+value for a packet is always the value that is less than 255. Note
+that this encoding both avoids imposing a maximum packet size as well
+as imposing minimum overhead on small packets (as opposed to, eg,
+simply using two bytes at the head of every packet and having a max
+packet size of 32k. Small packets (&lt;255, the typical case) are
+penalized with twice the segmentation overhead). Using the lacing
+values as suggested, small packets see the minimum possible
+byte-aligned overhead (1 byte) and large packets, over 512 bytes or
+so, see a fairly constant ~.5% overhead on encoding space.</p>
+
+<p>Note that a lacing value of 255 implies that a second lacing value
+follows in the packet, and a value of &lt; 255 marks the end of the
+packet after that many additional bytes. A packet of 255 bytes (or a
+multiple of 255 bytes) is terminated by a lacing value of 0:</p>
+
+<pre><tt>
+raw packet:
+  _______________________________
+ |________packet data____________|          255 bytes
+
+lacing values: 255, 0
+</tt></pre>
+
+<p>Note also that a 'nil' (zero length) packet is not an error; it
+consists of nothing more than a lacing value of zero in the header.</p>
+
+<h3>Packets spanning pages</h3>
+
+<p>Packets are not restricted to beginning and ending within a page,
+although individual segments are, by definition, required to do so.
+Packets are not restricted to a maximum size, although excessively
+large packets in the data stream are discouraged.</p>
+
+<p>After segmenting a packet, the encoder may decide not to place all the
+resulting segments into the current page; to do so, the encoder places
+the lacing values of the segments it wishes to belong to the current
+page into the current segment table, then finishes the page. The next
+page is begun with the first value in the segment table belonging to
+the next packet segment, thus continuing the packet (data in the
+packet body must also correspond properly to the lacing values in the
+spanned pages. The segment data in the first packet corresponding to
+the lacing values of the first page belong in that page; packet
+segments listed in the segment table of the following page must begin
+the page body of the subsequent page).</p>
+
+<p>The last mechanic to spanning a page boundary is to set the header
+flag in the new page to indicate that the first lacing value in the
+segment table continues rather than begins a packet; a header flag of
+0x01 is set to indicate a continued packet. Although mandatory, it
+is not actually algorithmically necessary; one could inspect the
+preceding segment table to determine if the packet is new or
+continued. Adding the information to the packet_header flag allows a
+simpler design (with no overhead) that needs only inspect the current
+page header after frame capture. This also allows faster error
+recovery in the event that the packet originates in a corrupt
+preceding page, implying that the previous page's segment table
+cannot be trusted.</p>
+
+<p>Note that a packet can span an arbitrary number of pages; the above
+spanning process is repeated for each spanned page boundary. Also a
+'zero termination' on a packet size that is an even multiple of 255
+must appear even if the lacing value appears in the next page as a
+zero-length continuation of the current packet. The header flag
+should be set to 0x01 to indicate that the packet spanned, even though
+the span is a nil case as far as data is concerned.</p>
+
+<p>The encoding looks odd, but is properly optimized for speed and the
+expected case of the majority of packets being between 50 and 200
+bytes (note that it is designed such that packets of wildly different
+sizes can be handled within the model; placing packet size
+restrictions on the encoder would have only slightly simplified design
+in page generation and increased overall encoder complexity).</p>
+
+<p>The main point behind tracking individual packets (and packet
+segments) is to allow more flexible encoding tricks that requiring
+explicit knowledge of packet size. An example is simple bandwidth
+limiting, implemented by simply truncating packets in the nominal case
+if the packet is arranged so that the least sensitive portion of the
+data comes last.</p>
+
+<a name="page_header"></a>
+<h3>Page header</h3>
+
+<p>The headering mechanism is designed to avoid copying and re-assembly
+of the packet data (ie, making the packet segmentation process a
+logical one); the header can be generated directly from incoming
+packet data. The encoder buffers packet data until it finishes a
+complete page at which point it writes the header followed by the
+buffered packet segments.</p>
+
+<h4>capture_pattern</h4>
+
+<p>A header begins with a capture pattern that simplifies identifying
+pages; once the decoder has found the capture pattern it can do a more
+intensive job of verifying that it has in fact found a page boundary
+(as opposed to an inadvertent coincidence in the byte stream).</p>
+
+<pre><tt>
+ byte value
+
+  0  0x4f 'O'
+  1  0x67 'g'
+  2  0x67 'g'
+  3  0x53 'S'  
+</tt></pre>
+
+<h4>stream_structure_version</h4>
+
+<p>The capture pattern is followed by the stream structure revision:</p>
+
+<pre><tt>
+ byte value
+
+  4  0x00
+</tt></pre>
+ 
+<h4>header_type_flag</h4>
+  
+<p>The header type flag identifies this page's context in the bitstream:</p>
+
+<pre><tt>
+ byte value
+
+  5  bitflags: 0x01: unset = fresh packet
+	               set = continued packet
+	       0x02: unset = not first page of logical bitstream
+                       set = first page of logical bitstream (bos)
+	       0x04: unset = not last page of logical bitstream
+                       set = last page of logical bitstream (eos)
+</tt></pre>
+
+<h4>absolute granule position</h4>
+
+<p>(This is packed in the same way the rest of Ogg data is packed; LSb
+of LSB first. Note that the 'position' data specifies a 'sample'
+number (eg, in a CD quality sample is four octets, 16 bits for left
+and 16 bits for right; in video it would likely be the frame number.
+It is up to the specific codec in use to define the semantic meaning
+of the granule position value). The position specified is the total
+samples encoded after including all packets finished on this page
+(packets begun on this page but continuing on to the next page do not
+count). The rationale here is that the position specified in the
+frame header of the last page tells how long the data coded by the
+bitstream is. A truncated stream will still return the proper number
+of samples that can be decoded fully.</p>
+
+<p>A special value of '-1' (in two's complement) indicates that no packets
+finish on this page.</p>
+
+<pre><tt>
+ byte value
+
+  6  0xXX LSB
+  7  0xXX
+  8  0xXX
+  9  0xXX
+ 10  0xXX
+ 11  0xXX
+ 12  0xXX
+ 13  0xXX MSB
+</tt></pre>
+
+<h4>stream serial number</h4>
+ 
+<p>Ogg allows for separate logical bitstreams to be mixed at page
+granularity in a physical bitstream. The most common case would be
+sequential arrangement, but it is possible to interleave pages for
+two separate bitstreams to be decoded concurrently. The serial
+number is the means by which pages physical pages are associated with
+a particular logical stream. Each logical stream must have a unique
+serial number within a physical stream:</p>
+
+<pre><tt>
+ byte value
+
+ 14  0xXX LSB
+ 15  0xXX
+ 16  0xXX
+ 17  0xXX MSB
+</tt></pre>
+
+<h4>page sequence no</h4>
+
+<p>Page counter; lets us know if a page is lost (useful where packets
+span page boundaries).</p>
+
+<pre><tt>
+ byte value
+
+ 18  0xXX LSB
+ 19  0xXX
+ 20  0xXX
+ 21  0xXX MSB
+</tt></pre>
+
+<h4>page checksum</h4>
+     
+<p>32 bit CRC value (direct algorithm, initial val and final XOR = 0,
+generator polynomial=0x04c11db7). The value is computed over the
+entire header (with the CRC field in the header set to zero) and then
+continued over the page. The CRC field is then filled with the
+computed value.</p>
+
+<p>(A thorough discussion of CRC algorithms can be found in <a
+href="http://www.ross.net/crc/download/crc_v3.txt">"A
+Painless Guide to CRC Error Detection Algorithms"</a> by Ross
+Williams <a href="mailto:ross@ross.net">ross@ross.net</a>.)</p>
+
+<pre><tt>
+ byte value
+
+ 22  0xXX LSB
+ 23  0xXX
+ 24  0xXX
+ 25  0xXX MSB
+</tt></pre>
+
+<h4>page_segments</h4>
+
+<p>The number of segment entries to appear in the segment table. The
+maximum number of 255 segments (255 bytes each) sets the maximum
+possible physical page size at 65307 bytes or just under 64kB (thus
+we know that a header corrupted so as destroy sizing/alignment
+information will not cause a runaway bitstream. We'll read in the
+page according to the corrupted size information that's guaranteed to
+be a reasonable size regardless, notice the checksum mismatch, drop
+sync and then look for recapture).</p>
+
+<pre><tt>
+ byte value
+
+ 26 0x00-0xff (0-255)
+</tt></pre>
+
+<h4>segment_table (containing packet lacing values)</h4>
+
+<p>The lacing values for each packet segment physically appearing in
+this page are listed in contiguous order.</p>
+
+<pre><tt>
+ byte value
+
+ 27 0x00-0xff (0-255)
+ [...]
+ n  0x00-0xff (0-255, n=page_segments+26)
+</tt></pre>
+
+<p>Total page size is calculated directly from the known header size and
+lacing values in the segment table. Packet data segments follow
+immediately after the header.</p>
+
+<p>Page headers typically impose a flat .25-.5% space overhead assuming
+nominal ~8k page sizes. The segmentation table needed for exact
+packet recovery in the streaming layer adds approximately .5-1%
+nominal assuming expected encoder behavior in the 44.1kHz, 128kbps
+stereo encodings.</p>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2005 Xiph.Org. All rights reserved.
+</div>
+
+</body>
+</html>

+ 105 - 0
audio/windows/libogg-1.3.3/doc/index.html

@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Ogg Documentation</h1>
+
+<h2>Ogg programming documentation</h2>
+
+<ul>
+<li><a href="libogg/index.html">Programming with ogg</a></li>
+</ul>
+
+<h2>Ogg bitstream documentation</h2>
+
+<ul>
+<li><a href="oggstream.html">Ogg bitstream overview</a></li>
+<li><a href="framing.html">Ogg bitstream framing</a></li>
+<li><a href="ogg-multiplex.html">Ogg multi-stream multiplexing</a></li>
+<li><a href="skeleton.html">The Ogg Skeleton Metadata Bitstream</a></li>
+</ul>
+
+<h2>RFC documentation</h2>
+
+<ul>
+<li><a href="rfc3533.txt">rfc3533: The Ogg Encapsulation Format Version 0</a></li>
+<li><a href="rfc5334.txt">rfc5334: Ogg Media Types</a></li>
+</ul>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2010 Xiph.Org. All rights reserved.
+</div>
+
+</body>
+</html>

+ 39 - 0
audio/windows/libogg-1.3.3/doc/libogg/Makefile.am

@@ -0,0 +1,39 @@
+## Process this file with automake to produce Makefile.in
+
+apidocdir = $(htmldir)/libogg
+
+dist_apidoc_DATA = bitpacking.html datastructures.html decoding.html encoding.html\
+	general.html index.html ogg_iovec_t.html ogg_packet.html ogg_packet_clear.html\
+	ogg_page.html ogg_page_bos.html ogg_page_checksum_set.html\
+	ogg_page_continued.html ogg_page_eos.html ogg_page_granulepos.html\
+	ogg_page_packets.html ogg_page_pageno.html ogg_page_serialno.html\
+	ogg_page_version.html ogg_stream_check.html ogg_stream_clear.html ogg_stream_destroy.html\
+	ogg_stream_eos.html ogg_stream_flush.html ogg_stream_flush_fill.html ogg_stream_init.html\
+	ogg_stream_iovecin.html ogg_stream_packetin.html ogg_stream_packetout.html\
+	ogg_stream_packetpeek.html ogg_stream_pagein.html\
+	ogg_stream_pageout.html ogg_stream_pageout_fill.html ogg_stream_reset.html\
+	ogg_stream_reset_serialno.html ogg_stream_state.html\
+	ogg_sync_buffer.html ogg_sync_check.html ogg_sync_clear.html ogg_sync_destroy.html\
+	ogg_sync_init.html ogg_sync_pageout.html ogg_sync_pageseek.html\
+	ogg_sync_reset.html ogg_sync_state.html ogg_sync_wrote.html\
+	oggpack_adv.html oggpack_adv1.html oggpack_bits.html\
+	oggpack_buffer.html oggpack_bytes.html oggpack_get_buffer.html\
+	oggpack_look.html oggpack_look1.html oggpack_read.html\
+	oggpack_read1.html oggpack_readinit.html oggpack_reset.html\
+	oggpack_write.html oggpack_writealign.html oggpack_writecheck.html oggpack_writeclear.html\
+	oggpack_writecopy.html oggpack_writeinit.html oggpack_writetrunc.html\
+	overview.html reference.html style.css
+
+update-doc-version:
+	@YEAR=$$(date +%Y); DAY=$$(date +%Y%m%d);					\
+	for f in $(srcdir)/*.html; do							\
+		sed -e "s/2000-[0-9]\{4\} Xiph.Org/2000-$$YEAR Xiph.Org/g"		\
+		    -e "s/libogg release [0-9. -]\+/libogg release $(VERSION) - $$DAY/g"\
+			< $$f > $$f.tmp;						\
+		if diff -q $$f $$f.tmp > /dev/null; then				\
+			rm $$f.tmp;							\
+		else									\
+			mv $$f.tmp $$f;							\
+		fi;									\
+	done;
+

+ 539 - 0
audio/windows/libogg-1.3.3/doc/libogg/Makefile.in

@@ -0,0 +1,539 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc/libogg
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(dist_apidoc_DATA) \
+	$(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(apidocdir)"
+DATA = $(dist_apidoc_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INCLUDE_INTTYPES_H = @INCLUDE_INTTYPES_H@
+INCLUDE_STDINT_H = @INCLUDE_STDINT_H@
+INCLUDE_SYS_TYPES_H = @INCLUDE_SYS_TYPES_H@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LIB_AGE = @LIB_AGE@
+LIB_CURRENT = @LIB_CURRENT@
+LIB_REVISION = @LIB_REVISION@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OPT = @OPT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIZE16 = @SIZE16@
+SIZE32 = @SIZE32@
+SIZE64 = @SIZE64@
+STRIP = @STRIP@
+USIZE16 = @USIZE16@
+USIZE32 = @USIZE32@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+apidocdir = $(htmldir)/libogg
+dist_apidoc_DATA = bitpacking.html datastructures.html decoding.html encoding.html\
+	general.html index.html ogg_iovec_t.html ogg_packet.html ogg_packet_clear.html\
+	ogg_page.html ogg_page_bos.html ogg_page_checksum_set.html\
+	ogg_page_continued.html ogg_page_eos.html ogg_page_granulepos.html\
+	ogg_page_packets.html ogg_page_pageno.html ogg_page_serialno.html\
+	ogg_page_version.html ogg_stream_check.html ogg_stream_clear.html ogg_stream_destroy.html\
+	ogg_stream_eos.html ogg_stream_flush.html ogg_stream_flush_fill.html ogg_stream_init.html\
+	ogg_stream_iovecin.html ogg_stream_packetin.html ogg_stream_packetout.html\
+	ogg_stream_packetpeek.html ogg_stream_pagein.html\
+	ogg_stream_pageout.html ogg_stream_pageout_fill.html ogg_stream_reset.html\
+	ogg_stream_reset_serialno.html ogg_stream_state.html\
+	ogg_sync_buffer.html ogg_sync_check.html ogg_sync_clear.html ogg_sync_destroy.html\
+	ogg_sync_init.html ogg_sync_pageout.html ogg_sync_pageseek.html\
+	ogg_sync_reset.html ogg_sync_state.html ogg_sync_wrote.html\
+	oggpack_adv.html oggpack_adv1.html oggpack_bits.html\
+	oggpack_buffer.html oggpack_bytes.html oggpack_get_buffer.html\
+	oggpack_look.html oggpack_look1.html oggpack_read.html\
+	oggpack_read1.html oggpack_readinit.html oggpack_reset.html\
+	oggpack_write.html oggpack_writealign.html oggpack_writecheck.html oggpack_writeclear.html\
+	oggpack_writecopy.html oggpack_writeinit.html oggpack_writetrunc.html\
+	overview.html reference.html style.css
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/libogg/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu doc/libogg/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-dist_apidocDATA: $(dist_apidoc_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_apidoc_DATA)'; test -n "$(apidocdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(apidocdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(apidocdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(apidocdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(apidocdir)" || exit $$?; \
+	done
+
+uninstall-dist_apidocDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_apidoc_DATA)'; test -n "$(apidocdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(apidocdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(apidocdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_apidocDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-dist_apidocDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	cscopelist-am ctags-am distclean distclean-generic \
+	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am \
+	install-dist_apidocDATA install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+	uninstall-am uninstall-dist_apidocDATA
+
+.PRECIOUS: Makefile
+
+
+update-doc-version:
+	@YEAR=$$(date +%Y); DAY=$$(date +%Y%m%d);					\
+	for f in $(srcdir)/*.html; do							\
+		sed -e "s/2000-[0-9]\{4\} Xiph.Org/2000-$$YEAR Xiph.Org/g"		\
+		    -e "s/libogg release [0-9. -]\+/libogg release $(VERSION) - $$DAY/g"\
+			< $$f > $$f.tmp;						\
+		if diff -q $$f $$f.tmp > /dev/null; then				\
+			rm $$f.tmp;							\
+		else									\
+			mv $$f.tmp $$f;							\
+		fi;									\
+	done;
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

+ 103 - 0
audio/windows/libogg-1.3.3/doc/libogg/bitpacking.html

@@ -0,0 +1,103 @@
+<html>
+
+<head>
+<title>libogg - Bitpacking Functions</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>Bitpacking Functions</h1>
+<p>Libogg contains a basic bitpacking library that is useful for manipulating data within a buffer.
+<p>
+All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
+<p>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td><b>function</b></td>
+	<td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_writeinit.html">oggpack_writeinit</a></td>
+	<td>Initializes a buffer for writing using this bitpacking library.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_writecheck.html">oggpack_writecheck</a></td>
+	<td>Asynchronously checks error status of bitpacker write buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_reset.html">oggpack_reset</a></td>
+	<td>Clears and resets the buffer to the initial position.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_writeclear.html">oggpack_writeclear</a></td>
+	<td>Frees the memory used by the buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_readinit.html">oggpack_readinit</a></td>
+	<td>Initializes a buffer for reading using this bitpacking library.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_write.html">oggpack_write</a></td>
+	<td>Writes bytes to the specified location within the buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_look.html">oggpack_look</a></td>
+	<td>Look at a specified number of bits, <=32, without advancing the location pointer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_look1.html">oggpack_look1</a></td>
+	<td>Looks at one bit without advancing the location pointer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_adv.html">oggpack_adv</a></td>
+	<td>Advances the location pointer by a specified number of bits.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_adv1.html">oggpack_adv1</a></td>
+	<td>Advances the location pointer by one bit.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_read.html">oggpack_read</a></td>
+	<td>Reads a specified number of bits from the buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_read1.html">oggpack_read1</a></td>
+	<td>Reads one bit from the buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_bytes.html">oggpack_bytes</a></td>
+	<td>Returns the total number of bytes contained within the buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_bits.html">oggpack_bits</a></td>
+	<td>Returns the total number of bits contained within the buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_get_buffer.html">oggpack_get_buffer</a></td>
+	<td>Returns a pointer to the buffer encapsulated within the <a href="oggpack_buffer.html">oggpack_buffer</a> struct.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>

+ 59 - 0
audio/windows/libogg-1.3.3/doc/libogg/datastructures.html

@@ -0,0 +1,59 @@
+<html>
+
+<head>
+<title>libogg - Base Data Structures</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>Base Data Structures</h1>
+<p>Libogg uses several data structures to hold data and state information.
+<p>
+All the <b>libogg</b> specific data structures are declared in "ogg/ogg.h".
+<p>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td><b>datatype</b></td>
+	<td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page.html">ogg_page</a></td>
+	<td>This structure encapsulates data into one ogg bitstream page.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_state.html">ogg_stream_state</a></td>
+	<td>This structure contains current encode/decode data for a logical bitstream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_packet.html">ogg_packet</a></td>
+	<td>This structure encapsulates the data and metadata for a single Ogg packet.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_state.html">ogg_sync_state</a></td>
+	<td>Contains bitstream synchronization information.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>

+ 104 - 0
audio/windows/libogg-1.3.3/doc/libogg/decoding.html

@@ -0,0 +1,104 @@
+<html>
+
+<head>
+<title>libogg - Decoding</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>Decoding</h1>
+<p>Libogg contains a set of functions used in the decoding process.
+<p>
+All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
+<p>
+<p>Decoding is based around the ogg synchronization layer.  The <a href="ogg_sync_state.html">ogg_sync_state</a> struct coordinates between incoming data and the decoder.  We read data into the synchronization layer, submit the data to the stream, and output raw packets to the decoder.
+<p>Decoding through the Ogg layer follows a specific logical sequence.  A read loop follows these logical steps:
+<ul>
+<li>Expose a buffer using <a href="ogg_sync_buffer.html">ogg_sync_buffer()</a>.
+<li>Read data into the buffer, using fread() or a similar function.
+<li>Call <a href="ogg_sync_wrote.html">ogg_sync_wrote()</a> to tell the synchronization layer how many bytes you wrote into the buffer.
+<li>Write out the data using <a href="ogg_sync_pageout.html">ogg_sync_pageout</a>.
+<li>Submit the completed page to the streaming layer with <a href="ogg_stream_pagein.html">ogg_stream_pagein</a>.
+<li>Output a packet of data to the codec-specific decoding layer using <a href="ogg_stream_packetout.html">ogg_stream_packetout</a>.
+</ul>
+<p>In practice, streams are more complex, and Ogg also must handle headers, incomplete or dropped pages, and other errors in input.
+<br><br>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td><b>function</b></td>
+	<td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_init.html">ogg_sync_init</a></td>
+	<td>Initializes an Ogg bitstream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_clear.html">ogg_sync_clear</a></td>
+	<td>Clears the status information from the synchronization struct.<td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_reset.html">ogg_sync_reset</a></td>
+	<td>Resets the synchronization status to initial values.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_destroy.html">ogg_sync_destroy</a></td>
+	<td>Frees the synchronization struct.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_check.html">ogg_sync_check</a></td>
+	<td>Check for asynchronous errors.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_buffer.html">ogg_sync_buffer</a></td>
+	<td>Exposes a buffer from the synchronization layer in order to read data.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_wrote.html">ogg_sync_wrote</a></td>
+	<td>Tells the synchronization layer how many bytes were written into the buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_pageseek.html">ogg_sync_pageseek</a></td>
+	<td>Finds the borders of pages and resynchronizes the stream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_pageout.html">ogg_sync_pageout</a></td>
+	<td>Outputs a page from the synchronization layer.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_pagein.html">ogg_stream_pagein</a></td>
+	<td>Submits a complete page to the stream layer.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_packetout.html">ogg_stream_packetout</a></td>
+	<td>Outputs a packet to the codec-specific decoding engine.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_packetpeek.html">ogg_stream_packetpeek</a></td>
+	<td>Provides access to the next packet in the bitstream without
+advancing decoding.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>

+ 76 - 0
audio/windows/libogg-1.3.3/doc/libogg/encoding.html

@@ -0,0 +1,76 @@
+<html>
+
+<head>
+<title>libogg - Encoding</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>Encoding</h1>
+<p>Libogg contains a set of functions used in the encoding process.
+<p>
+All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
+<p>
+<p>When encoding, the encoding engine will output raw packets which must be placed into an Ogg bitstream.
+<p>Raw packets are inserted into the stream, and an <a href="ogg_page.html">ogg_page</a> is output when enough packets have been written to create a full page.  The pages output are pointers to buffered packet segments, and can then be written out and saved as an ogg stream.
+<p>There are a couple of basic steps:
+<ul>
+<li>Use the encoding engine to produce a raw packet of data.
+<li>Call <a href="ogg_stream_packetin.html">ogg_stream_packetin</a> to submit a raw packet to the stream.
+<li>Use <a href="ogg_stream_pageout.html">ogg_stream_pageout</a> to output a page, if enough data has been submitted.  Otherwise, continue submitting data.
+</ul>
+<br><br>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td><b>function</b></td>
+	<td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_packetin.html">ogg_stream_packetin</a></td>
+	<td>Submits a raw packet to the streaming layer, so that it can be formed into a page.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_iovecin.html">ogg_stream_iovecin</a></td>
+	<td>iovec version of ogg_stream_packetin() above.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_pageout.html">ogg_stream_pageout</a></td>
+	<td>Outputs a completed page if the stream contains enough packets to form a full page.<td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_pageout_fill.html">ogg_stream_pageout_fill</a></td>
+	<td>Similar to ogg_stream_pageout(), but specifies a page spill threshold in bytes.
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_flush.html">ogg_stream_flush</a></td>
+	<td>Forces any remaining packets in the stream to be returned as a page of any size.<td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_flush_fill.html">ogg_stream_flush_fill</a></td>
+	<td>Similar to ogg_stream_flush(), but specifies a page spill threshold in bytes.<td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>

+ 109 - 0
audio/windows/libogg-1.3.3/doc/libogg/general.html

@@ -0,0 +1,109 @@
+<html>
+
+<head>
+<title>libogg - General Functions</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>General Functions</h1>
+<p>Libogg contains several functions which are generally useful when using Ogg streaming, whether encoding or decoding.
+<p>
+All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
+<p>
+<p>These functions can be used to manipulate some of the basic elements of Ogg - streams and pages.  Streams and pages are important during both the encode and decode process.
+<br>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td><b>function</b></td>
+	<td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_init.html">ogg_stream_init</a></td>
+	<td>Initializes an Ogg bitstream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_clear.html">ogg_stream_clear</a></td>
+	<td>Clears the storage within the Ogg stream, but does not free the stream itself.<td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_reset.html">ogg_stream_reset</a></td>
+	<td>Resets the stream status to its initial position.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_destroy.html">ogg_stream_destroy</a></td>
+	<td>Frees the entire Ogg stream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_check.html">ogg_stream_check</a></td>
+	<td>Check for asyncronous errors.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_eos.html">ogg_stream_eos</a></td>
+	<td>Indicates whether we are at the end of the stream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_version.html">ogg_page_version</a></td>
+	<td>Returns the version of ogg_page that this stream/page uses</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_continued.html">ogg_page_continued</a></td>
+	<td>Indicates if the current page contains a continued packet from the last page.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_packets.html">ogg_page_packets</a></td>
+        <td>Indicates the number of packets contained in a page.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_bos.html">ogg_page_bos</a></td>
+	<td>Indicates if the current page is the beginning of the stream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_eos.html">ogg_page_eos</a></td>
+	<td>Indicates if the current page is the end of the stream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_granulepos.html">ogg_page_granulepos</a></td>
+	<td>Returns the precise playback location of this page.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_serialno.html">ogg_page_serialno</a></td>
+	<td>Returns the unique serial number of the logical bitstream associated with this page.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_pageno.html">ogg_page_pageno</a></td>
+	<td>Returns the sequential page number for this page.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_packet_clear.html">ogg_packet_clear</a></td>
+        <td>Clears the ogg_packet structure.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_checksum_set.html">ogg_page_checksum_set</a></td>
+        <td>Checksums an ogg_page.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>

+ 39 - 0
audio/windows/libogg-1.3.3/doc/libogg/index.html

@@ -0,0 +1,39 @@
+<html>
+
+<head>
+<title>libogg - Documentation</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>Libogg Documentation</h1>
+
+<p>
+Libogg contains necessary functionality to create, decode, and work with Ogg bitstreams.
+<p>This document explains how to use the libogg API in detail.
+<p>
+<a href="overview.html">libogg api overview</a><br>
+<a href="reference.html">libogg api reference</a><br>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>

+ 62 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_iovec_t.html

@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - datatype - ogg_iovec_t</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_iovec_t</h1>
+
+<p><i>declared in "ogg/ogg.h"</i></p>
+
+<p>
+The ogg_iovec_t struct encapsulates a length-encoded buffer.  An array
+of ogg_iovec_t is used to pass a list of buffers to functions that
+accept data in ogg_iovec_t* form.
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+typedef struct {
+  void *iov_base;
+  size_t iov_len;
+} ogg_iovec_t;
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>iov_base</i></dt>
+<dd>Pointer to the buffer data.</dd>
+<dt><i>iov_len</i></dt>
+<dd>Length of buffer data in bytes.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>

+ 75 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_packet.html

@@ -0,0 +1,75 @@
+<html>
+
+<head>
+<title>libogg - datatype - ogg_packet</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_packet</h1>
+
+<p><i>declared in "ogg/ogg.h"</i></p>
+
+<p>
+The ogg_packet struct encapsulates the data for a single raw packet of data
+and is used to transfer data between the ogg framing layer and the handling codec.
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+typedef struct {
+  unsigned char *packet;
+  long  bytes;
+  long  b_o_s;
+  long  e_o_s;
+
+  ogg_int64_t  granulepos;
+  ogg_int64_t  packetno; 
+
+} ogg_packet;
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>packet</i></dt>
+<dd>Pointer to the packet's data. This is treated as an opaque type by the ogg layer.</dd>
+<dt><i>bytes</i></dt>
+<dd>Indicates the size of the packet data in bytes.  Packets can be of arbitrary size.</dd>
+<dt><i>b_o_s</i></dt>
+<dd>Flag indicating whether this packet begins a logical bitstream.  <tt>1</tt> indicates this is the first packet, <tt>0</tt> indicates any other position in the stream.</dd>
+<dt><i>e_o_s</i></dt>
+<dd>Flag indicating whether this packet ends a bitstream.  <tt>1</tt> indicates the last packet, <tt>0</tt> indicates any other position in the stream.</dd>
+<dt><i>granulepos</i></dt>
+<dd>A number indicating the position of this packet in the decoded data. This is the last sample, frame or other unit of information ('granule') that can be completely decoded from this packet.</dd>
+<dt><i>packetno</i></dt>
+<dd>Sequential number of this packet in the ogg bitstream.<dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>

+ 64 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_packet_clear.html

@@ -0,0 +1,64 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_packet_clear</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_packet_clear</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function clears the memory used by the <a href="ogg_packet.html">ogg_packet</a> struct,
+but does not free the structure itself.
+It unconditionally frees the <i>packet</i> data buffer,
+then it zeros all structure members.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+void ogg_packet_clear(ogg_packet *op);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>op</i></dt>
+<dd>Pointer to the ogg_packet struct to be cleared.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+None.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 75 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_page.html

@@ -0,0 +1,75 @@
+<html>
+
+<head>
+<title>libogg - datatype - ogg_page</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_page</h1>
+
+<p><i>declared in "ogg/ogg.h"</i></p>
+
+<p>
+The ogg_page struct encapsulates the data for an Ogg page.
+<p>
+Ogg pages are the fundamental unit of framing and interleave in an ogg bitstream.
+They are made up of packet segments of 255 bytes each. There can be as many as
+255 packet segments per page, for a maximum page size of a little under 64 kB.
+This is not a practical limitation as the segments can be joined across
+page boundaries allowing packets of arbitrary size. In practice many
+applications will not completely fill all pages because they flush the
+accumulated packets periodically order to bound latency more tightly. 
+<p>
+<p>For a complete description of ogg pages and headers, please refer to the <a href="../framing.html">framing document</a>.
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+typedef struct {
+  unsigned char *header;
+  long           header_len;
+  unsigned char *body;
+  long           body_len;
+} ogg_page;
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>header</i></dt>
+<dd>Pointer to the page header for this page.  The exact contents of this header are defined in the framing spec document.</dd>
+<dt><i>header_len</i></dt>
+<dd>Length of the page header in bytes.</a>
+<dt><i>body</i></dt>
+<dd>Pointer to the data for this page.</dd>
+<dt><i>body_len</i></dt>
+<dd>Length of the body data in bytes.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>

+ 65 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_page_bos.html

@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_bos</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_bos</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Indicates whether this page is at the beginning of the logical bitstream.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_page_bos(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+greater than 0 if this page is the beginning of a bitstream.</li>
+<li>
+0 if this page is from any other location in the stream.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 62 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_page_checksum_set.html

@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_checksum_set</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_checksum_set</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Checksums an ogg_page.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_page_checksum_set(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to an ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+None.
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 64 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_page_continued.html

@@ -0,0 +1,64 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_version</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_continued</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Indicates whether this page contains packet data which has been continued from the previous page.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_page_continued(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+1 if this page contains packet data continued from the last page.</li>
+<li>
+0 if this page does not contain continued data.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 65 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_page_eos.html

@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_eos</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_eos</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Indicates whether this page is at the end of the logical bitstream.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_page_eos(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+greater than zero if this page contains the end of a bitstream.</li>
+<li>
+0 if this page is from any other location in the stream.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 65 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_page_granulepos.html

@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_granulepos</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_granulepos</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Returns the exact granular position of the packet data contained at the end of this page.
+<p>This is useful for tracking location when seeking or decoding.
+<p>For example, in audio codecs this position is the pcm sample number and in video this is the frame number.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+ogg_in64_t ogg_page_granulepos(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> is the specific last granular position of the decoded data contained in the page.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 75 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_page_packets.html

@@ -0,0 +1,75 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_packets</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_packets</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Returns the number of packets that are completed on this page.  If the
+leading packet is begun on a previous page, but ends on this page, it's 
+counted.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_page_packets(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+If a page consists of a packet begun on a previous page, and a new packet
+begun (but not completed) on this page, the return will be:<br>
+<br>
+ogg_page_packets(page) will return 1,<br>
+ogg_page_continued(paged) will return non-zero.<br>
+<br><br>
+If a page happens to be a single packet that was begun on a previous page, and
+spans to the next page (in the case of a three or more page packet), the
+return will be:<br>
+<br>
+ogg_page_packets(page) will return 0,<br>
+ogg_page_continued(page) will return non-zero.<br>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 63 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_page_pageno.html

@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_pageno</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_pageno</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Returns the sequential page number.
+<p>This is useful for ordering pages or determining when pages have been lost.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long ogg_page_pageno(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> is the page number for this page.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 63 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_page_serialno.html

@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_serialno</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_serialno</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Returns the unique serial number for the logical bitstream of this page.  Each page contains the serial number for the logical bitstream that it belongs to.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_page_serialno(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> is the serial number for this page.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 63 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_page_version.html

@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_version</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_version</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function returns the version of ogg_page used in this page.
+<p>In current versions of libogg, all ogg_page structs have the same version, so 0 should always be returned.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_page_version(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> is the version number.  In the current version of Ogg, the version number is always 0.  Nonzero return values indicate an error in page encoding.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 71 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_check.html

@@ -0,0 +1,71 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_check</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_check</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to check the error or readiness condition of an <a href="ogg_stream_state.html">ogg_stream_state</a> structure.  
+<p>It is safe practice to ignore unrecoverable errors (such as an internal error caused by a malloc() failure) returned by ogg stream synchronization calls. Should an
+internal error occur, the <a href="ogg_stream_state.html">ogg_stream_state</a> structure will be cleared (equivalent to a
+call to
+<a href="ogg_stream_clear.html">ogg_stream_clear</a>) and subsequent calls
+using this <a href="ogg_stream_state.html">ogg_stream_state</a> will be
+noops. Error detection is then handled via a single call to
+ogg_stream_check at the end of the operational block. </p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_check(<a href="ogg_stream_state.html">ogg_stream_state</a> *os);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is returned if the <a href="ogg_stream_state.html">ogg_stream_state</a> structure is initialized and ready.</li>
+<li>
+nonzero is returned if the structure was never initialized, or if an unrecoverable internal error occurred in a previous call using the passed in <a href="ogg_stream_state.html">ogg_stream_state</a> struct.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 61 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_clear.html

@@ -0,0 +1,61 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_clear</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_clear</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function clears and frees the internal memory used by the <a href="ogg_sync_state.html">ogg_stream_state</a> struct, but does not free the structure itself. It is safe to call ogg_stream_clear on the same structure more than once.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_clear(ogg_stream_state *os);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to the ogg_stream_state struct to be cleared.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is always returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 71 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_destroy.html

@@ -0,0 +1,71 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_destroy</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_destroy</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function frees the internal memory used by
+the <a href="ogg_stream_state.html">ogg_stream_state</a> struct as
+well as the structure itself.
+
+<p>This should be called when you are done working with an ogg stream.
+It can also be called to make sure that the struct does not exist.</p>
+
+<p>It calls free() on its argument, so if the ogg_stream_state 
+is not malloc()'d or will otherwise be freed by your own code, use 
+<a href="ogg_stream_clear.html">ogg_stream_clear</a> instead.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_destroy(ogg_stream_state *os);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to the ogg_stream_state struct to be destroyed.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is always returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 62 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_eos.html

@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_eos</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_eos</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function indicates whether we have reached the end of the stream or not.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_eos(ogg_stream_state *os);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to the current ogg_stream_state struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>1 if we are at the end of the stream or an internal error occurred.</li>
+<li>
+0 if we have not yet reached the end of the stream.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 67 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_flush.html

@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_flush</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_flush</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function checks for remaining packets inside the stream and forces remaining packets into a page, regardless of the size of the page.
+<p>This should only be used when you want to flush an undersized page from the middle of the stream.  Otherwise, <a href="ogg_stream_pageout.html">ogg_stream_pageout</a> or <a href="ogg_stream_pageout_fill.html">ogg_stream_pageout_fill</a> should always be used.
+<p>This function can also be used to verify that all packets have been flushed.  If the return value is 0, all packets have been placed into a page. Like <a href="ogg_stream_pageout.html">ogg_stream_pageout</a>, it should generally be called in a loop until available packet data has been flushes, since even a single packet may span multiple pages.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_flush(<a href="ogg_stream_state.html">ogg_stream_state</a> *os, <a href="ogg_page.html">ogg_page</a> *og);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct, which represents the current logical bitstream.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to a page of data.  The remaining packets in the stream will be placed into this page, if any remain.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 means that all packet data has already been flushed into pages, and there are no packets to put into the page.  0 is also returned in the case of an <a href="ogg_stream_state.html">ogg_stream_state</a> that has been cleared explicitly or implicitly due to an internal error.</li>
+<li>
+Nonzero means that remaining packets have successfully been flushed into the page.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 74 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_flush_fill.html

@@ -0,0 +1,74 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_flush_fill</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_flush_fill</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function flushes available packets into pages, similar to
+<a href="ogg_stream_flush.html">ogg_stream_flush()</a>, but
+allows applications to explicitly request a specific page spill
+size.</p>
+
+<p>This function checks for remaining packets inside the stream and forces remaining packets into pages of approximately the requested size.
+This should be used when you want to flush all remaining data from a stream. <a href="ogg_stream_flush.html">ogg_stream_flush</a> may be used instead if a particular page size isn't important. 
+<p>This function can be used to verify that all packets have been flushed.  If the return value is 0, all packets have been placed into a page. Generally speaking, it should be called in a loop until all packets are flushed, since even a single packet may span multiple pages.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_flush_fill(<a href="ogg_stream_state.html">ogg_stream_state</a> *os, <a href="ogg_page.html">ogg_page</a> *og, int fillbytes);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct, which represents the current logical bitstream.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to a page of data.  The remaining packets in the stream will be placed into this page, if any remain.
+<dt><i>fillbytes</i></dt>
+<dd>Packet data watermark in bytes.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 means that all packet data has already been flushed into pages, and there are no packets to put into the page.  0 is also returned in the case of an <a href="ogg_stream_state.html">ogg_stream_state</a> that has been cleared explicitly or implicitly due to an internal error.</li>
+<li>
+Nonzero means that remaining packets have successfully been flushed into the page.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 66 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_init.html

@@ -0,0 +1,66 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_init</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_init</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to initialize an <a href="ogg_sync_state.html">ogg_stream_state</a> struct and allocates appropriate memory in preparation for encoding or decoding.
+<p>It also assigns the stream a given serial number.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_init(<a href="ogg_stream_state.html">ogg_stream_state</a> *os,int serialno);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to the ogg_stream_state struct that we will be initializing.</dd>
+<dt><i>serialno</i></dt>
+<dd>Serial number that we will attach to this stream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 if successful</li>
+<li>
+-1 if unsuccessful.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 80 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_iovecin.html

@@ -0,0 +1,80 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_iovecin</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_iovecin</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function submits packet data (in the form of
+an array of <a href="ogg_iovec_t.html">ogg_iovec_t</a>, rather than using
+an <a href="ogg_packet.html">ogg_packet</a> structure) to the
+bitstream for page encapsulation. After this is called, more packets
+can be submitted, or pages can be written out.</p>
+
+<p>In a typical encoding situation, this should be used after filling a 
+packet with data.
+The data in the packet is copied into the internal storage managed by 
+the <a href="ogg_stream_state.html">ogg_stream_state</a>, so the caller
+is free to alter the contents of <i>os</i> after this call has returned.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov, int count, long e_o_s, ogg_int64_t granulepos);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct.</dd>
+<dt><i>iov</i></dt>
+<dd>Length-encoded buffers held in an array of <a href="ogg_iovec_t.html">ogg_iovec_t</a>.
+<dt><i>count</i></dt>
+<dd>Length of the iov array.
+<dt><i>e_o_s</i></dt>
+<dd>End of stream flag, analagous to the e_o_s field in an <a href="ogg_packet.html">ogg_packet</a>.
+<dt><i>granulepos</i></dt>
+<dd>Granule position value, analagous to the granpos field in an <a href="ogg_packet.html">ogg_packet</a>.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 returned on success.  -1 returned in the event of internal error.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 72 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_packetin.html

@@ -0,0 +1,72 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_packetin</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_packetin</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function submits a packet to the bitstream for page 
+encapsulation. After this is called, more packets can be submitted,
+or pages can be written out.</p>
+
+<p>In a typical encoding situation, this should be used after filling a 
+packet with data.
+The data in the packet is copied into the internal storage managed by 
+the <a href="ogg_stream_state.html">ogg_stream_state</a>, so the caller
+is free to alter the contents of <i>op</i> after this call has returned.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_packetin(ogg_stream_state *os,ogg_packet *op);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct.</dd>
+<dt><i>op</i></dt>
+<dd>Pointer to the packet we are putting into the bitstream.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 returned on success.  -1 returned in the event of internal error.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 85 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_packetout.html

@@ -0,0 +1,85 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_packetout</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_packetout</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function assembles a data packet for output to the codec 
+decoding engine. The data has already been submitted to the
+<a href="ogg_stream_state.html">ogg_stream_state</a> and broken
+into segments. Each successive call returns the next complete packet 
+built from those segments.</p>
+
+<p>In a typical decoding situation, this should be used after calling 
+<a href="ogg_stream_pagein.html">ogg_stream_pagein()</a> to submit a 
+page of data to the bitstream. If the function returns 0, more data is 
+needed and another page should be submitted. A non-zero return value 
+indicates successful return of a packet.</p>
+
+<p>The <i>op</i> is filled in with pointers to memory managed by
+the stream state and is only valid until the next call. The client
+must copy the packet data if a longer lifetime is required.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a
+href="ogg_stream_state.html">ogg_stream_state</a> struct.  Before this function is called, an <a href="ogg_page.html">ogg_page</a> should be submitted to the stream using <a href="ogg_stream_pagein.html">ogg_stream_pagein()</a>.</dd>
+<dt><i>op</i></dt>
+<dd>Pointer to the packet to be filled in with pointers to the new data. 
+This will typically be submitted to a codec for decode after this 
+function is called. The pointers are only valid until the next call
+on this stream state.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<ul>
+<li>-1 if we are out of sync and there is a gap in the data. This is usually a recoverable error and subsequent calls to ogg_stream_packetout are likely to succeed. <i>op</i> has not been updated.</li>
+<li>0 if there is insufficient data available to complete a packet, or on unrecoverable internal error occurred. <i>op</i> has not been updated.
+<li>1 if a packet was assembled normally. <i>op</i> contains the next packet from the stream.</li>
+</ul>
+</blockquote>
+
+<br><br>
+
+<hr noshade>
+
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2010 xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>

+ 85 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_packetpeek.html

@@ -0,0 +1,85 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_packetpeek</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_packetpeek</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function attempts to assemble a raw data packet and returns
+it without advancing decoding.</p>
+
+<p>In a typical situation, this would be called
+speculatively after <a
+href="ogg_stream_pagein.html">ogg_stream_pagein()</a> to check
+the packet contents before handing it off to a codec for 
+decompression. To advance page decoding and remove
+the packet from the sync structure, call 
+<a href="ogg_stream_packetout.html">ogg_stream_packetout()</a>.</p>
+
+<br><br>
+
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared 
+<a href="ogg_stream_state.html">ogg_stream_state</a> struct.  Before this
+function is called, an <a href="ogg_page.html">ogg_page</a> should be
+submitted to the stream using 
+<a href="ogg_stream_pagein.html">ogg_stream_pagein()</a>.</dd>
+<dt><i>op</i></dt>
+<dd>Pointer to the next packet available in the bitstream, if
+any. A NULL value may be passed in the case of a simple "is there a 
+packet?" check.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<ul>
+<li>-1 if there's no packet available due to lost sync or a hole in the data.</li>
+<li>0 if there is insufficient data available to complete a packet, or on unrecoverable internal error occurred.</li>
+<li>1 if a packet is available.</li>
+</ul>
+</blockquote>
+
+
+<br><br>
+
+<hr noshade>
+
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 67 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_pagein.html

@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_pagein</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_pagein</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function adds a complete page to the bitstream.  
+ <p>In a typical decoding situation, this function would be called after using <a href="ogg_sync_pageout.html">ogg_sync_pageout</a> to create a valid <a href="ogg_page.html">ogg_page</a> struct.
+<p>Internally, this function breaks the page into packet segments in preparation for outputting a valid packet to the codec decoding layer.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_pagein(<a href="ogg_stream_state.html">ogg_stream_state</a> *os, <a href="ogg_page.html">ogg_page</a> *og);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct, which represents the current logical bitstream.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to a page of data.  The data inside this page is being submitted to the streaming layer in order to be allocated into packets.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>-1 indicates failure.  This means that the serial number of the page did not match the serial number of the bitstream, the page version was incorrect, or an internal error occurred.</li>
+<li>
+0 means that the page was successfully submitted to the bitstream.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 84 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_pageout.html

@@ -0,0 +1,84 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_pageout</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_pageout</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function forms packets into pages.</p>
+
+<p>In a typical encoding situation, this would be called after using <a 
+href="ogg_stream_packetin.html">ogg_stream_packetin()</a> to submit 
+data packets to the bitstream. Internally, this function assembles 
+the accumulated packet bodies into an Ogg page suitable for writing 
+to a stream. The function is typically called in a loop until there
+are no more pages ready for output.</p>
+
+<p>This function will only return a page when a "reasonable" amount of 
+packet data is available. Normally this is appropriate since it 
+limits the overhead of the Ogg page headers in the bitstream, and so
+calling ogg_stream_pageout() after ogg_stream_packetin() should be the 
+common case. Call <a href="ogg_stream_flush.html">ogg_stream_flush()</a> 
+if immediate page generation is desired. This may be occasionally 
+necessary, for example, to limit the temporal latency of a variable 
+bitrate stream.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_pageout(<a href="ogg_stream_state.html">ogg_stream_state</a> *os, <a href="ogg_page.html">ogg_page</a> *og);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream.html">ogg_stream</a> struct, which represents the current logical bitstream.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to an <a href="ogg_page.html">ogg_page</a> structure to fill
+in. Data pointed to is owned by libogg. The structure is valid until the 
+next call to ogg_stream_pageout(), ogg_stream_packetin(), or 
+ogg_stream_flush().</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>Zero means that insufficient data has accumulated to fill a page, or an internal error occurred. In 
+this case <i>og</i> is not modified.</li>
+<li>Non-zero means that a page has been completed and returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2010 xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 89 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_pageout_fill.html

@@ -0,0 +1,89 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_pageout_fill</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_pageout_fill</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function forms packets into pages, similar
+to <a href="ogg_stream_pageout.html">ogg_stream_pageout()</a>, but
+allows applications to explicitly request a specific page spill
+size.</p>
+
+<p>In a typical encoding situation, this would be called after using <a 
+href="ogg_stream_packetin.html">ogg_stream_packetin()</a> to submit 
+data packets to the bitstream. Internally, this function assembles 
+the accumulated packet bodies into an Ogg page suitable for writing 
+to a stream. The function is typically called in a loop until there
+are no more pages ready for output.</p>
+
+<p>This function will return a page when at least four packets have
+been accumulated and accumulated packet data meets or exceeds the
+specified number of bytes, <b>and/or</b> when the accumulated packet
+data meets/exceeds the maximum page size regardless of accumulated
+packet count.
+Call <a href="ogg_stream_flush.html">ogg_stream_flush()</a> or
+<a href="ogg_stream_flush_fill.html">ogg_stream_flush_fill()</a> if
+immediate page generation is desired regardless of accumulated data.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_pageout_fill(<a href="ogg_stream_state.html">ogg_stream_state</a> *os, <a href="ogg_page.html">ogg_page</a> *og, int fillbytes);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream.html">ogg_stream</a> struct, which represents the current logical bitstream.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to an <a href="ogg_page.html">ogg_page</a> structure to fill
+in. Data pointed to is owned by libogg. The structure is valid until the 
+next call to ogg_stream_pageout(), ogg_stream_packetin(), or 
+ogg_stream_flush().</dd>
+<dt><i>fillbytes</i></dt>
+<dd>Packet data watermark in bytes.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>Zero means that insufficient data has accumulated to fill a page, or an internal error occurred. In 
+this case <i>og</i> is not modified.</li>
+<li>Non-zero means that a page has been completed and returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2010 xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 61 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_reset.html

@@ -0,0 +1,61 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_reset</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_reset</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function sets values in the <a href="ogg_stream_state.html">ogg_stream_state</a> struct back to initial values.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_reset(ogg_stream_state *os);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to the ogg_stream_state struct to be cleared.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 indicates success. nonzero is returned on internal error.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 67 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_reset_serialno.html

@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_reset_serialno</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_reset</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function reinitializes the values in the 
+<a href="ogg_stream_state.html">ogg_stream_state</a>,
+just like <a href="ogg_stream_reset.html">ogg_stream_reset()</a>.
+Additionally, it sets the stream serial number to the given value.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_reset_serialno(ogg_stream_state *os, int serialno);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to the ogg_stream_state struct to be cleared.</dd>
+<dt><i>serialno</i></dt>
+<dd>New stream serial number to use</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 indicates success. nonzero is returned on internal error.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org Foundation</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 121 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_stream_state.html

@@ -0,0 +1,121 @@
+<html>
+
+<head>
+<title>libogg - datatype - ogg_stream_state</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_state</h1>
+
+<p><i>declared in "ogg/ogg.h"</i></p>
+
+<p>
+The ogg_stream_state struct tracks the current encode/decode state of the current logical bitstream.
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+typedef struct {
+  unsigned char   *body_data;    /* bytes from packet bodies */
+  long    body_storage;          /* storage elements allocated */
+  long    body_fill;             /* elements stored; fill mark */
+  long    body_returned;         /* elements of fill returned */
+
+
+  int     *lacing_vals;    /* The values that will go to the segment table */
+  ogg_int64_t *granule_vals;      /* granulepos values for headers. Not compact
+                             this way, but it is simple coupled to the
+                             lacing fifo */
+  long    lacing_storage;
+  long    lacing_fill;
+  long    lacing_packet;
+  long    lacing_returned;
+
+  unsigned char    header[282];      /* working space for header encode */
+  int              header_fill;
+
+  int     e_o_s;          /* set when we have buffered the last packet in the
+                             logical bitstream */
+  int     b_o_s;          /* set after we've written the initial page
+                             of a logical bitstream */
+  long     serialno;
+  int      pageno;
+  ogg_int64_t  packetno;      /* sequence number for decode; the framing
+                             knows where there's a hole in the data,
+                             but we need coupling so that the codec
+                             (which is in a seperate abstraction
+                             layer) also knows about the gap */
+  ogg_int64_t   granulepos;
+
+} ogg_stream_state;
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>body_data</i></dt>
+<dd>Pointer to data from packet bodies.</dd>
+<dt><i>body_storage</i></dt>
+<dd>Storage allocated for bodies in bytes (filled or unfilled).</dd>
+<dt><i>body_fill</i></dt>
+<dd>Amount of storage filled with stored packet bodies.</dd>
+<dt><i>body_returned</i></dt>
+<dd>Number of elements returned from storage.</dd>
+<dt><i>lacing_vals</i></dt>
+<dd>String of lacing values for the packet segments within the current page.  Each value is a byte, indicating packet segment length.</dd>
+<dt><i>granule_vals</i></dt>
+<dd>Pointer to the lacing values for the packet segments within the current page.</dd>
+<dt><i>lacing_storage</i></dt>
+<dd>Total amount of storage (in bytes) allocated for storing lacing values.</dd>
+<dt><i>lacing_fill</i></dt>
+<dd>Fill marker for the current vs. total allocated storage of lacing values for the page.</dd>
+<dt><i>lacing_packet</i></dt>
+<dd>Lacing value for current packet segment.</dd>
+<dt><i>lacing_returned</i></dt>
+<dd>Number of lacing values returned from lacing_storage.</dd>
+<dt><i>header</i></dt>
+<dd>Temporary storage for page header during encode process, while the header is being created.</dd>
+<dt><i>header_fill</i></dt>
+<dd>Fill marker for header storage allocation.  Used during the header creation process.</dd>
+<dt><i>e_o_s</i></dt>
+<dd>Marker set when the last packet of the logical bitstream has been buffered.</dd>
+<dt><i>b_o_s</i></dt>
+<dd>Marker set after we have written the first page in the logical bitstream.</dd>
+<dt><i>serialno</i></dt>
+<dd>Serial number of this logical bitstream.</dd>
+<dt><i>pageno</i></dt>
+<dd>Number of the current page within the stream.</dd>
+<dt><i>packetno</i></dt>
+<dd>Number of the current packet.</dd>
+<dt><i>granulepos</i></dt>
+<dd>Exact position of decoding/encoding process.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>

+ 67 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_buffer.html

@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_buffer</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_buffer</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to provide a properly-sized buffer for writing.
+<p>Buffer space which has already been returned is cleared, and the buffer is extended as necessary by the size plus some additional bytes.  Within the current implementation, an extra 4096 bytes are allocated, but applications should not rely on this additional buffer space.
+<p>The buffer exposed by this function is empty internal storage from the <a href="ogg_sync_state.html">ogg_sync_state</a> struct, beginning at the fill mark within the struct.
+<p>A pointer to this buffer is returned to be used by the calling application.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+char *ogg_sync_buffer(ogg_sync_state *oy, long size);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</dd>
+<dt><i>size</i></dt>
+<dd>Size of the desired buffer.  The actual size of the buffer returned will be this size plus some extra bytes (currently 4096).
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+Returns a pointer to the newly allocated buffer or NULL on error</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 71 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_check.html

@@ -0,0 +1,71 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_check</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_check</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to check the error or readiness condition of an <a href="ogg_sync_state.html">ogg_sync_state</a> structure.  
+<p>It is safe practice to ignore unrecoverable errors (such as an internal error caused by a malloc() failure) returned by ogg stream synchronization calls. Should an
+internal error occur, the <a href="ogg_sync_state.html">ogg_sync_state</a> structure will be cleared (equivalent to a
+call to
+<a href="ogg_sync_clear.html">ogg_sync_clear</a>) and subsequent calls
+using this <a href="ogg_sync_state.html">ogg_sync_state</a> will be
+noops. Error detection is then handled via a single call to
+ogg_sync_check at the end of the operational block. </p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_check(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is returned if the <a href="ogg_sync_state.html">ogg_sync_state</a> structure is initialized and ready.</li>
+<li>
+nonzero is returned if the structure was never initialized, or if an unrecoverable internal error occurred in a previous call using the passed in <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 62 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_clear.html

@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_clear</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_clear</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to free the internal storage of an <a href="ogg_sync_state.html">ogg_sync_state</a> struct and resets the struct to the initial state.  To free the entire struct, <a href="ogg_sync_destroy.html">ogg_sync_destroy</a> should be used instead.  In situations where the struct needs to be reset but the internal storage does not need to be freed, <a href="ogg_sync_reset.html">ogg_sync_reset</a> should be used.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_clear(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is always returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 68 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_destroy.html

@@ -0,0 +1,68 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_destroy</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_destroy</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to destroy an <a href="ogg_sync_state.html">ogg_sync_state</a> struct and free all memory used.</p>
+
+<p>Note this calls free() on its argument so you should only use this 
+function if you've allocated the ogg_sync_state on the heap. If it is 
+allocated on the stack, or it will otherwise be freed by your 
+own code, use <a href="ogg_sync_clear.html">ogg_sync_clear</a> instead
+to release just the internal memory.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_destroy(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is always returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 63 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_init.html

@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_init</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_init</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to initialize an <a href="ogg_sync_state.html">ogg_sync_state</a> struct to a known initial value in preparation for manipulation of an Ogg bitstream.
+<p>The ogg_sync struct is important when decoding, as it synchronizes retrieval and return of data.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_init(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.  After this function call, this struct has been initialized.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is always returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 77 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_pageout.html

@@ -0,0 +1,77 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_pageout</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_pageout</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function takes the data stored in the buffer of the <a href="ogg_sync_state.html">ogg_sync_state</a> struct and inserts them into an <a href="ogg_page.html">ogg_page</a>.
+
+<p>In an actual decoding loop, this function should be called first to ensure that the buffer is cleared.  The example code below illustrates a clean reading loop which will fill and output pages.
+<p><b>Caution:</b>This function should be called before reading into the buffer to ensure that data does not remain in the ogg_sync_state struct.  Failing to do so may result in a memory leak.  See the example code below for details.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_pageout(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy, <a href="ogg_page.html">ogg_page</a> *og);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.  Normally, the internal storage of this struct should be filled with newly read data and verified using <a href="ogg_sync_wrote.html">ogg_sync_wrote</a>.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to page struct filled by this function.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>-1 returned if stream has not yet captured sync (bytes were skipped).</li>
+<li>0 returned if more data needed or an internal error occurred.</li>
+<li>1 indicated a page was synced and returned.</li>
+</blockquote>
+<p>
+
+<h3>Example Usage</h3>
+<pre>
+if (ogg_sync_pageout(&oy, &og) != 1) {
+	buffer = ogg_sync_buffer(&oy, 8192);
+	bytes = fread(buffer, 1, 8192, stdin);
+	ogg_sync_wrote(&oy, bytes);
+}
+</pre>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 68 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_pageseek.html

@@ -0,0 +1,68 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_pageseek</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_pageseek</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function synchronizes the ogg_sync_state struct to the next ogg_page.  
+ <p>This is useful when seeking within a bitstream.  ogg_sync_pageseek will synchronize to the next page in the bitstream and return information about how many bytes we advanced or skipped in order to do so.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_pageseek(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy, <a href="ogg_page.html">ogg_page</a> *og);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to a page (or an incomplete page) of data.  This is the page we are attempting to sync.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>-n means that we skipped n bytes within the bitstream.</li>
+<li>
+0 means that the page isn't ready and we need more data, or than an internal error occurred.  No bytes have been skipped.</li>
+<li>
+n means that the page was synced at the current location, with a page length of n bytes.
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 63 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_reset.html

@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_reset</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_reset</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to reset the internal counters of the <a href="ogg_sync_state.html">ogg_sync_state</a> struct to initial values.
+<p>It is a good idea to call this before seeking within a bitstream.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_reset(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is always returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 77 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_state.html

@@ -0,0 +1,77 @@
+<html>
+
+<head>
+<title>libogg - datatype - ogg_sync_state</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_state</h1>
+
+<p><i>declared in "ogg/ogg.h"</i></p>
+
+<p>
+The ogg_sync_state struct tracks the synchronization of the current page.
+<p>It is used during decoding to track the status of data as it is read in, synchronized, verified, and parsed into pages belonging to the various logical bistreams in the current physical bitstream link. 
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+typedef struct {
+  unsigned char *data;
+  int storage;
+  int fill;
+  int returned;
+
+  int unsynced;
+  int headerbytes;
+  int bodybytes;
+} ogg_sync_state;
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>data</i></dt>
+<dd>Pointer to buffered stream data.</dd>
+<dt><i>storage</i></dt>
+<dd>Current allocated size of the stream buffer held in <tt>*data</tt>.</dd>
+<dt><i>fill</i></dt>
+<dd>The number of valid bytes currently held in <tt>*data</tt>; functions as the buffer head pointer.</dd>
+<dt><i>returned</i></dt>
+<dd>The number of bytes at the head of <tt>*data</tt> that have already been returned as pages; functions as the buffer tail pointer.</dd>
+<dt><i>unsynced</i></dt>
+<dd>Synchronization state flag; nonzero if sync has not yet been attained or has been lost.</dd>
+<dt><i>headerbytes</i></dt>
+<dd>If synced, the number of bytes used by the synced page's header.</dd>
+<dt><i>bodybytes</i></dt>
+<dd>If synced, the number of bytes used by the synced page's body.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>

+ 73 - 0
audio/windows/libogg-1.3.3/doc/libogg/ogg_sync_wrote.html

@@ -0,0 +1,73 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_wrote</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_wrote</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to tell the <a href="ogg_sync_state.html">ogg_sync_state</a> struct how many bytes we wrote into the buffer. 
+
+<p>
+The general proceedure is to request a pointer into an internal 
+<a href="ogg_sync_state.html">ogg_sync_state</a> buffer by calling 
+<a href="ogg_sync_buffer.html">ogg_sync_buffer()</a>. The buffer
+is then filled up to the requested size with new input, and 
+ogg_sync_wrote() is called to advance the fill pointer by however
+much data was actually available.</p>
+
+<br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_wrote(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy, long bytes);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</dd>
+<dt><i>bytes</i></dt>
+<dd>Number of bytes of new data written.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>-1 if the number of bytes written overflows the internal storage of the <a href="ogg_sync_state.html">ogg_sync_state</a> struct or an internal error occurred.
+<li>
+0 in all other cases.</li>
+</blockquote>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 64 - 0
audio/windows/libogg-1.3.3/doc/libogg/oggpack_adv.html

@@ -0,0 +1,64 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_adv</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>oggpack_adv</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function advances the location pointer by the specified number of bits without reading any data.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+void  oggpack_adv(oggpack_buffer *b,int bits);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Pointer to the current oggpack_buffer.</dd>
+<dt><i>bits</i></dt>
+<dd>Number of bits to advance.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+No values are returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org Foundation</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 62 - 0
audio/windows/libogg-1.3.3/doc/libogg/oggpack_adv1.html

@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_adv1</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>oggpack_adv1</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function advances the location pointer by one bit without reading any data.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+void  oggpack_adv1(oggpack_buffer *b);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Pointer to the current oggpack_buffer.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>No values are returned.
+</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 62 - 0
audio/windows/libogg-1.3.3/doc/libogg/oggpack_bits.html

@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_bits</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>oggpack_bits</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function returns the total number of bits currently in the <a href="oggpack_buffer.html">oggpack_buffer</a>'s internal buffer.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long oggpack_bits(<a href="oggpack_buffer.html">oggpack_buffer</a> *b);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd><a href="oggpack_buffer.html">oggpack_buffer</a> struct to be .</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> is the total number of bits within the current buffer.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 66 - 0
audio/windows/libogg-1.3.3/doc/libogg/oggpack_buffer.html

@@ -0,0 +1,66 @@
+<html>
+
+<head>
+<title>libogg - datatype - oggpack_buffer</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>oggpack_buffer</h1>
+
+<p><i>declared in "ogg/ogg.h"</i></p>
+
+<p>
+The oggpack_buffer struct is used with libogg's bitpacking functions.  You should never need to directly access anything in this structure.
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+typedef struct {
+  long endbyte;
+  int  endbit;
+
+  unsigned char *buffer;
+  unsigned char *ptr;
+  long storage;
+} oggpack_buffer;
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>buffer</i></dt>
+<dd>Pointer to data being manipulated.</dd>
+<dt><i>ptr</i></dt>
+<dd>Location pointer to mark which data has been read.</dd>
+<dt><i>storage</i></dt>
+<dd>Size of buffer.</i></dt>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>

+ 67 - 0
audio/windows/libogg-1.3.3/doc/libogg/oggpack_bytes.html

@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_bytes</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>oggpack_bytes</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function returns the total number of bytes behind the current 
+access point in the <a href="oggpack_buffer.html">oggpack_buffer</a>. 
+For write-initialized buffers, this is the number of complete bytes 
+written so far. For read-initialized buffers, it is the number of 
+complete bytes that have been read so far.
+<p>The return value is the number of <b>complete</b> bytes in the buffer.
+There may be extra (<8) bits.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long oggpack_bytes(<a href="oggpack_buffer.html">oggpack_buffer</a> *b);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd><a href="oggpack_buffer.html">oggpack_buffer</a> struct to be checked.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> is the total number of bytes within the current buffer.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2010 xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 62 - 0
audio/windows/libogg-1.3.3/doc/libogg/oggpack_get_buffer.html

@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_get_buffer</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>oggpack_get_buffer</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function returns a pointer to the data buffer within the given <a href="oggpack_buffer.html">oggpack_buffer</a> struct.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+unsigned char *oggpack_get_buffer(<a href="oggpack_buffer.html">oggpack_buffer</a> *b);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Pointer to the current <a href="oggpack_buffer.html">oggpack_buffer</a>.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+No values are returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 66 - 0
audio/windows/libogg-1.3.3/doc/libogg/oggpack_look.html

@@ -0,0 +1,66 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_look</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+<h1>oggpack_look</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function looks at a specified number of bits inside the buffer without advancing the location pointer.
+<p>The specified number of bits are read, starting from the location pointer.
+<p>This function can be used to read 32 or fewer bits.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long  oggpack_look(<a href="oggpack_buffer.html">oggpack_buffer</a> *b,int bits);
+</b></pre>
+</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Pointer to <a href="oggpack_buffer.html">oggpack_buffer</a> to be read.</dd>
+<dt><i>bits</i></dt>
+<dd>Number of bits to look at.  For this function, must be 32 or fewer.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> represents the requested bits.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2014 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>

+ 0 - 0
audio/windows/libogg-1.3.3/doc/libogg/oggpack_look1.html


Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff