diff --git a/CHANGES b/CHANGES index d39335e65043231d00b130494e67177fa511f4dd..a55b36121bddbbf427c9e2755d1cc6c83bfe7856 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,11 @@ +0.8.0 - August 2000 +- Major API rewrite. Old apps and plugins will not work with this library! +- Default driver detection now works. +- /etc/libao.conf and ~/.libao config files now supported + +0.7.0 - June 2000 +- minor build fixes for different platforms + 0.6.0 - December 2000 - slight api modification with ao_append_option() - fixed an option leak diff --git a/README b/README index ec877033bef1a0e0b5e5786c5ce7f4f3a6416ad5..96ef9292cad8297d8df01199e017c04297156e74 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -libao - A Cross-platform Audio Library, Version 0.6.0 +libao - A Cross-platform Audio Library, Version 0.8.0 Originally Copyright (C) Aaron Holtzman - May 1999 Changes Copyright (C) Stan Seibert - July 2000 @@ -44,12 +44,10 @@ cross-platform support to ogg123. I (Stan Seibert) downloaded the libao library, severely hacked it up in order to make the build process simpler and support multiple live-playback devices. (The original code allowed one live playback driver, the wav driver, and a -null driver to be compiled into the library.) - -Then Jack Moffitt got it supporting dynamicly loaded plugins so that -binary versions of libao could be provided. +null driver to be compiled into the library.) Jack Moffitt got it +supporting dynamically loaded plugins so that binary versions of libao +could be provided. The API was revised after version 0.7.0. This code is being maintained by Stan Seibert (indigo@aztec.asu.edu) and various other individuals. Please DO NOT annoy Aaron Holtzman about bugs, features, comments, etc. regarding this code. - diff --git a/TODO b/TODO index 11a6ca1805e5b18a662be6af88d83a951cb66bba..6bfdb550b4924a9425021a942a74a1ab63d23371 100644 --- a/TODO +++ b/TODO @@ -2,5 +2,11 @@ I think these are the next steps: - make the plugins dynamically loadable (done) - make a ao-config liek gtk-config instead of ao_libs.inc (done) -- any ideas? +- extend the configuration files to allow default options for + each driver +- Sample rate conversion on the fly to support sound cards that have few + sample rate options (like the i810 audio device, which only does 48000) +- Actually test the IRIX plugin. :) +- Test the macosx plugin + diff --git a/doc/ao_append_option.html b/doc/ao_append_option.html index f52955d777142c8acab6321ec8e5a48b6b3dd814..bb380fac15c6c5f512dcb1d08353194df9870fa7 100644 --- a/doc/ao_append_option.html +++ b/doc/ao_append_option.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -59,7 +59,7 @@ int ao_append_option(<a href="ao_option.html">ao_option</a> **options, const cha <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_close.html b/doc/ao_close.html index e78bf545798e35998daca8e3ae247e231a808bce..2a2f128491cd6047bab2eeb113bcb31fbf398279 100644 --- a/doc/ao_close.html +++ b/doc/ao_close.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -54,7 +54,7 @@ device was writing to a file, the file may be corrupted.</li> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_default_driver_id.html b/doc/ao_default_driver_id.html index 19427686ede325f156e88e1c64a872174c646b6c..22264267cd81faa0ed0633007c04830308832479 100644 --- a/doc/ao_default_driver_id.html +++ b/doc/ao_default_driver_id.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -53,7 +53,7 @@ to test your application.</p> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_device.html b/doc/ao_device.html index 3f3806b504adc72122e0200c1ad7e0c7234d4209..2c4ad301da486b4462240083794c878547a9ef69 100644 --- a/doc/ao_device.html +++ b/doc/ao_device.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -79,7 +79,7 @@ different byte orders, otherwise set to NULL</dd> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_driver_id.html b/doc/ao_driver_id.html index 703e2a720d3df1e369867704951421ec25200706..9bb6c109fbfc06031dff14f77ca8f66492ba56e3 100644 --- a/doc/ao_driver_id.html +++ b/doc/ao_driver_id.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -54,7 +54,7 @@ drivers</a> for valid short names.</dd> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_driver_info.html b/doc/ao_driver_info.html index 6cad651354de0cd9c1917541c5bf1181e93f36c2..37050b2bbbdfcb759ab03713237a0b2f598a3ac2 100644 --- a/doc/ao_driver_info.html +++ b/doc/ao_driver_info.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -57,7 +57,7 @@ an actual driver</li> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_driver_info_list.html b/doc/ao_driver_info_list.html index c1aa0420e4a38c178bddd36cf21f03d522d60307..661dc0d19417fb1e559cdfd966894af62c4dd9f9 100644 --- a/doc/ao_driver_info_list.html +++ b/doc/ao_driver_info_list.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -53,7 +53,7 @@ elements.</li> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_free_options.html b/doc/ao_free_options.html index d342f29c3141858f7e3c78f5e724b22d4a93a0fe..9bce7fcbf1b895eb4743cbdf0a8769af1c4e87f7 100644 --- a/doc/ao_free_options.html +++ b/doc/ao_free_options.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -46,7 +46,7 @@ function does nothing.</dd> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_info.html b/doc/ao_info.html index 2ea0311b11a3c1ddd3d7410685c4f1502d95b4b3..c3292ef9397c7b7187f9261c54666365b4dae363 100644 --- a/doc/ao_info.html +++ b/doc/ao_info.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -84,7 +84,7 @@ driver.</dd> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_initialize.html b/doc/ao_initialize.html index ef4b596942b4a3670439f29d891018e85ab81622..c60fd4228f011928d49fe861a2ad33306872e0e7 100644 --- a/doc/ao_initialize.html +++ b/doc/ao_initialize.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -49,7 +49,7 @@ ao_shutdown(), then call ao_initialize() again. <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_open_file.html b/doc/ao_open_file.html index c85fd087d689a50ba9ecd59f3a97dd5efd6aa1da..95876d1cf4164e166103a6078cf38e850348400a 100644 --- a/doc/ao_open_file.html +++ b/doc/ao_open_file.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -90,7 +90,7 @@ just the input sample format. <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_open_live.html b/doc/ao_open_live.html index bcfaac01c2e4b55cfff3a037658ea09d091e66f8..58594acfa1880fa9a871383333ed5ae0c43e65df 100644 --- a/doc/ao_open_live.html +++ b/doc/ao_open_live.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -76,7 +76,7 @@ href="ao_open_file.html">ao_open_file()</a> instead. <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_option.html b/doc/ao_option.html index 3b92104431731b500c4162029bfc81961767a880..2410d777f4166bdf8d981a7ce9e7064607076b31 100644 --- a/doc/ao_option.html +++ b/doc/ao_option.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -50,7 +50,7 @@ the list.</dd> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_play.html b/doc/ao_play.html index 0e55e70f0a73433505b99d221c334e4819d4c8e4..7d18769fc0e13840eee5d9acc909574e07bcb312 100644 --- a/doc/ao_play.html +++ b/doc/ao_play.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -58,7 +58,7 @@ int ao_open(<a href="ao_device.html">ao_device</a> *device, void *output_samples <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_plugin_close.html b/doc/ao_plugin_close.html index 4545b3761b1319f99a41e3a414e1fd331e34754d..d4ef3c79a38ba774b0c9badef3ba6df3a3d6f15b 100644 --- a/doc/ao_plugin_close.html +++ b/doc/ao_plugin_close.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -52,7 +52,7 @@ device was writing to a file, the file may be corrupted.</li> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_plugin_device_clear.html b/doc/ao_plugin_device_clear.html index 262948a3721f580ac8056ee3998959540cf2ca75..2fd92302f0bf941c61292663db388a505e1f9473 100644 --- a/doc/ao_plugin_device_clear.html +++ b/doc/ao_plugin_device_clear.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -44,7 +44,7 @@ void ao_plugin_device_clear(<a href="ao_device.html">ao_device</a> *device); <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_plugin_device_init.html b/doc/ao_plugin_device_init.html index d251c60a719cf76d74167a1a001592d201467211..50e916fbace61f5eee2b28afc4e09dc63f9ea97e 100644 --- a/doc/ao_plugin_device_init.html +++ b/doc/ao_plugin_device_init.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -58,7 +58,7 @@ called to ensure the deallocate of all private data structures.</li> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_plugin_driver_info.html b/doc/ao_plugin_driver_info.html index 782b4e611d0ba0a7108a62f0551197ad4a457b46..37d54cd3e190af55bd5b50fd569a66844a580b44 100644 --- a/doc/ao_plugin_driver_info.html +++ b/doc/ao_plugin_driver_info.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -45,7 +45,7 @@ not be modified. </li> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_plugin_open.html b/doc/ao_plugin_open.html index 3d58c2c729892a15ff748c6ece5bf080c3b3e1a4..bc0705b6b471299287b45c677d28021a377604a2 100644 --- a/doc/ao_plugin_open.html +++ b/doc/ao_plugin_open.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -62,7 +62,7 @@ called to ensure the deallocate of all private data structures.</li> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_plugin_play.html b/doc/ao_plugin_play.html index 731844913403fa74c4df55a591b6509fae404ec6..6d8b24385e87ccf379f22f772c4619ac72792048 100644 --- a/doc/ao_plugin_play.html +++ b/doc/ao_plugin_play.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -61,7 +61,7 @@ called.</li> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_plugin_set_option.html b/doc/ao_plugin_set_option.html index cd7474cc1af79519177062ab22c7a138ce78bbbf..80291aacddb6563faea685de75cf8e7ac086a475 100644 --- a/doc/ao_plugin_set_option.html +++ b/doc/ao_plugin_set_option.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -64,7 +64,7 @@ called to ensure the deallocate of all private data structures.</li> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_plugin_test.html b/doc/ao_plugin_test.html index af8b8b592293a45b90b81514aab1300805604de4..47f35db9795f55106c93d5da55093a7d31bc57e1 100644 --- a/doc/ao_plugin_test.html +++ b/doc/ao_plugin_test.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -50,7 +50,7 @@ options.</li> <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_sample_format.html b/doc/ao_sample_format.html index 1152fa04bb09e703e760edda8e694c506afc3e46..b358c138d69cd92b05a53841ad893f1fb46fe377 100644 --- a/doc/ao_sample_format.html +++ b/doc/ao_sample_format.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -53,7 +53,7 @@ <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/ao_shutdown.html b/doc/ao_shutdown.html index d544b76b5a33cb12544c7952ac91d719c9905e9d..e0bc71f33d238d5df186a081efdd2fcf73b0a814 100644 --- a/doc/ao_shutdown.html +++ b/doc/ao_shutdown.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -46,7 +46,7 @@ calling ao_shutdown(). <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/config.html b/doc/config.html index 72fe37dd0f69434c1f8b5c6ed5b9e09088e7ae0a..749a86ad61ea570825872b33ba13c5fc1d42f0d8 100644 --- a/doc/config.html +++ b/doc/config.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -47,7 +47,7 @@ There can be no extra spaces anywhere on the line. Comment lines begin with a < <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/drivers.html b/doc/drivers.html index bfffb4446f697352e36adb0d2237266e7ee1d0e2..919890bd5710dc49cfa3e7c2943ece0aec32ef4c 100644 --- a/doc/drivers.html +++ b/doc/drivers.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -200,7 +200,7 @@ easily used to define an appropriate default output device <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/index.html b/doc/index.html index 44c51b5e9a40e0ee6a135257caa39fee43413a00..db3330380963e6117835351894cd27f73161ba00 100644 --- a/doc/index.html +++ b/doc/index.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -32,7 +32,7 @@ platforms. It currently supports: <a href="ao_example.c">example code</a><br> <a href="config.html">configuration files</a><br> <a href="libao-api.html">libao api reference</a><br> -<a href="plugin-overview.html">plugin overview</a><br> +<a href="plugin-overview.html">plugin writer's overview</a><br> <a href="plugin-api.html">plugin api reference</a><br> <br><br> @@ -43,7 +43,7 @@ platforms. It currently supports: <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/libao-api.html b/doc/libao-api.html index e52c8e8f5381dc0235017d21d4bd91a29ce9463c..6b432277f0a8cef140dcc310aa32ee0fe60120e0 100644 --- a/doc/libao-api.html +++ b/doc/libao-api.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -51,7 +51,7 @@ <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/overview.html b/doc/overview.html index 3898ddc1ad1960fa4095c3189f9a796bee88f326..2d8a9e03dfc86ce14ca3132048491120b9804e62 100644 --- a/doc/overview.html +++ b/doc/overview.html @@ -9,7 +9,7 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> @@ -100,7 +100,7 @@ library. <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/plugin-api.html b/doc/plugin-api.html index 5e2c7bc5a73601cde97f07ba702d23968745ad4a..772db4e6cc064333d3bbe293e911112647bb4d4f 100644 --- a/doc/plugin-api.html +++ b/doc/plugin-api.html @@ -9,11 +9,11 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> -<h1>Plugin API</h1> +<h1>libao Plugin API</h1> <p> <a href="ao_plugin_test.html">ao_plugin_test()</a><br> @@ -33,7 +33,7 @@ <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> diff --git a/doc/plugin-overview.html b/doc/plugin-overview.html index 9f6ca55acc89ee2d1e4286e2311625ceab6e130f..5273871887e0df2b7fd44652d4718030ed856a52 100644 --- a/doc/plugin-overview.html +++ b/doc/plugin-overview.html @@ -9,24 +9,147 @@ <table border=0 width=100%> <tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table> -<h1>libao Plugin Overview</h1> +<h1>libao Plugin Writer's Overview</h1> <p> Plugins are drivers that are loaded dynamically when libao is first initialized by the client application. Drivers that are operating -system dependent, like the <tt>oss</tt> and <tt>sun</tt> drivers, or that -depend on external libraries, like the <tt>esd</tt> driver, must be -implemented as plugins in order to keep binary packagers happy. +system dependent, like the <tt>oss</tt> and <tt>sun</tt> drivers, or +that depend on external libraries, like the <tt>esd</tt> driver, must +be implemented as plugins in order to keep binary packagers happy. +There are also statically linked drivers, which are written in a +nearly identical way, but won't be covered here. In nearly all cases, +a dynamically loadable plugin is the preferred way to write a driver, +and the required way if the driver depends upon any external +libraries. +</p> + +<h2>Life Cycle</h2> + +<p> +The life cycle of a plugin is: +<ul> +<li>When libao is first <a href="ao_initialize.html">initialized</a>, +it loads all of the plugins from disk. + +<li>Libao then <a href="ao_plugin_test.html">tests</a> each plugin to +see if can be used as the default driver. + +<li>When the user opens a device, libao will: + + <ul> + + <li>Call <a + href="ao_plugin_device_init.html">ao_plugin_device_init()</a> to + allow the plugin to allocate and initialize any private data + structures it will use. + + <li>Call <a + href="ao_plugin_set_option.html">ao_plugin_set_option()</a> for each + parameter passed to the library by the client application. + + <li>Call <a href="ao_plugin_open.html">ao_plugin_open.html</a> to + open the device for playback. + + </ul> + +<li>Each time the client app calls <a +href="ao_play.html">ao_play()</a>, the library will reorder the byte +format (little-endian vs. big-endian) to match the format requested by +the plugin. The library will then call <a href="ao_plugin_play.html">ao_plugin_play()</a> for the block of audio data. + +<li>When the client app closes the audio device, the library calls <a +href="ao_plugin_close.html">ao_plugin_close()</a> to close the device, +followed by a call to <a +href="ao_plugin_clear.html">ao_plugin_device_clear()</a> to deallocate +the private data structures. + +<li>When the library is <a href="ao_shutdown.html">shutdown</a>, the +plugin will be unloaded from memory. + +</ul> + +In case of errors, <a +href="ao_plugin_device_clear.html">ao_plugin_device_clear()</a> will +always be called if <a +href="ao_plugin_device_init.html">ao_plugin_device_init()</a> executed +successfully. Similarly, <a +href="ao_plugin_close.html">ao_plugin_close()</a> will always be +called if <a href="ao_plugin_open.html">ao_plugin_open()</a> executed +successfully. +</p> + +<h2>Creating a New Plugin</h2> <p> -In order to make a new plugin, follow these steps: +In order to write a new plugin, follow these steps: <ul> -<li>To be filled in. + +<li>Decide upon a new short name for your plugin. It should be less +than 8 characters and contain only alphanumeric characters +(underscores are okay, but discouraged). + +<li>Make a new directory in the src/plugins directory with the short name of your plugin. + +<li>Copy the contents of one of the other plugin directories into your +directory. The Sun driver is a good example of a driver that uses +system devices for output, and the ALSA driver is a good example of a +plugin that uses an external library. Rename the source file to ao_shortname.c, where "shortname" is the short name of your plugin. + +<li>Edit the <a href="ao_info.html">ao_info</a> structure. + +<li>Implement the all of the methods defined in the <a +href="plugin-api.html">plugin API</a>. + +<li>Edit the files ("shortname" is as described above): configure.in, +src/plugins/Makefile.am, src/plugins/shortname/Makefile.am. There +should be a an configure option to disable your plugin. Look at the +existing configure.in file for examples of how to do this. + +<li>Test it thoroughly! :) + +<li>Send a tarball of the src/plugin/shortname directory (only this +directory, please!) and a cvs diff -u of the changes you have made to +the <a href="mailto:vorbis-dev@xiph.org">vorbis-dev</a> list and we'll +take a look at it for inclusion. + +</ul> +</p> + +<h2>API Implementation Tips</h2> + +<p> +<ul> + +<li>Remember to close any devices/connections you openned in <a +href="ao_plugin_test.html">ao_plugin_test()</a>. <li>Although you +should try to allocate all of your data structures in <a +href="ao_plugin_device_init.html">ao_plugin_device_init()</a>, there +are cases where you won't be able to allocate memory until <a +href="ao_plugin_open.html">ao_plugin_open()</a> is called. That is +acceptable, but the rule is that you must deallocate memory in <a +href="ao_plugin_close.html">ao_plugin_close()</a> that was allocated +in <a href="ao_plugin_open.html">ao_plugin_open()</a> and deallocate +memory in <a +href="ao_plugin_device_clear.html">ao_plugin_device_clear()</a> that +was allocated in <a +href="ao_plugin_device_init.html">ao_plugin_device_init()</a>. + +<li>Don't forget to set device->driver_byte_format in <a +href="ao_plugin_open.html">ao_plugin_open()</a> to the byte ordering +your plugin needs. The libao core will reorder the bytes for you if +it necessary. + +<li>Read the <a href="drivers.html">driver documentation</a> to see +what priority you should set for your plugin in the <a +href="ao_info.html">ao_info</a> structure. + </ul> +</p> <br><br> <hr noshade> @@ -36,7 +159,7 @@ In order to make a new plugin, follow these steps: <td align=right><p class=tiny><a href="http://www.xiph.org/">xiph.org</a><br><a href="mailto:indigo@aztec.asu.edu">indigo@aztec.asu.edu</a></p></td> </tr><tr> <td><p class=tiny>libao documentation</p></td> -<td align=right><p class=tiny>libao version 0.90 - 20010528</p></td> +<td align=right><p class=tiny>libao version 0.8.0 - 20010804</p></td> </tr> </table>