From b70b659a5fc75174db5d061d6fe0f1d3f9c3175c Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Sun, 9 Nov 2014 04:38:33 -0500 Subject: [PATCH] Removed OpenAL and now using PortAudio --- CMakeLists.txt | 10 +- external/openal-soft-1.16.0-bin/COPYING | 484 ------- .../bin/Win32/OpenAL32.dll | Bin 704940 -> 0 bytes .../bin/Win64/OpenAL32.dll | Bin 797305 -> 0 bytes .../openal-soft-1.16.0-bin/include/AL/al.h | 656 --------- .../openal-soft-1.16.0-bin/include/AL/alc.h | 237 ---- .../openal-soft-1.16.0-bin/include/AL/alext.h | 400 ------ .../include/AL/efx-creative.h | 3 - .../include/AL/efx-presets.h | 402 ------ .../openal-soft-1.16.0-bin/include/AL/efx.h | 761 ----------- .../libs/Win32/OpenAL32.def | 187 --- .../libs/Win32/OpenAL32.lib | Bin 137926 -> 0 bytes .../libs/Win32/libOpenAL32.dll.a | Bin 119056 -> 0 bytes .../libs/Win64/OpenAL32.def | 187 --- .../libs/Win64/OpenAL32.lib | Bin 138664 -> 0 bytes .../libs/Win64/libOpenAL32.dll.a | Bin 116446 -> 0 bytes external/portaudio/LICENSE.txt | 81 ++ external/portaudio/include/pa_allocation.h | 104 ++ external/portaudio/include/pa_asio.h | 150 +++ external/portaudio/include/pa_converters.h | 263 ++++ external/portaudio/include/pa_cpuload.h | 72 + external/portaudio/include/pa_debugprint.h | 149 +++ external/portaudio/include/pa_dither.h | 106 ++ external/portaudio/include/pa_endianness.h | 145 ++ external/portaudio/include/pa_hostapi.h | 362 +++++ external/portaudio/include/pa_jack.h | 77 ++ external/portaudio/include/pa_linux_alsa.h | 107 ++ external/portaudio/include/pa_mac_core.h | 191 +++ external/portaudio/include/pa_memorybarrier.h | 128 ++ external/portaudio/include/pa_process.h | 754 +++++++++++ external/portaudio/include/pa_ringbuffer.h | 236 ++++ external/portaudio/include/pa_stream.h | 205 +++ external/portaudio/include/pa_trace.h | 117 ++ external/portaudio/include/pa_util.h | 159 +++ external/portaudio/include/pa_win_ds.h | 95 ++ external/portaudio/include/pa_win_wasapi.h | 391 ++++++ .../portaudio/include/pa_win_waveformat.h | 199 +++ external/portaudio/include/pa_win_wdmks.h | 106 ++ external/portaudio/include/pa_win_wmme.h | 185 +++ external/portaudio/include/portaudio.h | 1174 +++++++++++++++++ external/portaudio/libs/libportaudio.dll | Bin 0 -> 192025 bytes external/portaudio/libs/libportaudio.dll.a | Bin 0 -> 23922 bytes external/portaudio/libs/libportaudio_static.a | Bin 0 -> 165110 bytes src/Demodulate.cpp | 698 ---------- src/Demodulate.h | 93 -- src/PrimaryGLContext.cpp | 255 +--- src/PrimaryGLContext.h | 38 +- 47 files changed, 5635 insertions(+), 4332 deletions(-) delete mode 100644 external/openal-soft-1.16.0-bin/COPYING delete mode 100644 external/openal-soft-1.16.0-bin/bin/Win32/OpenAL32.dll delete mode 100644 external/openal-soft-1.16.0-bin/bin/Win64/OpenAL32.dll delete mode 100644 external/openal-soft-1.16.0-bin/include/AL/al.h delete mode 100644 external/openal-soft-1.16.0-bin/include/AL/alc.h delete mode 100644 external/openal-soft-1.16.0-bin/include/AL/alext.h delete mode 100644 external/openal-soft-1.16.0-bin/include/AL/efx-creative.h delete mode 100644 external/openal-soft-1.16.0-bin/include/AL/efx-presets.h delete mode 100644 external/openal-soft-1.16.0-bin/include/AL/efx.h delete mode 100644 external/openal-soft-1.16.0-bin/libs/Win32/OpenAL32.def delete mode 100644 external/openal-soft-1.16.0-bin/libs/Win32/OpenAL32.lib delete mode 100644 external/openal-soft-1.16.0-bin/libs/Win32/libOpenAL32.dll.a delete mode 100644 external/openal-soft-1.16.0-bin/libs/Win64/OpenAL32.def delete mode 100644 external/openal-soft-1.16.0-bin/libs/Win64/OpenAL32.lib delete mode 100644 external/openal-soft-1.16.0-bin/libs/Win64/libOpenAL32.dll.a create mode 100644 external/portaudio/LICENSE.txt create mode 100644 external/portaudio/include/pa_allocation.h create mode 100644 external/portaudio/include/pa_asio.h create mode 100644 external/portaudio/include/pa_converters.h create mode 100644 external/portaudio/include/pa_cpuload.h create mode 100644 external/portaudio/include/pa_debugprint.h create mode 100644 external/portaudio/include/pa_dither.h create mode 100644 external/portaudio/include/pa_endianness.h create mode 100644 external/portaudio/include/pa_hostapi.h create mode 100644 external/portaudio/include/pa_jack.h create mode 100644 external/portaudio/include/pa_linux_alsa.h create mode 100644 external/portaudio/include/pa_mac_core.h create mode 100644 external/portaudio/include/pa_memorybarrier.h create mode 100644 external/portaudio/include/pa_process.h create mode 100644 external/portaudio/include/pa_ringbuffer.h create mode 100644 external/portaudio/include/pa_stream.h create mode 100644 external/portaudio/include/pa_trace.h create mode 100644 external/portaudio/include/pa_util.h create mode 100644 external/portaudio/include/pa_win_ds.h create mode 100644 external/portaudio/include/pa_win_wasapi.h create mode 100644 external/portaudio/include/pa_win_waveformat.h create mode 100644 external/portaudio/include/pa_win_wdmks.h create mode 100644 external/portaudio/include/pa_win_wmme.h create mode 100644 external/portaudio/include/portaudio.h create mode 100644 external/portaudio/libs/libportaudio.dll create mode 100644 external/portaudio/libs/libportaudio.dll.a create mode 100644 external/portaudio/libs/libportaudio_static.a delete mode 100644 src/Demodulate.cpp delete mode 100644 src/Demodulate.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a9c878..566ab42 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,9 +63,9 @@ if (DEFINED WIN32) link_directories ( ${PROJECT_SOURCE_DIR}/external/fftw-3.3.4-dll32 ${PROJECT_SOURCE_DIR}/external/rtl-sdr-release/x32 ) set(FFTW_LIB fftw3-3) - include_directories ( ${PROJECT_SOURCE_DIR}/external/openal-soft-1.16.0-bin/include ) - link_directories ( ${PROJECT_SOURCE_DIR}/external/openal-soft-1.16.0-bin/libs/Win32 ) - SET (OPENAL_LIBRARY libOpenAL32.dll winmm) + include_directories ( ${PROJECT_SOURCE_DIR}/external/portaudio/include ) + link_directories ( ${PROJECT_SOURCE_DIR}/external/portaudio/libs ) + SET (PORTAUDIO_LIBRARY portaudio.dll winmm) link_directories ( ${PROJECT_SOURCE_DIR}/external/liquid-dsp/lib ) include_directories ( ${PROJECT_SOURCE_DIR}/external/liquid-dsp/include ) @@ -91,7 +91,6 @@ SET (cubicsdr_sources src/AppFrame.cpp src/SDRThreadQueue.cpp src/SDRThreadTask.cpp - src/Demodulate.cpp ) SET (cubicsdr_headers @@ -103,14 +102,13 @@ SET (cubicsdr_headers src/CubicSDRDefs.h src/SDRThreadQueue.h src/SDRThreadTask.h - src/Demodulate.h ) #configure_files(${PROJECT_SOURCE_DIR}/shaders ${PROJECT_BINARY_DIR}/shaders COPYONLY) #configure_files(${PROJECT_SOURCE_DIR}/png ${PROJECT_BINARY_DIR}/png COPYONLY) add_executable(CubicSDR ${cubicsdr_sources} ${cubicsdr_headers}) -target_link_libraries(CubicSDR rtlsdr liquid ${FFTW_LIB} ${wxWidgets_LIBRARIES} ${OPENGL_LIBRARIES} ${OPENAL_LIBRARY}) +target_link_libraries(CubicSDR rtlsdr liquid ${FFTW_LIB} ${wxWidgets_LIBRARIES} ${OPENGL_LIBRARIES} ${PORTAUDIO_LIBRARY}) # cubicvr2 glfw ${GLFW_LIBRARIES} diff --git a/external/openal-soft-1.16.0-bin/COPYING b/external/openal-soft-1.16.0-bin/COPYING deleted file mode 100644 index d0c8978..0000000 --- a/external/openal-soft-1.16.0-bin/COPYING +++ /dev/null @@ -1,484 +0,0 @@ - - GNU LIBRARY GENERAL PUBLIC LICENSE - Version 2, June 1991 - - - Copyright (C) 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the library GPL. It is - numbered 2 because it goes with version 2 of the ordinary GPL.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Library General Public License, applies to some -specially designated Free Software Foundation software, and to any -other libraries whose authors decide to use it. You can use it for -your libraries, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if -you distribute copies of the library, or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link a program with the library, you must provide -complete object files to the recipients so that they can relink them -with the library, after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - Our method of protecting your rights has two steps: (1) copyright -the library, and (2) offer you this license which gives you legal -permission to copy, distribute and/or modify the library. - - Also, for each distributor's protection, we want to make certain -that everyone understands that there is no warranty for this free -library. If the library is modified by someone else and passed on, we -want its recipients to know that what they have is not the original -version, so that any problems introduced by others will not reflect on -the original authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that companies distributing free -software will individually obtain patent licenses, thus in effect -transforming the program into proprietary software. To prevent this, -we have made it clear that any patent must be licensed for everyone's -free use or not licensed at all. - - Most GNU software, including some libraries, is covered by the ordinary -GNU General Public License, which was designed for utility programs. This -license, the GNU Library General Public License, applies to certain -designated libraries. This license is quite different from the ordinary -one; be sure to read it in full, and don't assume that anything in it is -the same as in the ordinary license. - - The reason we have a separate public license for some libraries is that -they blur the distinction we usually make between modifying or adding to a -program and simply using it. Linking a program with a library, without -changing the library, is in some sense simply using the library, and is -analogous to running a utility program or application program. However, in -a textual and legal sense, the linked executable is a combined work, a -derivative of the original library, and the ordinary General Public License -treats it as such. - - Because of this blurred distinction, using the ordinary General -Public License for libraries did not effectively promote software -sharing, because most developers did not use the libraries. We -concluded that weaker conditions might promote sharing better. - - However, unrestricted linking of non-free programs would deprive the -users of those programs of all benefit from the free status of the -libraries themselves. This Library General Public License is intended to -permit developers of non-free programs to use free libraries, while -preserving your freedom as a user of such programs to change the free -libraries that are incorporated in them. (We have not seen how to achieve -this as regards changes in header files, but we have achieved it as regards -changes in the actual functions of the Library.) The hope is that this -will lead to faster development of free libraries. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, while the latter only -works together with the library. - - Note that it is possible for a library to be covered by the ordinary -General Public License rather than by this special one. - - GNU LIBRARY GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library which -contains a notice placed by the copyright holder or other authorized -party saying it may be distributed under the terms of this Library -General Public License (also called "this License"). Each licensee is -addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also compile or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - c) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - d) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the source code distributed need not include anything that is normally -distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Library General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - diff --git a/external/openal-soft-1.16.0-bin/bin/Win32/OpenAL32.dll b/external/openal-soft-1.16.0-bin/bin/Win32/OpenAL32.dll deleted file mode 100644 index 1f245a82a90121574f914382b17fbfc04a7fc57a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 704940 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 XFXSXGAb0Yse%s#wH^)4w$>#oFH48^Z diff --git a/external/openal-soft-1.16.0-bin/bin/Win64/OpenAL32.dll b/external/openal-soft-1.16.0-bin/bin/Win64/OpenAL32.dll deleted file mode 100644 index a718bdc5b5967d5da5683d9d8562dd9e83e16736..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 797305 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 z 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 z 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%0D$# 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
x2?{|z1vokd+}M^HqKgT7e7TH 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�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 jK1;jh^qz%%Te5Hz=e?_ zCu@!Cg#-G3$#~l8ECv!>q|inxa5<*9mG$EM5-%>&uM&{!{b8$skJ>mML?bFGg;c=W z8&RY6iV3EJlCF;`Nv+q4%hl4lq-H*ft;T>{g{6MnZWj`uNk_#i^?UHljUzZpM~&8? zd7zna`t^ELQ3HDWEcx-K}c(3(j9y1+8}Or+8ypBJ_-{_OivJ`qy!P;^ZWwk z7`52jAB`IAxPajW<(D`Vh<;w*CyUBf0QK25r6X078K<5WHWi<}$Ip``&Nq%q> zT3jo&xbKqhX$?}?YaW{B!6YRe7JxjEcpBjY*=r{L&dMc|;pPxyVGyEVpF*YA+=BI+ zX!rS<^92mfoi@rvN+u`)G-zgoxl|gb$<0rCz=yRp9s)Qs@99YO6uJE#Yc8Tbj& z#zH`2%8R7D34osh!!^l`O&M7)r3FIqlVTfb^rlNQ)454CBwg*jo6VI;uSugG>p5b8 z^L57f6%Vnz&sI-U=Kr?-iAI>4CkEOwCj!r&p?RWJ1SL9C>#J_W81^kLMfFt1sI-yH zN(K?oast^-S&K{vmO#Do0fj=6!8Wa#vls|E50y0Y-cnOWv?xc=FcB0%vrK?!+9)}q zHh(51YUk#yHEhP5@r^Xif~B!pC0IIt<_t3{;AMj196P?7>v$mBq+ygc#X~3510FE6 zy&)X=)?pW5|In7g(@?+4n|?etX|%BHern-7tiVg>PMhCn3+w$}pFbAPpD(~>8^-c^ zer5*sZ43?JY~j*b8|h5p(i!`E-o)AIz>bvkPjev>lbgwU=Z3LWCaaBJs~clDZ1%Cl z2VbUQ(`hUZU}Q*Q0Mi%-*-=lf5j=&&M&kke4{#lz;4KIO8wjabXJPJ<9qb5%gRmt; zXC!kzJBJ!^QXCFDdo&(}2y{~TiGCk`ZYREF#-#J4=~Y2G^A@HyG82c-YBV194+F&i zN$}It?0~=10?5|SVO`6LP1 z6hbF0)MQDBTFhX!6-lU)PzG6$nvKcrFHygU<_{tyc%En$SCOEER>0w{v!zy92QpIP zm2@W}XXegiM^P=4mJq$4CsE>HiObHx&BmVuVX~#BrW#1lR5~xCQ^~v_IWo=K44B!Q z##sn5-~_o95NuHoTi!HCSKgK(+*|HQ8;;;KgaUq0*)`1 z%g=2T;W!CN2}EitT|%O!(t3fKO6KHgDwPu_N2R1G1EuCp!_?Xts3x{DK$7H%9hyz7 zQ?|q`MlKE2TuxwgaH3^$+Rv(t>7uApws8UxTejOPy@X-j6VzIjI5RU}K$v~OzQtg; zX(d8bI-x~0oiHhUQ&SD3Zz`P^zo}$i{v4SWzzmq>B#pD6WWWh>D?u!Tp4`DX8W>s6?yVs7gvK=%g*ih%TDUx3tGp+&~iZD4Z1J z6F9RgkHm=x5h&r%05zOKsL3?oNNn?w5HN`YQY0=FOTtY~k%Uc}C5gV|$Sj{-^Sh9| zhIa%us>;ZM>GW&}ifeur$|$V)4eJ_nSE=;z!s?|$ZOu*;IT+;JZo>!R&9pQF;hRS0 zMu}GRtLp7IgcNLsynVj~sB65sG zsg!M;P^>J0mo0e3kf_B~i8C{E1q{y$Br4(Bcq)xkBZ|t4k%CoO0yQ>;$jQ(YnndR} zlup*Dky9ASg9UB7ljx+dEW$8F8<~a1#&$ETAVr4-DXNxovSm`q>dTo8XJtgO*Mga; z+Q2}nR^-%(lPQ_%g+;NEGP7|7JFpuCvx*<6tf_Q~7M)7#Pm&mDPPTU+7?Z0wf zo(z;)GYyl3WT1*zHGU>jUE8^&vY47?y%K#F*Q2T!4kqzW6SI@R!K%!G^sL)f_wqA; zHcU@N%&e@d25s2Rs%IcPc_azB$s=>EoJZiLC6B^Mogz9Gw8nrs zxg#A;*=M7~|1>c*f=6vjutDPzcBoFm!jyzm(~C?7M3EC@88KM~44KV6#fPn2Cs@F~2FteN zD`{%bK(FVGZ)V#J)(kCxt4XM5cpyF)@Ln`a0G>xp#K!)x8{=yKdOX~0&lYgLpes8l zMtYI#{P}adLnkuNc_ZN_j(+19bPXpBIybP;Tiu3=kFnxJPLbGts!o7Z7GxLi;lVD} zw^D)Ulh6W`1Md~Vc{~&@PKD2&DRf$+Q|HewU@r*DvQ@7RJAJHz9VT~%NXQy5bR{xg zm^)v%h6Sts5NF46y7F2aeA0e36WHk?kk-E~7iIY?_{J**>PvVWKz%&9p+A!(4c_(? zHTN5|?a=0AQEIXj%7@MaxQSe%>)gC%!%AtbR#}e9H{#|5hl=}M+R34Uuv?`|=Z>+B z0HY|*ol;|hpJOaOx~-~`NM?o%jMx9+8i1*Dcaj|(tYPpX65xP*k69`)pv6&JVXI2|@ zd4uevGTAn1>CmLQjBS?SKn*fMn^qK|-C>qlbujTNcHCZQw9wOZJleZ~9UIt6ySe)c zNL{Jl?cyKWz@gGd^`Hvqz6OkS?uG>^Br|5Mvpd9106Nxc{~*3F>|;+~GBMY_{U!>~ zB(~YPih-8*7`LL5GeutJu`l zv9OLc?k+Vmk&>FT> zWGaBl0hAjg*(^@!*tQ2O4g1$IYUn`W?8Q!eeU-Lrs%&YK*sw=Cz&gD#@3})`YLY5W z({x7rz;`;2H?X-{C166A!I*kum{LDG@vg*5XU*z{G-lObJR|ysM18k0O!xQF^3r6O zP+Z%n??!)&O~EptB#MV}VHEAeqhv>9eo}i%u#UDKqbjWu_BQNccz-;}(PDS7-`I`E z$g-PDL|bHX1M8iG{6N|rRHI&<8-00*3wCH%=X8pxMZlq(;bDo+2H?_>ai5QRsHQb) zKRFs0r3-otU7BqiW2Kg*hdIcMQ#z6X(Gk0Y23o_0u2q&`MQ}VBx?E-z;1#oD)Tj-J zk-wzHroePL17}tkA57G_7#^shkE4>#ks(5MnyEZ}QFc1xeIsOt*uOY*qdF&&8a^2{ z4AG-Ghp-|%!~xNRC7h_C{cN);-*mVNEAQziBJm{e3~A|_8^rV*$xBR5dsLmZ;1H2Xcu zOp)-22W`pw1cz+GO$k>)G_G*h4F=>A&YWQL^bp5bO#fmYDAJ;_12O5yr7^8Ssx~o< zrqeUD84|6sHDp?fvM6k+$gsyi&MmvtkSls@n3N*EPCC8R4ec!sfmmA`uQtZMv7|-C zL`h?VL{+8F9dc{Z!+l!{CkNOb^mT?n=8T-2A51lBsc^7oT#}&y86zVuUlW_1gQ$Ap z_|0I2Cu^x>%FgJAs(G>m4G4pRlyIqEqOr;A?K?_P_Isp8Ew4sT1B3E+a3bEoAi+xYB4z-geBM9f>*?Obgt+FcyO^v-`QoJW?hc9n3CA zp{3Trsv>ANx)d%ki}mRwCaFGvj4_oGJI$mib;dzJUWAn5mmvryGTr49HcS|hibb~0 za(B;^S(ieGWu%!J^qFCV>VzDelg1_=Le@>oair)vF%lHk<1#%_Nd}P=PH|SSPF7h? zsR#~LpE$+1gBah6-d1_jY^&kQCLu4pMGpAkj6+k;Tzs?EmeK?t>^ zW#p;YX~U_rAOO zBB~WE+vtFo_4@}I?u5-Qnb)L8wfomJD7?z55Tq^1O3$=IsMtsk(;i+jqH$7}ArYuj z4#HA{co3%IJT~bxuabR@Wkubn#n!bBZXLr?SowyEVw9T|r=`Z8Zub0uc<92&OCR{z zgCT(=JXQQ^A8aJI9p-ZI`>OJwYTKCeCzf0|MZ-=C-iC`S#Y&k(+Tg5IDVoBmNu(<# z*n(nIdh8OW(#wn$*W9M^42W`5uzj6e8L2d?ohDxs(iyomN3Ja0yoMvaX;5S~6=c#$ zG@c}`s!Rzhpw=P3iMiq-AvS60P*Ls3$TNi0)Y62SJA{-8#J8UC?PfGkl8K}_Yb8tk zxg@qaUo(@Uh-v8x0u$^ALR5NaZR*HaI8CMIgH#L@kS2KRa1V9By;8R^${YcS$OWcK zqe4~s9LJajIvNUU)-|~sQMqwLV3s!3gqp#LR8-!qid|$EZ@GN2`e^ww4&cygezY=# zN3_*Fq;X0`FHTyWzFbj|;Wg#Z419fE(xuGlMh0ADYa~Vt$^3BcF3X)Ev^*yBy_Q}B zc(k@$tQS`{x7LgGsJ6XSzg#Uxm2$Zpt*mVp>o${2GTfeI!#NXPR1}AWnG8DSB*T;A z0gYY}I9S=Jm$z1mrE*j&Z~(rwM9^Uc6AA zPE=Yhtrj;fl&53_zErE1^9!Q8(h29~^PoT8CwdtBM&9yLhZbTBmTD@4WZf#a;<$A4t!KR%KPJ~&lh21)2uq7vc zE;u8M*1xRGY~hq0NwdoL0xpdMjX2v>$PTVp8nCH2?l-Y7EL607GZ;o@@e*WBHOP&Y z;X{B0M|%^CGK@XBLD7hMM!won%3RD!92 zTYWr#l9fEk4%I(lq}beTaAsTuvJeK_E|^!ak1E)7u{s_PXd^&>k}%GK@KhsEB-_#| zCle_ZfiA_v@)YD#%eok8xH5-|2$@f~Sxs^z(HV0hD#ZpiN8ni$x*jfMp$gJtu?kX= zupqUM6%E?M5hr*a2B|nyZd&`DjI1U|#7q;U;wPvp3DOqoJCp^*aegwmW}cjlYQDL zkTLZWAH%M0VgstW5k`ecQ>Kc@8DhCc#it?WVsWcd+;GD=cOx?D8%Z@Iey+^2sUVeu z4@s9(hpA}Bs)10XS1+j0n``BZyB=_#P6=t(o z>}MX_5*Se8J!}bvL&z+6sS<4uyHKSHlDP<9CN)eIW)oX`o3I7a<{^!oSOKSAgq?C3 zyyu%-q2N<#t~CxZOFk>D3g;|?nFp?da z+uRhG7F=FZta#6qmZ=;(8A+Ag$5Aj@MOoajrasLORRju{KROxXK$(mQmc9ZpZyx-@!rtbB400Ykw!|Zz;UM=j^QfUT(RJXLlDIj3W zDlc}%{56QGV#$rWJVR;IiGbA9$qfb>(Xv*U!Nx3@hLRYo`!XR_X_;X)GYD2B&RDGC z?MW4-S~F&>xpXkmjv*}7{v}6OIYnX8fx%R(Zx!LPOi^H) zL^&#!N}Jmo^~%PDsC?;Il4LO`3C_M2(fFH+?~0cb?&43Yr_^tGa~-ufo-Tu7>@X~E z6qiun+D-+JDMm01;IxcttK0SE%^mG|td=U}OVzD14l@^P#A|K|%Y9BPAc1?4xK|^; z^o6a>?W!UyR;z18JhQqA7jeCwaB(gbOOH~Njpe9btUVfSY}P9)6)d18eWBb^32K#1 z4TYtLT({wnj;QEm_+&FF;3`FlE=R=F?V2LFu(r7b!OKr$saS{O`!We#sk~8#pE}wq zQ>&o)e^1T*S;35n_9H#c9}J0Ak8pNwqVJutQBFz zxtSNsb()HN=WEAOVaOnB?6|}vOE(Ldn&oj+Cd=cR)1m?7J}kV@p4KJo3dqwm9X;z zQx%%0k`0e3=0+{OiDR|0RNmU4>FG+bRm3C6!_-0HmkQ08x}XFYQ*L!iv+F8 zmCFp{SUf60ZDg3(l58g5p&K5Jip#}ny>hWE^-RqbnPzDlk`+}hY>@q&oek4TF)}L2 zq0C6iAhVK8l3C0RXc||_%0_j&o|%9nkp^2TuNE&>F#X9)^CBhyn{I~1)2%G-itM0h zJf+MOO*>1oMCmRldAZ_Q!lf;m3~XSIraGl58P9>pbb!H)O5_lmX{6LxMvF)iSgv5x zR(1~gk#Zu~LP$1=Iewycu8}h;MP3vOu>@5j|jG8c!w$Q5($BIu`>hw~g4#!Y2YE4w5~W+6$P z+fIuSzMP!c@Myp|c{6I88?aUV#2<2P1`H;tDZkdnrt32b=iwVW69cVSLl=W^b7eaZ6$oR{t3^`s&8f#7wbMEL0i6`puZZef1@ zJikk{Ivlrg?ggt;*rB!-53v)CAbwzyACX(fUV`3Ufa!eB;C9#c{byMOU==k+g!Ge~Ku`|MF;ev=`Vw7s$1KLnlO{)p z_)l!S)#n!6^UT>u)PI|j?w#)$xPn_^{zN3=Rvbscv33@OVw zsB!!dN5@es90j*ua;Jm)^cBLA-bh{v@)(`!<%fejG~$!TyvLfJW2es3>d@L0SVHe3 z2cM`tH|-YMBf!yTvEN@72tBo+IObQrAwk4%bP2rcYJTDNPaN{07ee`xLA1tJr`=v{ znWniA(}jC@fUMcY9#v>87f;H7R1!+$%sIMpF+m0(Nrw9!Aq0qD8#bjO zw3<5$b?OLcGgl&kv$L~4ob+HS{A>a_H+QzsMU^|)h&DR4a4z`_-@>`sq|QFGka((Z z;q1aWJd4K9&7x8n@3k$Q!JU)Is+=a4%wi8wegenqJOqzfA?0%Z5|9 z>0>Eex@`*PPLM{Ey(UHBx>_n^U|wP~0ZnuV^rsY=xzSW}cn%jtuLuiFyjqeWF5^^) zWmPJ`uq1^W7N&4vRSITSrO_m-QWTaUCcsoIQE}YXpNeQ$WG~N>J@Z4{P+Ou`cX5y< z!rcr#_wI2jywnw^tC7YM>x2XpsQr zng`#esva@>aqKnEqBA1f?XUCc89X>DMaq!v<5h>DK$czejCZJ5q;KQ|is0u4Lh6Gs zTN6O0_!jBV!PW<&#QvP&q1jdcU@@R`clpKXtjZa&39=5W?%N_Ou5G!jFx}Q!6j_pz zMVFSfEGj3WS%Iwla;g~0yNzpGCEZS~_`zFB1eNXt!tfL}RmkDA=-JG{LG!cF#yRW$ z@bJ|9%slS-4k}`4(*^bE(%S;25Mjnns)O+SU^mRmY;w&q?BjO*XB>XENzCLDH7Nng*{;@Wb?60&*)Ry<#N82eEvpE=IJ z$S2{kYY>!_wvyB35%EqTgiGQ#Npc7-xv7N=2Rtc6X6G?}QkPT)QA)@XML9b=?~9TV zKTqs3NSz^@TjB&`Gtx-$)zAd&O;q5_*#*sU=_iKqjy1>XHMSF5qX;J&S~#kc$Yu5n zTRKv+W7A4m2)P{bHiD42o)t)Jk|u*~+~E^NK08BC)|wuh8HZFrBGQ@jfn*+A&jHWR z5=opr|HZJ%*j^a}^l7Z2u`8Y0-VULOyk^hS)2rD-SC$EN{_MGcDaY2&bN=7}<7!sp zXl0)w6M)XwL@fLmZEqY>kvZVl0wf39Y3Y*;Nb>8At2p^Tj(d0wCn?Gc=VxZ=$to#8 zSfik*JPVMt5{jG^bo!bd)hx*3JR7RIv^hfys6`uUYF9$$9jlgO3S@5fNfzZCuWpbr zN@h_nxH8BNC)hfXd%KWMZDHXwy=p&|ccj7cOPYU|kS$H_okLmq?ivrWH?>k+v?Sg} z$|bQDP%c4gFqu}SX3Aj6P1g-~Sj{#qr4`e{!U7EY0jV1kp4?Qhuz+P9R~!}^T)R#u zhUMJfFqI&d*DU?9{V=7_bE`5%Wk?(@nxUeDnOJedjAnp!(8QpFI`iXlX=$@fYR$ad z!noOdE`=Mjb1B@IolC)Ew(cnBXXaSXa-3ti%R{eB^Hy73UPlH?aKG89h4ZH|D@vq& z8Vhm{+;S{4sT9t66?kmv%m|e#L~arp1JA9a`0_kwI!6=Lh|^}da9^e!+_$vs8de{+ab9!1G1#KL65G5U z5h4KvUyPth1fsdLi6c7~?1yYzFkfX{N^ywrgZ{PHKy-EL8V=%41_7|OLwQn~yp2PO zRN$N_Kz^w<@|pt77lkGJ(u8T(gJI(I_D8j;!MB4{1k|q=b7aa1Pdf z^3&n&;|7Xk=ngw^w}p>`@r|fUrIMd!n2--t*91|DS=_|1R$NnC5<;^lRuf0}&G&VvRr8aR2)=y=%t}{URH}s~U@UQ?=*V`2Ya&gBo47_G>f>5`1Vz1( zlpNGeTm}{KZXq;HgnRSVH|Cjx{%{<{xHW{v9`4G~0b~c>aJquz)C@Mc-N4yzc_%I! z#GSc?v(XUu%Oih8N5%Or!t0F@*ZkDE`MH_Y%sPs;=pZZ(%izkm?d47EYQ)A@yl0Dz zjkEzdN>0V6MaUrT(90HBvKqxmDvDbDXs_Gf1t(hY>(e0Y5%Tnp(%I2LG$~J1pcXWD zUL)$roNnjpVJlYuY9}t7qOBAU2Z7UZM58-I=|UHzXqdh?YGVj3-iuH&x6RcS*rF{HMX5UNWQ%XD!F1&OI6o=-q4oyOP~ zA50?N6vDrFyGSA0>rJBAW*(&1I_yQ`E+h~PMDq5N#XVtvN2M+7AFhLH+{NWE97BqO zT}9Nplk^d;SdAdQ92oJAEjTIob%G@{sujg_NFk!Vk=3%1(8TAG+}&e&aRIxoM3Q07 z&~+3ry&R)_V2NH&NTftJ$QQ_6SuML#6{5;$qu--GLpup7y^<(3CUEJ-m={v@sGD`= zNlmuzM}@&Cp0xUpa36Yve9)(8>4NzL9Z7vGx*8vf2s;k=@aCvsgOM=QN`(G&3oCxS!o=eXOCTjWimusNG5U?%BM=?*TkS%dJm7pU zP)>8V2V&RR=7CZj^Zqgsm3_$S2!zC#u5%htE zj9~n$RFiQ+J|IC5%z~rAEIe-X@W^TuE%Eg*T#f9uJ>GI$gZ^*tT42qC*<~VJD&axjSo9Zn>1f zzosP}Ih3E^G_i2Wd2`?Vrk$+BO7q$19ilDF2QGr}`QyQ&PWN#WGC~)U!eDgYk8kit zir)xmb@mJ)K6(wCvJof=XN@SS367jFZlILVjKjicOmC>H;|n+Bfh$4-p_u@-L{%9+4zKV% zQ(PZ9DB^Ac_IL7%+o4AL#MYr$=^;_ci7auf>uu5=HBPdIQ3^IeL1H|X@$_X5-`vSN zNw~2K#SH}(w+G|lDNOjxrgwBQ+VReL*_y-7wXabGZ$qGCb#|eb@qe5nz&$kBJKjL= zCm&BLJ-UB{4`F279l{09zI{Q;imm%&SmtOza}61*KNu>QlYwJw8b!;2p(CZ2hh1>X zPx_q?!#?x&Bm8i5PU6^DvnCo3gk-)Pkft{g(>L33dfw)d zhByKq;&!6lr9R!c3gd=$Mq7Sg@AM81qK2&nIPRXfgEd@SYwq`l6O3RyeoMXlRf@P< zRLZb5?q2NRp=`Qo2Pw9Mkn;C;REl_Dn|+t=&Xi{o?doKp5o+;xyC=q2%Ncm)vN(~{ zI?QU^E$p756=u_8y>hR%z4=s29!Wbbcl&2JI3B;GV_#o#T%(>wH>fc{Tdl3W%6#iF zr<>UGwZbCmezd|KW6lt-q7A@aPCj@sb^C@CPBI=qL3OwxLHL~rv->Y2C8 zx`xj>U%{owzP^mv>Xke9d3+|W9*}CtZKJ_0`EuEEy)T`;P{wc$ktr81Nndd4%AV>d zB}ai0ouwW$yB>z%R2q*@L!1za7!cv_#K_xVf*i1K-aJ zjpZ%`=ETr*&BGpY87zaWZRia>W=fL1kVPD6VnRp~-GwSuTX$QzBQ zoSa!8!Udun(~h)kV~Ax&1txdTq#w2Wctj6JFUIni7OB$Wh%T0-Uy?xbzP8z9&tTqp z`-rZmz=VAq4MsdqGa{x-6O8+7G!f&Xnh8CbDYMvi#4dEcd<}j8xe3h-h`wP&;qeva zA)lxQHMuQLm|zC%5VAKiCM1E?3c4fTD#DRb)~i^8GjB~x@53AkI!`9wOqA^2vr;8_ z#*Ni&A|GUtyywXzjq$t312`w_?;kac&pyJ;w4~rkgFq|VcLuni5gf$ynknoR9PYtn zR?JYj2rkTkrizcpQNK;SwRx3%FnG(9eNCdZF_t#5b_=25qdKNNd@b!|h+LfXy@giw z=Wk|8aA~^MP2W)@`5LoY-pGzF$B#%=bLS4buD;(DjQ8?`5R zzB0)&QVh8KkuArA#w&2RY&6*&@q=m+tS-9h6Jd$sB<~P$t!Zz^hO%y=OWo)?eJ#Qw z>w_iChB2&ktxJcatLy&+fn6Iuz`$Ve_OY}Mqv@4khDpE@FN+&XaUF9{*sYy`dDB|b zilWd-C`E4Lz-^Pfv7vk1%!}yKXZ2DR=L+>iBiO2J;9yA9fi$hLGJ7=g*jQN{6d76% zX*Kpv^ziLm zgPJ#3$q9*hfW9;r6;7S3_STIwIV<+$t%XwFQorKIa2Zj}`B|)45kSfo9c{f2&05Dhg>E%VB@4+!UtM+c#XGajS{T)w#?iUV)*G2qV=DhT)5} zOhnhjyXmFt5Yzo9(mW7V*2I$mUvqDLPIN2$jpktNeDItN+AVx+moaD>j9};?+ve#v z+mx}9Ts+Lwhgv-}ICPNlRf}L(=u|I>Fak*2=>?HcWyZWX#~PG7em zj z(b@z;g^M(7tJg74B%6;O1i-Wr6|tv zw!wS*?9j3v5BFl+5bnJ+Rz%5Or3(S+1u?n6gbQmXJk*V7D#FkIaDeB&)CvcX?H%LB zK)^to?|_x1Q>jAs%#d?oOIq%g7T#%3Gf6G3Yp^aG5|i41E)@3?JzIbiOm+~gz)qx* zw9MNKI6V?>^85z#AphbmQ}Fn2uUz*=CcJe6Zy?a}tq}DlX~oV5x*WGLJWg z#vSRkhdj2$(cO$(Y)g-k+=cz!xGimGXF@isAkOZ=*+hw11*j`~MJFy}aSD%4YW2x+ z)Atf{M&6mgUO*w0Yc3P_vRQJgXYFm>!nllEtfe_~WLE;s)Ep0x;np0HA$Wc{Cz`v{ zi~@?vt>alqD6Ylu9$SVPs~sJI-qJOFc^~E=zi`hrGDZp;ZebH=bRIL1WjA!<*$Ksh z@FsBaj^O3HXiT?hSk_sGt0|-S5Ue%Nel1=o$Qc`jWjP%%>-9&@HfR17%rK-hiFZ|; zab)dyTXwQVY2lvq{8|jxb8^ba49~tU3hmaof$oSU1KW7MQdmJUJFPHhso)*5J|=MR z*NkI&kZGBo;o%B-1Dn(h`DYA&F~S+y#Fb028Q4j_)!Rm#2KUXdU(;N1xw~iF^~TDi zP6&~4UL`9nc6rORlVA6u?6E{lqC4l*7Wv-jW*;jA=7l1ucyzrD^=)dFm=7a6dFU#+ zY-hW{afe(a3+U=P9$uD>6WCRac*kwM=ynrZNFGbZam3X ztWU#IC&+eu=hQMTos?=|>9ULVkUXJt5;r4CML3)A5m(7K;lr2GunbT)sA2jAr?DM^ z=`kBoMUZmwl?zC`xlkTpg5%$hX1 zutmFZZ^wL==m2Htq`+c|6+RYG=u4xgY~k@BIPKVU-S%P!JNr9bnRY-O!F$xlVw-at zae>IySZp?F%Z<1++ya+Lr%AH_la5)5z)~e`lb3c-E5-WhRY}1M3+5MUa_odN-(M_m ztXQKz&D-!zSxK%P_uHmqbjRf}xATe2gr)}Us(6@GXw0g_I~ZfnCH7n+Gl8`k-C_(dHi0$DwI#`Pp zF3F6Vy*kB0HIA$c~nAF(m*BIHg3*{T(o{ym% z`>CXWGQndzS&ET*-GZCR+e$`1m;r#hD|qYNB(z&4@RL|Jav~YWJCaT=8JNiU!Ki*s zim0tv&DZcrTj65%Lm!;K>}X`+$i5AdsS-mGv>R63IK&EXFyDX{qxC=3x@9Ez(H@3t zsfL|+z+9L1Pq;&{jS4PCoi=Fg7|VH*I8zbS+oP&O1b1axf!Eu^1aq zcXt5nmRDj20?g{6wOdMkQn+xW_$6woFLio)LpUkVY1DKYH1gu z?PaRc#DQZ(dYxUW!@uiCNb1wWNLdM%Kg_ zvBT&-<_jw|V-i|5jLG=*{t(;rvCu#^Ws>DqNAYZo=Rrb|yx5kO-}#1RuB2Zk6KXK( zQM{s)bJem4uH8&Ph9p;1u6Jgk@@q_-JhT*PUvVl(dqXe7*=?N%@>ZD$lrnpTG0Fu2 z>wql)7}-{f71y){FAbM|#Zt1yxF?%VXs(p|bdyvP)UF{#l7qFW*VLw!1jav&cy`jJggV`%U(|d8dbf)VDfM!ca!tIj~W;_!2Q*JQYjONXJl8n>9G;IWL zfedWqryz?srFpG7NUrUzKx@+ioe?y;3OOEDdRXN|m0UM^8J!0(W0-%w)ZE}=?Hk+} zx5gU^X;{OMOS?`?mxp|)z%pRR2qSN zG&R0ClRGuLjWTChQeab7vqQ#K0&6$DJq&8?&fY|pkF8ZHib`xa)XcgP*dB$^h=)SC zfT@St6aCKZny~M4^~8=zxH9p6GJN0-I#JaA!q{R3Sw{_#td)8TUt&!zB6z6VT8vey|^At0e+eotvVsj|C>{8l|_uS5J zFHGntX2sC=bg@p%vk(j?9;KjcWOo9u7~!={&e%PjYJCliJ~n|Di~G0Zm+UM@x8aA@ zwO5$qkdH;oE%(f~m>QYek2m7$4{-U(7q84er9ZG8I78aURy}5?vXYj!E${SW`j8p)`6Ds=RK`MI^zXRGo;I*NG=L* z(Mvw*%^~3kV>C(1UrekuM!%#6N4I@DRQe;75hixv3of39drkaV%&Vl5V`_QP zn54a{wBKLtRm5}=5P3{kPSKsPNAiGt9qfy>{zlVt*64sO*E{Vd6kI>f&ZH=9@MdqO zKbTHyC$yQ&&y3Eam&_93rO=P-)r|Awdd)76Hp~7Xsj6M?t@qs`u#upI5ep^h&XHj8 zm%Z#<4w*dZH$&{~omLLaVFP9?ge$eEEV2U~v4>q3n6Ve8O)EG@<;5)F-O6>taLlB- zv@{=w{75@CY!e^h5BLTrU`pXmCg6Z@q!HrB9OGO&7M06rm@LRhJ`_L zSQAI*n7|J|MkbXkx_xS7qGd>nz4*tPTAU>9kJbX@Gs*Ou+alvwQgTtlE~ZiskOBu4 z7M&vPY`xmN#<@8}gVXv4b20gnmqgf!cV&5=9dSljXl0yA6VCXAYjA||#uMQx#Izgp zHUXKmIX)%pCy_H8fyw!nZ?a(D8Yi9*AU2p}oUsp9a+%2L>C=@#du&@IVp%T~i=TVt zmLn$GkeO=d{>GWeN7f3NLq~959;fD~S#|`VLn-V|;BZoHZbwI;cZ`|V!ag}13bgZy z)RcwO@E$-YL)rDL)~$r;*Pv!FJu-$8%Ef#4m@me~s^5jC13E5p<8Wz0`y!_r63(4r_u9MplzE9*s+sGAm*DJWBQ=7Pm%;E1Ep$wJW(P{< z;Sf715d~s)gaiW0&7Rl?tlv5}a%XR};K{J;`Vd)7Kjvlfq6y?)%%d{ufcZ_Z4=QVO ziE~66BP85_P5uM+N?F-33ej&-^u|}-_&!(28@Z)f?DY|(eX$khEGo9t z?{;Oa(`h1ifDIOO=9xNXg`K>ULW2`ZpP`ki!23tL2CwoiD^wzD^D(uL?Hkg&RadJQ zt7bhy!FXS^ys?dk2)A*S3VxKgiuBYt7YuqzswSV-@F0~(qcg5fmJOrn2}EKrvt698 z3F4&9x;D8pdB~M&`mT|=UCC%>)ZaOecxpk5%<9?!ZdaL{$V>H^uQYN&#Q4C>mF`!x z-e9AkamtT0x;-7myD%}To0C2qUG9wK%}_(07FxH>SgU+5g!V=dGO@$SH}Y{uhUjh{ z9}Yi7sI!wRR>`Lr1O9r8j={jBNuB58A(3w$l4rWr85XSJ^Hyu@L8V)LXe+9{r6~Qkm{zf>xF3lXZ`A6O$z4fl1jt zFN;0qZO!1BOo)paP*E6ie2Fw$6T@mgjgmELyS&xKoTZ;au%ppUxx=L7%BRRaSq60BA)8%2~j@hoj`PD_O|RqIuR7Nl(^!F~zfZ%U!dDmC@avp6M7 zv*v(<8QnnxLW|;wryDs*9gNoB+^FFcWt4a|*!ZUEw6A3?zGgR`qPCYAW+D2 z1`6NR5kx89HURN&UexPJ4f4!aSX*1g;K4U6G`b?@Ror)kt)J8`+@3;*F{{XK3ClF7 z{KSi-oJE%3yEGY%`vgo;;E~XiT9mW?ZAEE!=G*5;x zZ$d_NppPz+p&xuAopnRi?^COl>veik*gZjPa)DXs3^;06aR~^c6T4ZBL%|jdvP!-w z*F0RU;5vRYkY*J+hZHkqT$O=6U^ua{M@Qe~1}dvKrAk|yB`gr*K0_X?mdlAtMMQ3` zSjgU2sVYnnobqX2rE^o(M+0`@NRosz8)(=hzl7hEZcPrm<Nu#Z$Jq3%6U3k)$ljZTn-pzm{cZ!cHOR2A)*J&_+J`lV6=6TW(kI5) zH^uswkKE?mZXkSYw{b|D4hPFd_RQYTa!A5}A2gRWqZ3`lJH~<=Kh8}gSlrE-)OB32*vHw{ZrAV8%Jj_BqAv5oA-l5}=ceaf_->Ynx^gjHk!U4TZc$ z6dpJXSlNjlmvXR1l#V}J2a6 zODlpw_w!w)UH_7|sgzo;bgOdSF_wMljM6dQgDNY{^lUhZQ2MNi;EC(m1cWUO5z06& zOm?{}^Uvu~27tZglRJA%CmKo|n=pBYa$yJ;KiX4m!$OHz4(CHil&gka$M6R&e#7*D=BRc%CbRiz91m#hv2i z_08q7OOR(clp7U_802rX646nw_mmy}Susz-wxzF){MhaPBuOe3lhR>eV(mml5kKo7M7$cve}1K~%c- zx=_1Q*qQ4*PKukDFy93r+(^`m!6|BnYX@ZP-kk! z(MQc@`Rz*RE(`aE$!iZP4jof|bu__bX@oW;)%0$`QZTnw3Ty@S)$wc_O{bT(59 aZ*LT_q=f7GWe=q_mom(2u{rco^M3>V_gw`5 diff --git a/external/openal-soft-1.16.0-bin/include/AL/al.h b/external/openal-soft-1.16.0-bin/include/AL/al.h deleted file mode 100644 index 413b383..0000000 --- a/external/openal-soft-1.16.0-bin/include/AL/al.h +++ /dev/null @@ -1,656 +0,0 @@ -#ifndef AL_AL_H -#define AL_AL_H - -#if defined(__cplusplus) -extern "C" { -#endif - -#ifndef AL_API - #if defined(AL_LIBTYPE_STATIC) - #define AL_API - #elif defined(_WIN32) - #define AL_API __declspec(dllimport) - #else - #define AL_API extern - #endif -#endif - -#if defined(_WIN32) - #define AL_APIENTRY __cdecl -#else - #define AL_APIENTRY -#endif - - -/** Deprecated macro. */ -#define OPENAL -#define ALAPI AL_API -#define ALAPIENTRY AL_APIENTRY -#define AL_INVALID (-1) -#define AL_ILLEGAL_ENUM AL_INVALID_ENUM -#define AL_ILLEGAL_COMMAND AL_INVALID_OPERATION - -/** Supported AL version. */ -#define AL_VERSION_1_0 -#define AL_VERSION_1_1 - -/** 8-bit boolean */ -typedef char ALboolean; - -/** character */ -typedef char ALchar; - -/** signed 8-bit 2's complement integer */ -typedef signed char ALbyte; - -/** unsigned 8-bit integer */ -typedef unsigned char ALubyte; - -/** signed 16-bit 2's complement integer */ -typedef short ALshort; - -/** unsigned 16-bit integer */ -typedef unsigned short ALushort; - -/** signed 32-bit 2's complement integer */ -typedef int ALint; - -/** unsigned 32-bit integer */ -typedef unsigned int ALuint; - -/** non-negative 32-bit binary integer size */ -typedef int ALsizei; - -/** enumerated 32-bit value */ -typedef int ALenum; - -/** 32-bit IEEE754 floating-point */ -typedef float ALfloat; - -/** 64-bit IEEE754 floating-point */ -typedef double ALdouble; - -/** void type (for opaque pointers only) */ -typedef void ALvoid; - - -/* Enumerant values begin at column 50. No tabs. */ - -/** "no distance model" or "no buffer" */ -#define AL_NONE 0 - -/** Boolean False. */ -#define AL_FALSE 0 - -/** Boolean True. */ -#define AL_TRUE 1 - - -/** - * Relative source. - * Type: ALboolean - * Range: [AL_TRUE, AL_FALSE] - * Default: AL_FALSE - * - * Specifies if the Source has relative coordinates. - */ -#define AL_SOURCE_RELATIVE 0x202 - - -/** - * Inner cone angle, in degrees. - * Type: ALint, ALfloat - * Range: [0 - 360] - * Default: 360 - * - * The angle covered by the inner cone, where the source will not attenuate. - */ -#define AL_CONE_INNER_ANGLE 0x1001 - -/** - * Outer cone angle, in degrees. - * Range: [0 - 360] - * Default: 360 - * - * The angle covered by the outer cone, where the source will be fully - * attenuated. - */ -#define AL_CONE_OUTER_ANGLE 0x1002 - -/** - * Source pitch. - * Type: ALfloat - * Range: [0.5 - 2.0] - * Default: 1.0 - * - * A multiplier for the frequency (sample rate) of the source's buffer. - */ -#define AL_PITCH 0x1003 - -/** - * Source or listener position. - * Type: ALfloat[3], ALint[3] - * Default: {0, 0, 0} - * - * The source or listener location in three dimensional space. - * - * OpenAL, like OpenGL, uses a right handed coordinate system, where in a - * frontal default view X (thumb) points right, Y points up (index finger), and - * Z points towards the viewer/camera (middle finger). - * - * To switch from a left handed coordinate system, flip the sign on the Z - * coordinate. - */ -#define AL_POSITION 0x1004 - -/** - * Source direction. - * Type: ALfloat[3], ALint[3] - * Default: {0, 0, 0} - * - * Specifies the current direction in local space. - * A zero-length vector specifies an omni-directional source (cone is ignored). - */ -#define AL_DIRECTION 0x1005 - -/** - * Source or listener velocity. - * Type: ALfloat[3], ALint[3] - * Default: {0, 0, 0} - * - * Specifies the current velocity in local space. - */ -#define AL_VELOCITY 0x1006 - -/** - * Source looping. - * Type: ALboolean - * Range: [AL_TRUE, AL_FALSE] - * Default: AL_FALSE - * - * Specifies whether source is looping. - */ -#define AL_LOOPING 0x1007 - -/** - * Source buffer. - * Type: ALuint - * Range: any valid Buffer. - * - * Specifies the buffer to provide sound samples. - */ -#define AL_BUFFER 0x1009 - -/** - * Source or listener gain. - * Type: ALfloat - * Range: [0.0 - ] - * - * A value of 1.0 means unattenuated. Each division by 2 equals an attenuation - * of about -6dB. Each multiplicaton by 2 equals an amplification of about - * +6dB. - * - * A value of 0.0 is meaningless with respect to a logarithmic scale; it is - * silent. - */ -#define AL_GAIN 0x100A - -/** - * Minimum source gain. - * Type: ALfloat - * Range: [0.0 - 1.0] - * - * The minimum gain allowed for a source, after distance and cone attenation is - * applied (if applicable). - */ -#define AL_MIN_GAIN 0x100D - -/** - * Maximum source gain. - * Type: ALfloat - * Range: [0.0 - 1.0] - * - * The maximum gain allowed for a source, after distance and cone attenation is - * applied (if applicable). - */ -#define AL_MAX_GAIN 0x100E - -/** - * Listener orientation. - * Type: ALfloat[6] - * Default: {0.0, 0.0, -1.0, 0.0, 1.0, 0.0} - * - * Effectively two three dimensional vectors. The first vector is the front (or - * "at") and the second is the top (or "up"). - * - * Both vectors are in local space. - */ -#define AL_ORIENTATION 0x100F - -/** - * Source state (query only). - * Type: ALint - * Range: [AL_INITIAL, AL_PLAYING, AL_PAUSED, AL_STOPPED] - */ -#define AL_SOURCE_STATE 0x1010 - -/** Source state value. */ -#define AL_INITIAL 0x1011 -#define AL_PLAYING 0x1012 -#define AL_PAUSED 0x1013 -#define AL_STOPPED 0x1014 - -/** - * Source Buffer Queue size (query only). - * Type: ALint - * - * The number of buffers queued using alSourceQueueBuffers, minus the buffers - * removed with alSourceUnqueueBuffers. - */ -#define AL_BUFFERS_QUEUED 0x1015 - -/** - * Source Buffer Queue processed count (query only). - * Type: ALint - * - * The number of queued buffers that have been fully processed, and can be - * removed with alSourceUnqueueBuffers. - * - * Looping sources will never fully process buffers because they will be set to - * play again for when the source loops. - */ -#define AL_BUFFERS_PROCESSED 0x1016 - -/** - * Source reference distance. - * Type: ALfloat - * Range: [0.0 - ] - * Default: 1.0 - * - * The distance in units that no attenuation occurs. - * - * At 0.0, no distance attenuation ever occurs on non-linear attenuation models. - */ -#define AL_REFERENCE_DISTANCE 0x1020 - -/** - * Source rolloff factor. - * Type: ALfloat - * Range: [0.0 - ] - * Default: 1.0 - * - * Multiplier to exaggerate or diminish distance attenuation. - * - * At 0.0, no distance attenuation ever occurs. - */ -#define AL_ROLLOFF_FACTOR 0x1021 - -/** - * Outer cone gain. - * Type: ALfloat - * Range: [0.0 - 1.0] - * Default: 0.0 - * - * The gain attenuation applied when the listener is outside of the source's - * outer cone. - */ -#define AL_CONE_OUTER_GAIN 0x1022 - -/** - * Source maximum distance. - * Type: ALfloat - * Range: [0.0 - ] - * Default: +inf - * - * The distance above which the source is not attenuated any further with a - * clamped distance model, or where attenuation reaches 0.0 gain for linear - * distance models with a default rolloff factor. - */ -#define AL_MAX_DISTANCE 0x1023 - -/** Source buffer position, in seconds */ -#define AL_SEC_OFFSET 0x1024 -/** Source buffer position, in sample frames */ -#define AL_SAMPLE_OFFSET 0x1025 -/** Source buffer position, in bytes */ -#define AL_BYTE_OFFSET 0x1026 - -/** - * Source type (query only). - * Type: ALint - * Range: [AL_STATIC, AL_STREAMING, AL_UNDETERMINED] - * - * A Source is Static if a Buffer has been attached using AL_BUFFER. - * - * A Source is Streaming if one or more Buffers have been attached using - * alSourceQueueBuffers. - * - * A Source is Undetermined when it has the NULL buffer attached using - * AL_BUFFER. - */ -#define AL_SOURCE_TYPE 0x1027 - -/** Source type value. */ -#define AL_STATIC 0x1028 -#define AL_STREAMING 0x1029 -#define AL_UNDETERMINED 0x1030 - -/** Buffer format specifier. */ -#define AL_FORMAT_MONO8 0x1100 -#define AL_FORMAT_MONO16 0x1101 -#define AL_FORMAT_STEREO8 0x1102 -#define AL_FORMAT_STEREO16 0x1103 - -/** Buffer frequency (query only). */ -#define AL_FREQUENCY 0x2001 -/** Buffer bits per sample (query only). */ -#define AL_BITS 0x2002 -/** Buffer channel count (query only). */ -#define AL_CHANNELS 0x2003 -/** Buffer data size (query only). */ -#define AL_SIZE 0x2004 - -/** - * Buffer state. - * - * Not for public use. - */ -#define AL_UNUSED 0x2010 -#define AL_PENDING 0x2011 -#define AL_PROCESSED 0x2012 - - -/** No error. */ -#define AL_NO_ERROR 0 - -/** Invalid name paramater passed to AL call. */ -#define AL_INVALID_NAME 0xA001 - -/** Invalid enum parameter passed to AL call. */ -#define AL_INVALID_ENUM 0xA002 - -/** Invalid value parameter passed to AL call. */ -#define AL_INVALID_VALUE 0xA003 - -/** Illegal AL call. */ -#define AL_INVALID_OPERATION 0xA004 - -/** Not enough memory. */ -#define AL_OUT_OF_MEMORY 0xA005 - - -/** Context string: Vendor ID. */ -#define AL_VENDOR 0xB001 -/** Context string: Version. */ -#define AL_VERSION 0xB002 -/** Context string: Renderer ID. */ -#define AL_RENDERER 0xB003 -/** Context string: Space-separated extension list. */ -#define AL_EXTENSIONS 0xB004 - - -/** - * Doppler scale. - * Type: ALfloat - * Range: [0.0 - ] - * Default: 1.0 - * - * Scale for source and listener velocities. - */ -#define AL_DOPPLER_FACTOR 0xC000 -AL_API void AL_APIENTRY alDopplerFactor(ALfloat value); - -/** - * Doppler velocity (deprecated). - * - * A multiplier applied to the Speed of Sound. - */ -#define AL_DOPPLER_VELOCITY 0xC001 -AL_API void AL_APIENTRY alDopplerVelocity(ALfloat value); - -/** - * Speed of Sound, in units per second. - * Type: ALfloat - * Range: [0.0001 - ] - * Default: 343.3 - * - * The speed at which sound waves are assumed to travel, when calculating the - * doppler effect. - */ -#define AL_SPEED_OF_SOUND 0xC003 -AL_API void AL_APIENTRY alSpeedOfSound(ALfloat value); - -/** - * Distance attenuation model. - * Type: ALint - * Range: [AL_NONE, AL_INVERSE_DISTANCE, AL_INVERSE_DISTANCE_CLAMPED, - * AL_LINEAR_DISTANCE, AL_LINEAR_DISTANCE_CLAMPED, - * AL_EXPONENT_DISTANCE, AL_EXPONENT_DISTANCE_CLAMPED] - * Default: AL_INVERSE_DISTANCE_CLAMPED - * - * The model by which sources attenuate with distance. - * - * None - No distance attenuation. - * Inverse - Doubling the distance halves the source gain. - * Linear - Linear gain scaling between the reference and max distances. - * Exponent - Exponential gain dropoff. - * - * Clamped variations work like the non-clamped counterparts, except the - * distance calculated is clamped between the reference and max distances. - */ -#define AL_DISTANCE_MODEL 0xD000 -AL_API void AL_APIENTRY alDistanceModel(ALenum distanceModel); - -/** Distance model value. */ -#define AL_INVERSE_DISTANCE 0xD001 -#define AL_INVERSE_DISTANCE_CLAMPED 0xD002 -#define AL_LINEAR_DISTANCE 0xD003 -#define AL_LINEAR_DISTANCE_CLAMPED 0xD004 -#define AL_EXPONENT_DISTANCE 0xD005 -#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006 - -/** Renderer State management. */ -AL_API void AL_APIENTRY alEnable(ALenum capability); -AL_API void AL_APIENTRY alDisable(ALenum capability); -AL_API ALboolean AL_APIENTRY alIsEnabled(ALenum capability); - -/** State retrieval. */ -AL_API const ALchar* AL_APIENTRY alGetString(ALenum param); -AL_API void AL_APIENTRY alGetBooleanv(ALenum param, ALboolean *values); -AL_API void AL_APIENTRY alGetIntegerv(ALenum param, ALint *values); -AL_API void AL_APIENTRY alGetFloatv(ALenum param, ALfloat *values); -AL_API void AL_APIENTRY alGetDoublev(ALenum param, ALdouble *values); -AL_API ALboolean AL_APIENTRY alGetBoolean(ALenum param); -AL_API ALint AL_APIENTRY alGetInteger(ALenum param); -AL_API ALfloat AL_APIENTRY alGetFloat(ALenum param); -AL_API ALdouble AL_APIENTRY alGetDouble(ALenum param); - -/** - * Error retrieval. - * - * Obtain the first error generated in the AL context since the last check. - */ -AL_API ALenum AL_APIENTRY alGetError(void); - -/** - * Extension support. - * - * Query for the presence of an extension, and obtain any appropriate function - * pointers and enum values. - */ -AL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extname); -AL_API void* AL_APIENTRY alGetProcAddress(const ALchar *fname); -AL_API ALenum AL_APIENTRY alGetEnumValue(const ALchar *ename); - - -/** Set Listener parameters */ -AL_API void AL_APIENTRY alListenerf(ALenum param, ALfloat value); -AL_API void AL_APIENTRY alListener3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); -AL_API void AL_APIENTRY alListenerfv(ALenum param, const ALfloat *values); -AL_API void AL_APIENTRY alListeneri(ALenum param, ALint value); -AL_API void AL_APIENTRY alListener3i(ALenum param, ALint value1, ALint value2, ALint value3); -AL_API void AL_APIENTRY alListeneriv(ALenum param, const ALint *values); - -/** Get Listener parameters */ -AL_API void AL_APIENTRY alGetListenerf(ALenum param, ALfloat *value); -AL_API void AL_APIENTRY alGetListener3f(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); -AL_API void AL_APIENTRY alGetListenerfv(ALenum param, ALfloat *values); -AL_API void AL_APIENTRY alGetListeneri(ALenum param, ALint *value); -AL_API void AL_APIENTRY alGetListener3i(ALenum param, ALint *value1, ALint *value2, ALint *value3); -AL_API void AL_APIENTRY alGetListeneriv(ALenum param, ALint *values); - - -/** Create Source objects. */ -AL_API void AL_APIENTRY alGenSources(ALsizei n, ALuint *sources); -/** Delete Source objects. */ -AL_API void AL_APIENTRY alDeleteSources(ALsizei n, const ALuint *sources); -/** Verify a handle is a valid Source. */ -AL_API ALboolean AL_APIENTRY alIsSource(ALuint source); - -/** Set Source parameters. */ -AL_API void AL_APIENTRY alSourcef(ALuint source, ALenum param, ALfloat value); -AL_API void AL_APIENTRY alSource3f(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); -AL_API void AL_APIENTRY alSourcefv(ALuint source, ALenum param, const ALfloat *values); -AL_API void AL_APIENTRY alSourcei(ALuint source, ALenum param, ALint value); -AL_API void AL_APIENTRY alSource3i(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3); -AL_API void AL_APIENTRY alSourceiv(ALuint source, ALenum param, const ALint *values); - -/** Get Source parameters. */ -AL_API void AL_APIENTRY alGetSourcef(ALuint source, ALenum param, ALfloat *value); -AL_API void AL_APIENTRY alGetSource3f(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); -AL_API void AL_APIENTRY alGetSourcefv(ALuint source, ALenum param, ALfloat *values); -AL_API void AL_APIENTRY alGetSourcei(ALuint source, ALenum param, ALint *value); -AL_API void AL_APIENTRY alGetSource3i(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3); -AL_API void AL_APIENTRY alGetSourceiv(ALuint source, ALenum param, ALint *values); - - -/** Play, replay, or resume (if paused) a list of Sources */ -AL_API void AL_APIENTRY alSourcePlayv(ALsizei n, const ALuint *sources); -/** Stop a list of Sources */ -AL_API void AL_APIENTRY alSourceStopv(ALsizei n, const ALuint *sources); -/** Rewind a list of Sources */ -AL_API void AL_APIENTRY alSourceRewindv(ALsizei n, const ALuint *sources); -/** Pause a list of Sources */ -AL_API void AL_APIENTRY alSourcePausev(ALsizei n, const ALuint *sources); - -/** Play, replay, or resume a Source */ -AL_API void AL_APIENTRY alSourcePlay(ALuint source); -/** Stop a Source */ -AL_API void AL_APIENTRY alSourceStop(ALuint source); -/** Rewind a Source (set playback postiton to beginning) */ -AL_API void AL_APIENTRY alSourceRewind(ALuint source); -/** Pause a Source */ -AL_API void AL_APIENTRY alSourcePause(ALuint source); - -/** Queue buffers onto a source */ -AL_API void AL_APIENTRY alSourceQueueBuffers(ALuint source, ALsizei nb, const ALuint *buffers); -/** Unqueue processed buffers from a source */ -AL_API void AL_APIENTRY alSourceUnqueueBuffers(ALuint source, ALsizei nb, ALuint *buffers); - - -/** Create Buffer objects */ -AL_API void AL_APIENTRY alGenBuffers(ALsizei n, ALuint *buffers); -/** Delete Buffer objects */ -AL_API void AL_APIENTRY alDeleteBuffers(ALsizei n, const ALuint *buffers); -/** Verify a handle is a valid Buffer */ -AL_API ALboolean AL_APIENTRY alIsBuffer(ALuint buffer); - -/** Specifies the data to be copied into a buffer */ -AL_API void AL_APIENTRY alBufferData(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq); - -/** Set Buffer parameters, */ -AL_API void AL_APIENTRY alBufferf(ALuint buffer, ALenum param, ALfloat value); -AL_API void AL_APIENTRY alBuffer3f(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); -AL_API void AL_APIENTRY alBufferfv(ALuint buffer, ALenum param, const ALfloat *values); -AL_API void AL_APIENTRY alBufferi(ALuint buffer, ALenum param, ALint value); -AL_API void AL_APIENTRY alBuffer3i(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3); -AL_API void AL_APIENTRY alBufferiv(ALuint buffer, ALenum param, const ALint *values); - -/** Get Buffer parameters. */ -AL_API void AL_APIENTRY alGetBufferf(ALuint buffer, ALenum param, ALfloat *value); -AL_API void AL_APIENTRY alGetBuffer3f(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); -AL_API void AL_APIENTRY alGetBufferfv(ALuint buffer, ALenum param, ALfloat *values); -AL_API void AL_APIENTRY alGetBufferi(ALuint buffer, ALenum param, ALint *value); -AL_API void AL_APIENTRY alGetBuffer3i(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3); -AL_API void AL_APIENTRY alGetBufferiv(ALuint buffer, ALenum param, ALint *values); - -/** Pointer-to-function type, useful for dynamically getting AL entry points. */ -typedef void (AL_APIENTRY *LPALENABLE)(ALenum capability); -typedef void (AL_APIENTRY *LPALDISABLE)(ALenum capability); -typedef ALboolean (AL_APIENTRY *LPALISENABLED)(ALenum capability); -typedef const ALchar* (AL_APIENTRY *LPALGETSTRING)(ALenum param); -typedef void (AL_APIENTRY *LPALGETBOOLEANV)(ALenum param, ALboolean *values); -typedef void (AL_APIENTRY *LPALGETINTEGERV)(ALenum param, ALint *values); -typedef void (AL_APIENTRY *LPALGETFLOATV)(ALenum param, ALfloat *values); -typedef void (AL_APIENTRY *LPALGETDOUBLEV)(ALenum param, ALdouble *values); -typedef ALboolean (AL_APIENTRY *LPALGETBOOLEAN)(ALenum param); -typedef ALint (AL_APIENTRY *LPALGETINTEGER)(ALenum param); -typedef ALfloat (AL_APIENTRY *LPALGETFLOAT)(ALenum param); -typedef ALdouble (AL_APIENTRY *LPALGETDOUBLE)(ALenum param); -typedef ALenum (AL_APIENTRY *LPALGETERROR)(void); -typedef ALboolean (AL_APIENTRY *LPALISEXTENSIONPRESENT)(const ALchar *extname); -typedef void* (AL_APIENTRY *LPALGETPROCADDRESS)(const ALchar *fname); -typedef ALenum (AL_APIENTRY *LPALGETENUMVALUE)(const ALchar *ename); -typedef void (AL_APIENTRY *LPALLISTENERF)(ALenum param, ALfloat value); -typedef void (AL_APIENTRY *LPALLISTENER3F)(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); -typedef void (AL_APIENTRY *LPALLISTENERFV)(ALenum param, const ALfloat *values); -typedef void (AL_APIENTRY *LPALLISTENERI)(ALenum param, ALint value); -typedef void (AL_APIENTRY *LPALLISTENER3I)(ALenum param, ALint value1, ALint value2, ALint value3); -typedef void (AL_APIENTRY *LPALLISTENERIV)(ALenum param, const ALint *values); -typedef void (AL_APIENTRY *LPALGETLISTENERF)(ALenum param, ALfloat *value); -typedef void (AL_APIENTRY *LPALGETLISTENER3F)(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); -typedef void (AL_APIENTRY *LPALGETLISTENERFV)(ALenum param, ALfloat *values); -typedef void (AL_APIENTRY *LPALGETLISTENERI)(ALenum param, ALint *value); -typedef void (AL_APIENTRY *LPALGETLISTENER3I)(ALenum param, ALint *value1, ALint *value2, ALint *value3); -typedef void (AL_APIENTRY *LPALGETLISTENERIV)(ALenum param, ALint *values); -typedef void (AL_APIENTRY *LPALGENSOURCES)(ALsizei n, ALuint *sources); -typedef void (AL_APIENTRY *LPALDELETESOURCES)(ALsizei n, const ALuint *sources); -typedef ALboolean (AL_APIENTRY *LPALISSOURCE)(ALuint source); -typedef void (AL_APIENTRY *LPALSOURCEF)(ALuint source, ALenum param, ALfloat value); -typedef void (AL_APIENTRY *LPALSOURCE3F)(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); -typedef void (AL_APIENTRY *LPALSOURCEFV)(ALuint source, ALenum param, const ALfloat *values); -typedef void (AL_APIENTRY *LPALSOURCEI)(ALuint source, ALenum param, ALint value); -typedef void (AL_APIENTRY *LPALSOURCE3I)(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3); -typedef void (AL_APIENTRY *LPALSOURCEIV)(ALuint source, ALenum param, const ALint *values); -typedef void (AL_APIENTRY *LPALGETSOURCEF)(ALuint source, ALenum param, ALfloat *value); -typedef void (AL_APIENTRY *LPALGETSOURCE3F)(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); -typedef void (AL_APIENTRY *LPALGETSOURCEFV)(ALuint source, ALenum param, ALfloat *values); -typedef void (AL_APIENTRY *LPALGETSOURCEI)(ALuint source, ALenum param, ALint *value); -typedef void (AL_APIENTRY *LPALGETSOURCE3I)(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3); -typedef void (AL_APIENTRY *LPALGETSOURCEIV)(ALuint source, ALenum param, ALint *values); -typedef void (AL_APIENTRY *LPALSOURCEPLAYV)(ALsizei n, const ALuint *sources); -typedef void (AL_APIENTRY *LPALSOURCESTOPV)(ALsizei n, const ALuint *sources); -typedef void (AL_APIENTRY *LPALSOURCEREWINDV)(ALsizei n, const ALuint *sources); -typedef void (AL_APIENTRY *LPALSOURCEPAUSEV)(ALsizei n, const ALuint *sources); -typedef void (AL_APIENTRY *LPALSOURCEPLAY)(ALuint source); -typedef void (AL_APIENTRY *LPALSOURCESTOP)(ALuint source); -typedef void (AL_APIENTRY *LPALSOURCEREWIND)(ALuint source); -typedef void (AL_APIENTRY *LPALSOURCEPAUSE)(ALuint source); -typedef void (AL_APIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint source, ALsizei nb, const ALuint *buffers); -typedef void (AL_APIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint source, ALsizei nb, ALuint *buffers); -typedef void (AL_APIENTRY *LPALGENBUFFERS)(ALsizei n, ALuint *buffers); -typedef void (AL_APIENTRY *LPALDELETEBUFFERS)(ALsizei n, const ALuint *buffers); -typedef ALboolean (AL_APIENTRY *LPALISBUFFER)(ALuint buffer); -typedef void (AL_APIENTRY *LPALBUFFERDATA)(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq); -typedef void (AL_APIENTRY *LPALBUFFERF)(ALuint buffer, ALenum param, ALfloat value); -typedef void (AL_APIENTRY *LPALBUFFER3F)(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); -typedef void (AL_APIENTRY *LPALBUFFERFV)(ALuint buffer, ALenum param, const ALfloat *values); -typedef void (AL_APIENTRY *LPALBUFFERI)(ALuint buffer, ALenum param, ALint value); -typedef void (AL_APIENTRY *LPALBUFFER3I)(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3); -typedef void (AL_APIENTRY *LPALBUFFERIV)(ALuint buffer, ALenum param, const ALint *values); -typedef void (AL_APIENTRY *LPALGETBUFFERF)(ALuint buffer, ALenum param, ALfloat *value); -typedef void (AL_APIENTRY *LPALGETBUFFER3F)(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); -typedef void (AL_APIENTRY *LPALGETBUFFERFV)(ALuint buffer, ALenum param, ALfloat *values); -typedef void (AL_APIENTRY *LPALGETBUFFERI)(ALuint buffer, ALenum param, ALint *value); -typedef void (AL_APIENTRY *LPALGETBUFFER3I)(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3); -typedef void (AL_APIENTRY *LPALGETBUFFERIV)(ALuint buffer, ALenum param, ALint *values); -typedef void (AL_APIENTRY *LPALDOPPLERFACTOR)(ALfloat value); -typedef void (AL_APIENTRY *LPALDOPPLERVELOCITY)(ALfloat value); -typedef void (AL_APIENTRY *LPALSPEEDOFSOUND)(ALfloat value); -typedef void (AL_APIENTRY *LPALDISTANCEMODEL)(ALenum distanceModel); - -#if defined(__cplusplus) -} /* extern "C" */ -#endif - -#endif /* AL_AL_H */ diff --git a/external/openal-soft-1.16.0-bin/include/AL/alc.h b/external/openal-soft-1.16.0-bin/include/AL/alc.h deleted file mode 100644 index 294e8b3..0000000 --- a/external/openal-soft-1.16.0-bin/include/AL/alc.h +++ /dev/null @@ -1,237 +0,0 @@ -#ifndef AL_ALC_H -#define AL_ALC_H - -#if defined(__cplusplus) -extern "C" { -#endif - -#ifndef ALC_API - #if defined(AL_LIBTYPE_STATIC) - #define ALC_API - #elif defined(_WIN32) - #define ALC_API __declspec(dllimport) - #else - #define ALC_API extern - #endif -#endif - -#if defined(_WIN32) - #define ALC_APIENTRY __cdecl -#else - #define ALC_APIENTRY -#endif - - -/** Deprecated macro. */ -#define ALCAPI ALC_API -#define ALCAPIENTRY ALC_APIENTRY -#define ALC_INVALID 0 - -/** Supported ALC version? */ -#define ALC_VERSION_0_1 1 - -/** Opaque device handle */ -typedef struct ALCdevice_struct ALCdevice; -/** Opaque context handle */ -typedef struct ALCcontext_struct ALCcontext; - -/** 8-bit boolean */ -typedef char ALCboolean; - -/** character */ -typedef char ALCchar; - -/** signed 8-bit 2's complement integer */ -typedef signed char ALCbyte; - -/** unsigned 8-bit integer */ -typedef unsigned char ALCubyte; - -/** signed 16-bit 2's complement integer */ -typedef short ALCshort; - -/** unsigned 16-bit integer */ -typedef unsigned short ALCushort; - -/** signed 32-bit 2's complement integer */ -typedef int ALCint; - -/** unsigned 32-bit integer */ -typedef unsigned int ALCuint; - -/** non-negative 32-bit binary integer size */ -typedef int ALCsizei; - -/** enumerated 32-bit value */ -typedef int ALCenum; - -/** 32-bit IEEE754 floating-point */ -typedef float ALCfloat; - -/** 64-bit IEEE754 floating-point */ -typedef double ALCdouble; - -/** void type (for opaque pointers only) */ -typedef void ALCvoid; - - -/* Enumerant values begin at column 50. No tabs. */ - -/** Boolean False. */ -#define ALC_FALSE 0 - -/** Boolean True. */ -#define ALC_TRUE 1 - -/** Context attribute: Hz. */ -#define ALC_FREQUENCY 0x1007 - -/** Context attribute: Hz. */ -#define ALC_REFRESH 0x1008 - -/** Context attribute: AL_TRUE or AL_FALSE. */ -#define ALC_SYNC 0x1009 - -/** Context attribute: requested Mono (3D) Sources. */ -#define ALC_MONO_SOURCES 0x1010 - -/** Context attribute: requested Stereo Sources. */ -#define ALC_STEREO_SOURCES 0x1011 - -/** No error. */ -#define ALC_NO_ERROR 0 - -/** Invalid device handle. */ -#define ALC_INVALID_DEVICE 0xA001 - -/** Invalid context handle. */ -#define ALC_INVALID_CONTEXT 0xA002 - -/** Invalid enum parameter passed to an ALC call. */ -#define ALC_INVALID_ENUM 0xA003 - -/** Invalid value parameter passed to an ALC call. */ -#define ALC_INVALID_VALUE 0xA004 - -/** Out of memory. */ -#define ALC_OUT_OF_MEMORY 0xA005 - - -/** Runtime ALC version. */ -#define ALC_MAJOR_VERSION 0x1000 -#define ALC_MINOR_VERSION 0x1001 - -/** Context attribute list properties. */ -#define ALC_ATTRIBUTES_SIZE 0x1002 -#define ALC_ALL_ATTRIBUTES 0x1003 - -/** String for the default device specifier. */ -#define ALC_DEFAULT_DEVICE_SPECIFIER 0x1004 -/** - * String for the given device's specifier. - * - * If device handle is NULL, it is instead a null-char separated list of - * strings of known device specifiers (list ends with an empty string). - */ -#define ALC_DEVICE_SPECIFIER 0x1005 -/** String for space-separated list of ALC extensions. */ -#define ALC_EXTENSIONS 0x1006 - - -/** Capture extension */ -#define ALC_EXT_CAPTURE 1 -/** - * String for the given capture device's specifier. - * - * If device handle is NULL, it is instead a null-char separated list of - * strings of known capture device specifiers (list ends with an empty string). - */ -#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310 -/** String for the default capture device specifier. */ -#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311 -/** Number of sample frames available for capture. */ -#define ALC_CAPTURE_SAMPLES 0x312 - - -/** Enumerate All extension */ -#define ALC_ENUMERATE_ALL_EXT 1 -/** String for the default extended device specifier. */ -#define ALC_DEFAULT_ALL_DEVICES_SPECIFIER 0x1012 -/** - * String for the given extended device's specifier. - * - * If device handle is NULL, it is instead a null-char separated list of - * strings of known extended device specifiers (list ends with an empty string). - */ -#define ALC_ALL_DEVICES_SPECIFIER 0x1013 - - -/** Context management. */ -ALC_API ALCcontext* ALC_APIENTRY alcCreateContext(ALCdevice *device, const ALCint* attrlist); -ALC_API ALCboolean ALC_APIENTRY alcMakeContextCurrent(ALCcontext *context); -ALC_API void ALC_APIENTRY alcProcessContext(ALCcontext *context); -ALC_API void ALC_APIENTRY alcSuspendContext(ALCcontext *context); -ALC_API void ALC_APIENTRY alcDestroyContext(ALCcontext *context); -ALC_API ALCcontext* ALC_APIENTRY alcGetCurrentContext(void); -ALC_API ALCdevice* ALC_APIENTRY alcGetContextsDevice(ALCcontext *context); - -/** Device management. */ -ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *devicename); -ALC_API ALCboolean ALC_APIENTRY alcCloseDevice(ALCdevice *device); - - -/** - * Error support. - * - * Obtain the most recent Device error. - */ -ALC_API ALCenum ALC_APIENTRY alcGetError(ALCdevice *device); - -/** - * Extension support. - * - * Query for the presence of an extension, and obtain any appropriate - * function pointers and enum values. - */ -ALC_API ALCboolean ALC_APIENTRY alcIsExtensionPresent(ALCdevice *device, const ALCchar *extname); -ALC_API void* ALC_APIENTRY alcGetProcAddress(ALCdevice *device, const ALCchar *funcname); -ALC_API ALCenum ALC_APIENTRY alcGetEnumValue(ALCdevice *device, const ALCchar *enumname); - -/** Query function. */ -ALC_API const ALCchar* ALC_APIENTRY alcGetString(ALCdevice *device, ALCenum param); -ALC_API void ALC_APIENTRY alcGetIntegerv(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values); - -/** Capture function. */ -ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize); -ALC_API ALCboolean ALC_APIENTRY alcCaptureCloseDevice(ALCdevice *device); -ALC_API void ALC_APIENTRY alcCaptureStart(ALCdevice *device); -ALC_API void ALC_APIENTRY alcCaptureStop(ALCdevice *device); -ALC_API void ALC_APIENTRY alcCaptureSamples(ALCdevice *device, ALCvoid *buffer, ALCsizei samples); - -/** Pointer-to-function type, useful for dynamically getting ALC entry points. */ -typedef ALCcontext* (ALC_APIENTRY *LPALCCREATECONTEXT)(ALCdevice *device, const ALCint *attrlist); -typedef ALCboolean (ALC_APIENTRY *LPALCMAKECONTEXTCURRENT)(ALCcontext *context); -typedef void (ALC_APIENTRY *LPALCPROCESSCONTEXT)(ALCcontext *context); -typedef void (ALC_APIENTRY *LPALCSUSPENDCONTEXT)(ALCcontext *context); -typedef void (ALC_APIENTRY *LPALCDESTROYCONTEXT)(ALCcontext *context); -typedef ALCcontext* (ALC_APIENTRY *LPALCGETCURRENTCONTEXT)(void); -typedef ALCdevice* (ALC_APIENTRY *LPALCGETCONTEXTSDEVICE)(ALCcontext *context); -typedef ALCdevice* (ALC_APIENTRY *LPALCOPENDEVICE)(const ALCchar *devicename); -typedef ALCboolean (ALC_APIENTRY *LPALCCLOSEDEVICE)(ALCdevice *device); -typedef ALCenum (ALC_APIENTRY *LPALCGETERROR)(ALCdevice *device); -typedef ALCboolean (ALC_APIENTRY *LPALCISEXTENSIONPRESENT)(ALCdevice *device, const ALCchar *extname); -typedef void* (ALC_APIENTRY *LPALCGETPROCADDRESS)(ALCdevice *device, const ALCchar *funcname); -typedef ALCenum (ALC_APIENTRY *LPALCGETENUMVALUE)(ALCdevice *device, const ALCchar *enumname); -typedef const ALCchar* (ALC_APIENTRY *LPALCGETSTRING)(ALCdevice *device, ALCenum param); -typedef void (ALC_APIENTRY *LPALCGETINTEGERV)(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values); -typedef ALCdevice* (ALC_APIENTRY *LPALCCAPTUREOPENDEVICE)(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize); -typedef ALCboolean (ALC_APIENTRY *LPALCCAPTURECLOSEDEVICE)(ALCdevice *device); -typedef void (ALC_APIENTRY *LPALCCAPTURESTART)(ALCdevice *device); -typedef void (ALC_APIENTRY *LPALCCAPTURESTOP)(ALCdevice *device); -typedef void (ALC_APIENTRY *LPALCCAPTURESAMPLES)(ALCdevice *device, ALCvoid *buffer, ALCsizei samples); - -#if defined(__cplusplus) -} -#endif - -#endif /* AL_ALC_H */ diff --git a/external/openal-soft-1.16.0-bin/include/AL/alext.h b/external/openal-soft-1.16.0-bin/include/AL/alext.h deleted file mode 100644 index 7d2a952..0000000 --- a/external/openal-soft-1.16.0-bin/include/AL/alext.h +++ /dev/null @@ -1,400 +0,0 @@ -/** - * OpenAL cross platform audio library - * Copyright (C) 2008 by authors. - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * Or go to http://www.gnu.org/copyleft/lgpl.html - */ - -#ifndef AL_ALEXT_H -#define AL_ALEXT_H - -#include -/* Define int64_t and uint64_t types */ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#include -#elif defined(_WIN32) && defined(__GNUC__) -#include -#elif defined(_WIN32) -typedef __int64 int64_t; -typedef unsigned __int64 uint64_t; -#else -/* Fallback if nothing above works */ -#include -#endif - -#include "alc.h" -#include "al.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef AL_LOKI_IMA_ADPCM_format -#define AL_LOKI_IMA_ADPCM_format 1 -#define AL_FORMAT_IMA_ADPCM_MONO16_EXT 0x10000 -#define AL_FORMAT_IMA_ADPCM_STEREO16_EXT 0x10001 -#endif - -#ifndef AL_LOKI_WAVE_format -#define AL_LOKI_WAVE_format 1 -#define AL_FORMAT_WAVE_EXT 0x10002 -#endif - -#ifndef AL_EXT_vorbis -#define AL_EXT_vorbis 1 -#define AL_FORMAT_VORBIS_EXT 0x10003 -#endif - -#ifndef AL_LOKI_quadriphonic -#define AL_LOKI_quadriphonic 1 -#define AL_FORMAT_QUAD8_LOKI 0x10004 -#define AL_FORMAT_QUAD16_LOKI 0x10005 -#endif - -#ifndef AL_EXT_float32 -#define AL_EXT_float32 1 -#define AL_FORMAT_MONO_FLOAT32 0x10010 -#define AL_FORMAT_STEREO_FLOAT32 0x10011 -#endif - -#ifndef AL_EXT_double -#define AL_EXT_double 1 -#define AL_FORMAT_MONO_DOUBLE_EXT 0x10012 -#define AL_FORMAT_STEREO_DOUBLE_EXT 0x10013 -#endif - -#ifndef AL_EXT_MULAW -#define AL_EXT_MULAW 1 -#define AL_FORMAT_MONO_MULAW_EXT 0x10014 -#define AL_FORMAT_STEREO_MULAW_EXT 0x10015 -#endif - -#ifndef AL_EXT_ALAW -#define AL_EXT_ALAW 1 -#define AL_FORMAT_MONO_ALAW_EXT 0x10016 -#define AL_FORMAT_STEREO_ALAW_EXT 0x10017 -#endif - -#ifndef ALC_LOKI_audio_channel -#define ALC_LOKI_audio_channel 1 -#define ALC_CHAN_MAIN_LOKI 0x500001 -#define ALC_CHAN_PCM_LOKI 0x500002 -#define ALC_CHAN_CD_LOKI 0x500003 -#endif - -#ifndef AL_EXT_MCFORMATS -#define AL_EXT_MCFORMATS 1 -#define AL_FORMAT_QUAD8 0x1204 -#define AL_FORMAT_QUAD16 0x1205 -#define AL_FORMAT_QUAD32 0x1206 -#define AL_FORMAT_REAR8 0x1207 -#define AL_FORMAT_REAR16 0x1208 -#define AL_FORMAT_REAR32 0x1209 -#define AL_FORMAT_51CHN8 0x120A -#define AL_FORMAT_51CHN16 0x120B -#define AL_FORMAT_51CHN32 0x120C -#define AL_FORMAT_61CHN8 0x120D -#define AL_FORMAT_61CHN16 0x120E -#define AL_FORMAT_61CHN32 0x120F -#define AL_FORMAT_71CHN8 0x1210 -#define AL_FORMAT_71CHN16 0x1211 -#define AL_FORMAT_71CHN32 0x1212 -#endif - -#ifndef AL_EXT_MULAW_MCFORMATS -#define AL_EXT_MULAW_MCFORMATS 1 -#define AL_FORMAT_MONO_MULAW 0x10014 -#define AL_FORMAT_STEREO_MULAW 0x10015 -#define AL_FORMAT_QUAD_MULAW 0x10021 -#define AL_FORMAT_REAR_MULAW 0x10022 -#define AL_FORMAT_51CHN_MULAW 0x10023 -#define AL_FORMAT_61CHN_MULAW 0x10024 -#define AL_FORMAT_71CHN_MULAW 0x10025 -#endif - -#ifndef AL_EXT_IMA4 -#define AL_EXT_IMA4 1 -#define AL_FORMAT_MONO_IMA4 0x1300 -#define AL_FORMAT_STEREO_IMA4 0x1301 -#endif - -#ifndef AL_EXT_STATIC_BUFFER -#define AL_EXT_STATIC_BUFFER 1 -typedef ALvoid (AL_APIENTRY*PFNALBUFFERDATASTATICPROC)(const ALint,ALenum,ALvoid*,ALsizei,ALsizei); -#ifdef AL_ALEXT_PROTOTYPES -AL_API ALvoid AL_APIENTRY alBufferDataStatic(const ALint buffer, ALenum format, ALvoid *data, ALsizei len, ALsizei freq); -#endif -#endif - -#ifndef ALC_EXT_EFX -#define ALC_EXT_EFX 1 -#include "efx.h" -#endif - -#ifndef ALC_EXT_disconnect -#define ALC_EXT_disconnect 1 -#define ALC_CONNECTED 0x313 -#endif - -#ifndef ALC_EXT_thread_local_context -#define ALC_EXT_thread_local_context 1 -typedef ALCboolean (ALC_APIENTRY*PFNALCSETTHREADCONTEXTPROC)(ALCcontext *context); -typedef ALCcontext* (ALC_APIENTRY*PFNALCGETTHREADCONTEXTPROC)(void); -#ifdef AL_ALEXT_PROTOTYPES -ALC_API ALCboolean ALC_APIENTRY alcSetThreadContext(ALCcontext *context); -ALC_API ALCcontext* ALC_APIENTRY alcGetThreadContext(void); -#endif -#endif - -#ifndef AL_EXT_source_distance_model -#define AL_EXT_source_distance_model 1 -#define AL_SOURCE_DISTANCE_MODEL 0x200 -#endif - -#ifndef AL_SOFT_buffer_sub_data -#define AL_SOFT_buffer_sub_data 1 -#define AL_BYTE_RW_OFFSETS_SOFT 0x1031 -#define AL_SAMPLE_RW_OFFSETS_SOFT 0x1032 -typedef ALvoid (AL_APIENTRY*PFNALBUFFERSUBDATASOFTPROC)(ALuint,ALenum,const ALvoid*,ALsizei,ALsizei); -#ifdef AL_ALEXT_PROTOTYPES -AL_API ALvoid AL_APIENTRY alBufferSubDataSOFT(ALuint buffer,ALenum format,const ALvoid *data,ALsizei offset,ALsizei length); -#endif -#endif - -#ifndef AL_SOFT_loop_points -#define AL_SOFT_loop_points 1 -#define AL_LOOP_POINTS_SOFT 0x2015 -#endif - -#ifndef AL_EXT_FOLDBACK -#define AL_EXT_FOLDBACK 1 -#define AL_EXT_FOLDBACK_NAME "AL_EXT_FOLDBACK" -#define AL_FOLDBACK_EVENT_BLOCK 0x4112 -#define AL_FOLDBACK_EVENT_START 0x4111 -#define AL_FOLDBACK_EVENT_STOP 0x4113 -#define AL_FOLDBACK_MODE_MONO 0x4101 -#define AL_FOLDBACK_MODE_STEREO 0x4102 -typedef void (AL_APIENTRY*LPALFOLDBACKCALLBACK)(ALenum,ALsizei); -typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTART)(ALenum,ALsizei,ALsizei,ALfloat*,LPALFOLDBACKCALLBACK); -typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTOP)(void); -#ifdef AL_ALEXT_PROTOTYPES -AL_API void AL_APIENTRY alRequestFoldbackStart(ALenum mode,ALsizei count,ALsizei length,ALfloat *mem,LPALFOLDBACKCALLBACK callback); -AL_API void AL_APIENTRY alRequestFoldbackStop(void); -#endif -#endif - -#ifndef ALC_EXT_DEDICATED -#define ALC_EXT_DEDICATED 1 -#define AL_DEDICATED_GAIN 0x0001 -#define AL_EFFECT_DEDICATED_DIALOGUE 0x9001 -#define AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT 0x9000 -#endif - -#ifndef AL_SOFT_buffer_samples -#define AL_SOFT_buffer_samples 1 -/* Channel configurations */ -#define AL_MONO_SOFT 0x1500 -#define AL_STEREO_SOFT 0x1501 -#define AL_REAR_SOFT 0x1502 -#define AL_QUAD_SOFT 0x1503 -#define AL_5POINT1_SOFT 0x1504 -#define AL_6POINT1_SOFT 0x1505 -#define AL_7POINT1_SOFT 0x1506 - -/* Sample types */ -#define AL_BYTE_SOFT 0x1400 -#define AL_UNSIGNED_BYTE_SOFT 0x1401 -#define AL_SHORT_SOFT 0x1402 -#define AL_UNSIGNED_SHORT_SOFT 0x1403 -#define AL_INT_SOFT 0x1404 -#define AL_UNSIGNED_INT_SOFT 0x1405 -#define AL_FLOAT_SOFT 0x1406 -#define AL_DOUBLE_SOFT 0x1407 -#define AL_BYTE3_SOFT 0x1408 -#define AL_UNSIGNED_BYTE3_SOFT 0x1409 - -/* Storage formats */ -#define AL_MONO8_SOFT 0x1100 -#define AL_MONO16_SOFT 0x1101 -#define AL_MONO32F_SOFT 0x10010 -#define AL_STEREO8_SOFT 0x1102 -#define AL_STEREO16_SOFT 0x1103 -#define AL_STEREO32F_SOFT 0x10011 -#define AL_QUAD8_SOFT 0x1204 -#define AL_QUAD16_SOFT 0x1205 -#define AL_QUAD32F_SOFT 0x1206 -#define AL_REAR8_SOFT 0x1207 -#define AL_REAR16_SOFT 0x1208 -#define AL_REAR32F_SOFT 0x1209 -#define AL_5POINT1_8_SOFT 0x120A -#define AL_5POINT1_16_SOFT 0x120B -#define AL_5POINT1_32F_SOFT 0x120C -#define AL_6POINT1_8_SOFT 0x120D -#define AL_6POINT1_16_SOFT 0x120E -#define AL_6POINT1_32F_SOFT 0x120F -#define AL_7POINT1_8_SOFT 0x1210 -#define AL_7POINT1_16_SOFT 0x1211 -#define AL_7POINT1_32F_SOFT 0x1212 - -/* Buffer attributes */ -#define AL_INTERNAL_FORMAT_SOFT 0x2008 -#define AL_BYTE_LENGTH_SOFT 0x2009 -#define AL_SAMPLE_LENGTH_SOFT 0x200A -#define AL_SEC_LENGTH_SOFT 0x200B - -typedef void (AL_APIENTRY*LPALBUFFERSAMPLESSOFT)(ALuint,ALuint,ALenum,ALsizei,ALenum,ALenum,const ALvoid*); -typedef void (AL_APIENTRY*LPALBUFFERSUBSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,const ALvoid*); -typedef void (AL_APIENTRY*LPALGETBUFFERSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,ALvoid*); -typedef ALboolean (AL_APIENTRY*LPALISBUFFERFORMATSUPPORTEDSOFT)(ALenum); -#ifdef AL_ALEXT_PROTOTYPES -AL_API void AL_APIENTRY alBufferSamplesSOFT(ALuint buffer, ALuint samplerate, ALenum internalformat, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data); -AL_API void AL_APIENTRY alBufferSubSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data); -AL_API void AL_APIENTRY alGetBufferSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, ALvoid *data); -AL_API ALboolean AL_APIENTRY alIsBufferFormatSupportedSOFT(ALenum format); -#endif -#endif - -#ifndef AL_SOFT_direct_channels -#define AL_SOFT_direct_channels 1 -#define AL_DIRECT_CHANNELS_SOFT 0x1033 -#endif - -#ifndef ALC_SOFT_loopback -#define ALC_SOFT_loopback 1 -#define ALC_FORMAT_CHANNELS_SOFT 0x1990 -#define ALC_FORMAT_TYPE_SOFT 0x1991 - -/* Sample types */ -#define ALC_BYTE_SOFT 0x1400 -#define ALC_UNSIGNED_BYTE_SOFT 0x1401 -#define ALC_SHORT_SOFT 0x1402 -#define ALC_UNSIGNED_SHORT_SOFT 0x1403 -#define ALC_INT_SOFT 0x1404 -#define ALC_UNSIGNED_INT_SOFT 0x1405 -#define ALC_FLOAT_SOFT 0x1406 - -/* Channel configurations */ -#define ALC_MONO_SOFT 0x1500 -#define ALC_STEREO_SOFT 0x1501 -#define ALC_QUAD_SOFT 0x1503 -#define ALC_5POINT1_SOFT 0x1504 -#define ALC_6POINT1_SOFT 0x1505 -#define ALC_7POINT1_SOFT 0x1506 - -typedef ALCdevice* (ALC_APIENTRY*LPALCLOOPBACKOPENDEVICESOFT)(const ALCchar*); -typedef ALCboolean (ALC_APIENTRY*LPALCISRENDERFORMATSUPPORTEDSOFT)(ALCdevice*,ALCsizei,ALCenum,ALCenum); -typedef void (ALC_APIENTRY*LPALCRENDERSAMPLESSOFT)(ALCdevice*,ALCvoid*,ALCsizei); -#ifdef AL_ALEXT_PROTOTYPES -ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(const ALCchar *deviceName); -ALC_API ALCboolean ALC_APIENTRY alcIsRenderFormatSupportedSOFT(ALCdevice *device, ALCsizei freq, ALCenum channels, ALCenum type); -ALC_API void ALC_APIENTRY alcRenderSamplesSOFT(ALCdevice *device, ALCvoid *buffer, ALCsizei samples); -#endif -#endif - -#ifndef AL_EXT_STEREO_ANGLES -#define AL_EXT_STEREO_ANGLES 1 -#define AL_STEREO_ANGLES 0x1030 -#endif - -#ifndef AL_EXT_SOURCE_RADIUS -#define AL_EXT_SOURCE_RADIUS 1 -#define AL_SOURCE_RADIUS 0x1031 -#endif - -#ifndef AL_SOFT_source_latency -#define AL_SOFT_source_latency 1 -#define AL_SAMPLE_OFFSET_LATENCY_SOFT 0x1200 -#define AL_SEC_OFFSET_LATENCY_SOFT 0x1201 -typedef int64_t ALint64SOFT; -typedef uint64_t ALuint64SOFT; -typedef void (AL_APIENTRY*LPALSOURCEDSOFT)(ALuint,ALenum,ALdouble); -typedef void (AL_APIENTRY*LPALSOURCE3DSOFT)(ALuint,ALenum,ALdouble,ALdouble,ALdouble); -typedef void (AL_APIENTRY*LPALSOURCEDVSOFT)(ALuint,ALenum,const ALdouble*); -typedef void (AL_APIENTRY*LPALGETSOURCEDSOFT)(ALuint,ALenum,ALdouble*); -typedef void (AL_APIENTRY*LPALGETSOURCE3DSOFT)(ALuint,ALenum,ALdouble*,ALdouble*,ALdouble*); -typedef void (AL_APIENTRY*LPALGETSOURCEDVSOFT)(ALuint,ALenum,ALdouble*); -typedef void (AL_APIENTRY*LPALSOURCEI64SOFT)(ALuint,ALenum,ALint64SOFT); -typedef void (AL_APIENTRY*LPALSOURCE3I64SOFT)(ALuint,ALenum,ALint64SOFT,ALint64SOFT,ALint64SOFT); -typedef void (AL_APIENTRY*LPALSOURCEI64VSOFT)(ALuint,ALenum,const ALint64SOFT*); -typedef void (AL_APIENTRY*LPALGETSOURCEI64SOFT)(ALuint,ALenum,ALint64SOFT*); -typedef void (AL_APIENTRY*LPALGETSOURCE3I64SOFT)(ALuint,ALenum,ALint64SOFT*,ALint64SOFT*,ALint64SOFT*); -typedef void (AL_APIENTRY*LPALGETSOURCEI64VSOFT)(ALuint,ALenum,ALint64SOFT*); -#ifdef AL_ALEXT_PROTOTYPES -AL_API void AL_APIENTRY alSourcedSOFT(ALuint source, ALenum param, ALdouble value); -AL_API void AL_APIENTRY alSource3dSOFT(ALuint source, ALenum param, ALdouble value1, ALdouble value2, ALdouble value3); -AL_API void AL_APIENTRY alSourcedvSOFT(ALuint source, ALenum param, const ALdouble *values); -AL_API void AL_APIENTRY alGetSourcedSOFT(ALuint source, ALenum param, ALdouble *value); -AL_API void AL_APIENTRY alGetSource3dSOFT(ALuint source, ALenum param, ALdouble *value1, ALdouble *value2, ALdouble *value3); -AL_API void AL_APIENTRY alGetSourcedvSOFT(ALuint source, ALenum param, ALdouble *values); -AL_API void AL_APIENTRY alSourcei64SOFT(ALuint source, ALenum param, ALint64SOFT value); -AL_API void AL_APIENTRY alSource3i64SOFT(ALuint source, ALenum param, ALint64SOFT value1, ALint64SOFT value2, ALint64SOFT value3); -AL_API void AL_APIENTRY alSourcei64vSOFT(ALuint source, ALenum param, const ALint64SOFT *values); -AL_API void AL_APIENTRY alGetSourcei64SOFT(ALuint source, ALenum param, ALint64SOFT *value); -AL_API void AL_APIENTRY alGetSource3i64SOFT(ALuint source, ALenum param, ALint64SOFT *value1, ALint64SOFT *value2, ALint64SOFT *value3); -AL_API void AL_APIENTRY alGetSourcei64vSOFT(ALuint source, ALenum param, ALint64SOFT *values); -#endif -#endif - -#ifndef ALC_EXT_DEFAULT_FILTER_ORDER -#define ALC_EXT_DEFAULT_FILTER_ORDER 1 -#define ALC_DEFAULT_FILTER_ORDER 0x1100 -#endif - -#ifndef AL_SOFT_deferred_updates -#define AL_SOFT_deferred_updates 1 -#define AL_DEFERRED_UPDATES_SOFT 0xC002 -typedef ALvoid (AL_APIENTRY*LPALDEFERUPDATESSOFT)(void); -typedef ALvoid (AL_APIENTRY*LPALPROCESSUPDATESSOFT)(void); -#ifdef AL_ALEXT_PROTOTYPES -AL_API ALvoid AL_APIENTRY alDeferUpdatesSOFT(void); -AL_API ALvoid AL_APIENTRY alProcessUpdatesSOFT(void); -#endif -#endif - -#ifndef AL_SOFT_block_alignment -#define AL_SOFT_block_alignment 1 -#define AL_UNPACK_BLOCK_ALIGNMENT_SOFT 0x200C -#define AL_PACK_BLOCK_ALIGNMENT_SOFT 0x200D -#endif - -#ifndef AL_SOFT_MSADPCM -#define AL_SOFT_MSADPCM 1 -#define AL_FORMAT_MONO_MSADPCM_SOFT 0x1302 -#define AL_FORMAT_STEREO_MSADPCM_SOFT 0x1303 -#endif - -#ifndef AL_SOFT_source_length -#define AL_SOFT_source_length 1 -/*#define AL_BYTE_LENGTH_SOFT 0x2009*/ -/*#define AL_SAMPLE_LENGTH_SOFT 0x200A*/ -/*#define AL_SEC_LENGTH_SOFT 0x200B*/ -#endif - -#ifndef ALC_SOFT_pause_device -#define ALC_SOFT_pause_device 1 -typedef void (ALC_APIENTRY*LPALCDEVICEPAUSESOFT)(ALCdevice *device); -typedef void (ALC_APIENTRY*LPALCDEVICERESUMESOFT)(ALCdevice *device); -#ifdef AL_ALEXT_PROTOTYPES -ALC_API void ALC_APIENTRY alcDevicePauseSOFT(ALCdevice *device); -ALC_API void ALC_APIENTRY alcDeviceResumeSOFT(ALCdevice *device); -#endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/external/openal-soft-1.16.0-bin/include/AL/efx-creative.h b/external/openal-soft-1.16.0-bin/include/AL/efx-creative.h deleted file mode 100644 index 0a04c98..0000000 --- a/external/openal-soft-1.16.0-bin/include/AL/efx-creative.h +++ /dev/null @@ -1,3 +0,0 @@ -/* The tokens that would be defined here are already defined in efx.h. This - * empty file is here to provide compatibility with Windows-based projects - * that would include it. */ diff --git a/external/openal-soft-1.16.0-bin/include/AL/efx-presets.h b/external/openal-soft-1.16.0-bin/include/AL/efx-presets.h deleted file mode 100644 index 86dcbda..0000000 --- a/external/openal-soft-1.16.0-bin/include/AL/efx-presets.h +++ /dev/null @@ -1,402 +0,0 @@ -/* Reverb presets for EFX */ - -#ifndef EFX_PRESETS_H -#define EFX_PRESETS_H - -#ifndef EFXEAXREVERBPROPERTIES_DEFINED -#define EFXEAXREVERBPROPERTIES_DEFINED -typedef struct { - float flDensity; - float flDiffusion; - float flGain; - float flGainHF; - float flGainLF; - float flDecayTime; - float flDecayHFRatio; - float flDecayLFRatio; - float flReflectionsGain; - float flReflectionsDelay; - float flReflectionsPan[3]; - float flLateReverbGain; - float flLateReverbDelay; - float flLateReverbPan[3]; - float flEchoTime; - float flEchoDepth; - float flModulationTime; - float flModulationDepth; - float flAirAbsorptionGainHF; - float flHFReference; - float flLFReference; - float flRoomRolloffFactor; - int iDecayHFLimit; -} EFXEAXREVERBPROPERTIES, *LPEFXEAXREVERBPROPERTIES; -#endif - -/* Default Presets */ - -#define EFX_REVERB_PRESET_GENERIC \ - { 1.0000f, 1.0000f, 0.3162f, 0.8913f, 1.0000f, 1.4900f, 0.8300f, 1.0000f, 0.0500f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_PADDEDCELL \ - { 0.1715f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.1700f, 0.1000f, 1.0000f, 0.2500f, 0.0010f, { 0.0000f, 0.0000f, 0.0000f }, 1.2691f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_ROOM \ - { 0.4287f, 1.0000f, 0.3162f, 0.5929f, 1.0000f, 0.4000f, 0.8300f, 1.0000f, 0.1503f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 1.0629f, 0.0030f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_BATHROOM \ - { 0.1715f, 1.0000f, 0.3162f, 0.2512f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.6531f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 3.2734f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_LIVINGROOM \ - { 0.9766f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.5000f, 0.1000f, 1.0000f, 0.2051f, 0.0030f, { 0.0000f, 0.0000f, 0.0000f }, 0.2805f, 0.0040f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_STONEROOM \ - { 1.0000f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 2.3100f, 0.6400f, 1.0000f, 0.4411f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1003f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_AUDITORIUM \ - { 1.0000f, 1.0000f, 0.3162f, 0.5781f, 1.0000f, 4.3200f, 0.5900f, 1.0000f, 0.4032f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.7170f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_CONCERTHALL \ - { 1.0000f, 1.0000f, 0.3162f, 0.5623f, 1.0000f, 3.9200f, 0.7000f, 1.0000f, 0.2427f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.9977f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_CAVE \ - { 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 2.9100f, 1.3000f, 1.0000f, 0.5000f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.7063f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_ARENA \ - { 1.0000f, 1.0000f, 0.3162f, 0.4477f, 1.0000f, 7.2400f, 0.3300f, 1.0000f, 0.2612f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.0186f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_HANGAR \ - { 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 10.0500f, 0.2300f, 1.0000f, 0.5000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2560f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_CARPETEDHALLWAY \ - { 0.4287f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 0.3000f, 0.1000f, 1.0000f, 0.1215f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 0.1531f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_HALLWAY \ - { 0.3645f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 1.4900f, 0.5900f, 1.0000f, 0.2458f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.6615f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_STONECORRIDOR \ - { 1.0000f, 1.0000f, 0.3162f, 0.7612f, 1.0000f, 2.7000f, 0.7900f, 1.0000f, 0.2472f, 0.0130f, { 0.0000f, 0.0000f, 0.0000f }, 1.5758f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_ALLEY \ - { 1.0000f, 0.3000f, 0.3162f, 0.7328f, 1.0000f, 1.4900f, 0.8600f, 1.0000f, 0.2500f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.9954f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.9500f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_FOREST \ - { 1.0000f, 0.3000f, 0.3162f, 0.0224f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.0525f, 0.1620f, { 0.0000f, 0.0000f, 0.0000f }, 0.7682f, 0.0880f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_CITY \ - { 1.0000f, 0.5000f, 0.3162f, 0.3981f, 1.0000f, 1.4900f, 0.6700f, 1.0000f, 0.0730f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.1427f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_MOUNTAINS \ - { 1.0000f, 0.2700f, 0.3162f, 0.0562f, 1.0000f, 1.4900f, 0.2100f, 1.0000f, 0.0407f, 0.3000f, { 0.0000f, 0.0000f, 0.0000f }, 0.1919f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_QUARRY \ - { 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 1.4900f, 0.8300f, 1.0000f, 0.0000f, 0.0610f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0250f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.7000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_PLAIN \ - { 1.0000f, 0.2100f, 0.3162f, 0.1000f, 1.0000f, 1.4900f, 0.5000f, 1.0000f, 0.0585f, 0.1790f, { 0.0000f, 0.0000f, 0.0000f }, 0.1089f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_PARKINGLOT \ - { 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 1.6500f, 1.5000f, 1.0000f, 0.2082f, 0.0080f, { 0.0000f, 0.0000f, 0.0000f }, 0.2652f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_SEWERPIPE \ - { 0.3071f, 0.8000f, 0.3162f, 0.3162f, 1.0000f, 2.8100f, 0.1400f, 1.0000f, 1.6387f, 0.0140f, { 0.0000f, 0.0000f, 0.0000f }, 3.2471f, 0.0210f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_UNDERWATER \ - { 0.3645f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 1.4900f, 0.1000f, 1.0000f, 0.5963f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 7.0795f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 1.1800f, 0.3480f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_DRUGGED \ - { 0.4287f, 0.5000f, 0.3162f, 1.0000f, 1.0000f, 8.3900f, 1.3900f, 1.0000f, 0.8760f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 3.1081f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_DIZZY \ - { 0.3645f, 0.6000f, 0.3162f, 0.6310f, 1.0000f, 17.2300f, 0.5600f, 1.0000f, 0.1392f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.4937f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.8100f, 0.3100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_PSYCHOTIC \ - { 0.0625f, 0.5000f, 0.3162f, 0.8404f, 1.0000f, 7.5600f, 0.9100f, 1.0000f, 0.4864f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 2.4378f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 4.0000f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } - -/* Castle Presets */ - -#define EFX_REVERB_PRESET_CASTLE_SMALLROOM \ - { 1.0000f, 0.8900f, 0.3162f, 0.3981f, 0.1000f, 1.2200f, 0.8300f, 0.3100f, 0.8913f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_CASTLE_SHORTPASSAGE \ - { 1.0000f, 0.8900f, 0.3162f, 0.3162f, 0.1000f, 2.3200f, 0.8300f, 0.3100f, 0.8913f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_CASTLE_MEDIUMROOM \ - { 1.0000f, 0.9300f, 0.3162f, 0.2818f, 0.1000f, 2.0400f, 0.8300f, 0.4600f, 0.6310f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1550f, 0.0300f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_CASTLE_LARGEROOM \ - { 1.0000f, 0.8200f, 0.3162f, 0.2818f, 0.1259f, 2.5300f, 0.8300f, 0.5000f, 0.4467f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1850f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_CASTLE_LONGPASSAGE \ - { 1.0000f, 0.8900f, 0.3162f, 0.3981f, 0.1000f, 3.4200f, 0.8300f, 0.3100f, 0.8913f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_CASTLE_HALL \ - { 1.0000f, 0.8100f, 0.3162f, 0.2818f, 0.1778f, 3.1400f, 0.7900f, 0.6200f, 0.1778f, 0.0560f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_CASTLE_CUPBOARD \ - { 1.0000f, 0.8900f, 0.3162f, 0.2818f, 0.1000f, 0.6700f, 0.8700f, 0.3100f, 1.4125f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 3.5481f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_CASTLE_COURTYARD \ - { 1.0000f, 0.4200f, 0.3162f, 0.4467f, 0.1995f, 2.1300f, 0.6100f, 0.2300f, 0.2239f, 0.1600f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0360f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.3700f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_CASTLE_ALCOVE \ - { 1.0000f, 0.8900f, 0.3162f, 0.5012f, 0.1000f, 1.6400f, 0.8700f, 0.3100f, 1.0000f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } - -/* Factory Presets */ - -#define EFX_REVERB_PRESET_FACTORY_SMALLROOM \ - { 0.3645f, 0.8200f, 0.3162f, 0.7943f, 0.5012f, 1.7200f, 0.6500f, 1.3100f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.1190f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_FACTORY_SHORTPASSAGE \ - { 0.3645f, 0.6400f, 0.2512f, 0.7943f, 0.5012f, 2.5300f, 0.6500f, 1.3100f, 1.0000f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.1350f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_FACTORY_MEDIUMROOM \ - { 0.4287f, 0.8200f, 0.2512f, 0.7943f, 0.5012f, 2.7600f, 0.6500f, 1.3100f, 0.2818f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1740f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_FACTORY_LARGEROOM \ - { 0.4287f, 0.7500f, 0.2512f, 0.7079f, 0.6310f, 4.2400f, 0.5100f, 1.3100f, 0.1778f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.2310f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_FACTORY_LONGPASSAGE \ - { 0.3645f, 0.6400f, 0.2512f, 0.7943f, 0.5012f, 4.0600f, 0.6500f, 1.3100f, 1.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0370f, { 0.0000f, 0.0000f, 0.0000f }, 0.1350f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_FACTORY_HALL \ - { 0.4287f, 0.7500f, 0.3162f, 0.7079f, 0.6310f, 7.4300f, 0.5100f, 1.3100f, 0.0631f, 0.0730f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_FACTORY_CUPBOARD \ - { 0.3071f, 0.6300f, 0.2512f, 0.7943f, 0.5012f, 0.4900f, 0.6500f, 1.3100f, 1.2589f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.1070f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_FACTORY_COURTYARD \ - { 0.3071f, 0.5700f, 0.3162f, 0.3162f, 0.6310f, 2.3200f, 0.2900f, 0.5600f, 0.2239f, 0.1400f, { 0.0000f, 0.0000f, 0.0000f }, 0.3981f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2900f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_FACTORY_ALCOVE \ - { 0.3645f, 0.5900f, 0.2512f, 0.7943f, 0.5012f, 3.1400f, 0.6500f, 1.3100f, 1.4125f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.1140f, 0.1000f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } - -/* Ice Palace Presets */ - -#define EFX_REVERB_PRESET_ICEPALACE_SMALLROOM \ - { 1.0000f, 0.8400f, 0.3162f, 0.5623f, 0.2818f, 1.5100f, 1.5300f, 0.2700f, 0.8913f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1640f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_ICEPALACE_SHORTPASSAGE \ - { 1.0000f, 0.7500f, 0.3162f, 0.5623f, 0.2818f, 1.7900f, 1.4600f, 0.2800f, 0.5012f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.1770f, 0.0900f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_ICEPALACE_MEDIUMROOM \ - { 1.0000f, 0.8700f, 0.3162f, 0.5623f, 0.4467f, 2.2200f, 1.5300f, 0.3200f, 0.3981f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.1860f, 0.1200f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_ICEPALACE_LARGEROOM \ - { 1.0000f, 0.8100f, 0.3162f, 0.5623f, 0.4467f, 3.1400f, 1.5300f, 0.3200f, 0.2512f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.2140f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_ICEPALACE_LONGPASSAGE \ - { 1.0000f, 0.7700f, 0.3162f, 0.5623f, 0.3981f, 3.0100f, 1.4600f, 0.2800f, 0.7943f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0250f, { 0.0000f, 0.0000f, 0.0000f }, 0.1860f, 0.0400f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_ICEPALACE_HALL \ - { 1.0000f, 0.7600f, 0.3162f, 0.4467f, 0.5623f, 5.4900f, 1.5300f, 0.3800f, 0.1122f, 0.0540f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0520f, { 0.0000f, 0.0000f, 0.0000f }, 0.2260f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_ICEPALACE_CUPBOARD \ - { 1.0000f, 0.8300f, 0.3162f, 0.5012f, 0.2239f, 0.7600f, 1.5300f, 0.2600f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1430f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_ICEPALACE_COURTYARD \ - { 1.0000f, 0.5900f, 0.3162f, 0.2818f, 0.3162f, 2.0400f, 1.2000f, 0.3800f, 0.3162f, 0.1730f, { 0.0000f, 0.0000f, 0.0000f }, 0.3162f, 0.0430f, { 0.0000f, 0.0000f, 0.0000f }, 0.2350f, 0.4800f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_ICEPALACE_ALCOVE \ - { 1.0000f, 0.8400f, 0.3162f, 0.5623f, 0.2818f, 2.7600f, 1.4600f, 0.2800f, 1.1220f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1610f, 0.0900f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } - -/* Space Station Presets */ - -#define EFX_REVERB_PRESET_SPACESTATION_SMALLROOM \ - { 0.2109f, 0.7000f, 0.3162f, 0.7079f, 0.8913f, 1.7200f, 0.8200f, 0.5500f, 0.7943f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0130f, { 0.0000f, 0.0000f, 0.0000f }, 0.1880f, 0.2600f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_SPACESTATION_SHORTPASSAGE \ - { 0.2109f, 0.8700f, 0.3162f, 0.6310f, 0.8913f, 3.5700f, 0.5000f, 0.5500f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1720f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_SPACESTATION_MEDIUMROOM \ - { 0.2109f, 0.7500f, 0.3162f, 0.6310f, 0.8913f, 3.0100f, 0.5000f, 0.5500f, 0.3981f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0350f, { 0.0000f, 0.0000f, 0.0000f }, 0.2090f, 0.3100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_SPACESTATION_LARGEROOM \ - { 0.3645f, 0.8100f, 0.3162f, 0.6310f, 0.8913f, 3.8900f, 0.3800f, 0.6100f, 0.3162f, 0.0560f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0350f, { 0.0000f, 0.0000f, 0.0000f }, 0.2330f, 0.2800f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_SPACESTATION_LONGPASSAGE \ - { 0.4287f, 0.8200f, 0.3162f, 0.6310f, 0.8913f, 4.6200f, 0.6200f, 0.5500f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0310f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_SPACESTATION_HALL \ - { 0.4287f, 0.8700f, 0.3162f, 0.6310f, 0.8913f, 7.1100f, 0.3800f, 0.6100f, 0.1778f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0470f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2500f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_SPACESTATION_CUPBOARD \ - { 0.1715f, 0.5600f, 0.3162f, 0.7079f, 0.8913f, 0.7900f, 0.8100f, 0.5500f, 1.4125f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0180f, { 0.0000f, 0.0000f, 0.0000f }, 0.1810f, 0.3100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_SPACESTATION_ALCOVE \ - { 0.2109f, 0.7800f, 0.3162f, 0.7079f, 0.8913f, 1.1600f, 0.8100f, 0.5500f, 1.4125f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0180f, { 0.0000f, 0.0000f, 0.0000f }, 0.1920f, 0.2100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } - -/* Wooden Galleon Presets */ - -#define EFX_REVERB_PRESET_WOODEN_SMALLROOM \ - { 1.0000f, 1.0000f, 0.3162f, 0.1122f, 0.3162f, 0.7900f, 0.3200f, 0.8700f, 1.0000f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_WOODEN_SHORTPASSAGE \ - { 1.0000f, 1.0000f, 0.3162f, 0.1259f, 0.3162f, 1.7500f, 0.5000f, 0.8700f, 0.8913f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_WOODEN_MEDIUMROOM \ - { 1.0000f, 1.0000f, 0.3162f, 0.1000f, 0.2818f, 1.4700f, 0.4200f, 0.8200f, 0.8913f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_WOODEN_LARGEROOM \ - { 1.0000f, 1.0000f, 0.3162f, 0.0891f, 0.2818f, 2.6500f, 0.3300f, 0.8200f, 0.8913f, 0.0660f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_WOODEN_LONGPASSAGE \ - { 1.0000f, 1.0000f, 0.3162f, 0.1000f, 0.3162f, 1.9900f, 0.4000f, 0.7900f, 1.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.4467f, 0.0360f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_WOODEN_HALL \ - { 1.0000f, 1.0000f, 0.3162f, 0.0794f, 0.2818f, 3.4500f, 0.3000f, 0.8200f, 0.8913f, 0.0880f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0630f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_WOODEN_CUPBOARD \ - { 1.0000f, 1.0000f, 0.3162f, 0.1413f, 0.3162f, 0.5600f, 0.4600f, 0.9100f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_WOODEN_COURTYARD \ - { 1.0000f, 0.6500f, 0.3162f, 0.0794f, 0.3162f, 1.7900f, 0.3500f, 0.7900f, 0.5623f, 0.1230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1000f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_WOODEN_ALCOVE \ - { 1.0000f, 1.0000f, 0.3162f, 0.1259f, 0.3162f, 1.2200f, 0.6200f, 0.9100f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } - -/* Sports Presets */ - -#define EFX_REVERB_PRESET_SPORT_EMPTYSTADIUM \ - { 1.0000f, 1.0000f, 0.3162f, 0.4467f, 0.7943f, 6.2600f, 0.5100f, 1.1000f, 0.0631f, 0.1830f, { 0.0000f, 0.0000f, 0.0000f }, 0.3981f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_SPORT_SQUASHCOURT \ - { 1.0000f, 0.7500f, 0.3162f, 0.3162f, 0.7943f, 2.2200f, 0.9100f, 1.1600f, 0.4467f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1260f, 0.1900f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_SPORT_SMALLSWIMMINGPOOL \ - { 1.0000f, 0.7000f, 0.3162f, 0.7943f, 0.8913f, 2.7600f, 1.2500f, 1.1400f, 0.6310f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1790f, 0.1500f, 0.8950f, 0.1900f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_SPORT_LARGESWIMMINGPOOL \ - { 1.0000f, 0.8200f, 0.3162f, 0.7943f, 1.0000f, 5.4900f, 1.3100f, 1.1400f, 0.4467f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 0.5012f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2220f, 0.5500f, 1.1590f, 0.2100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_SPORT_GYMNASIUM \ - { 1.0000f, 0.8100f, 0.3162f, 0.4467f, 0.8913f, 3.1400f, 1.0600f, 1.3500f, 0.3981f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.5623f, 0.0450f, { 0.0000f, 0.0000f, 0.0000f }, 0.1460f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_SPORT_FULLSTADIUM \ - { 1.0000f, 1.0000f, 0.3162f, 0.0708f, 0.7943f, 5.2500f, 0.1700f, 0.8000f, 0.1000f, 0.1880f, { 0.0000f, 0.0000f, 0.0000f }, 0.2818f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_SPORT_STADIUMTANNOY \ - { 1.0000f, 0.7800f, 0.3162f, 0.5623f, 0.5012f, 2.5300f, 0.8800f, 0.6800f, 0.2818f, 0.2300f, { 0.0000f, 0.0000f, 0.0000f }, 0.5012f, 0.0630f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -/* Prefab Presets */ - -#define EFX_REVERB_PRESET_PREFAB_WORKSHOP \ - { 0.4287f, 1.0000f, 0.3162f, 0.1413f, 0.3981f, 0.7600f, 1.0000f, 1.0000f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_PREFAB_SCHOOLROOM \ - { 0.4022f, 0.6900f, 0.3162f, 0.6310f, 0.5012f, 0.9800f, 0.4500f, 0.1800f, 1.4125f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.0950f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_PREFAB_PRACTISEROOM \ - { 0.4022f, 0.8700f, 0.3162f, 0.3981f, 0.5012f, 1.1200f, 0.5600f, 0.1800f, 1.2589f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.0950f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_PREFAB_OUTHOUSE \ - { 1.0000f, 0.8200f, 0.3162f, 0.1122f, 0.1585f, 1.3800f, 0.3800f, 0.3500f, 0.8913f, 0.0240f, { 0.0000f, 0.0000f, -0.0000f }, 0.6310f, 0.0440f, { 0.0000f, 0.0000f, 0.0000f }, 0.1210f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_PREFAB_CARAVAN \ - { 1.0000f, 1.0000f, 0.3162f, 0.0891f, 0.1259f, 0.4300f, 1.5000f, 1.0000f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } - -/* Dome and Pipe Presets */ - -#define EFX_REVERB_PRESET_DOME_TOMB \ - { 1.0000f, 0.7900f, 0.3162f, 0.3548f, 0.2239f, 4.1800f, 0.2100f, 0.1000f, 0.3868f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 1.6788f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.1770f, 0.1900f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_PIPE_SMALL \ - { 1.0000f, 1.0000f, 0.3162f, 0.3548f, 0.2239f, 5.0400f, 0.1000f, 0.1000f, 0.5012f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 2.5119f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_DOME_SAINTPAULS \ - { 1.0000f, 0.8700f, 0.3162f, 0.3548f, 0.2239f, 10.4800f, 0.1900f, 0.1000f, 0.1778f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0420f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1200f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_PIPE_LONGTHIN \ - { 0.2560f, 0.9100f, 0.3162f, 0.4467f, 0.2818f, 9.2100f, 0.1800f, 0.1000f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_PIPE_LARGE \ - { 1.0000f, 1.0000f, 0.3162f, 0.3548f, 0.2239f, 8.4500f, 0.1000f, 0.1000f, 0.3981f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_PIPE_RESONANT \ - { 0.1373f, 0.9100f, 0.3162f, 0.4467f, 0.2818f, 6.8100f, 0.1800f, 0.1000f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 } - -/* Outdoors Presets */ - -#define EFX_REVERB_PRESET_OUTDOORS_BACKYARD \ - { 1.0000f, 0.4500f, 0.3162f, 0.2512f, 0.5012f, 1.1200f, 0.3400f, 0.4600f, 0.4467f, 0.0690f, { 0.0000f, 0.0000f, -0.0000f }, 0.7079f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.2180f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_OUTDOORS_ROLLINGPLAINS \ - { 1.0000f, 0.0000f, 0.3162f, 0.0112f, 0.6310f, 2.1300f, 0.2100f, 0.4600f, 0.1778f, 0.3000f, { 0.0000f, 0.0000f, -0.0000f }, 0.4467f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_OUTDOORS_DEEPCANYON \ - { 1.0000f, 0.7400f, 0.3162f, 0.1778f, 0.6310f, 3.8900f, 0.2100f, 0.4600f, 0.3162f, 0.2230f, { 0.0000f, 0.0000f, -0.0000f }, 0.3548f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_OUTDOORS_CREEK \ - { 1.0000f, 0.3500f, 0.3162f, 0.1778f, 0.5012f, 2.1300f, 0.2100f, 0.4600f, 0.3981f, 0.1150f, { 0.0000f, 0.0000f, -0.0000f }, 0.1995f, 0.0310f, { 0.0000f, 0.0000f, 0.0000f }, 0.2180f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_OUTDOORS_VALLEY \ - { 1.0000f, 0.2800f, 0.3162f, 0.0282f, 0.1585f, 2.8800f, 0.2600f, 0.3500f, 0.1413f, 0.2630f, { 0.0000f, 0.0000f, -0.0000f }, 0.3981f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 } - -/* Mood Presets */ - -#define EFX_REVERB_PRESET_MOOD_HEAVEN \ - { 1.0000f, 0.9400f, 0.3162f, 0.7943f, 0.4467f, 5.0400f, 1.1200f, 0.5600f, 0.2427f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0800f, 2.7420f, 0.0500f, 0.9977f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_MOOD_HELL \ - { 1.0000f, 0.5700f, 0.3162f, 0.3548f, 0.4467f, 3.5700f, 0.4900f, 2.0000f, 0.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1100f, 0.0400f, 2.1090f, 0.5200f, 0.9943f, 5000.0000f, 139.5000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_MOOD_MEMORY \ - { 1.0000f, 0.8500f, 0.3162f, 0.6310f, 0.3548f, 4.0600f, 0.8200f, 0.5600f, 0.0398f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.4740f, 0.4500f, 0.9886f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } - -/* Driving Presets */ - -#define EFX_REVERB_PRESET_DRIVING_COMMENTATOR \ - { 1.0000f, 0.0000f, 3.1623f, 0.5623f, 0.5012f, 2.4200f, 0.8800f, 0.6800f, 0.1995f, 0.0930f, { 0.0000f, 0.0000f, 0.0000f }, 0.2512f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9886f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_DRIVING_PITGARAGE \ - { 0.4287f, 0.5900f, 0.3162f, 0.7079f, 0.5623f, 1.7200f, 0.9300f, 0.8700f, 0.5623f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_DRIVING_INCAR_RACER \ - { 0.0832f, 0.8000f, 0.3162f, 1.0000f, 0.7943f, 0.1700f, 2.0000f, 0.4100f, 1.7783f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_DRIVING_INCAR_SPORTS \ - { 0.0832f, 0.8000f, 0.3162f, 0.6310f, 1.0000f, 0.1700f, 0.7500f, 0.4100f, 1.0000f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.5623f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_DRIVING_INCAR_LUXURY \ - { 0.2560f, 1.0000f, 0.3162f, 0.1000f, 0.5012f, 0.1300f, 0.4100f, 0.4600f, 0.7943f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_DRIVING_FULLGRANDSTAND \ - { 1.0000f, 1.0000f, 0.3162f, 0.2818f, 0.6310f, 3.0100f, 1.3700f, 1.2800f, 0.3548f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 0.1778f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10420.2002f, 250.0000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_DRIVING_EMPTYGRANDSTAND \ - { 1.0000f, 1.0000f, 0.3162f, 1.0000f, 0.7943f, 4.6200f, 1.7500f, 1.4000f, 0.2082f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 0.2512f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10420.2002f, 250.0000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_DRIVING_TUNNEL \ - { 1.0000f, 0.8100f, 0.3162f, 0.3981f, 0.8913f, 3.4200f, 0.9400f, 1.3100f, 0.7079f, 0.0510f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0470f, { 0.0000f, 0.0000f, 0.0000f }, 0.2140f, 0.0500f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 155.3000f, 0.0000f, 0x1 } - -/* City Presets */ - -#define EFX_REVERB_PRESET_CITY_STREETS \ - { 1.0000f, 0.7800f, 0.3162f, 0.7079f, 0.8913f, 1.7900f, 1.1200f, 0.9100f, 0.2818f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 0.1995f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_CITY_SUBWAY \ - { 1.0000f, 0.7400f, 0.3162f, 0.7079f, 0.8913f, 3.0100f, 1.2300f, 0.9100f, 0.7079f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.2100f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_CITY_MUSEUM \ - { 1.0000f, 0.8200f, 0.3162f, 0.1778f, 0.1778f, 3.2800f, 1.4000f, 0.5700f, 0.2512f, 0.0390f, { 0.0000f, 0.0000f, -0.0000f }, 0.8913f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_CITY_LIBRARY \ - { 1.0000f, 0.8200f, 0.3162f, 0.2818f, 0.0891f, 2.7600f, 0.8900f, 0.4100f, 0.3548f, 0.0290f, { 0.0000f, 0.0000f, -0.0000f }, 0.8913f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 } - -#define EFX_REVERB_PRESET_CITY_UNDERPASS \ - { 1.0000f, 0.8200f, 0.3162f, 0.4467f, 0.8913f, 3.5700f, 1.1200f, 0.9100f, 0.3981f, 0.0590f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0370f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1400f, 0.2500f, 0.0000f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_CITY_ABANDONED \ - { 1.0000f, 0.6900f, 0.3162f, 0.7943f, 0.8913f, 3.2800f, 1.1700f, 0.9100f, 0.4467f, 0.0440f, { 0.0000f, 0.0000f, 0.0000f }, 0.2818f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9966f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -/* Misc. Presets */ - -#define EFX_REVERB_PRESET_DUSTYROOM \ - { 0.3645f, 0.5600f, 0.3162f, 0.7943f, 0.7079f, 1.7900f, 0.3800f, 0.2100f, 0.5012f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0060f, { 0.0000f, 0.0000f, 0.0000f }, 0.2020f, 0.0500f, 0.2500f, 0.0000f, 0.9886f, 13046.0000f, 163.3000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_CHAPEL \ - { 1.0000f, 0.8400f, 0.3162f, 0.5623f, 1.0000f, 4.6200f, 0.6400f, 1.2300f, 0.4467f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.1100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } - -#define EFX_REVERB_PRESET_SMALLWATERROOM \ - { 1.0000f, 0.7000f, 0.3162f, 0.4477f, 1.0000f, 1.5100f, 1.2500f, 1.1400f, 0.8913f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1790f, 0.1500f, 0.8950f, 0.1900f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } - -#endif /* EFX_PRESETS_H */ diff --git a/external/openal-soft-1.16.0-bin/include/AL/efx.h b/external/openal-soft-1.16.0-bin/include/AL/efx.h deleted file mode 100644 index 5776698..0000000 --- a/external/openal-soft-1.16.0-bin/include/AL/efx.h +++ /dev/null @@ -1,761 +0,0 @@ -#ifndef AL_EFX_H -#define AL_EFX_H - - -#include "alc.h" -#include "al.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define ALC_EXT_EFX_NAME "ALC_EXT_EFX" - -#define ALC_EFX_MAJOR_VERSION 0x20001 -#define ALC_EFX_MINOR_VERSION 0x20002 -#define ALC_MAX_AUXILIARY_SENDS 0x20003 - - -/* Listener properties. */ -#define AL_METERS_PER_UNIT 0x20004 - -/* Source properties. */ -#define AL_DIRECT_FILTER 0x20005 -#define AL_AUXILIARY_SEND_FILTER 0x20006 -#define AL_AIR_ABSORPTION_FACTOR 0x20007 -#define AL_ROOM_ROLLOFF_FACTOR 0x20008 -#define AL_CONE_OUTER_GAINHF 0x20009 -#define AL_DIRECT_FILTER_GAINHF_AUTO 0x2000A -#define AL_AUXILIARY_SEND_FILTER_GAIN_AUTO 0x2000B -#define AL_AUXILIARY_SEND_FILTER_GAINHF_AUTO 0x2000C - - -/* Effect properties. */ - -/* Reverb effect parameters */ -#define AL_REVERB_DENSITY 0x0001 -#define AL_REVERB_DIFFUSION 0x0002 -#define AL_REVERB_GAIN 0x0003 -#define AL_REVERB_GAINHF 0x0004 -#define AL_REVERB_DECAY_TIME 0x0005 -#define AL_REVERB_DECAY_HFRATIO 0x0006 -#define AL_REVERB_REFLECTIONS_GAIN 0x0007 -#define AL_REVERB_REFLECTIONS_DELAY 0x0008 -#define AL_REVERB_LATE_REVERB_GAIN 0x0009 -#define AL_REVERB_LATE_REVERB_DELAY 0x000A -#define AL_REVERB_AIR_ABSORPTION_GAINHF 0x000B -#define AL_REVERB_ROOM_ROLLOFF_FACTOR 0x000C -#define AL_REVERB_DECAY_HFLIMIT 0x000D - -/* EAX Reverb effect parameters */ -#define AL_EAXREVERB_DENSITY 0x0001 -#define AL_EAXREVERB_DIFFUSION 0x0002 -#define AL_EAXREVERB_GAIN 0x0003 -#define AL_EAXREVERB_GAINHF 0x0004 -#define AL_EAXREVERB_GAINLF 0x0005 -#define AL_EAXREVERB_DECAY_TIME 0x0006 -#define AL_EAXREVERB_DECAY_HFRATIO 0x0007 -#define AL_EAXREVERB_DECAY_LFRATIO 0x0008 -#define AL_EAXREVERB_REFLECTIONS_GAIN 0x0009 -#define AL_EAXREVERB_REFLECTIONS_DELAY 0x000A -#define AL_EAXREVERB_REFLECTIONS_PAN 0x000B -#define AL_EAXREVERB_LATE_REVERB_GAIN 0x000C -#define AL_EAXREVERB_LATE_REVERB_DELAY 0x000D -#define AL_EAXREVERB_LATE_REVERB_PAN 0x000E -#define AL_EAXREVERB_ECHO_TIME 0x000F -#define AL_EAXREVERB_ECHO_DEPTH 0x0010 -#define AL_EAXREVERB_MODULATION_TIME 0x0011 -#define AL_EAXREVERB_MODULATION_DEPTH 0x0012 -#define AL_EAXREVERB_AIR_ABSORPTION_GAINHF 0x0013 -#define AL_EAXREVERB_HFREFERENCE 0x0014 -#define AL_EAXREVERB_LFREFERENCE 0x0015 -#define AL_EAXREVERB_ROOM_ROLLOFF_FACTOR 0x0016 -#define AL_EAXREVERB_DECAY_HFLIMIT 0x0017 - -/* Chorus effect parameters */ -#define AL_CHORUS_WAVEFORM 0x0001 -#define AL_CHORUS_PHASE 0x0002 -#define AL_CHORUS_RATE 0x0003 -#define AL_CHORUS_DEPTH 0x0004 -#define AL_CHORUS_FEEDBACK 0x0005 -#define AL_CHORUS_DELAY 0x0006 - -/* Distortion effect parameters */ -#define AL_DISTORTION_EDGE 0x0001 -#define AL_DISTORTION_GAIN 0x0002 -#define AL_DISTORTION_LOWPASS_CUTOFF 0x0003 -#define AL_DISTORTION_EQCENTER 0x0004 -#define AL_DISTORTION_EQBANDWIDTH 0x0005 - -/* Echo effect parameters */ -#define AL_ECHO_DELAY 0x0001 -#define AL_ECHO_LRDELAY 0x0002 -#define AL_ECHO_DAMPING 0x0003 -#define AL_ECHO_FEEDBACK 0x0004 -#define AL_ECHO_SPREAD 0x0005 - -/* Flanger effect parameters */ -#define AL_FLANGER_WAVEFORM 0x0001 -#define AL_FLANGER_PHASE 0x0002 -#define AL_FLANGER_RATE 0x0003 -#define AL_FLANGER_DEPTH 0x0004 -#define AL_FLANGER_FEEDBACK 0x0005 -#define AL_FLANGER_DELAY 0x0006 - -/* Frequency shifter effect parameters */ -#define AL_FREQUENCY_SHIFTER_FREQUENCY 0x0001 -#define AL_FREQUENCY_SHIFTER_LEFT_DIRECTION 0x0002 -#define AL_FREQUENCY_SHIFTER_RIGHT_DIRECTION 0x0003 - -/* Vocal morpher effect parameters */ -#define AL_VOCAL_MORPHER_PHONEMEA 0x0001 -#define AL_VOCAL_MORPHER_PHONEMEA_COARSE_TUNING 0x0002 -#define AL_VOCAL_MORPHER_PHONEMEB 0x0003 -#define AL_VOCAL_MORPHER_PHONEMEB_COARSE_TUNING 0x0004 -#define AL_VOCAL_MORPHER_WAVEFORM 0x0005 -#define AL_VOCAL_MORPHER_RATE 0x0006 - -/* Pitchshifter effect parameters */ -#define AL_PITCH_SHIFTER_COARSE_TUNE 0x0001 -#define AL_PITCH_SHIFTER_FINE_TUNE 0x0002 - -/* Ringmodulator effect parameters */ -#define AL_RING_MODULATOR_FREQUENCY 0x0001 -#define AL_RING_MODULATOR_HIGHPASS_CUTOFF 0x0002 -#define AL_RING_MODULATOR_WAVEFORM 0x0003 - -/* Autowah effect parameters */ -#define AL_AUTOWAH_ATTACK_TIME 0x0001 -#define AL_AUTOWAH_RELEASE_TIME 0x0002 -#define AL_AUTOWAH_RESONANCE 0x0003 -#define AL_AUTOWAH_PEAK_GAIN 0x0004 - -/* Compressor effect parameters */ -#define AL_COMPRESSOR_ONOFF 0x0001 - -/* Equalizer effect parameters */ -#define AL_EQUALIZER_LOW_GAIN 0x0001 -#define AL_EQUALIZER_LOW_CUTOFF 0x0002 -#define AL_EQUALIZER_MID1_GAIN 0x0003 -#define AL_EQUALIZER_MID1_CENTER 0x0004 -#define AL_EQUALIZER_MID1_WIDTH 0x0005 -#define AL_EQUALIZER_MID2_GAIN 0x0006 -#define AL_EQUALIZER_MID2_CENTER 0x0007 -#define AL_EQUALIZER_MID2_WIDTH 0x0008 -#define AL_EQUALIZER_HIGH_GAIN 0x0009 -#define AL_EQUALIZER_HIGH_CUTOFF 0x000A - -/* Effect type */ -#define AL_EFFECT_FIRST_PARAMETER 0x0000 -#define AL_EFFECT_LAST_PARAMETER 0x8000 -#define AL_EFFECT_TYPE 0x8001 - -/* Effect types, used with the AL_EFFECT_TYPE property */ -#define AL_EFFECT_NULL 0x0000 -#define AL_EFFECT_REVERB 0x0001 -#define AL_EFFECT_CHORUS 0x0002 -#define AL_EFFECT_DISTORTION 0x0003 -#define AL_EFFECT_ECHO 0x0004 -#define AL_EFFECT_FLANGER 0x0005 -#define AL_EFFECT_FREQUENCY_SHIFTER 0x0006 -#define AL_EFFECT_VOCAL_MORPHER 0x0007 -#define AL_EFFECT_PITCH_SHIFTER 0x0008 -#define AL_EFFECT_RING_MODULATOR 0x0009 -#define AL_EFFECT_AUTOWAH 0x000A -#define AL_EFFECT_COMPRESSOR 0x000B -#define AL_EFFECT_EQUALIZER 0x000C -#define AL_EFFECT_EAXREVERB 0x8000 - -/* Auxiliary Effect Slot properties. */ -#define AL_EFFECTSLOT_EFFECT 0x0001 -#define AL_EFFECTSLOT_GAIN 0x0002 -#define AL_EFFECTSLOT_AUXILIARY_SEND_AUTO 0x0003 - -/* NULL Auxiliary Slot ID to disable a source send. */ -#define AL_EFFECTSLOT_NULL 0x0000 - - -/* Filter properties. */ - -/* Lowpass filter parameters */ -#define AL_LOWPASS_GAIN 0x0001 -#define AL_LOWPASS_GAINHF 0x0002 - -/* Highpass filter parameters */ -#define AL_HIGHPASS_GAIN 0x0001 -#define AL_HIGHPASS_GAINLF 0x0002 - -/* Bandpass filter parameters */ -#define AL_BANDPASS_GAIN 0x0001 -#define AL_BANDPASS_GAINLF 0x0002 -#define AL_BANDPASS_GAINHF 0x0003 - -/* Filter type */ -#define AL_FILTER_FIRST_PARAMETER 0x0000 -#define AL_FILTER_LAST_PARAMETER 0x8000 -#define AL_FILTER_TYPE 0x8001 - -/* Filter types, used with the AL_FILTER_TYPE property */ -#define AL_FILTER_NULL 0x0000 -#define AL_FILTER_LOWPASS 0x0001 -#define AL_FILTER_HIGHPASS 0x0002 -#define AL_FILTER_BANDPASS 0x0003 - - -/* Effect object function types. */ -typedef void (AL_APIENTRY *LPALGENEFFECTS)(ALsizei, ALuint*); -typedef void (AL_APIENTRY *LPALDELETEEFFECTS)(ALsizei, const ALuint*); -typedef ALboolean (AL_APIENTRY *LPALISEFFECT)(ALuint); -typedef void (AL_APIENTRY *LPALEFFECTI)(ALuint, ALenum, ALint); -typedef void (AL_APIENTRY *LPALEFFECTIV)(ALuint, ALenum, const ALint*); -typedef void (AL_APIENTRY *LPALEFFECTF)(ALuint, ALenum, ALfloat); -typedef void (AL_APIENTRY *LPALEFFECTFV)(ALuint, ALenum, const ALfloat*); -typedef void (AL_APIENTRY *LPALGETEFFECTI)(ALuint, ALenum, ALint*); -typedef void (AL_APIENTRY *LPALGETEFFECTIV)(ALuint, ALenum, ALint*); -typedef void (AL_APIENTRY *LPALGETEFFECTF)(ALuint, ALenum, ALfloat*); -typedef void (AL_APIENTRY *LPALGETEFFECTFV)(ALuint, ALenum, ALfloat*); - -/* Filter object function types. */ -typedef void (AL_APIENTRY *LPALGENFILTERS)(ALsizei, ALuint*); -typedef void (AL_APIENTRY *LPALDELETEFILTERS)(ALsizei, const ALuint*); -typedef ALboolean (AL_APIENTRY *LPALISFILTER)(ALuint); -typedef void (AL_APIENTRY *LPALFILTERI)(ALuint, ALenum, ALint); -typedef void (AL_APIENTRY *LPALFILTERIV)(ALuint, ALenum, const ALint*); -typedef void (AL_APIENTRY *LPALFILTERF)(ALuint, ALenum, ALfloat); -typedef void (AL_APIENTRY *LPALFILTERFV)(ALuint, ALenum, const ALfloat*); -typedef void (AL_APIENTRY *LPALGETFILTERI)(ALuint, ALenum, ALint*); -typedef void (AL_APIENTRY *LPALGETFILTERIV)(ALuint, ALenum, ALint*); -typedef void (AL_APIENTRY *LPALGETFILTERF)(ALuint, ALenum, ALfloat*); -typedef void (AL_APIENTRY *LPALGETFILTERFV)(ALuint, ALenum, ALfloat*); - -/* Auxiliary Effect Slot object function types. */ -typedef void (AL_APIENTRY *LPALGENAUXILIARYEFFECTSLOTS)(ALsizei, ALuint*); -typedef void (AL_APIENTRY *LPALDELETEAUXILIARYEFFECTSLOTS)(ALsizei, const ALuint*); -typedef ALboolean (AL_APIENTRY *LPALISAUXILIARYEFFECTSLOT)(ALuint); -typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint); -typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, const ALint*); -typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat); -typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, const ALfloat*); -typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint*); -typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, ALint*); -typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat*); -typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, ALfloat*); - -#ifdef AL_ALEXT_PROTOTYPES -AL_API ALvoid AL_APIENTRY alGenEffects(ALsizei n, ALuint *effects); -AL_API ALvoid AL_APIENTRY alDeleteEffects(ALsizei n, const ALuint *effects); -AL_API ALboolean AL_APIENTRY alIsEffect(ALuint effect); -AL_API ALvoid AL_APIENTRY alEffecti(ALuint effect, ALenum param, ALint iValue); -AL_API ALvoid AL_APIENTRY alEffectiv(ALuint effect, ALenum param, const ALint *piValues); -AL_API ALvoid AL_APIENTRY alEffectf(ALuint effect, ALenum param, ALfloat flValue); -AL_API ALvoid AL_APIENTRY alEffectfv(ALuint effect, ALenum param, const ALfloat *pflValues); -AL_API ALvoid AL_APIENTRY alGetEffecti(ALuint effect, ALenum param, ALint *piValue); -AL_API ALvoid AL_APIENTRY alGetEffectiv(ALuint effect, ALenum param, ALint *piValues); -AL_API ALvoid AL_APIENTRY alGetEffectf(ALuint effect, ALenum param, ALfloat *pflValue); -AL_API ALvoid AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues); - -AL_API ALvoid AL_APIENTRY alGenFilters(ALsizei n, ALuint *filters); -AL_API ALvoid AL_APIENTRY alDeleteFilters(ALsizei n, const ALuint *filters); -AL_API ALboolean AL_APIENTRY alIsFilter(ALuint filter); -AL_API ALvoid AL_APIENTRY alFilteri(ALuint filter, ALenum param, ALint iValue); -AL_API ALvoid AL_APIENTRY alFilteriv(ALuint filter, ALenum param, const ALint *piValues); -AL_API ALvoid AL_APIENTRY alFilterf(ALuint filter, ALenum param, ALfloat flValue); -AL_API ALvoid AL_APIENTRY alFilterfv(ALuint filter, ALenum param, const ALfloat *pflValues); -AL_API ALvoid AL_APIENTRY alGetFilteri(ALuint filter, ALenum param, ALint *piValue); -AL_API ALvoid AL_APIENTRY alGetFilteriv(ALuint filter, ALenum param, ALint *piValues); -AL_API ALvoid AL_APIENTRY alGetFilterf(ALuint filter, ALenum param, ALfloat *pflValue); -AL_API ALvoid AL_APIENTRY alGetFilterfv(ALuint filter, ALenum param, ALfloat *pflValues); - -AL_API ALvoid AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslots); -AL_API ALvoid AL_APIENTRY alDeleteAuxiliaryEffectSlots(ALsizei n, const ALuint *effectslots); -AL_API ALboolean AL_APIENTRY alIsAuxiliaryEffectSlot(ALuint effectslot); -AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint iValue); -AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, const ALint *piValues); -AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat flValue); -AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, const ALfloat *pflValues); -AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint *piValue); -AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, ALint *piValues); -AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat *pflValue); -AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, ALfloat *pflValues); -#endif - -/* Filter ranges and defaults. */ - -/* Lowpass filter */ -#define AL_LOWPASS_MIN_GAIN (0.0f) -#define AL_LOWPASS_MAX_GAIN (1.0f) -#define AL_LOWPASS_DEFAULT_GAIN (1.0f) - -#define AL_LOWPASS_MIN_GAINHF (0.0f) -#define AL_LOWPASS_MAX_GAINHF (1.0f) -#define AL_LOWPASS_DEFAULT_GAINHF (1.0f) - -/* Highpass filter */ -#define AL_HIGHPASS_MIN_GAIN (0.0f) -#define AL_HIGHPASS_MAX_GAIN (1.0f) -#define AL_HIGHPASS_DEFAULT_GAIN (1.0f) - -#define AL_HIGHPASS_MIN_GAINLF (0.0f) -#define AL_HIGHPASS_MAX_GAINLF (1.0f) -#define AL_HIGHPASS_DEFAULT_GAINLF (1.0f) - -/* Bandpass filter */ -#define AL_BANDPASS_MIN_GAIN (0.0f) -#define AL_BANDPASS_MAX_GAIN (1.0f) -#define AL_BANDPASS_DEFAULT_GAIN (1.0f) - -#define AL_BANDPASS_MIN_GAINHF (0.0f) -#define AL_BANDPASS_MAX_GAINHF (1.0f) -#define AL_BANDPASS_DEFAULT_GAINHF (1.0f) - -#define AL_BANDPASS_MIN_GAINLF (0.0f) -#define AL_BANDPASS_MAX_GAINLF (1.0f) -#define AL_BANDPASS_DEFAULT_GAINLF (1.0f) - - -/* Effect parameter ranges and defaults. */ - -/* Standard reverb effect */ -#define AL_REVERB_MIN_DENSITY (0.0f) -#define AL_REVERB_MAX_DENSITY (1.0f) -#define AL_REVERB_DEFAULT_DENSITY (1.0f) - -#define AL_REVERB_MIN_DIFFUSION (0.0f) -#define AL_REVERB_MAX_DIFFUSION (1.0f) -#define AL_REVERB_DEFAULT_DIFFUSION (1.0f) - -#define AL_REVERB_MIN_GAIN (0.0f) -#define AL_REVERB_MAX_GAIN (1.0f) -#define AL_REVERB_DEFAULT_GAIN (0.32f) - -#define AL_REVERB_MIN_GAINHF (0.0f) -#define AL_REVERB_MAX_GAINHF (1.0f) -#define AL_REVERB_DEFAULT_GAINHF (0.89f) - -#define AL_REVERB_MIN_DECAY_TIME (0.1f) -#define AL_REVERB_MAX_DECAY_TIME (20.0f) -#define AL_REVERB_DEFAULT_DECAY_TIME (1.49f) - -#define AL_REVERB_MIN_DECAY_HFRATIO (0.1f) -#define AL_REVERB_MAX_DECAY_HFRATIO (2.0f) -#define AL_REVERB_DEFAULT_DECAY_HFRATIO (0.83f) - -#define AL_REVERB_MIN_REFLECTIONS_GAIN (0.0f) -#define AL_REVERB_MAX_REFLECTIONS_GAIN (3.16f) -#define AL_REVERB_DEFAULT_REFLECTIONS_GAIN (0.05f) - -#define AL_REVERB_MIN_REFLECTIONS_DELAY (0.0f) -#define AL_REVERB_MAX_REFLECTIONS_DELAY (0.3f) -#define AL_REVERB_DEFAULT_REFLECTIONS_DELAY (0.007f) - -#define AL_REVERB_MIN_LATE_REVERB_GAIN (0.0f) -#define AL_REVERB_MAX_LATE_REVERB_GAIN (10.0f) -#define AL_REVERB_DEFAULT_LATE_REVERB_GAIN (1.26f) - -#define AL_REVERB_MIN_LATE_REVERB_DELAY (0.0f) -#define AL_REVERB_MAX_LATE_REVERB_DELAY (0.1f) -#define AL_REVERB_DEFAULT_LATE_REVERB_DELAY (0.011f) - -#define AL_REVERB_MIN_AIR_ABSORPTION_GAINHF (0.892f) -#define AL_REVERB_MAX_AIR_ABSORPTION_GAINHF (1.0f) -#define AL_REVERB_DEFAULT_AIR_ABSORPTION_GAINHF (0.994f) - -#define AL_REVERB_MIN_ROOM_ROLLOFF_FACTOR (0.0f) -#define AL_REVERB_MAX_ROOM_ROLLOFF_FACTOR (10.0f) -#define AL_REVERB_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f) - -#define AL_REVERB_MIN_DECAY_HFLIMIT AL_FALSE -#define AL_REVERB_MAX_DECAY_HFLIMIT AL_TRUE -#define AL_REVERB_DEFAULT_DECAY_HFLIMIT AL_TRUE - -/* EAX reverb effect */ -#define AL_EAXREVERB_MIN_DENSITY (0.0f) -#define AL_EAXREVERB_MAX_DENSITY (1.0f) -#define AL_EAXREVERB_DEFAULT_DENSITY (1.0f) - -#define AL_EAXREVERB_MIN_DIFFUSION (0.0f) -#define AL_EAXREVERB_MAX_DIFFUSION (1.0f) -#define AL_EAXREVERB_DEFAULT_DIFFUSION (1.0f) - -#define AL_EAXREVERB_MIN_GAIN (0.0f) -#define AL_EAXREVERB_MAX_GAIN (1.0f) -#define AL_EAXREVERB_DEFAULT_GAIN (0.32f) - -#define AL_EAXREVERB_MIN_GAINHF (0.0f) -#define AL_EAXREVERB_MAX_GAINHF (1.0f) -#define AL_EAXREVERB_DEFAULT_GAINHF (0.89f) - -#define AL_EAXREVERB_MIN_GAINLF (0.0f) -#define AL_EAXREVERB_MAX_GAINLF (1.0f) -#define AL_EAXREVERB_DEFAULT_GAINLF (1.0f) - -#define AL_EAXREVERB_MIN_DECAY_TIME (0.1f) -#define AL_EAXREVERB_MAX_DECAY_TIME (20.0f) -#define AL_EAXREVERB_DEFAULT_DECAY_TIME (1.49f) - -#define AL_EAXREVERB_MIN_DECAY_HFRATIO (0.1f) -#define AL_EAXREVERB_MAX_DECAY_HFRATIO (2.0f) -#define AL_EAXREVERB_DEFAULT_DECAY_HFRATIO (0.83f) - -#define AL_EAXREVERB_MIN_DECAY_LFRATIO (0.1f) -#define AL_EAXREVERB_MAX_DECAY_LFRATIO (2.0f) -#define AL_EAXREVERB_DEFAULT_DECAY_LFRATIO (1.0f) - -#define AL_EAXREVERB_MIN_REFLECTIONS_GAIN (0.0f) -#define AL_EAXREVERB_MAX_REFLECTIONS_GAIN (3.16f) -#define AL_EAXREVERB_DEFAULT_REFLECTIONS_GAIN (0.05f) - -#define AL_EAXREVERB_MIN_REFLECTIONS_DELAY (0.0f) -#define AL_EAXREVERB_MAX_REFLECTIONS_DELAY (0.3f) -#define AL_EAXREVERB_DEFAULT_REFLECTIONS_DELAY (0.007f) - -#define AL_EAXREVERB_DEFAULT_REFLECTIONS_PAN_XYZ (0.0f) - -#define AL_EAXREVERB_MIN_LATE_REVERB_GAIN (0.0f) -#define AL_EAXREVERB_MAX_LATE_REVERB_GAIN (10.0f) -#define AL_EAXREVERB_DEFAULT_LATE_REVERB_GAIN (1.26f) - -#define AL_EAXREVERB_MIN_LATE_REVERB_DELAY (0.0f) -#define AL_EAXREVERB_MAX_LATE_REVERB_DELAY (0.1f) -#define AL_EAXREVERB_DEFAULT_LATE_REVERB_DELAY (0.011f) - -#define AL_EAXREVERB_DEFAULT_LATE_REVERB_PAN_XYZ (0.0f) - -#define AL_EAXREVERB_MIN_ECHO_TIME (0.075f) -#define AL_EAXREVERB_MAX_ECHO_TIME (0.25f) -#define AL_EAXREVERB_DEFAULT_ECHO_TIME (0.25f) - -#define AL_EAXREVERB_MIN_ECHO_DEPTH (0.0f) -#define AL_EAXREVERB_MAX_ECHO_DEPTH (1.0f) -#define AL_EAXREVERB_DEFAULT_ECHO_DEPTH (0.0f) - -#define AL_EAXREVERB_MIN_MODULATION_TIME (0.04f) -#define AL_EAXREVERB_MAX_MODULATION_TIME (4.0f) -#define AL_EAXREVERB_DEFAULT_MODULATION_TIME (0.25f) - -#define AL_EAXREVERB_MIN_MODULATION_DEPTH (0.0f) -#define AL_EAXREVERB_MAX_MODULATION_DEPTH (1.0f) -#define AL_EAXREVERB_DEFAULT_MODULATION_DEPTH (0.0f) - -#define AL_EAXREVERB_MIN_AIR_ABSORPTION_GAINHF (0.892f) -#define AL_EAXREVERB_MAX_AIR_ABSORPTION_GAINHF (1.0f) -#define AL_EAXREVERB_DEFAULT_AIR_ABSORPTION_GAINHF (0.994f) - -#define AL_EAXREVERB_MIN_HFREFERENCE (1000.0f) -#define AL_EAXREVERB_MAX_HFREFERENCE (20000.0f) -#define AL_EAXREVERB_DEFAULT_HFREFERENCE (5000.0f) - -#define AL_EAXREVERB_MIN_LFREFERENCE (20.0f) -#define AL_EAXREVERB_MAX_LFREFERENCE (1000.0f) -#define AL_EAXREVERB_DEFAULT_LFREFERENCE (250.0f) - -#define AL_EAXREVERB_MIN_ROOM_ROLLOFF_FACTOR (0.0f) -#define AL_EAXREVERB_MAX_ROOM_ROLLOFF_FACTOR (10.0f) -#define AL_EAXREVERB_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f) - -#define AL_EAXREVERB_MIN_DECAY_HFLIMIT AL_FALSE -#define AL_EAXREVERB_MAX_DECAY_HFLIMIT AL_TRUE -#define AL_EAXREVERB_DEFAULT_DECAY_HFLIMIT AL_TRUE - -/* Chorus effect */ -#define AL_CHORUS_WAVEFORM_SINUSOID (0) -#define AL_CHORUS_WAVEFORM_TRIANGLE (1) - -#define AL_CHORUS_MIN_WAVEFORM (0) -#define AL_CHORUS_MAX_WAVEFORM (1) -#define AL_CHORUS_DEFAULT_WAVEFORM (1) - -#define AL_CHORUS_MIN_PHASE (-180) -#define AL_CHORUS_MAX_PHASE (180) -#define AL_CHORUS_DEFAULT_PHASE (90) - -#define AL_CHORUS_MIN_RATE (0.0f) -#define AL_CHORUS_MAX_RATE (10.0f) -#define AL_CHORUS_DEFAULT_RATE (1.1f) - -#define AL_CHORUS_MIN_DEPTH (0.0f) -#define AL_CHORUS_MAX_DEPTH (1.0f) -#define AL_CHORUS_DEFAULT_DEPTH (0.1f) - -#define AL_CHORUS_MIN_FEEDBACK (-1.0f) -#define AL_CHORUS_MAX_FEEDBACK (1.0f) -#define AL_CHORUS_DEFAULT_FEEDBACK (0.25f) - -#define AL_CHORUS_MIN_DELAY (0.0f) -#define AL_CHORUS_MAX_DELAY (0.016f) -#define AL_CHORUS_DEFAULT_DELAY (0.016f) - -/* Distortion effect */ -#define AL_DISTORTION_MIN_EDGE (0.0f) -#define AL_DISTORTION_MAX_EDGE (1.0f) -#define AL_DISTORTION_DEFAULT_EDGE (0.2f) - -#define AL_DISTORTION_MIN_GAIN (0.01f) -#define AL_DISTORTION_MAX_GAIN (1.0f) -#define AL_DISTORTION_DEFAULT_GAIN (0.05f) - -#define AL_DISTORTION_MIN_LOWPASS_CUTOFF (80.0f) -#define AL_DISTORTION_MAX_LOWPASS_CUTOFF (24000.0f) -#define AL_DISTORTION_DEFAULT_LOWPASS_CUTOFF (8000.0f) - -#define AL_DISTORTION_MIN_EQCENTER (80.0f) -#define AL_DISTORTION_MAX_EQCENTER (24000.0f) -#define AL_DISTORTION_DEFAULT_EQCENTER (3600.0f) - -#define AL_DISTORTION_MIN_EQBANDWIDTH (80.0f) -#define AL_DISTORTION_MAX_EQBANDWIDTH (24000.0f) -#define AL_DISTORTION_DEFAULT_EQBANDWIDTH (3600.0f) - -/* Echo effect */ -#define AL_ECHO_MIN_DELAY (0.0f) -#define AL_ECHO_MAX_DELAY (0.207f) -#define AL_ECHO_DEFAULT_DELAY (0.1f) - -#define AL_ECHO_MIN_LRDELAY (0.0f) -#define AL_ECHO_MAX_LRDELAY (0.404f) -#define AL_ECHO_DEFAULT_LRDELAY (0.1f) - -#define AL_ECHO_MIN_DAMPING (0.0f) -#define AL_ECHO_MAX_DAMPING (0.99f) -#define AL_ECHO_DEFAULT_DAMPING (0.5f) - -#define AL_ECHO_MIN_FEEDBACK (0.0f) -#define AL_ECHO_MAX_FEEDBACK (1.0f) -#define AL_ECHO_DEFAULT_FEEDBACK (0.5f) - -#define AL_ECHO_MIN_SPREAD (-1.0f) -#define AL_ECHO_MAX_SPREAD (1.0f) -#define AL_ECHO_DEFAULT_SPREAD (-1.0f) - -/* Flanger effect */ -#define AL_FLANGER_WAVEFORM_SINUSOID (0) -#define AL_FLANGER_WAVEFORM_TRIANGLE (1) - -#define AL_FLANGER_MIN_WAVEFORM (0) -#define AL_FLANGER_MAX_WAVEFORM (1) -#define AL_FLANGER_DEFAULT_WAVEFORM (1) - -#define AL_FLANGER_MIN_PHASE (-180) -#define AL_FLANGER_MAX_PHASE (180) -#define AL_FLANGER_DEFAULT_PHASE (0) - -#define AL_FLANGER_MIN_RATE (0.0f) -#define AL_FLANGER_MAX_RATE (10.0f) -#define AL_FLANGER_DEFAULT_RATE (0.27f) - -#define AL_FLANGER_MIN_DEPTH (0.0f) -#define AL_FLANGER_MAX_DEPTH (1.0f) -#define AL_FLANGER_DEFAULT_DEPTH (1.0f) - -#define AL_FLANGER_MIN_FEEDBACK (-1.0f) -#define AL_FLANGER_MAX_FEEDBACK (1.0f) -#define AL_FLANGER_DEFAULT_FEEDBACK (-0.5f) - -#define AL_FLANGER_MIN_DELAY (0.0f) -#define AL_FLANGER_MAX_DELAY (0.004f) -#define AL_FLANGER_DEFAULT_DELAY (0.002f) - -/* Frequency shifter effect */ -#define AL_FREQUENCY_SHIFTER_MIN_FREQUENCY (0.0f) -#define AL_FREQUENCY_SHIFTER_MAX_FREQUENCY (24000.0f) -#define AL_FREQUENCY_SHIFTER_DEFAULT_FREQUENCY (0.0f) - -#define AL_FREQUENCY_SHIFTER_MIN_LEFT_DIRECTION (0) -#define AL_FREQUENCY_SHIFTER_MAX_LEFT_DIRECTION (2) -#define AL_FREQUENCY_SHIFTER_DEFAULT_LEFT_DIRECTION (0) - -#define AL_FREQUENCY_SHIFTER_DIRECTION_DOWN (0) -#define AL_FREQUENCY_SHIFTER_DIRECTION_UP (1) -#define AL_FREQUENCY_SHIFTER_DIRECTION_OFF (2) - -#define AL_FREQUENCY_SHIFTER_MIN_RIGHT_DIRECTION (0) -#define AL_FREQUENCY_SHIFTER_MAX_RIGHT_DIRECTION (2) -#define AL_FREQUENCY_SHIFTER_DEFAULT_RIGHT_DIRECTION (0) - -/* Vocal morpher effect */ -#define AL_VOCAL_MORPHER_MIN_PHONEMEA (0) -#define AL_VOCAL_MORPHER_MAX_PHONEMEA (29) -#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA (0) - -#define AL_VOCAL_MORPHER_MIN_PHONEMEA_COARSE_TUNING (-24) -#define AL_VOCAL_MORPHER_MAX_PHONEMEA_COARSE_TUNING (24) -#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA_COARSE_TUNING (0) - -#define AL_VOCAL_MORPHER_MIN_PHONEMEB (0) -#define AL_VOCAL_MORPHER_MAX_PHONEMEB (29) -#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB (10) - -#define AL_VOCAL_MORPHER_MIN_PHONEMEB_COARSE_TUNING (-24) -#define AL_VOCAL_MORPHER_MAX_PHONEMEB_COARSE_TUNING (24) -#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB_COARSE_TUNING (0) - -#define AL_VOCAL_MORPHER_PHONEME_A (0) -#define AL_VOCAL_MORPHER_PHONEME_E (1) -#define AL_VOCAL_MORPHER_PHONEME_I (2) -#define AL_VOCAL_MORPHER_PHONEME_O (3) -#define AL_VOCAL_MORPHER_PHONEME_U (4) -#define AL_VOCAL_MORPHER_PHONEME_AA (5) -#define AL_VOCAL_MORPHER_PHONEME_AE (6) -#define AL_VOCAL_MORPHER_PHONEME_AH (7) -#define AL_VOCAL_MORPHER_PHONEME_AO (8) -#define AL_VOCAL_MORPHER_PHONEME_EH (9) -#define AL_VOCAL_MORPHER_PHONEME_ER (10) -#define AL_VOCAL_MORPHER_PHONEME_IH (11) -#define AL_VOCAL_MORPHER_PHONEME_IY (12) -#define AL_VOCAL_MORPHER_PHONEME_UH (13) -#define AL_VOCAL_MORPHER_PHONEME_UW (14) -#define AL_VOCAL_MORPHER_PHONEME_B (15) -#define AL_VOCAL_MORPHER_PHONEME_D (16) -#define AL_VOCAL_MORPHER_PHONEME_F (17) -#define AL_VOCAL_MORPHER_PHONEME_G (18) -#define AL_VOCAL_MORPHER_PHONEME_J (19) -#define AL_VOCAL_MORPHER_PHONEME_K (20) -#define AL_VOCAL_MORPHER_PHONEME_L (21) -#define AL_VOCAL_MORPHER_PHONEME_M (22) -#define AL_VOCAL_MORPHER_PHONEME_N (23) -#define AL_VOCAL_MORPHER_PHONEME_P (24) -#define AL_VOCAL_MORPHER_PHONEME_R (25) -#define AL_VOCAL_MORPHER_PHONEME_S (26) -#define AL_VOCAL_MORPHER_PHONEME_T (27) -#define AL_VOCAL_MORPHER_PHONEME_V (28) -#define AL_VOCAL_MORPHER_PHONEME_Z (29) - -#define AL_VOCAL_MORPHER_WAVEFORM_SINUSOID (0) -#define AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE (1) -#define AL_VOCAL_MORPHER_WAVEFORM_SAWTOOTH (2) - -#define AL_VOCAL_MORPHER_MIN_WAVEFORM (0) -#define AL_VOCAL_MORPHER_MAX_WAVEFORM (2) -#define AL_VOCAL_MORPHER_DEFAULT_WAVEFORM (0) - -#define AL_VOCAL_MORPHER_MIN_RATE (0.0f) -#define AL_VOCAL_MORPHER_MAX_RATE (10.0f) -#define AL_VOCAL_MORPHER_DEFAULT_RATE (1.41f) - -/* Pitch shifter effect */ -#define AL_PITCH_SHIFTER_MIN_COARSE_TUNE (-12) -#define AL_PITCH_SHIFTER_MAX_COARSE_TUNE (12) -#define AL_PITCH_SHIFTER_DEFAULT_COARSE_TUNE (12) - -#define AL_PITCH_SHIFTER_MIN_FINE_TUNE (-50) -#define AL_PITCH_SHIFTER_MAX_FINE_TUNE (50) -#define AL_PITCH_SHIFTER_DEFAULT_FINE_TUNE (0) - -/* Ring modulator effect */ -#define AL_RING_MODULATOR_MIN_FREQUENCY (0.0f) -#define AL_RING_MODULATOR_MAX_FREQUENCY (8000.0f) -#define AL_RING_MODULATOR_DEFAULT_FREQUENCY (440.0f) - -#define AL_RING_MODULATOR_MIN_HIGHPASS_CUTOFF (0.0f) -#define AL_RING_MODULATOR_MAX_HIGHPASS_CUTOFF (24000.0f) -#define AL_RING_MODULATOR_DEFAULT_HIGHPASS_CUTOFF (800.0f) - -#define AL_RING_MODULATOR_SINUSOID (0) -#define AL_RING_MODULATOR_SAWTOOTH (1) -#define AL_RING_MODULATOR_SQUARE (2) - -#define AL_RING_MODULATOR_MIN_WAVEFORM (0) -#define AL_RING_MODULATOR_MAX_WAVEFORM (2) -#define AL_RING_MODULATOR_DEFAULT_WAVEFORM (0) - -/* Autowah effect */ -#define AL_AUTOWAH_MIN_ATTACK_TIME (0.0001f) -#define AL_AUTOWAH_MAX_ATTACK_TIME (1.0f) -#define AL_AUTOWAH_DEFAULT_ATTACK_TIME (0.06f) - -#define AL_AUTOWAH_MIN_RELEASE_TIME (0.0001f) -#define AL_AUTOWAH_MAX_RELEASE_TIME (1.0f) -#define AL_AUTOWAH_DEFAULT_RELEASE_TIME (0.06f) - -#define AL_AUTOWAH_MIN_RESONANCE (2.0f) -#define AL_AUTOWAH_MAX_RESONANCE (1000.0f) -#define AL_AUTOWAH_DEFAULT_RESONANCE (1000.0f) - -#define AL_AUTOWAH_MIN_PEAK_GAIN (0.00003f) -#define AL_AUTOWAH_MAX_PEAK_GAIN (31621.0f) -#define AL_AUTOWAH_DEFAULT_PEAK_GAIN (11.22f) - -/* Compressor effect */ -#define AL_COMPRESSOR_MIN_ONOFF (0) -#define AL_COMPRESSOR_MAX_ONOFF (1) -#define AL_COMPRESSOR_DEFAULT_ONOFF (1) - -/* Equalizer effect */ -#define AL_EQUALIZER_MIN_LOW_GAIN (0.126f) -#define AL_EQUALIZER_MAX_LOW_GAIN (7.943f) -#define AL_EQUALIZER_DEFAULT_LOW_GAIN (1.0f) - -#define AL_EQUALIZER_MIN_LOW_CUTOFF (50.0f) -#define AL_EQUALIZER_MAX_LOW_CUTOFF (800.0f) -#define AL_EQUALIZER_DEFAULT_LOW_CUTOFF (200.0f) - -#define AL_EQUALIZER_MIN_MID1_GAIN (0.126f) -#define AL_EQUALIZER_MAX_MID1_GAIN (7.943f) -#define AL_EQUALIZER_DEFAULT_MID1_GAIN (1.0f) - -#define AL_EQUALIZER_MIN_MID1_CENTER (200.0f) -#define AL_EQUALIZER_MAX_MID1_CENTER (3000.0f) -#define AL_EQUALIZER_DEFAULT_MID1_CENTER (500.0f) - -#define AL_EQUALIZER_MIN_MID1_WIDTH (0.01f) -#define AL_EQUALIZER_MAX_MID1_WIDTH (1.0f) -#define AL_EQUALIZER_DEFAULT_MID1_WIDTH (1.0f) - -#define AL_EQUALIZER_MIN_MID2_GAIN (0.126f) -#define AL_EQUALIZER_MAX_MID2_GAIN (7.943f) -#define AL_EQUALIZER_DEFAULT_MID2_GAIN (1.0f) - -#define AL_EQUALIZER_MIN_MID2_CENTER (1000.0f) -#define AL_EQUALIZER_MAX_MID2_CENTER (8000.0f) -#define AL_EQUALIZER_DEFAULT_MID2_CENTER (3000.0f) - -#define AL_EQUALIZER_MIN_MID2_WIDTH (0.01f) -#define AL_EQUALIZER_MAX_MID2_WIDTH (1.0f) -#define AL_EQUALIZER_DEFAULT_MID2_WIDTH (1.0f) - -#define AL_EQUALIZER_MIN_HIGH_GAIN (0.126f) -#define AL_EQUALIZER_MAX_HIGH_GAIN (7.943f) -#define AL_EQUALIZER_DEFAULT_HIGH_GAIN (1.0f) - -#define AL_EQUALIZER_MIN_HIGH_CUTOFF (4000.0f) -#define AL_EQUALIZER_MAX_HIGH_CUTOFF (16000.0f) -#define AL_EQUALIZER_DEFAULT_HIGH_CUTOFF (6000.0f) - - -/* Source parameter value ranges and defaults. */ -#define AL_MIN_AIR_ABSORPTION_FACTOR (0.0f) -#define AL_MAX_AIR_ABSORPTION_FACTOR (10.0f) -#define AL_DEFAULT_AIR_ABSORPTION_FACTOR (0.0f) - -#define AL_MIN_ROOM_ROLLOFF_FACTOR (0.0f) -#define AL_MAX_ROOM_ROLLOFF_FACTOR (10.0f) -#define AL_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f) - -#define AL_MIN_CONE_OUTER_GAINHF (0.0f) -#define AL_MAX_CONE_OUTER_GAINHF (1.0f) -#define AL_DEFAULT_CONE_OUTER_GAINHF (1.0f) - -#define AL_MIN_DIRECT_FILTER_GAINHF_AUTO AL_FALSE -#define AL_MAX_DIRECT_FILTER_GAINHF_AUTO AL_TRUE -#define AL_DEFAULT_DIRECT_FILTER_GAINHF_AUTO AL_TRUE - -#define AL_MIN_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_FALSE -#define AL_MAX_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE -#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE - -#define AL_MIN_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_FALSE -#define AL_MAX_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE -#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE - - -/* Listener parameter value ranges and defaults. */ -#define AL_MIN_METERS_PER_UNIT FLT_MIN -#define AL_MAX_METERS_PER_UNIT FLT_MAX -#define AL_DEFAULT_METERS_PER_UNIT (1.0f) - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* AL_EFX_H */ diff --git a/external/openal-soft-1.16.0-bin/libs/Win32/OpenAL32.def b/external/openal-soft-1.16.0-bin/libs/Win32/OpenAL32.def deleted file mode 100644 index 6cd7ffa..0000000 --- a/external/openal-soft-1.16.0-bin/libs/Win32/OpenAL32.def +++ /dev/null @@ -1,187 +0,0 @@ -EXPORTS - alAuxiliaryEffectSlotf - alAuxiliaryEffectSlotfv - alAuxiliaryEffectSloti - alAuxiliaryEffectSlotiv - alBuffer3f - alBuffer3i - alBufferData - alBufferSamplesSOFT - alBufferSubDataSOFT - alBufferSubSamplesSOFT - alBufferf - alBufferfv - alBufferi - alBufferiv - alDeferUpdatesSOFT - alDeleteAuxiliaryEffectSlots - alDeleteBuffers - alDeleteEffects - alDeleteFilters - alDeleteFontsoundsSOFT - alDeletePresetsSOFT - alDeleteSoundfontsSOFT - alDeleteSources - alDisable - alDistanceModel - alDopplerFactor - alDopplerVelocity - alEffectf - alEffectfv - alEffecti - alEffectiv - alEnable - alFilterf - alFilterfv - alFilteri - alFilteriv - alFontsound2iSOFT - alFontsoundModulatoriSOFT - alFontsoundiSOFT - alFontsoundivSOFT - alGenAuxiliaryEffectSlots - alGenBuffers - alGenEffects - alGenFilters - alGenFontsoundsSOFT - alGenPresetsSOFT - alGenSoundfontsSOFT - alGenSources - alGetAuxiliaryEffectSlotf - alGetAuxiliaryEffectSlotfv - alGetAuxiliaryEffectSloti - alGetAuxiliaryEffectSlotiv - alGetBoolean - alGetBooleanv - alGetBuffer3f - alGetBuffer3i - alGetBufferSamplesSOFT - alGetBufferf - alGetBufferfv - alGetBufferi - alGetBufferiv - alGetDouble - alGetDoublev - alGetEffectf - alGetEffectfv - alGetEffecti - alGetEffectiv - alGetEnumValue - alGetError - alGetFilterf - alGetFilterfv - alGetFilteri - alGetFilteriv - alGetFloat - alGetFloatv - alGetFontsoundModulatorivSOFT - alGetFontsoundivSOFT - alGetInteger - alGetInteger64SOFT - alGetInteger64vSOFT - alGetIntegerv - alGetListener3f - alGetListener3i - alGetListenerf - alGetListenerfv - alGetListeneri - alGetListeneriv - alGetPresetivSOFT - alGetProcAddress - alGetSoundfontivSOFT - alGetSource3dSOFT - alGetSource3f - alGetSource3i - alGetSource3i64SOFT - alGetSourcedSOFT - alGetSourcedvSOFT - alGetSourcef - alGetSourcefv - alGetSourcei - alGetSourcei64SOFT - alGetSourcei64vSOFT - alGetSourceiv - alGetString - alIsAuxiliaryEffectSlot - alIsBuffer - alIsBufferFormatSupportedSOFT - alIsEffect - alIsEnabled - alIsExtensionPresent - alIsFilter - alIsFontsoundSOFT - alIsPresetSOFT - alIsSoundfontSOFT - alIsSource - alListener3f - alListener3i - alListenerf - alListenerfv - alListeneri - alListeneriv - alLoadSoundfontSOFT - alMidiEventSOFT - alMidiGainSOFT - alMidiPauseSOFT - alMidiPlaySOFT - alMidiResetSOFT - alMidiSoundfontSOFT - alMidiSoundfontvSOFT - alMidiStopSOFT - alMidiSysExSOFT - alPresetFontsoundsSOFT - alPresetiSOFT - alPresetivSOFT - alProcessUpdatesSOFT - alSoundfontPresetsSOFT - alSource3dSOFT - alSource3f - alSource3i - alSource3i64SOFT - alSourcePause - alSourcePausev - alSourcePlay - alSourcePlayv - alSourceQueueBuffers - alSourceRewind - alSourceRewindv - alSourceStop - alSourceStopv - alSourceUnqueueBuffers - alSourcedSOFT - alSourcedvSOFT - alSourcef - alSourcefv - alSourcei - alSourcei64SOFT - alSourcei64vSOFT - alSourceiv - alSpeedOfSound - alcCaptureCloseDevice - alcCaptureOpenDevice - alcCaptureSamples - alcCaptureStart - alcCaptureStop - alcCloseDevice - alcCreateContext - alcDestroyContext - alcDevicePauseSOFT - alcDeviceResumeSOFT - alcGetContextsDevice - alcGetCurrentContext - alcGetEnumValue - alcGetError - alcGetInteger64vSOFT - alcGetIntegerv - alcGetProcAddress - alcGetString - alcGetThreadContext - alcIsExtensionPresent - alcIsRenderFormatSupportedSOFT - alcLoopbackOpenDeviceSOFT - alcMakeContextCurrent - alcOpenDevice - alcProcessContext - alcRenderSamplesSOFT - alcSetThreadContext - alcSuspendContext diff --git a/external/openal-soft-1.16.0-bin/libs/Win32/OpenAL32.lib b/external/openal-soft-1.16.0-bin/libs/Win32/OpenAL32.lib deleted file mode 100644 index bc547551fd401958ea6fc2bcee210a856c0a1d4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137926 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%0D}@uH_4MrX^5TC)MP7fsHnnm@pe zXXR0W$>;nHkjicOpRx(t6RqF+ZV&I&J?SvuV}u$Zd8#pl+X) zE_Uc+t)zsPWyh;>+X}(0;r{1Jk6TUYvZ!D_u<<4?h%@H(EBig~goJLTEb0_A0DiT7q0|yejt#Y?-Hh zh{(nF<=)xt!W*z*1bUOH<@XENMYf4`^$A+Jv8!A!*fLt*TGDF0Ew{iJw-j(?-Ai&Zpvh7?Qb%IrPL@S)%npb2o zG1oe*KIpNEH$jtqE4DXrGZBJYNg+Sm;tu$x2!V#u860416Qr_ZS>fn_OzP#4`hZI+ zjNfQBsr9`o6glQqr8>bXHn$AVeRL}urjM##_C%*Ct=R7+W1OWntgUxnjVa{S7)sIVvekQz52VU{29 z)miRy7%gYSHQT51$6F~Z%VI}}HAx9>xzVdUM=u`Io$1RO(Z8o?3If9y7HHOs; z7VuLN)N-R(d5&O`+B!9YdmL(;O)GznpkmVLxH7r~q1?DtUZpijXr1va$B9tA(DQ7K zXYq?|R|vwi1i9QOR$gZ?N$wn^a%-~x)FbzvVRzc^Oos64Rr!=`a^EX+ok57cYD)d$ zM^O%q5=?XBU3nF(B-3@)8GN&1x+!gmQ3Jb3AwTt-vCzjNj81K~)FkNS#OAR>IE>Dg7j=gNC`6N9bcGwQ$}OcN zp>@z&T)QG#Y7+jF8<)ysRg-kq8LRq6Mdx68?qsJwEt*a! ze+Ix2U1Wz+OPe5-8=uN;`Xs4!p7eJqQsujzW~NO~uki5N^p-NgC^r(7YolAn=$#Iu z&3@MN+w=-Yr%i8k2}0R%rEt_=US-vc`m5tb57~syOq-r)^xE{6GQlW2wiM3w%Zy$g zqi=8+oh>iww&@k3={7w(zLW{Y2mMyWm+l}!4-cpCVqgf*H@QvEf6kZ1wcATZm++zN z=u$YdKl@PQL+kW9{S%u|puWk3^2d)5jZQ^Ws}g+X*ix(o^t{HF4icaA9?_X;&FkXY zF4R(1GrBj&maaIX|JY%)**=v2lvg-9PSofUgtB8xxiya{Z$&-ycAL7U2O}6IuawAL2p%=|>O*d_&I&V$iZxg!OIk(X- z##h6v(wpTyY>#WcU1{*EE$)R+S`CfJw2K~AP~Fsok7dW5LV|N^-w<49xR6O87_lk@~$9rSr^@vk_H&dNI|6ppcqz$WYV>}5xuvL8j5J(e%4 zuDVw-IvnFpBQ^)SQT`%24g@W(P7^D*nV z!r1M#?e>GsByJZx>E9W*(_Zw|kntg9QyxQz_{vgCMChH<3%!1?GrCAo?A88o0v-LZ zHMw>=rwVW8ir%F(_|+CC;gi}_@#5Pqw#p(wGdEJTH;km_-T~9L!j>_Y=EZ878%^?S z5Lnm@$%o|s^wAa%z#r8lJB~O8a936}C8Pt`x^3ANTmmCjP zhttto(eU@MvBwzb;#z*!(j^GxM#u7d*<&Q@dc#gg<<@`qXhP|wj%8@9$@K;HI>AV# zU2G3nHz~m_HztJzkbqhs02%5z`UI;-PlZzEduB961=WxZnC&<05fZrKsDJQD`Nt>U)M$b%nN+{#tP zW~Tm1Ypsm!euIJ0B?!&&vY5wwURzkV5}_1?m>ELL;@Ym%=n{l-<7Ih-Y>Z^x!m8s# ze~1XBp&~OwXjxpFP@_u_nqy!w@&X_Fgo@TyJ>~24w!V%Cjr1svXQQ`u5G}fmZiPWL z$4lH8*kU*`A-_e~#B%HO3H%^%tQ!wcVaaPy<#+4wdW*v=%}JPnJ}iT!`lxgD>u@WR~Sz6T4$}7 z*CMawYaSriCf5+K-vl=k<=RCG`KjNqbrm>2y@{KlIZ zk4JAzz;DB5!fVRWtm?hN1gF#_=;TJNve(3mP#IUP<2C0DowMULt?{c0%;b30C2p*0 zKAa7cpXSDE*5UFsz~zxa2bR5Tc0CiH6u23Wi8I{Ftt}SePk5TEqUu_v{y*U@x$&vo z0+Oejs-)rEmO9V!S0k0>ivb{4d@5e$&vIQ{!)AE`QZ1lGZqzA1%ae50@tLnObT*ny zW(!D>X<9%=QSCJsxzVNUHIrP{@tQYlE@!3%L@3%VAWM^=lN(LSUNcE&9k2O)hR)gX znpO))fthRpE#~M@jJKdaa}@9Q)cu(^KrY<=%vS=Jhld-mNZ{yX(I2k$CKnscCo?+a z7g<+3!-Rw%9P8 zew6E{NmlFBPj4hvWmjmE8D+NW;kJ}Twdquf1ee^%QTCxpF6;QvoycX;FD8XvRAMH4 zs8eJ^si#h`%8e%FmDiK3)>(P|6*jB(VhRm^?&GLg+)Q*Sy7IcdP3@wG=(?#1g1M2W zJa1oKovO&wPDtgpu5Qo-+p8-yyVlBF9fjz%i|wK7CRKC0z>P^|&zt17j_3Uz&8;4` zUM@M&=-NUp&+8T4!#7Ax5X_BU<$7+C;5zl(>kYx>;uDP~m)ox;E3`B`%36SeoUu_S zSmnmDGOJt0>dQ5&6xD%A{8g+tIc6=+x3lP?-8f_iF`ZCRGxf;U^v04_{ zW7Vh=ta4*pE8%F={H6gD+nNK8xvj73G^^3&7aHwjci{~Uo9RP1N(%Ye77xQW#<^sD zAXCpvs`V(F% ziC!;84{pGVKdz4V5ZXk0g{=f#CgzjlX^gP)pCq z=D*>EIRjM}S5s_F6+{qiY1rNUh?~jK4OD1ee_CSN57oF6)fH z{zsb2nHhggDB9z%Elq+>Ze%Na%_N<5yygx==j?b*Yy7nWGdccxK1Z%%yag?!&DNr< z6S;b^=5lp<#(pU|{E{Y*!(v9R2urW%UL7<@t@f<*+{jfPGY}*FvfB7BvI#y6ulJ;d z{TfX#bIgFIR~I`(*Gfuo%Z*}XZnuov?S|XVIhg-a4j5>%*R98`RcxPICn>=#H=>o- zS5IbK=UUzL@hG={iMQz0xA7xRglrbiuQkF#$V_6oJsw5SQl6+r({eBFm z{mY)dr|O%>*Wc+m-N}HPhTYYm;Yf5A2g|3i{n!FQCykB}^0%o-@wZ6vpUku^}>u#TkjI@Unx!u~>8`Dc>B`K*DmdJoB+ z;4{jbL5Fe|=uz$l9m-o_f1$j62gy6{Vhxmce}?3}|IQjH_rkWI-1iz1IQAMS4}6p4 z{pYa;$_HV4Q9kq#2^@b7l#gCX@*w;lC~)j?`NU4vK=~x-P(B6w80Dc!l260`i}LUj zB%cL63LJl2z5xFp%9p-Q^2p_^f$}KqTa**uCix2dXDDBVeT?!o_$`!g{Fvlh*Rux7 zV-KSox?!d2UcG;2`p{CRbEw^I9jVx%Lw8iIC98xTYIPPDRtI3bbWN{2td0%AtbJtV zP^bWHtKm&|^r4!7wO0i8H$uf#f1!0`rBe+SZrF2^QGK8c);Q4bEmnhpU%y)bw&>)p z>S%iros(N_D#7Nu)*CBP*)^;Ee$_QS3>CsU`+L2W+ggin)Kxi~9y5S-_YKIeJ-z;s z)^K5UWu@02R!dF=BdvHXyN?a4?x5Z49_UvCd#m>i{6bh~ulEP2ec~69{lc){?%rXFKE&M#8-2U@Fx zu(?sftp~$?@3_DDyDGZ?Y_EZ1bSSwucAcX~%T8}ldHz{iv}&ykSNqk%u(x8?W@=5V zR^L3z)XH3K*il#rR45Cytv(cebF)mZVY#4=1hFkvVXL#SQdLVgEHCs{yGy!$TMJgb z)&64DHu%;WRjSyPKPhaK-mtV8QHG>ecE$$L24K`C<7IDKP@_uSHJ5eSl5_M?eNroH zaKe@_vbXQ%?weMt)oSPJ@^aNTf&>}6rLtxu$=i6LG;LfLh(Kv^V|8b{yX4iQ)V7^l z7n$jO@~RPj*k!Wb1D)1!@7IOWv~hnKP4w^b!`!b1!vbhkJ^0t!8anMha1khNbwvAq^U4xLE@z!k8Lj~> zYMflVIZ)_K2PAoS=!fI%1BR>P13*Gp!X?e$$1uS?v}o_O{wxzc#I<+IAm> zevWTus9T-=z1ET<$hHj>fqi=b{iv#MMr~7PSZL&x0WvSYn6cK>85VvG{HT%Ec!bHL z%GBu^%;Qd3@H+MlD4yyXw5HYJpXsQw_lZ}4wnV#YXll_)@$MQr1>CmX8CFIY4b~PK zEcJVoE5=)rv&y8(h75 ztleq1`p4;K7dky_V}ix44s;r2=UVOnLq+9Y7XvMn(zH<>3bQVAI)PEz_bN(Gu&3{#&gc?7pm8Ok4czjD$WZQekl{$?z z$P_xuYo+7$skj>8!Yi}axURRf+G!1Y(9C%oqgM5dsE$srH8eV(u$T7;l`gloniq@z ziNd@?kXBL+yeTl+KKu!(Gb|i($OM(9jlCtj78y~TGy(jI$`asboeePlSVPNyh2pv6 zk5-yC)|Lnpv90vY@kc9-TI{1hn21_-^;V$~wEr5V<8{zCYeS@pms6AFc%zl3ja7*- z5!*rE9B;JJsKxe1m{_$0GlB5$kgZi})ayh6GFCA_d=33LowZ>7yvG*e~0AE3`8Ga+f+E#(DkTO6#z8{6_7W zbJ`Rr;`Y=O`No!>TdL6I8@okh&*Oo;trSK;$1Ugxvn`a4TM$jQh0<}0z|OMG!v?L6 z+GaOOdj+Pg9niI@Y+IB@$M?u8u7U9@)9uJQvH)x;WE+Q&)~Hg=vna&>zQni+Q01I=emUi@~7)Kr1DYdjy2d=%vN-gce zN36Y4*amBWyk{_L<(ITN^wTD{TBAz!zbp!oKKf{Kt2L_BU6UV0WVf(-o7KKb@4}_B zMp$cCYuK`*gIYxwDSJxY2kp%wX^%Cy8%;WCVK)Bs!_@MN&&HvuHLXtI-!gZ4q&U2u z-oDUk_}>Kd<{uR)4zD-z*Ou8*v)P>5vUyWa4E-@j{7gaF>KKLWWpY&Q=@d_g{*6rc55^TgAa;^Ww^GysoBI@ zpMDxOxS%yIs3k_8%fC}OX_`WVZxd`6yh7}B9aOz4zrY{ALNv`K(6mJin8avEG@&EU zMALe73l@AEMblY^-6)za2-|ryT^6=eG+~shOVbxQP3|BO`nU2R>UsDVz=FgPQEG>A z&9(5#iE^DZnDUEaRL$0>YSxcYrBL++q{<)4#s8l?s5&30!9`Q04lmG7uvfq9+*YX`FZK|yCv|q%PK9!`!=BWIVLNqjo(VQ}+rG~sO~yE}d`Nl@c!`US zPM4E{zfQ1i@Q%^Ra86TXDPsgp)h9^aJi^Z<%j!M-6%rH}FPsla&llWilD1eR?H42k zoYX`G3u9!}Kg*t*GtaV#tXVkzpD8w-Zp4UDvFTjHZdAW~GHmC?rYpjBDmGmJ`?79q z`Ye(a8Bv}OT^D(D?GPG#n_xG=E5@maqnfa&L4>l+TkFTK&En=aBYtgzfAX0qGh3`t zlto%BuLZ9C!mY$McBm$J_wWutC8fV%Rb4L!$2$1?1t%VmPW4RoBg zQ4VY5Mq96r`yEK zWP=Fr6YMI{CIT|+UL~wezu52IyT9i z0>viGjf&Xh+*p9&N~&V?B;?em{l0c7t=peUdeprcIT3V@M-YyKlFJ0!0Usqn%0Vj_ z8F!xq=4PQ>Ktc|^;P&lPf+S}ekMV5Z949TLys}7ynor1@7tGb4NUrS3UdEIw+ew=% zw=Bk0LRP%s+~p^cD{oGqoLaxSxl7MUja8s1Mpa5i-0x47k`e!7O_iR419~C(e%G!V=S%Z#??;c zAHsLX{1Io#n7$Bf^NCD#bK}-bg(@uB+89R(x$%Opv3!hkWK3l_o*Wqt8WG9T#yCpI zg%_O7{6mW)oa;2FcvLr=X;0>=1Cj)Zrhbi)l#mxMxX=BdNfO;PpHa(Jx6ds}5)S%7 zNfpFsTFZ^|?vZ*4_mlp>pvkx)BqO5gUi%e98BTgoS!EHf=2CLw{)qBYvP~Z~xH9{r z`Sii-j_eIh8t%4y<{pTS?43)a{>ah?t~b?@T*kR~akX!I2X#hUXr30gvZX8ACg2tl(cS!#d8Q7NP)erS=cknH;%_T{8wpY``M01N*m)SAxmBGU6a41IIKUcAWO$Hxfk-GL1kEJmwF@4f_Unou^+@}SC`uZirW|y-M20@bQc4cH+;Ot+HCW24 zMN1kVVm?WfS~ISRv6GU$E|;D6Xm*yznH_JC2tHdrcI9IxC39VFzVY3f9lF>(zP;%g zc{RU%WaW^$QmeGF7?hB=p7rxWrCj5G7jZ-nE;k=Xo)u5^ukrhinmwaXX^gM6d^WaO zdI_KPzZ3Wp59Bi+^qx_FyJkK+;G`leSQg_dA)j6FD9LwluBt&bY#$Z3g=EB3&FgIx zkA;HCa*NcS3`(m@*}t&MS%kn=8hjMA@3jE?_U*E-H2z+*%6h{ zf6@+GG@0rcNeQ{~f^$xH36gL)m;h<~a!weVl!F#XhBn4gLQcHkGrG4(j&L;3I7cM& zQ4-?f9mh-g9nD@&uVumYl@eLDJq83_}-H{ zk*fA!Saqv@8}1y)C(~5(-V?()jgfXZ+E1EF$b3)vneS4r@*Xw$f! zQwjO&f}_vCpa*Wc7~kk)-eV&18FiP*R6^FeV1D{0KX9MP*tTB$t`d=ERQ!y%(_|_k zTV3!B$ZrCE_6_K!FU&;d!%xjS+>~?b%*)Wkdd>;?>4Klewj$XvazXjLr-_E3j_uWseFMWm10_ov<0vIZ-JGQ5@P_@3lQFQfQaI{z zj?^$^j?x%LCEGy*CAT0(Q%Y{S+`G7s5KZmQuCWSzfLdAr|EnjcT`OyU95d9;u13laQ^R_eWcA zfhU=rhC7q3Yit@;$M}xr-x*sE?~j9+PemK`l(ooH(Y&Xu;gj8Pp||FVP3@)Du(ffP zw6G=c0iUwADQq_{?Iz*Flk$st506M|b9Q#F!rtuf>GhAah6}4JE4}`(qFFrh=^b4n zJk`&QxK{a&$HXo04Q3p@&0;F22vu{Gt!7D|$yvG>KPfqHzojcB z=iM^-fl=LlpB)Ybq+vq{aZ3AyirN4p&| z`4LYs&nF7i9POrfQIBaCLvH6~tP!guHga<8fcBXrkM837#0k4uf1<)qV5a>^oHZAr*&7kn=F8sZ9{ z19SD#QokAua_W26KbJEdGfdgiLqAcLrSVP(|aGa-ypKodJp}F-A#WlyggB zOeJKz3%)bpI*X~CSgL<#fFQ=oDQR7dpM)HD!B=(n6F+L&vvIzv>pE#Rb$(fltAvbq z!E>Fw(&6g5-qLEPHSED7N_dNq&zapNm>PpcXTO7UoxpVz#gOZ45H#N?MqEN}yx`dc zULlC<^jgEb^5XSp6WBw}Sv*NqjGlyic)>Gy?=$GZqdlMaRCA^rj8BM))r*pv7&{3$ z@PhMA*9vy{yq_>iARl(>&qP7foPu*!?2#VFp25}JoRIr2_$+R(MNm%Br~X--ASeV7 z=wcCQE#r-?kzT_03hXiYfve-=8-bh=0R+{k@c^3>GTsG8pxqWh;~atP%WeXocm$eH z$ZZ$gf8Is>?C$q_eT-K5M4pV>BV*I4!pv%4Me}~D>n4X6bE6#bCp^Oofl85$3_?I%z)-PKGjdKLD&%*>jBhJH8 za?$1Tvz_?a)mw$f+rVY8e9pt_w_wsavlp#(vG|jci7xl)NWWzAlht{A{i~?Niq!#9 zsu(?Md1yQ<*Go7Ly^ZLhXL5|`8JKd;3_pf4M$lRwTGNA{!UVnCB4|9@F9C}cfV3{c z&s<6#y4*9ct4w~z^bCwxan8UDWsIPNY;?gnpsf}`;~atPGcW;A{0wX^Aqze0N1#%k zo3+K{XQ6durBe;^yVK(W(OBzIuU8q(_XN8hzR{cy#Et2w-!ZaFWAP~^NA2@fN``2& z$rs#roX;74{n2K`lyk4Op^Oooq`TAsR244SnF8q;1j!D651D_xAAggo`UKeury&(fYD zegcnWg|s6q`Sgk=#o?lR+B<~?-zL~Wc%`0p*jY0?#Vlg1C1kbd{A(hmoY76kS<8sC ziv(4gvmHW%Zxie$c#U&r1+frjBk~3bneT!l+EkP>$n^1lh@#pl_=T+pIhB7}=X}~U ztd0$N31j%M)RUNa=IUltVq8?3In*EzN;8WZtWjy^QFAia>{zZ^!%aN#y zp5bMjvMxQuI;&aTYmY@y&KbQhLl=uu37PbQXW`nU_@M_b$TT{(DJVbxEn)3hxR4ps zNe3spC`MI6{=DGlO}vz-qM7mqQuz>du86q07aw_cVApie#L3pjSW3vG7aXCkB$m{~ zFXJ4c94AeryrLLYDcSXM$MC*HP{n6g7}I_e-FG`M(+XX!i}ACTTNmM9yoLMSR}eom zq<&2Kk8hIhDaUW|z7_ zM@_II1~JMK^5q3T>+MBAnd*3EH>+gLXT7-&DysZ~2u(8y8S#R%0+(4d(Rj_V%L-^{ z>{+=zeT=1qym!G@S1vVK($l&1#4$5B60c?L1cQnKUz2$)iy1-H?pY`UEp zU8(J#aL}hp6~t&t$ch&{f7c~Qlbp^II{EpueKqIrQqF0Fq`T4CCub6};7vbYxe)-}vg8K}bX8;^rLgffBfTLp78<%L3nZxd`9UZI^5j;Y>_ z`W|bg5^~uE_lqw?X5@sDe1GRM_NZnnrJU2`NO$A?;)D!!!L8H_G&|$hN(pXszgR0G z5obCf6J2n`xj<1fru||9#q1Xwnix9?ndgEd&hs@p;~H^{ezCwN-Y=eB%OqnTQ7_^A z&G|shuHFhvRMJ0Kb$W~K;qi>k`k?H0^0E!V@0> zzkIUE=ZJ$vX9cg+hY$F%1HQr8mVib$=(42LF_IGU$_0~j9+K1^3|rmB3N9X29oYBd zN0Q~BCdpC9NJ_{x7u+v;E|J7jKlu<;^9ltVBHS^P9ifO(laOUDIR2cA)Kr~nSgBhW z$1wg_4r+!Rb&RBh%yYqW0-j@%WZuk|Rf|@0PC#|Yn2!2j*`+bQ60+0<--mX#;>*0d zFQ?v8%{yg@Ez?N{EW0R1RYLx{;HdQ+MU@)lCvR}fs2xm-T8^U*TwZB}uc?GgcftLu zvov4wR>zFEs+%d`9VxnmZ`|%kflRAoBqij%3nuB=iX_Sj!%b`BN|JQY2~AoZBPk&l zUNA{#Dw5>gfMZLNbkHG5t79Z3Iq^ND;I9+x zb?}Zkao*Aeoplh4*u;2C$d=Fe*IjVBx@Q`Nz1|oNJ!%y8S%w|Xt{oeNeL>jH8-;yY z*iMbYJ`eV6-BH+QaNd@y{>>{(tznMO96)bz(VXGfHn~hNq>gjuIBC%3mBg4z$eR~D z7UdU#DQXXLn^m{w=r`q@V#v_M*h$Eq7ktg-bj?miZC%Z4E`kz0`b{fh)Ffoe3ywIy zpr{$s(QgEbIr`1e#Mnv5f)^ZdHfVOnHR2ef-vl=C(Qi|0S#H^Pr1$XXx6>3g3#+%8 z52}Kd@);{oGs{iTIF34fAFnhLm6{1z?t-t)tvC7F)f%>Fa*>SKs(Ecrv89~!!7_?s zR3&7*3#RH+O_lYC!F(cC8dZjqE>%`hjH-m}cfm9Noua7112w1iujY*H6r;Fv4n{&3 z<0m2KUGUl4$%-F%c4Jokr=)z5`Cv*Sifdx*B;>CPW@nvdXL+32@lN4JJ&&@Pkf)yW z=fW!G30)@vJAsQzJZYUzkLU%6JuLeA$2L;%*9mq2-r@R3*iqG-#foFmDIuF(@L0Hs z2x0iwpF diff --git a/external/openal-soft-1.16.0-bin/libs/Win64/OpenAL32.def b/external/openal-soft-1.16.0-bin/libs/Win64/OpenAL32.def deleted file mode 100644 index 6cd7ffa..0000000 --- a/external/openal-soft-1.16.0-bin/libs/Win64/OpenAL32.def +++ /dev/null @@ -1,187 +0,0 @@ -EXPORTS - alAuxiliaryEffectSlotf - alAuxiliaryEffectSlotfv - alAuxiliaryEffectSloti - alAuxiliaryEffectSlotiv - alBuffer3f - alBuffer3i - alBufferData - alBufferSamplesSOFT - alBufferSubDataSOFT - alBufferSubSamplesSOFT - alBufferf - alBufferfv - alBufferi - alBufferiv - alDeferUpdatesSOFT - alDeleteAuxiliaryEffectSlots - alDeleteBuffers - alDeleteEffects - alDeleteFilters - alDeleteFontsoundsSOFT - alDeletePresetsSOFT - alDeleteSoundfontsSOFT - alDeleteSources - alDisable - alDistanceModel - alDopplerFactor - alDopplerVelocity - alEffectf - alEffectfv - alEffecti - alEffectiv - alEnable - alFilterf - alFilterfv - alFilteri - alFilteriv - alFontsound2iSOFT - alFontsoundModulatoriSOFT - alFontsoundiSOFT - alFontsoundivSOFT - alGenAuxiliaryEffectSlots - alGenBuffers - alGenEffects - alGenFilters - alGenFontsoundsSOFT - alGenPresetsSOFT - alGenSoundfontsSOFT - alGenSources - alGetAuxiliaryEffectSlotf - alGetAuxiliaryEffectSlotfv - alGetAuxiliaryEffectSloti - alGetAuxiliaryEffectSlotiv - alGetBoolean - alGetBooleanv - alGetBuffer3f - alGetBuffer3i - alGetBufferSamplesSOFT - alGetBufferf - alGetBufferfv - alGetBufferi - alGetBufferiv - alGetDouble - alGetDoublev - alGetEffectf - alGetEffectfv - alGetEffecti - alGetEffectiv - alGetEnumValue - alGetError - alGetFilterf - alGetFilterfv - alGetFilteri - alGetFilteriv - alGetFloat - alGetFloatv - alGetFontsoundModulatorivSOFT - alGetFontsoundivSOFT - alGetInteger - alGetInteger64SOFT - alGetInteger64vSOFT - alGetIntegerv - alGetListener3f - alGetListener3i - alGetListenerf - alGetListenerfv - alGetListeneri - alGetListeneriv - alGetPresetivSOFT - alGetProcAddress - alGetSoundfontivSOFT - alGetSource3dSOFT - alGetSource3f - alGetSource3i - alGetSource3i64SOFT - alGetSourcedSOFT - alGetSourcedvSOFT - alGetSourcef - alGetSourcefv - alGetSourcei - alGetSourcei64SOFT - alGetSourcei64vSOFT - alGetSourceiv - alGetString - alIsAuxiliaryEffectSlot - alIsBuffer - alIsBufferFormatSupportedSOFT - alIsEffect - alIsEnabled - alIsExtensionPresent - alIsFilter - alIsFontsoundSOFT - alIsPresetSOFT - alIsSoundfontSOFT - alIsSource - alListener3f - alListener3i - alListenerf - alListenerfv - alListeneri - alListeneriv - alLoadSoundfontSOFT - alMidiEventSOFT - alMidiGainSOFT - alMidiPauseSOFT - alMidiPlaySOFT - alMidiResetSOFT - alMidiSoundfontSOFT - alMidiSoundfontvSOFT - alMidiStopSOFT - alMidiSysExSOFT - alPresetFontsoundsSOFT - alPresetiSOFT - alPresetivSOFT - alProcessUpdatesSOFT - alSoundfontPresetsSOFT - alSource3dSOFT - alSource3f - alSource3i - alSource3i64SOFT - alSourcePause - alSourcePausev - alSourcePlay - alSourcePlayv - alSourceQueueBuffers - alSourceRewind - alSourceRewindv - alSourceStop - alSourceStopv - alSourceUnqueueBuffers - alSourcedSOFT - alSourcedvSOFT - alSourcef - alSourcefv - alSourcei - alSourcei64SOFT - alSourcei64vSOFT - alSourceiv - alSpeedOfSound - alcCaptureCloseDevice - alcCaptureOpenDevice - alcCaptureSamples - alcCaptureStart - alcCaptureStop - alcCloseDevice - alcCreateContext - alcDestroyContext - alcDevicePauseSOFT - alcDeviceResumeSOFT - alcGetContextsDevice - alcGetCurrentContext - alcGetEnumValue - alcGetError - alcGetInteger64vSOFT - alcGetIntegerv - alcGetProcAddress - alcGetString - alcGetThreadContext - alcIsExtensionPresent - alcIsRenderFormatSupportedSOFT - alcLoopbackOpenDeviceSOFT - alcMakeContextCurrent - alcOpenDevice - alcProcessContext - alcRenderSamplesSOFT - alcSetThreadContext - alcSuspendContext diff --git a/external/openal-soft-1.16.0-bin/libs/Win64/OpenAL32.lib b/external/openal-soft-1.16.0-bin/libs/Win64/OpenAL32.lib deleted file mode 100644 index 88dfed146a8833a553793b881bde347611a5f3cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138664 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 diff --git a/external/openal-soft-1.16.0-bin/libs/Win64/libOpenAL32.dll.a b/external/openal-soft-1.16.0-bin/libs/Win64/libOpenAL32.dll.a deleted file mode 100644 index 2b29ea6cd5b8fffe4510faade35a70827c1dd6d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116446 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 diff --git a/external/portaudio/LICENSE.txt b/external/portaudio/LICENSE.txt new file mode 100644 index 0000000..e0ac4e8 --- /dev/null +++ b/external/portaudio/LICENSE.txt @@ -0,0 +1,81 @@ +Portable header file to contain: +>>>>> +/* + * PortAudio Portable Real-Time Audio Library + * PortAudio API Header File + * Latest version available at: http://www.portaudio.com + * + * Copyright (c) 1999-2006 Ross Bencina and Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ +<<<<< + + +Implementation files to contain: +>>>>> +/* + * PortAudio Portable Real-Time Audio Library + * Latest version at: http://www.portaudio.com + * Implementation + * Copyright (c) 1999-2000 + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ +<<<<< \ No newline at end of file diff --git a/external/portaudio/include/pa_allocation.h b/external/portaudio/include/pa_allocation.h new file mode 100644 index 0000000..811dd72 --- /dev/null +++ b/external/portaudio/include/pa_allocation.h @@ -0,0 +1,104 @@ +#ifndef PA_ALLOCATION_H +#define PA_ALLOCATION_H +/* + * $Id: pa_allocation.h 1339 2008-02-15 07:50:33Z rossb $ + * Portable Audio I/O Library allocation context header + * memory allocation context for tracking allocation groups + * + * Based on the Open Source API proposed by Ross Bencina + * Copyright (c) 1999-2008 Ross Bencina, Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup common_src + + @brief Allocation Group prototypes. An Allocation Group makes it easy to + allocate multiple blocks of memory and free them all at once. + + An allocation group is useful for keeping track of multiple blocks + of memory which are allocated at the same time (such as during initialization) + and need to be deallocated at the same time. The allocation group maintains + a list of allocated blocks, and can free all allocations at once. This + can be usefull for cleaning up after a partially initialized object fails. + + The allocation group implementation is built on top of the lower + level allocation functions defined in pa_util.h +*/ + + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +typedef struct +{ + long linkCount; + struct PaUtilAllocationGroupLink *linkBlocks; + struct PaUtilAllocationGroupLink *spareLinks; + struct PaUtilAllocationGroupLink *allocations; +}PaUtilAllocationGroup; + + + +/** Create an allocation group. +*/ +PaUtilAllocationGroup* PaUtil_CreateAllocationGroup( void ); + +/** Destroy an allocation group, but not the memory allocated through the group. +*/ +void PaUtil_DestroyAllocationGroup( PaUtilAllocationGroup* group ); + +/** Allocate a block of memory though an allocation group. +*/ +void* PaUtil_GroupAllocateMemory( PaUtilAllocationGroup* group, long size ); + +/** Free a block of memory that was previously allocated though an allocation + group. Calling this function is a relatively time consuming operation. + Under normal circumstances clients should call PaUtil_FreeAllAllocations to + free all allocated blocks simultaneously. + @see PaUtil_FreeAllAllocations +*/ +void PaUtil_GroupFreeMemory( PaUtilAllocationGroup* group, void *buffer ); + +/** Free all blocks of memory which have been allocated through the allocation + group. This function doesn't destroy the group itself. +*/ +void PaUtil_FreeAllAllocations( PaUtilAllocationGroup* group ); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* PA_ALLOCATION_H */ diff --git a/external/portaudio/include/pa_asio.h b/external/portaudio/include/pa_asio.h new file mode 100644 index 0000000..8f4624e --- /dev/null +++ b/external/portaudio/include/pa_asio.h @@ -0,0 +1,150 @@ +#ifndef PA_ASIO_H +#define PA_ASIO_H +/* + * $Id: pa_asio.h 1667 2011-05-02 15:49:20Z rossb $ + * PortAudio Portable Real-Time Audio Library + * ASIO specific extensions + * + * Copyright (c) 1999-2000 Ross Bencina and Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + + +/** @file + @ingroup public_header + @brief ASIO-specific PortAudio API extension header file. +*/ + +#include "portaudio.h" + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +/** Retrieve legal native buffer sizes for the specificed device, in sample frames. + + @param device The global index of the device about which the query is being made. + @param minBufferSizeFrames A pointer to the location which will receive the minimum buffer size value. + @param maxBufferSizeFrames A pointer to the location which will receive the maximum buffer size value. + @param preferredBufferSizeFrames A pointer to the location which will receive the preferred buffer size value. + @param granularity A pointer to the location which will receive the "granularity". This value determines + the step size used to compute the legal values between minBufferSizeFrames and maxBufferSizeFrames. + If granularity is -1 then available buffer size values are powers of two. + + @see ASIOGetBufferSize in the ASIO SDK. + + @note: this function used to be called PaAsio_GetAvailableLatencyValues. There is a + #define that maps PaAsio_GetAvailableLatencyValues to this function for backwards compatibility. +*/ +PaError PaAsio_GetAvailableBufferSizes( PaDeviceIndex device, + long *minBufferSizeFrames, long *maxBufferSizeFrames, long *preferredBufferSizeFrames, long *granularity ); + + +/** Backwards compatibility alias for PaAsio_GetAvailableBufferSizes + + @see PaAsio_GetAvailableBufferSizes +*/ +#define PaAsio_GetAvailableLatencyValues PaAsio_GetAvailableBufferSizes + + +/** Display the ASIO control panel for the specified device. + + @param device The global index of the device whose control panel is to be displayed. + @param systemSpecific On Windows, the calling application's main window handle, + on Macintosh this value should be zero. +*/ +PaError PaAsio_ShowControlPanel( PaDeviceIndex device, void* systemSpecific ); + + + + +/** Retrieve a pointer to a string containing the name of the specified + input channel. The string is valid until Pa_Terminate is called. + + The string will be no longer than 32 characters including the null terminator. +*/ +PaError PaAsio_GetInputChannelName( PaDeviceIndex device, int channelIndex, + const char** channelName ); + + +/** Retrieve a pointer to a string containing the name of the specified + input channel. The string is valid until Pa_Terminate is called. + + The string will be no longer than 32 characters including the null terminator. +*/ +PaError PaAsio_GetOutputChannelName( PaDeviceIndex device, int channelIndex, + const char** channelName ); + + +/** Set the sample rate of an open paASIO stream. + + @param stream The stream to operate on. + @param sampleRate The new sample rate. + + Note that this function may fail if the stream is alredy running and the + ASIO driver does not support switching the sample rate of a running stream. + + Returns paIncompatibleStreamHostApi if stream is not a paASIO stream. +*/ +PaError PaAsio_SetStreamSampleRate( PaStream* stream, double sampleRate ); + + +#define paAsioUseChannelSelectors (0x01) + +typedef struct PaAsioStreamInfo{ + unsigned long size; /**< sizeof(PaAsioStreamInfo) */ + PaHostApiTypeId hostApiType; /**< paASIO */ + unsigned long version; /**< 1 */ + + unsigned long flags; + + /* Support for opening only specific channels of an ASIO device. + If the paAsioUseChannelSelectors flag is set, channelSelectors is a + pointer to an array of integers specifying the device channels to use. + When used, the length of the channelSelectors array must match the + corresponding channelCount parameter to Pa_OpenStream() otherwise a + crash may result. + The values in the selectors array must specify channels within the + range of supported channels for the device or paInvalidChannelCount will + result. + */ + int *channelSelectors; +}PaAsioStreamInfo; + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* PA_ASIO_H */ diff --git a/external/portaudio/include/pa_converters.h b/external/portaudio/include/pa_converters.h new file mode 100644 index 0000000..7ddfcaa --- /dev/null +++ b/external/portaudio/include/pa_converters.h @@ -0,0 +1,263 @@ +#ifndef PA_CONVERTERS_H +#define PA_CONVERTERS_H +/* + * $Id: pa_converters.h 1097 2006-08-26 08:27:53Z rossb $ + * Portable Audio I/O Library sample conversion mechanism + * + * Based on the Open Source API proposed by Ross Bencina + * Copyright (c) 1999-2002 Phil Burk, Ross Bencina + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup common_src + + @brief Conversion functions used to convert buffers of samples from one + format to another. +*/ + + +#include "portaudio.h" /* for PaSampleFormat */ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +struct PaUtilTriangularDitherGenerator; + + +/** Choose an available sample format which is most appropriate for + representing the requested format. If the requested format is not available + higher quality formats are considered before lower quality formates. + @param availableFormats A variable containing the logical OR of all available + formats. + @param format The desired format. + @return The most appropriate available format for representing the requested + format. +*/ +PaSampleFormat PaUtil_SelectClosestAvailableFormat( + PaSampleFormat availableFormats, PaSampleFormat format ); + + +/* high level conversions functions for use by implementations */ + + +/** The generic sample converter prototype. Sample converters convert count + samples from sourceBuffer to destinationBuffer. The actual type of the data + pointed to by these parameters varys for different converter functions. + @param destinationBuffer A pointer to the first sample of the destination. + @param destinationStride An offset between successive destination samples + expressed in samples (not bytes.) It may be negative. + @param sourceBuffer A pointer to the first sample of the source. + @param sourceStride An offset between successive source samples + expressed in samples (not bytes.) It may be negative. + @param count The number of samples to convert. + @param ditherState State information used to calculate dither. Converters + that do not perform dithering will ignore this parameter, in which case + NULL or invalid dither state may be passed. +*/ +typedef void PaUtilConverter( + void *destinationBuffer, signed int destinationStride, + void *sourceBuffer, signed int sourceStride, + unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ); + + +/** Find a sample converter function for the given source and destinations + formats and flags (clip and dither.) + @return + A pointer to a PaUtilConverter which will perform the requested + conversion, or NULL if the given format conversion is not supported. + For conversions where clipping or dithering is not necessary, the + clip and dither flags are ignored and a non-clipping or dithering + version is returned. + If the source and destination formats are the same, a function which + copies data of the appropriate size will be returned. +*/ +PaUtilConverter* PaUtil_SelectConverter( PaSampleFormat sourceFormat, + PaSampleFormat destinationFormat, PaStreamFlags flags ); + + +/** The generic buffer zeroer prototype. Buffer zeroers copy count zeros to + destinationBuffer. The actual type of the data pointed to varys for + different zeroer functions. + @param destinationBuffer A pointer to the first sample of the destination. + @param destinationStride An offset between successive destination samples + expressed in samples (not bytes.) It may be negative. + @param count The number of samples to zero. +*/ +typedef void PaUtilZeroer( + void *destinationBuffer, signed int destinationStride, unsigned int count ); + + +/** Find a buffer zeroer function for the given destination format. + @return + A pointer to a PaUtilZeroer which will perform the requested + zeroing. +*/ +PaUtilZeroer* PaUtil_SelectZeroer( PaSampleFormat destinationFormat ); + +/*----------------------------------------------------------------------------*/ +/* low level functions and data structures which may be used for + substituting conversion functions */ + + +/** The type used to store all sample conversion functions. + @see paConverters; +*/ +typedef struct{ + PaUtilConverter *Float32_To_Int32; + PaUtilConverter *Float32_To_Int32_Dither; + PaUtilConverter *Float32_To_Int32_Clip; + PaUtilConverter *Float32_To_Int32_DitherClip; + + PaUtilConverter *Float32_To_Int24; + PaUtilConverter *Float32_To_Int24_Dither; + PaUtilConverter *Float32_To_Int24_Clip; + PaUtilConverter *Float32_To_Int24_DitherClip; + + PaUtilConverter *Float32_To_Int16; + PaUtilConverter *Float32_To_Int16_Dither; + PaUtilConverter *Float32_To_Int16_Clip; + PaUtilConverter *Float32_To_Int16_DitherClip; + + PaUtilConverter *Float32_To_Int8; + PaUtilConverter *Float32_To_Int8_Dither; + PaUtilConverter *Float32_To_Int8_Clip; + PaUtilConverter *Float32_To_Int8_DitherClip; + + PaUtilConverter *Float32_To_UInt8; + PaUtilConverter *Float32_To_UInt8_Dither; + PaUtilConverter *Float32_To_UInt8_Clip; + PaUtilConverter *Float32_To_UInt8_DitherClip; + + PaUtilConverter *Int32_To_Float32; + PaUtilConverter *Int32_To_Int24; + PaUtilConverter *Int32_To_Int24_Dither; + PaUtilConverter *Int32_To_Int16; + PaUtilConverter *Int32_To_Int16_Dither; + PaUtilConverter *Int32_To_Int8; + PaUtilConverter *Int32_To_Int8_Dither; + PaUtilConverter *Int32_To_UInt8; + PaUtilConverter *Int32_To_UInt8_Dither; + + PaUtilConverter *Int24_To_Float32; + PaUtilConverter *Int24_To_Int32; + PaUtilConverter *Int24_To_Int16; + PaUtilConverter *Int24_To_Int16_Dither; + PaUtilConverter *Int24_To_Int8; + PaUtilConverter *Int24_To_Int8_Dither; + PaUtilConverter *Int24_To_UInt8; + PaUtilConverter *Int24_To_UInt8_Dither; + + PaUtilConverter *Int16_To_Float32; + PaUtilConverter *Int16_To_Int32; + PaUtilConverter *Int16_To_Int24; + PaUtilConverter *Int16_To_Int8; + PaUtilConverter *Int16_To_Int8_Dither; + PaUtilConverter *Int16_To_UInt8; + PaUtilConverter *Int16_To_UInt8_Dither; + + PaUtilConverter *Int8_To_Float32; + PaUtilConverter *Int8_To_Int32; + PaUtilConverter *Int8_To_Int24; + PaUtilConverter *Int8_To_Int16; + PaUtilConverter *Int8_To_UInt8; + + PaUtilConverter *UInt8_To_Float32; + PaUtilConverter *UInt8_To_Int32; + PaUtilConverter *UInt8_To_Int24; + PaUtilConverter *UInt8_To_Int16; + PaUtilConverter *UInt8_To_Int8; + + PaUtilConverter *Copy_8_To_8; /* copy without any conversion */ + PaUtilConverter *Copy_16_To_16; /* copy without any conversion */ + PaUtilConverter *Copy_24_To_24; /* copy without any conversion */ + PaUtilConverter *Copy_32_To_32; /* copy without any conversion */ +} PaUtilConverterTable; + + +/** A table of pointers to all required converter functions. + PaUtil_SelectConverter() uses this table to lookup the appropriate + conversion functions. The fields of this structure are initialized + with default conversion functions. Fields may be NULL, indicating that + no conversion function is available. User code may substitue optimised + conversion functions by assigning different function pointers to + these fields. + + @note + If the PA_NO_STANDARD_CONVERTERS preprocessor variable is defined, + PortAudio's standard converters will not be compiled, and all fields + of this structure will be initialized to NULL. In such cases, users + should supply their own conversion functions if the require PortAudio + to open a stream that requires sample conversion. + + @see PaUtilConverterTable, PaUtilConverter, PaUtil_SelectConverter +*/ +extern PaUtilConverterTable paConverters; + + +/** The type used to store all buffer zeroing functions. + @see paZeroers; +*/ +typedef struct{ + PaUtilZeroer *ZeroU8; /* unsigned 8 bit, zero == 128 */ + PaUtilZeroer *Zero8; + PaUtilZeroer *Zero16; + PaUtilZeroer *Zero24; + PaUtilZeroer *Zero32; +} PaUtilZeroerTable; + + +/** A table of pointers to all required zeroer functions. + PaUtil_SelectZeroer() uses this table to lookup the appropriate + conversion functions. The fields of this structure are initialized + with default conversion functions. User code may substitue optimised + conversion functions by assigning different function pointers to + these fields. + + @note + If the PA_NO_STANDARD_ZEROERS preprocessor variable is defined, + PortAudio's standard zeroers will not be compiled, and all fields + of this structure will be initialized to NULL. In such cases, users + should supply their own zeroing functions for the sample sizes which + they intend to use. + + @see PaUtilZeroerTable, PaUtilZeroer, PaUtil_SelectZeroer +*/ +extern PaUtilZeroerTable paZeroers; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* PA_CONVERTERS_H */ diff --git a/external/portaudio/include/pa_cpuload.h b/external/portaudio/include/pa_cpuload.h new file mode 100644 index 0000000..4a59443 --- /dev/null +++ b/external/portaudio/include/pa_cpuload.h @@ -0,0 +1,72 @@ +#ifndef PA_CPULOAD_H +#define PA_CPULOAD_H +/* + * $Id: pa_cpuload.h 1097 2006-08-26 08:27:53Z rossb $ + * Portable Audio I/O Library CPU Load measurement functions + * Portable CPU load measurement facility. + * + * Based on the Open Source API proposed by Ross Bencina + * Copyright (c) 2002 Ross Bencina + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup common_src + + @brief Functions to assist in measuring the CPU utilization of a callback + stream. Used to implement the Pa_GetStreamCpuLoad() function. +*/ + + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +typedef struct { + double samplingPeriod; + double measurementStartTime; + double averageLoad; +} PaUtilCpuLoadMeasurer; /**< @todo need better name than measurer */ + +void PaUtil_InitializeCpuLoadMeasurer( PaUtilCpuLoadMeasurer* measurer, double sampleRate ); +void PaUtil_BeginCpuLoadMeasurement( PaUtilCpuLoadMeasurer* measurer ); +void PaUtil_EndCpuLoadMeasurement( PaUtilCpuLoadMeasurer* measurer, unsigned long framesProcessed ); +void PaUtil_ResetCpuLoadMeasurer( PaUtilCpuLoadMeasurer* measurer ); +double PaUtil_GetCpuLoad( PaUtilCpuLoadMeasurer* measurer ); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* PA_CPULOAD_H */ diff --git a/external/portaudio/include/pa_debugprint.h b/external/portaudio/include/pa_debugprint.h new file mode 100644 index 0000000..5fba766 --- /dev/null +++ b/external/portaudio/include/pa_debugprint.h @@ -0,0 +1,149 @@ +#ifndef PA_LOG_H +#define PA_LOG_H +/* + * Log file redirector function + * Copyright (c) 1999-2006 Ross Bencina, Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup common_src +*/ + + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + + +void PaUtil_DebugPrint( const char *format, ... ); + + +/* + The basic format for log messages is described below. If you need to + add any log messages, please follow this format. + + Function entry (void function): + + "FunctionName called.\n" + + Function entry (non void function): + + "FunctionName called:\n" + "\tParam1Type param1: param1Value\n" + "\tParam2Type param2: param2Value\n" (etc...) + + + Function exit (no return value): + + "FunctionName returned.\n" + + Function exit (simple return value): + + "FunctionName returned:\n" + "\tReturnType: returnValue\n" + + If the return type is an error code, the error text is displayed in () + + If the return type is not an error code, but has taken a special value + because an error occurred, then the reason for the error is shown in [] + + If the return type is a struct ptr, the struct is dumped. + + See the code below for examples +*/ + +/** PA_DEBUG() provides a simple debug message printing facility. The macro + passes it's argument to a printf-like function called PaUtil_DebugPrint() + which prints to stderr and always flushes the stream after printing. + Because preprocessor macros cannot directly accept variable length argument + lists, calls to the macro must include an additional set of parenthesis, eg: + PA_DEBUG(("errorno: %d", 1001 )); +*/ + + +#ifdef PA_ENABLE_DEBUG_OUTPUT +#define PA_DEBUG(x) PaUtil_DebugPrint x ; +#else +#define PA_DEBUG(x) +#endif + + +#ifdef PA_LOG_API_CALLS +#define PA_LOGAPI(x) PaUtil_DebugPrint x + +#define PA_LOGAPI_ENTER(functionName) PaUtil_DebugPrint( functionName " called.\n" ) + +#define PA_LOGAPI_ENTER_PARAMS(functionName) PaUtil_DebugPrint( functionName " called:\n" ) + +#define PA_LOGAPI_EXIT(functionName) PaUtil_DebugPrint( functionName " returned.\n" ) + +#define PA_LOGAPI_EXIT_PAERROR( functionName, result ) \ + PaUtil_DebugPrint( functionName " returned:\n" ); \ + PaUtil_DebugPrint("\tPaError: %d ( %s )\n", result, Pa_GetErrorText( result ) ) + +#define PA_LOGAPI_EXIT_T( functionName, resultFormatString, result ) \ + PaUtil_DebugPrint( functionName " returned:\n" ); \ + PaUtil_DebugPrint("\t" resultFormatString "\n", result ) + +#define PA_LOGAPI_EXIT_PAERROR_OR_T_RESULT( functionName, positiveResultFormatString, result ) \ + PaUtil_DebugPrint( functionName " returned:\n" ); \ + if( result > 0 ) \ + PaUtil_DebugPrint("\t" positiveResultFormatString "\n", result ); \ + else \ + PaUtil_DebugPrint("\tPaError: %d ( %s )\n", result, Pa_GetErrorText( result ) ) +#else +#define PA_LOGAPI(x) +#define PA_LOGAPI_ENTER(functionName) +#define PA_LOGAPI_ENTER_PARAMS(functionName) +#define PA_LOGAPI_EXIT(functionName) +#define PA_LOGAPI_EXIT_PAERROR( functionName, result ) +#define PA_LOGAPI_EXIT_T( functionName, resultFormatString, result ) +#define PA_LOGAPI_EXIT_PAERROR_OR_T_RESULT( functionName, positiveResultFormatString, result ) +#endif + + +typedef void (*PaUtilLogCallback ) (const char *log); + +/** + Install user provided log function +*/ +void PaUtil_SetDebugPrintFunction(PaUtilLogCallback cb); + + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* PA_LOG_H */ diff --git a/external/portaudio/include/pa_dither.h b/external/portaudio/include/pa_dither.h new file mode 100644 index 0000000..a5131b2 --- /dev/null +++ b/external/portaudio/include/pa_dither.h @@ -0,0 +1,106 @@ +#ifndef PA_DITHER_H +#define PA_DITHER_H +/* + * $Id: pa_dither.h 1418 2009-10-12 21:00:53Z philburk $ + * Portable Audio I/O Library triangular dither generator + * + * Based on the Open Source API proposed by Ross Bencina + * Copyright (c) 1999-2002 Phil Burk, Ross Bencina + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup common_src + + @brief Functions for generating dither noise +*/ + +#include "pa_types.h" + + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +/* Note that the linear congruential algorithm requires 32 bit integers + * because it uses arithmetic overflow. So use PaUint32 instead of + * unsigned long so it will work on 64 bit systems. + */ + +/** @brief State needed to generate a dither signal */ +typedef struct PaUtilTriangularDitherGenerator{ + PaUint32 previous; + PaUint32 randSeed1; + PaUint32 randSeed2; +} PaUtilTriangularDitherGenerator; + + +/** @brief Initialize dither state */ +void PaUtil_InitializeTriangularDitherState( PaUtilTriangularDitherGenerator *ditherState ); + + +/** + @brief Calculate 2 LSB dither signal with a triangular distribution. + Ranged for adding to a 1 bit right-shifted 32 bit integer + prior to >>15. eg: +
+    signed long in = *
+    signed long dither = PaUtil_Generate16BitTriangularDither( ditherState );
+    signed short out = (signed short)(((in>>1) + dither) >> 15);
+
+ @return + A signed 32-bit integer with a range of +32767 to -32768 +*/ +PaInt32 PaUtil_Generate16BitTriangularDither( PaUtilTriangularDitherGenerator *ditherState ); + + +/** + @brief Calculate 2 LSB dither signal with a triangular distribution. + Ranged for adding to a pre-scaled float. +
+    float in = *
+    float dither = PaUtil_GenerateFloatTriangularDither( ditherState );
+    // use smaller scaler to prevent overflow when we add the dither
+    signed short out = (signed short)(in*(32766.0f) + dither );
+
+ @return + A float with a range of -2.0 to +1.99999. +*/ +float PaUtil_GenerateFloatTriangularDither( PaUtilTriangularDitherGenerator *ditherState ); + + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* PA_DITHER_H */ diff --git a/external/portaudio/include/pa_endianness.h b/external/portaudio/include/pa_endianness.h new file mode 100644 index 0000000..84e904c --- /dev/null +++ b/external/portaudio/include/pa_endianness.h @@ -0,0 +1,145 @@ +#ifndef PA_ENDIANNESS_H +#define PA_ENDIANNESS_H +/* + * $Id: pa_endianness.h 1324 2008-01-27 02:03:30Z bjornroche $ + * Portable Audio I/O Library current platform endianness macros + * + * Based on the Open Source API proposed by Ross Bencina + * Copyright (c) 1999-2002 Phil Burk, Ross Bencina + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup common_src + + @brief Configure endianness symbols for the target processor. + + Arrange for either the PA_LITTLE_ENDIAN or PA_BIG_ENDIAN preprocessor symbols + to be defined. The one that is defined reflects the endianness of the target + platform and may be used to implement conditional compilation of byte-order + dependent code. + + If either PA_LITTLE_ENDIAN or PA_BIG_ENDIAN is defined already, then no attempt + is made to override that setting. This may be useful if you have a better way + of determining the platform's endianness. The autoconf mechanism uses this for + example. + + A PA_VALIDATE_ENDIANNESS macro is provided to compare the compile time + and runtime endiannes and raise an assertion if they don't match. +*/ + + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +/* If this is an apple, we need to do detect endianness this way */ +#if defined(__APPLE__) + /* we need to do some endian detection that is sensitive to harware arch */ + #if defined(__LITTLE_ENDIAN__) + #if !defined( PA_LITTLE_ENDIAN ) + #define PA_LITTLE_ENDIAN + #endif + #if defined( PA_BIG_ENDIAN ) + #undef PA_BIG_ENDIAN + #endif + #else + #if !defined( PA_BIG_ENDIAN ) + #define PA_BIG_ENDIAN + #endif + #if defined( PA_LITTLE_ENDIAN ) + #undef PA_LITTLE_ENDIAN + #endif + #endif +#else + /* this is not an apple, so first check the existing defines, and, failing that, + detect well-known architechtures. */ + + #if defined(PA_LITTLE_ENDIAN) || defined(PA_BIG_ENDIAN) + /* endianness define has been set externally, such as by autoconf */ + + #if defined(PA_LITTLE_ENDIAN) && defined(PA_BIG_ENDIAN) + #error both PA_LITTLE_ENDIAN and PA_BIG_ENDIAN have been defined externally to pa_endianness.h - only one endianness at a time please + #endif + + #else + /* endianness define has not been set externally */ + + /* set PA_LITTLE_ENDIAN or PA_BIG_ENDIAN by testing well known platform specific defines */ + + #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) || defined(LITTLE_ENDIAN) || defined(__i386) || defined(_M_IX86) || defined(__x86_64__) + #define PA_LITTLE_ENDIAN /* win32, assume intel byte order */ + #else + #define PA_BIG_ENDIAN + #endif + #endif + + #if !defined(PA_LITTLE_ENDIAN) && !defined(PA_BIG_ENDIAN) + /* + If the following error is raised, you either need to modify the code above + to automatically determine the endianness from other symbols defined on your + platform, or define either PA_LITTLE_ENDIAN or PA_BIG_ENDIAN externally. + */ + #error pa_endianness.h was unable to automatically determine the endianness of the target platform + #endif + +#endif + + +/* PA_VALIDATE_ENDIANNESS compares the compile time and runtime endianness, + and raises an assertion if they don't match. must be included in + the context in which this macro is used. +*/ +#if defined(NDEBUG) + #define PA_VALIDATE_ENDIANNESS +#else + #if defined(PA_LITTLE_ENDIAN) + #define PA_VALIDATE_ENDIANNESS \ + { \ + const long nativeOne = 1; \ + assert( "PortAudio: compile time and runtime endianness don't match" && (((char *)&nativeOne)[0]) == 1 ); \ + } + #elif defined(PA_BIG_ENDIAN) + #define PA_VALIDATE_ENDIANNESS \ + { \ + const long nativeOne = 1; \ + assert( "PortAudio: compile time and runtime endianness don't match" && (((char *)&nativeOne)[0]) == 0 ); \ + } + #endif +#endif + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* PA_ENDIANNESS_H */ diff --git a/external/portaudio/include/pa_hostapi.h b/external/portaudio/include/pa_hostapi.h new file mode 100644 index 0000000..d38b8fe --- /dev/null +++ b/external/portaudio/include/pa_hostapi.h @@ -0,0 +1,362 @@ +#ifndef PA_HOSTAPI_H +#define PA_HOSTAPI_H +/* + * $Id: pa_hostapi.h 1880 2012-12-04 18:39:48Z rbencina $ + * Portable Audio I/O Library + * host api representation + * + * Based on the Open Source API proposed by Ross Bencina + * Copyright (c) 1999-2008 Ross Bencina, Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup common_src + + @brief Interfaces and representation structures used by pa_front.c + to manage and communicate with host API implementations. +*/ + +#include "portaudio.h" + +/** +The PA_NO_* host API macros are now deprecated in favor of PA_USE_* macros. +PA_USE_* indicates whether a particular host API will be initialized by PortAudio. +An undefined or 0 value indicates that the host API will not be used. A value of 1 +indicates that the host API will be used. PA_USE_* macros should be left undefined +or defined to either 0 or 1. + +The code below ensures that PA_USE_* macros are always defined and have value +0 or 1. Undefined symbols are defaulted to 0. Symbols that are neither 0 nor 1 +are defaulted to 1. +*/ + +#ifndef PA_USE_SKELETON +#define PA_USE_SKELETON 0 +#elif (PA_USE_SKELETON != 0) && (PA_USE_SKELETON != 1) +#undef PA_USE_SKELETON +#define PA_USE_SKELETON 1 +#endif + +#if defined(PA_NO_ASIO) || defined(PA_NO_DS) || defined(PA_NO_WMME) || defined(PA_NO_WASAPI) || defined(PA_NO_WDMKS) +#error "Portaudio: PA_NO_ is no longer supported, please remove definition and use PA_USE_ instead" +#endif + +#ifndef PA_USE_ASIO +#define PA_USE_ASIO 0 +#elif (PA_USE_ASIO != 0) && (PA_USE_ASIO != 1) +#undef PA_USE_ASIO +#define PA_USE_ASIO 1 +#endif + +#ifndef PA_USE_DS +#define PA_USE_DS 0 +#elif (PA_USE_DS != 0) && (PA_USE_DS != 1) +#undef PA_USE_DS +#define PA_USE_DS 1 +#endif + +#ifndef PA_USE_WMME +#define PA_USE_WMME 0 +#elif (PA_USE_WMME != 0) && (PA_USE_WMME != 1) +#undef PA_USE_WMME +#define PA_USE_WMME 1 +#endif + +#ifndef PA_USE_WASAPI +#define PA_USE_WASAPI 0 +#elif (PA_USE_WASAPI != 0) && (PA_USE_WASAPI != 1) +#undef PA_USE_WASAPI +#define PA_USE_WASAPI 1 +#endif + +#ifndef PA_USE_WDMKS +#define PA_USE_WDMKS 0 +#elif (PA_USE_WDMKS != 0) && (PA_USE_WDMKS != 1) +#undef PA_USE_WDMKS +#define PA_USE_WDMKS 1 +#endif + +/* Set default values for Unix based APIs. */ +#if defined(PA_NO_OSS) || defined(PA_NO_ALSA) || defined(PA_NO_JACK) || defined(PA_NO_COREAUDIO) || defined(PA_NO_SGI) || defined(PA_NO_ASIHPI) +#error "Portaudio: PA_NO_ is no longer supported, please remove definition and use PA_USE_ instead" +#endif + +#ifndef PA_USE_OSS +#define PA_USE_OSS 0 +#elif (PA_USE_OSS != 0) && (PA_USE_OSS != 1) +#undef PA_USE_OSS +#define PA_USE_OSS 1 +#endif + +#ifndef PA_USE_ALSA +#define PA_USE_ALSA 0 +#elif (PA_USE_ALSA != 0) && (PA_USE_ALSA != 1) +#undef PA_USE_ALSA +#define PA_USE_ALSA 1 +#endif + +#ifndef PA_USE_JACK +#define PA_USE_JACK 0 +#elif (PA_USE_JACK != 0) && (PA_USE_JACK != 1) +#undef PA_USE_JACK +#define PA_USE_JACK 1 +#endif + +#ifndef PA_USE_SGI +#define PA_USE_SGI 0 +#elif (PA_USE_SGI != 0) && (PA_USE_SGI != 1) +#undef PA_USE_SGI +#define PA_USE_SGI 1 +#endif + +#ifndef PA_USE_COREAUDIO +#define PA_USE_COREAUDIO 0 +#elif (PA_USE_COREAUDIO != 0) && (PA_USE_COREAUDIO != 1) +#undef PA_USE_COREAUDIO +#define PA_USE_COREAUDIO 1 +#endif + +#ifndef PA_USE_ASIHPI +#define PA_USE_ASIHPI 0 +#elif (PA_USE_ASIHPI != 0) && (PA_USE_ASIHPI != 1) +#undef PA_USE_ASIHPI +#define PA_USE_ASIHPI 1 +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +/** **FOR THE USE OF pa_front.c ONLY** + Do NOT use fields in this structure, they my change at any time. + Use functions defined in pa_util.h if you think you need functionality + which can be derived from here. +*/ +typedef struct PaUtilPrivatePaFrontHostApiInfo { + + + unsigned long baseDeviceIndex; +}PaUtilPrivatePaFrontHostApiInfo; + + +/** The common header for all data structures whose pointers are passed through + the hostApiSpecificStreamInfo field of the PaStreamParameters structure. + Note that in order to keep the public PortAudio interface clean, this structure + is not used explicitly when declaring hostApiSpecificStreamInfo data structures. + However, some code in pa_front depends on the first 3 members being equivalent + with this structure. + @see PaStreamParameters +*/ +typedef struct PaUtilHostApiSpecificStreamInfoHeader +{ + unsigned long size; /**< size of whole structure including this header */ + PaHostApiTypeId hostApiType; /**< host API for which this data is intended */ + unsigned long version; /**< structure version */ +} PaUtilHostApiSpecificStreamInfoHeader; + + + +/** A structure representing the interface to a host API. Contains both + concrete data and pointers to functions which implement the interface. +*/ +typedef struct PaUtilHostApiRepresentation { + PaUtilPrivatePaFrontHostApiInfo privatePaFrontInfo; + + /** The host api implementation should populate the info field. In the + case of info.defaultInputDevice and info.defaultOutputDevice the + values stored should be 0 based indices within the host api's own + device index range (0 to deviceCount). These values will be converted + to global device indices by pa_front after PaUtilHostApiInitializer() + returns. + */ + PaHostApiInfo info; + + PaDeviceInfo** deviceInfos; + + /** + (*Terminate)() is guaranteed to be called with a valid + parameter, which was previously returned from the same implementation's + initializer. + */ + void (*Terminate)( struct PaUtilHostApiRepresentation *hostApi ); + + /** + The inputParameters and outputParameters pointers should not be saved + as they will not remain valid after OpenStream is called. + + + The following guarantees are made about parameters to (*OpenStream)(): + + [NOTE: the following list up to *END PA FRONT VALIDATIONS* should be + kept in sync with the one for ValidateOpenStreamParameters and + Pa_OpenStream in pa_front.c] + + PaHostApiRepresentation *hostApi + - is valid for this implementation + + PaStream** stream + - is non-null + + - at least one of inputParameters & outputParmeters is valid (not NULL) + + - if inputParameters & outputParmeters are both valid, that + inputParameters->device & outputParmeters->device both use the same host api + + PaDeviceIndex inputParameters->device + - is within range (0 to Pa_CountDevices-1) Or: + - is paUseHostApiSpecificDeviceSpecification and + inputParameters->hostApiSpecificStreamInfo is non-NULL and refers + to a valid host api + + int inputParameters->numChannels + - if inputParameters->device is not paUseHostApiSpecificDeviceSpecification, numInputChannels is > 0 + - upper bound is NOT validated against device capabilities + + PaSampleFormat inputParameters->sampleFormat + - is one of the sample formats defined in portaudio.h + + void *inputParameters->hostApiSpecificStreamInfo + - if supplied its hostApi field matches the input device's host Api + + PaDeviceIndex outputParmeters->device + - is within range (0 to Pa_CountDevices-1) + + int outputParmeters->numChannels + - if inputDevice is valid, numInputChannels is > 0 + - upper bound is NOT validated against device capabilities + + PaSampleFormat outputParmeters->sampleFormat + - is one of the sample formats defined in portaudio.h + + void *outputParmeters->hostApiSpecificStreamInfo + - if supplied its hostApi field matches the output device's host Api + + double sampleRate + - is not an 'absurd' rate (less than 1000. or greater than 384000.) + - sampleRate is NOT validated against device capabilities + + PaStreamFlags streamFlags + - unused platform neutral flags are zero + - paNeverDropInput is only used for full-duplex callback streams + with variable buffer size (paFramesPerBufferUnspecified) + + [*END PA FRONT VALIDATIONS*] + + + The following validations MUST be performed by (*OpenStream)(): + + - check that input device can support numInputChannels + + - check that input device can support inputSampleFormat, or that + we have the capability to convert from outputSampleFormat to + a native format + + - if inputStreamInfo is supplied, validate its contents, + or return an error if no inputStreamInfo is expected + + - check that output device can support numOutputChannels + + - check that output device can support outputSampleFormat, or that + we have the capability to convert from outputSampleFormat to + a native format + + - if outputStreamInfo is supplied, validate its contents, + or return an error if no outputStreamInfo is expected + + - if a full duplex stream is requested, check that the combination + of input and output parameters is supported + + - check that the device supports sampleRate + + - alter sampleRate to a close allowable rate if necessary + + - validate inputLatency and outputLatency + + - validate any platform specific flags, if flags are supplied they + must be valid. + */ + PaError (*OpenStream)( struct PaUtilHostApiRepresentation *hostApi, + PaStream** stream, + const PaStreamParameters *inputParameters, + const PaStreamParameters *outputParameters, + double sampleRate, + unsigned long framesPerCallback, + PaStreamFlags streamFlags, + PaStreamCallback *streamCallback, + void *userData ); + + + PaError (*IsFormatSupported)( struct PaUtilHostApiRepresentation *hostApi, + const PaStreamParameters *inputParameters, + const PaStreamParameters *outputParameters, + double sampleRate ); +} PaUtilHostApiRepresentation; + + +/** Prototype for the initialization function which must be implemented by every + host API. + + This function should only return an error other than paNoError if it encounters + an unexpected and fatal error (memory allocation error for example). In general, + there may be conditions under which it returns a NULL interface pointer and also + returns paNoError. For example, if the ASIO implementation detects that ASIO is + not installed, it should return a NULL interface, and paNoError. + + @see paHostApiInitializers +*/ +typedef PaError PaUtilHostApiInitializer( PaUtilHostApiRepresentation**, PaHostApiIndex ); + + +/** paHostApiInitializers is a NULL-terminated array of host API initialization + functions. These functions are called by pa_front.c to initialize the host APIs + when the client calls Pa_Initialize(). + + The initialization functions are invoked in order. + + The first successfully initialized host API that has a default input *or* output + device is used as the default PortAudio host API. This is based on the logic that + there is only one default host API, and it must contain the default input and output + devices (if defined). + + There is a platform specific file that defines paHostApiInitializers for that + platform, pa_win/pa_win_hostapis.c contains the Win32 definitions for example. +*/ +extern PaUtilHostApiInitializer *paHostApiInitializers[]; + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* PA_HOSTAPI_H */ diff --git a/external/portaudio/include/pa_jack.h b/external/portaudio/include/pa_jack.h new file mode 100644 index 0000000..99ef833 --- /dev/null +++ b/external/portaudio/include/pa_jack.h @@ -0,0 +1,77 @@ +#ifndef PA_JACK_H +#define PA_JACK_H + +/* + * $Id: + * PortAudio Portable Real-Time Audio Library + * JACK-specific extensions + * + * Copyright (c) 1999-2000 Ross Bencina and Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + * @ingroup public_header + * @brief JACK-specific PortAudio API extension header file. + */ + +#include "portaudio.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** Set the JACK client name. + * + * During Pa_Initialize, When PA JACK connects as a client of the JACK server, it requests a certain + * name, which is for instance prepended to port names. By default this name is "PortAudio". The + * JACK server may append a suffix to the client name, in order to avoid clashes among clients that + * try to connect with the same name (e.g., different PA JACK clients). + * + * This function must be called before Pa_Initialize, otherwise it won't have any effect. Note that + * the string is not copied, but instead referenced directly, so it must not be freed for as long as + * PA might need it. + * @sa PaJack_GetClientName + */ +PaError PaJack_SetClientName( const char* name ); + +/** Get the JACK client name used by PA JACK. + * + * The caller is responsible for freeing the returned pointer. + */ +PaError PaJack_GetClientName(const char** clientName); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/external/portaudio/include/pa_linux_alsa.h b/external/portaudio/include/pa_linux_alsa.h new file mode 100644 index 0000000..21627bd --- /dev/null +++ b/external/portaudio/include/pa_linux_alsa.h @@ -0,0 +1,107 @@ +#ifndef PA_LINUX_ALSA_H +#define PA_LINUX_ALSA_H + +/* + * $Id: pa_linux_alsa.h 1597 2011-02-11 00:15:51Z dmitrykos $ + * PortAudio Portable Real-Time Audio Library + * ALSA-specific extensions + * + * Copyright (c) 1999-2000 Ross Bencina and Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + * @ingroup public_header + * @brief ALSA-specific PortAudio API extension header file. + */ + +#include "portaudio.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct PaAlsaStreamInfo +{ + unsigned long size; + PaHostApiTypeId hostApiType; + unsigned long version; + + const char *deviceString; +} +PaAlsaStreamInfo; + +/** Initialize host API specific structure, call this before setting relevant attributes. */ +void PaAlsa_InitializeStreamInfo( PaAlsaStreamInfo *info ); + +/** Instruct whether to enable real-time priority when starting the audio thread. + * + * If this is turned on by the stream is started, the audio callback thread will be created + * with the FIFO scheduling policy, which is suitable for realtime operation. + **/ +void PaAlsa_EnableRealtimeScheduling( PaStream *s, int enable ); + +#if 0 +void PaAlsa_EnableWatchdog( PaStream *s, int enable ); +#endif + +/** Get the ALSA-lib card index of this stream's input device. */ +PaError PaAlsa_GetStreamInputCard( PaStream *s, int *card ); + +/** Get the ALSA-lib card index of this stream's output device. */ +PaError PaAlsa_GetStreamOutputCard( PaStream *s, int *card ); + +/** Set the number of periods (buffer fragments) to configure devices with. + * + * By default the number of periods is 4, this is the lowest number of periods that works well on + * the author's soundcard. + * @param numPeriods The number of periods. + */ +PaError PaAlsa_SetNumPeriods( int numPeriods ); + +/** Set the maximum number of times to retry opening busy device (sleeping for a + * short interval inbetween). + */ +PaError PaAlsa_SetRetriesBusy( int retries ); + +/** Set the path and name of ALSA library file if PortAudio is configured to load it dynamically (see + * PA_ALSA_DYNAMIC). This setting will overwrite the default name set by PA_ALSA_PATHNAME define. + * @param pathName Full path with filename. Only filename can be used, but dlopen() will lookup default + * searchable directories (/usr/lib;/usr/local/lib) then. + */ +void PaAlsa_SetLibraryPathName( const char *pathName ); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/external/portaudio/include/pa_mac_core.h b/external/portaudio/include/pa_mac_core.h new file mode 100644 index 0000000..83e40a6 --- /dev/null +++ b/external/portaudio/include/pa_mac_core.h @@ -0,0 +1,191 @@ +#ifndef PA_MAC_CORE_H +#define PA_MAC_CORE_H +/* + * PortAudio Portable Real-Time Audio Library + * Macintosh Core Audio specific extensions + * portaudio.h should be included before this file. + * + * Copyright (c) 2005-2006 Bjorn Roche + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + * @ingroup public_header + * @brief CoreAudio-specific PortAudio API extension header file. + */ + +#include "portaudio.h" + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * A pointer to a paMacCoreStreamInfo may be passed as + * the hostApiSpecificStreamInfo in the PaStreamParameters struct + * when opening a stream or querying the format. Use NULL, for the + * defaults. Note that for duplex streams, flags for input and output + * should be the same or behaviour is undefined. + */ +typedef struct +{ + unsigned long size; /**size of whole structure including this header */ + PaHostApiTypeId hostApiType; /**host API for which this data is intended */ + unsigned long version; /**structure version */ + unsigned long flags; /** flags to modify behaviour */ + SInt32 const * channelMap; /** Channel map for HAL channel mapping , if not needed, use NULL;*/ + unsigned long channelMapSize; /** Channel map size for HAL channel mapping , if not needed, use 0;*/ +} PaMacCoreStreamInfo; + +/** + * Functions + */ + + +/** Use this function to initialize a paMacCoreStreamInfo struct + * using the requested flags. Note that channel mapping is turned + * off after a call to this function. + * @param data The datastructure to initialize + * @param flags The flags to initialize the datastructure with. +*/ +void PaMacCore_SetupStreamInfo( PaMacCoreStreamInfo *data, unsigned long flags ); + +/** call this after pa_SetupMacCoreStreamInfo to use channel mapping as described in notes.txt. + * @param data The stream info structure to assign a channel mapping to + * @param channelMap The channel map array, as described in notes.txt. This array pointer will be used directly (ie the underlying data will not be copied), so the caller should not free the array until after the stream has been opened. + * @param channelMapSize The size of the channel map array. + */ +void PaMacCore_SetupChannelMap( PaMacCoreStreamInfo *data, const SInt32 * const channelMap, unsigned long channelMapSize ); + +/** + * Retrieve the AudioDeviceID of the input device assigned to an open stream + * + * @param s The stream to query. + * + * @return A valid AudioDeviceID, or NULL if an error occurred. + */ +AudioDeviceID PaMacCore_GetStreamInputDevice( PaStream* s ); + +/** + * Retrieve the AudioDeviceID of the output device assigned to an open stream + * + * @param s The stream to query. + * + * @return A valid AudioDeviceID, or NULL if an error occurred. + */ +AudioDeviceID PaMacCore_GetStreamOutputDevice( PaStream* s ); + +/** + * Returns a statically allocated string with the device's name + * for the given channel. NULL will be returned on failure. + * + * This function's implemenation is not complete! + * + * @param device The PortAudio device index. + * @param channel The channel number who's name is requested. + * @return a statically allocated string with the name of the device. + * Because this string is statically allocated, it must be + * coppied if it is to be saved and used by the user after + * another call to this function. + * + */ +const char *PaMacCore_GetChannelName( int device, int channelIndex, bool input ); + + +/** Retrieve the range of legal native buffer sizes for the specificed device, in sample frames. + + @param device The global index of the PortAudio device about which the query is being made. + @param minBufferSizeFrames A pointer to the location which will receive the minimum buffer size value. + @param maxBufferSizeFrames A pointer to the location which will receive the maximum buffer size value. + + @see kAudioDevicePropertyBufferFrameSizeRange in the CoreAudio SDK. + */ +PaError PaMacCore_GetBufferSizeRange( PaDeviceIndex device, + long *minBufferSizeFrames, long *maxBufferSizeFrames ); + + +/** + * Flags + */ + +/** + * The following flags alter the behaviour of PA on the mac platform. + * they can be ORed together. These should work both for opening and + * checking a device. + */ + +/** Allows PortAudio to change things like the device's frame size, + * which allows for much lower latency, but might disrupt the device + * if other programs are using it, even when you are just Querying + * the device. */ +#define paMacCoreChangeDeviceParameters (0x01) + +/** In combination with the above flag, + * causes the stream opening to fail, unless the exact sample rates + * are supported by the device. */ +#define paMacCoreFailIfConversionRequired (0x02) + +/** These flags set the SR conversion quality, if required. The wierd ordering + * allows Maximum Quality to be the default.*/ +#define paMacCoreConversionQualityMin (0x0100) +#define paMacCoreConversionQualityMedium (0x0200) +#define paMacCoreConversionQualityLow (0x0300) +#define paMacCoreConversionQualityHigh (0x0400) +#define paMacCoreConversionQualityMax (0x0000) + +/** + * Here are some "preset" combinations of flags (above) to get to some + * common configurations. THIS IS OVERKILL, but if more flags are added + * it won't be. + */ + +/**This is the default setting: do as much sample rate conversion as possible + * and as little mucking with the device as possible. */ +#define paMacCorePlayNice (0x00) +/**This setting is tuned for pro audio apps. It allows SR conversion on input + and output, but it tries to set the appropriate SR on the device.*/ +#define paMacCorePro (0x01) +/**This is a setting to minimize CPU usage and still play nice.*/ +#define paMacCoreMinimizeCPUButPlayNice (0x0100) +/**This is a setting to minimize CPU usage, even if that means interrupting the device. */ +#define paMacCoreMinimizeCPU (0x0101) + + +#ifdef __cplusplus +} +#endif /** __cplusplus */ + +#endif /** PA_MAC_CORE_H */ diff --git a/external/portaudio/include/pa_memorybarrier.h b/external/portaudio/include/pa_memorybarrier.h new file mode 100644 index 0000000..2879ce3 --- /dev/null +++ b/external/portaudio/include/pa_memorybarrier.h @@ -0,0 +1,128 @@ +/* + * $Id: pa_memorybarrier.h 1240 2007-07-17 13:05:07Z bjornroche $ + * Portable Audio I/O Library + * Memory barrier utilities + * + * Author: Bjorn Roche, XO Audio, LLC + * + * This program uses the PortAudio Portable Audio Library. + * For more information see: http://www.portaudio.com + * Copyright (c) 1999-2000 Ross Bencina and Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** + @file pa_memorybarrier.h + @ingroup common_src +*/ + +/**************** + * Some memory barrier primitives based on the system. + * right now only OS X, FreeBSD, and Linux are supported. In addition to providing + * memory barriers, these functions should ensure that data cached in registers + * is written out to cache where it can be snooped by other CPUs. (ie, the volatile + * keyword should not be required) + * + * the primitives that must be defined are: + * + * PaUtil_FullMemoryBarrier() + * PaUtil_ReadMemoryBarrier() + * PaUtil_WriteMemoryBarrier() + * + ****************/ + +#if defined(__APPLE__) +# include + /* Here are the memory barrier functions. Mac OS X only provides + full memory barriers, so the three types of barriers are the same, + however, these barriers are superior to compiler-based ones. */ +# define PaUtil_FullMemoryBarrier() OSMemoryBarrier() +# define PaUtil_ReadMemoryBarrier() OSMemoryBarrier() +# define PaUtil_WriteMemoryBarrier() OSMemoryBarrier() +#elif defined(__GNUC__) + /* GCC >= 4.1 has built-in intrinsics. We'll use those */ +# if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) +# define PaUtil_FullMemoryBarrier() __sync_synchronize() +# define PaUtil_ReadMemoryBarrier() __sync_synchronize() +# define PaUtil_WriteMemoryBarrier() __sync_synchronize() + /* as a fallback, GCC understands volatile asm and "memory" to mean it + * should not reorder memory read/writes */ + /* Note that it is not clear that any compiler actually defines __PPC__, + * it can probably removed safely. */ +# elif defined( __ppc__ ) || defined( __powerpc__) || defined( __PPC__ ) +# define PaUtil_FullMemoryBarrier() asm volatile("sync":::"memory") +# define PaUtil_ReadMemoryBarrier() asm volatile("sync":::"memory") +# define PaUtil_WriteMemoryBarrier() asm volatile("sync":::"memory") +# elif defined( __i386__ ) || defined( __i486__ ) || defined( __i586__ ) || \ + defined( __i686__ ) || defined( __x86_64__ ) +# define PaUtil_FullMemoryBarrier() asm volatile("mfence":::"memory") +# define PaUtil_ReadMemoryBarrier() asm volatile("lfence":::"memory") +# define PaUtil_WriteMemoryBarrier() asm volatile("sfence":::"memory") +# else +# ifdef ALLOW_SMP_DANGERS +# warning Memory barriers not defined on this system or system unknown +# warning For SMP safety, you should fix this. +# define PaUtil_FullMemoryBarrier() +# define PaUtil_ReadMemoryBarrier() +# define PaUtil_WriteMemoryBarrier() +# else +# error Memory barriers are not defined on this system. You can still compile by defining ALLOW_SMP_DANGERS, but SMP safety will not be guaranteed. +# endif +# endif +#elif (_MSC_VER >= 1400) && !defined(_WIN32_WCE) +# include +# pragma intrinsic(_ReadWriteBarrier) +# pragma intrinsic(_ReadBarrier) +# pragma intrinsic(_WriteBarrier) +/* note that MSVC intrinsics _ReadWriteBarrier(), _ReadBarrier(), _WriteBarrier() are just compiler barriers *not* memory barriers */ +# define PaUtil_FullMemoryBarrier() _ReadWriteBarrier() +# define PaUtil_ReadMemoryBarrier() _ReadBarrier() +# define PaUtil_WriteMemoryBarrier() _WriteBarrier() +#elif defined(_WIN32_WCE) +# define PaUtil_FullMemoryBarrier() +# define PaUtil_ReadMemoryBarrier() +# define PaUtil_WriteMemoryBarrier() +#elif defined(_MSC_VER) || defined(__BORLANDC__) +# define PaUtil_FullMemoryBarrier() _asm { lock add [esp], 0 } +# define PaUtil_ReadMemoryBarrier() _asm { lock add [esp], 0 } +# define PaUtil_WriteMemoryBarrier() _asm { lock add [esp], 0 } +#else +# ifdef ALLOW_SMP_DANGERS +# warning Memory barriers not defined on this system or system unknown +# warning For SMP safety, you should fix this. +# define PaUtil_FullMemoryBarrier() +# define PaUtil_ReadMemoryBarrier() +# define PaUtil_WriteMemoryBarrier() +# else +# error Memory barriers are not defined on this system. You can still compile by defining ALLOW_SMP_DANGERS, but SMP safety will not be guaranteed. +# endif +#endif diff --git a/external/portaudio/include/pa_process.h b/external/portaudio/include/pa_process.h new file mode 100644 index 0000000..4d5f56a --- /dev/null +++ b/external/portaudio/include/pa_process.h @@ -0,0 +1,754 @@ +#ifndef PA_PROCESS_H +#define PA_PROCESS_H +/* + * $Id: pa_process.h 1668 2011-05-02 17:07:11Z rossb $ + * Portable Audio I/O Library callback buffer processing adapters + * + * Based on the Open Source API proposed by Ross Bencina + * Copyright (c) 1999-2002 Phil Burk, Ross Bencina + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup common_src + + @brief Buffer Processor prototypes. A Buffer Processor performs buffer length + adaption, coordinates sample format conversion, and interleaves/deinterleaves + channels. + +

Overview

+ + The "Buffer Processor" (PaUtilBufferProcessor) manages conversion of audio + data from host buffers to user buffers and back again. Where required, the + buffer processor takes care of converting between host and user sample formats, + interleaving and deinterleaving multichannel buffers, and adapting between host + and user buffers with different lengths. The buffer processor may be used with + full and half duplex streams, for both callback streams and blocking read/write + streams. + + One of the important capabilities provided by the buffer processor is + the ability to adapt between user and host buffer sizes of different lengths + with minimum latency. Although this task is relatively easy to perform when + the host buffer size is an integer multiple of the user buffer size, the + problem is more complicated when this is not the case - especially for + full-duplex callback streams. Where necessary the adaption is implemented by + internally buffering some input and/or output data. The buffer adation + algorithm used by the buffer processor was originally implemented by + Stephan Letz for the ASIO version of PortAudio, and is described in his + Callback_adaption_.pdf which is included in the distribution. + + The buffer processor performs sample conversion using the functions provided + by pa_converters.c. + + The following sections provide an overview of how to use the buffer processor. + Interested readers are advised to consult the host API implementations for + examples of buffer processor usage. + + +

Initialization, resetting and termination

+ + When a stream is opened, the buffer processor should be initialized using + PaUtil_InitializeBufferProcessor. This function initializes internal state + and allocates temporary buffers as neccesary according to the supplied + configuration parameters. Some of the parameters correspond to those requested + by the user in their call to Pa_OpenStream(), others reflect the requirements + of the host API implementation - they indicate host buffer sizes, formats, + and the type of buffering which the Host API uses. The buffer processor should + be initialized for callback streams and blocking read/write streams. + + Call PaUtil_ResetBufferProcessor to clear any sample data which is present + in the buffer processor before starting to use it (for example when + Pa_StartStream is called). + + When the buffer processor is no longer used call + PaUtil_TerminateBufferProcessor. + + +

Using the buffer processor for a callback stream

+ + The buffer processor's role in a callback stream is to take host input buffers + process them with the stream callback, and fill host output buffers. For a + full duplex stream, the buffer processor handles input and output simultaneously + due to the requirements of the minimum-latency buffer adation algorithm. + + When a host buffer becomes available, the implementation should call + the buffer processor to process the buffer. The buffer processor calls the + stream callback to consume and/or produce audio data as necessary. The buffer + processor will convert sample formats, interleave/deinterleave channels, + and slice or chunk the data to the appropriate buffer lengths according to + the requirements of the stream callback and the host API. + + To process a host buffer (or a pair of host buffers for a full-duplex stream) + use the following calling sequence: + + -# Call PaUtil_BeginBufferProcessing + -# For a stream which takes input: + - Call PaUtil_SetInputFrameCount with the number of frames in the host input + buffer. + - Call one of the following functions one or more times to tell the + buffer processor about the host input buffer(s): PaUtil_SetInputChannel, + PaUtil_SetInterleavedInputChannels, PaUtil_SetNonInterleavedInputChannel. + Which function you call will depend on whether the host buffer(s) are + interleaved or not. + - If the available host data is split accross two buffers (for example a + data range at the end of a circular buffer and another range at the + beginning of the circular buffer), also call + PaUtil_Set2ndInputFrameCount, PaUtil_Set2ndInputChannel, + PaUtil_Set2ndInterleavedInputChannels, + PaUtil_Set2ndNonInterleavedInputChannel as necessary to tell the buffer + processor about the second buffer. + -# For a stream which generates output: + - Call PaUtil_SetOutputFrameCount with the number of frames in the host + output buffer. + - Call one of the following functions one or more times to tell the + buffer processor about the host output buffer(s): PaUtil_SetOutputChannel, + PaUtil_SetInterleavedOutputChannels, PaUtil_SetNonInterleavedOutputChannel. + Which function you call will depend on whether the host buffer(s) are + interleaved or not. + - If the available host output buffer space is split accross two buffers + (for example a data range at the end of a circular buffer and another + range at the beginning of the circular buffer), call + PaUtil_Set2ndOutputFrameCount, PaUtil_Set2ndOutputChannel, + PaUtil_Set2ndInterleavedOutputChannels, + PaUtil_Set2ndNonInterleavedOutputChannel as necessary to tell the buffer + processor about the second buffer. + -# Call PaUtil_EndBufferProcessing, this function performs the actual data + conversion and processing. + + +

Using the buffer processor for a blocking read/write stream

+ + Blocking read/write streams use the buffer processor to convert and copy user + output data to a host buffer, and to convert and copy host input data to + the user's buffer. The buffer processor does not perform any buffer adaption. + When using the buffer processor in a blocking read/write stream the input and + output conversion are performed separately by the PaUtil_CopyInput and + PaUtil_CopyOutput functions. + + To copy data from a host input buffer to the buffer(s) which the user supplies + to Pa_ReadStream, use the following calling sequence. + + - Repeat the following three steps until the user buffer(s) have been filled + with samples from the host input buffers: + -# Call PaUtil_SetInputFrameCount with the number of frames in the host + input buffer. + -# Call one of the following functions one or more times to tell the + buffer processor about the host input buffer(s): PaUtil_SetInputChannel, + PaUtil_SetInterleavedInputChannels, PaUtil_SetNonInterleavedInputChannel. + Which function you call will depend on whether the host buffer(s) are + interleaved or not. + -# Call PaUtil_CopyInput with the user buffer pointer (or a copy of the + array of buffer pointers for a non-interleaved stream) passed to + Pa_ReadStream, along with the number of frames in the user buffer(s). + Be careful to pass a copy of the user buffer pointers to + PaUtil_CopyInput because PaUtil_CopyInput advances the pointers to + the start of the next region to copy. + - PaUtil_CopyInput will not copy more data than is available in the + host buffer(s), so the above steps need to be repeated until the user + buffer(s) are full. + + + To copy data to the host output buffer from the user buffers(s) supplied + to Pa_WriteStream use the following calling sequence. + + - Repeat the following three steps until all frames from the user buffer(s) + have been copied to the host API: + -# Call PaUtil_SetOutputFrameCount with the number of frames in the host + output buffer. + -# Call one of the following functions one or more times to tell the + buffer processor about the host output buffer(s): PaUtil_SetOutputChannel, + PaUtil_SetInterleavedOutputChannels, PaUtil_SetNonInterleavedOutputChannel. + Which function you call will depend on whether the host buffer(s) are + interleaved or not. + -# Call PaUtil_CopyOutput with the user buffer pointer (or a copy of the + array of buffer pointers for a non-interleaved stream) passed to + Pa_WriteStream, along with the number of frames in the user buffer(s). + Be careful to pass a copy of the user buffer pointers to + PaUtil_CopyOutput because PaUtil_CopyOutput advances the pointers to + the start of the next region to copy. + - PaUtil_CopyOutput will not copy more data than fits in the host buffer(s), + so the above steps need to be repeated until all user data is copied. +*/ + + +#include "portaudio.h" +#include "pa_converters.h" +#include "pa_dither.h" + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +/** @brief Mode flag passed to PaUtil_InitializeBufferProcessor indicating the type + of buffering that the host API uses. + + The mode used depends on whether the host API or the implementation manages + the buffers, and how these buffers are used (scatter gather, circular buffer). +*/ +typedef enum { +/** The host buffer size is a fixed known size. */ + paUtilFixedHostBufferSize, + +/** The host buffer size may vary, but has a known maximum size. */ + paUtilBoundedHostBufferSize, + +/** Nothing is known about the host buffer size. */ + paUtilUnknownHostBufferSize, + +/** The host buffer size varies, and the client does not require the buffer + processor to consume all of the input and fill all of the output buffer. This + is useful when the implementation has access to the host API's circular buffer + and only needs to consume/fill some of it, not necessarily all of it, with each + call to the buffer processor. This is the only mode where + PaUtil_EndBufferProcessing() may not consume the whole buffer. +*/ + paUtilVariableHostBufferSizePartialUsageAllowed +}PaUtilHostBufferSizeMode; + + +/** @brief An auxilliary data structure used internally by the buffer processor + to represent host input and output buffers. */ +typedef struct PaUtilChannelDescriptor{ + void *data; + unsigned int stride; /**< stride in samples, not bytes */ +}PaUtilChannelDescriptor; + + +/** @brief The main buffer processor data structure. + + Allocate one of these, initialize it with PaUtil_InitializeBufferProcessor + and terminate it with PaUtil_TerminateBufferProcessor. +*/ +typedef struct { + unsigned long framesPerUserBuffer; + unsigned long framesPerHostBuffer; + + PaUtilHostBufferSizeMode hostBufferSizeMode; + int useNonAdaptingProcess; + int userOutputSampleFormatIsEqualToHost; + int userInputSampleFormatIsEqualToHost; + unsigned long framesPerTempBuffer; + + unsigned int inputChannelCount; + unsigned int bytesPerHostInputSample; + unsigned int bytesPerUserInputSample; + int userInputIsInterleaved; + PaUtilConverter *inputConverter; + PaUtilZeroer *inputZeroer; + + unsigned int outputChannelCount; + unsigned int bytesPerHostOutputSample; + unsigned int bytesPerUserOutputSample; + int userOutputIsInterleaved; + PaUtilConverter *outputConverter; + PaUtilZeroer *outputZeroer; + + unsigned long initialFramesInTempInputBuffer; + unsigned long initialFramesInTempOutputBuffer; + + void *tempInputBuffer; /**< used for slips, block adaption, and conversion. */ + void **tempInputBufferPtrs; /**< storage for non-interleaved buffer pointers, NULL for interleaved user input */ + unsigned long framesInTempInputBuffer; /**< frames remaining in input buffer from previous adaption iteration */ + + void *tempOutputBuffer; /**< used for slips, block adaption, and conversion. */ + void **tempOutputBufferPtrs; /**< storage for non-interleaved buffer pointers, NULL for interleaved user output */ + unsigned long framesInTempOutputBuffer; /**< frames remaining in input buffer from previous adaption iteration */ + + PaStreamCallbackTimeInfo *timeInfo; + + PaStreamCallbackFlags callbackStatusFlags; + + int hostInputIsInterleaved; + unsigned long hostInputFrameCount[2]; + PaUtilChannelDescriptor *hostInputChannels[2]; /**< pointers to arrays of channel descriptors. + pointers are NULL for half-duplex output processing. + hostInputChannels[i].data is NULL when the caller + calls PaUtil_SetNoInput() + */ + int hostOutputIsInterleaved; + unsigned long hostOutputFrameCount[2]; + PaUtilChannelDescriptor *hostOutputChannels[2]; /**< pointers to arrays of channel descriptors. + pointers are NULL for half-duplex input processing. + hostOutputChannels[i].data is NULL when the caller + calls PaUtil_SetNoOutput() + */ + + PaUtilTriangularDitherGenerator ditherGenerator; + + double samplePeriod; + + PaStreamCallback *streamCallback; + void *userData; +} PaUtilBufferProcessor; + + +/** @name Initialization, termination, resetting and info */ +/*@{*/ + +/** Initialize a buffer processor's representation stored in a + PaUtilBufferProcessor structure. Be sure to call + PaUtil_TerminateBufferProcessor after finishing with a buffer processor. + + @param bufferProcessor The buffer processor structure to initialize. + + @param inputChannelCount The number of input channels as passed to + Pa_OpenStream or 0 for an output-only stream. + + @param userInputSampleFormat Format of user input samples, as passed to + Pa_OpenStream. This parameter is ignored for ouput-only streams. + + @param hostInputSampleFormat Format of host input samples. This parameter is + ignored for output-only streams. See note about host buffer interleave below. + + @param outputChannelCount The number of output channels as passed to + Pa_OpenStream or 0 for an input-only stream. + + @param userOutputSampleFormat Format of user output samples, as passed to + Pa_OpenStream. This parameter is ignored for input-only streams. + + @param hostOutputSampleFormat Format of host output samples. This parameter is + ignored for input-only streams. See note about host buffer interleave below. + + @param sampleRate Sample rate of the stream. The more accurate this is the + better - it is used for updating time stamps when adapting buffers. + + @param streamFlags Stream flags as passed to Pa_OpenStream, this parameter is + used for selecting special sample conversion options such as clipping and + dithering. + + @param framesPerUserBuffer Number of frames per user buffer, as requested + by the framesPerBuffer parameter to Pa_OpenStream. This parameter may be + zero to indicate that the user will accept any (and varying) buffer sizes. + + @param framesPerHostBuffer Specifies the number of frames per host buffer + for the fixed buffer size mode, and the maximum number of frames + per host buffer for the bounded host buffer size mode. It is ignored for + the other modes. + + @param hostBufferSizeMode A mode flag indicating the size variability of + host buffers that will be passed to the buffer processor. See + PaUtilHostBufferSizeMode for further details. + + @param streamCallback The user stream callback passed to Pa_OpenStream. + + @param userData The user data field passed to Pa_OpenStream. + + @note The interleave flag is ignored for host buffer formats. Host + interleave is determined by the use of different SetInput and SetOutput + functions. + + @return An error code indicating whether the initialization was successful. + If the error code is not PaNoError, the buffer processor was not initialized + and should not be used. + + @see Pa_OpenStream, PaUtilHostBufferSizeMode, PaUtil_TerminateBufferProcessor +*/ +PaError PaUtil_InitializeBufferProcessor( PaUtilBufferProcessor* bufferProcessor, + int inputChannelCount, PaSampleFormat userInputSampleFormat, + PaSampleFormat hostInputSampleFormat, + int outputChannelCount, PaSampleFormat userOutputSampleFormat, + PaSampleFormat hostOutputSampleFormat, + double sampleRate, + PaStreamFlags streamFlags, + unsigned long framesPerUserBuffer, /* 0 indicates don't care */ + unsigned long framesPerHostBuffer, + PaUtilHostBufferSizeMode hostBufferSizeMode, + PaStreamCallback *streamCallback, void *userData ); + + +/** Terminate a buffer processor's representation. Deallocates any temporary + buffers allocated by PaUtil_InitializeBufferProcessor. + + @param bufferProcessor The buffer processor structure to terminate. + + @see PaUtil_InitializeBufferProcessor. +*/ +void PaUtil_TerminateBufferProcessor( PaUtilBufferProcessor* bufferProcessor ); + + +/** Clear any internally buffered data. If you call + PaUtil_InitializeBufferProcessor in your OpenStream routine, make sure you + call PaUtil_ResetBufferProcessor in your StartStream call. + + @param bufferProcessor The buffer processor to reset. +*/ +void PaUtil_ResetBufferProcessor( PaUtilBufferProcessor* bufferProcessor ); + + +/** Retrieve the input latency of a buffer processor, in frames. + + @param bufferProcessor The buffer processor examine. + + @return The input latency introduced by the buffer processor, in frames. + + @see PaUtil_GetBufferProcessorOutputLatencyFrames +*/ +unsigned long PaUtil_GetBufferProcessorInputLatencyFrames( PaUtilBufferProcessor* bufferProcessor ); + +/** Retrieve the output latency of a buffer processor, in frames. + + @param bufferProcessor The buffer processor examine. + + @return The output latency introduced by the buffer processor, in frames. + + @see PaUtil_GetBufferProcessorInputLatencyFrames +*/ +unsigned long PaUtil_GetBufferProcessorOutputLatencyFrames( PaUtilBufferProcessor* bufferProcessor ); + +/*@}*/ + + +/** @name Host buffer pointer configuration + + Functions to set host input and output buffers, used by both callback streams + and blocking read/write streams. +*/ +/*@{*/ + + +/** Set the number of frames in the input host buffer(s) specified by the + PaUtil_Set*InputChannel functions. + + @param bufferProcessor The buffer processor. + + @param frameCount The number of host input frames. A 0 frameCount indicates to + use the framesPerHostBuffer value passed to PaUtil_InitializeBufferProcessor. + + @see PaUtil_SetNoInput, PaUtil_SetInputChannel, + PaUtil_SetInterleavedInputChannels, PaUtil_SetNonInterleavedInputChannel +*/ +void PaUtil_SetInputFrameCount( PaUtilBufferProcessor* bufferProcessor, + unsigned long frameCount ); + + +/** Indicate that no input is avalable. This function should be used when + priming the output of a full-duplex stream opened with the + paPrimeOutputBuffersUsingStreamCallback flag. Note that it is not necessary + to call this or any othe PaUtil_Set*Input* functions for ouput-only streams. + + @param bufferProcessor The buffer processor. +*/ +void PaUtil_SetNoInput( PaUtilBufferProcessor* bufferProcessor ); + + +/** Provide the buffer processor with a pointer to a host input channel. + + @param bufferProcessor The buffer processor. + @param channel The channel number. + @param data The buffer. + @param stride The stride from one sample to the next, in samples. For + interleaved host buffers, the stride will usually be the same as the number of + channels in the buffer. +*/ +void PaUtil_SetInputChannel( PaUtilBufferProcessor* bufferProcessor, + unsigned int channel, void *data, unsigned int stride ); + + +/** Provide the buffer processor with a pointer to an number of interleaved + host input channels. + + @param bufferProcessor The buffer processor. + @param firstChannel The first channel number. + @param data The buffer. + @param channelCount The number of interleaved channels in the buffer. If + channelCount is zero, the number of channels specified to + PaUtil_InitializeBufferProcessor will be used. +*/ +void PaUtil_SetInterleavedInputChannels( PaUtilBufferProcessor* bufferProcessor, + unsigned int firstChannel, void *data, unsigned int channelCount ); + + +/** Provide the buffer processor with a pointer to one non-interleaved host + output channel. + + @param bufferProcessor The buffer processor. + @param channel The channel number. + @param data The buffer. +*/ +void PaUtil_SetNonInterleavedInputChannel( PaUtilBufferProcessor* bufferProcessor, + unsigned int channel, void *data ); + + +/** Use for the second buffer half when the input buffer is split in two halves. + @see PaUtil_SetInputFrameCount +*/ +void PaUtil_Set2ndInputFrameCount( PaUtilBufferProcessor* bufferProcessor, + unsigned long frameCount ); + +/** Use for the second buffer half when the input buffer is split in two halves. + @see PaUtil_SetInputChannel +*/ +void PaUtil_Set2ndInputChannel( PaUtilBufferProcessor* bufferProcessor, + unsigned int channel, void *data, unsigned int stride ); + +/** Use for the second buffer half when the input buffer is split in two halves. + @see PaUtil_SetInterleavedInputChannels +*/ +void PaUtil_Set2ndInterleavedInputChannels( PaUtilBufferProcessor* bufferProcessor, + unsigned int firstChannel, void *data, unsigned int channelCount ); + +/** Use for the second buffer half when the input buffer is split in two halves. + @see PaUtil_SetNonInterleavedInputChannel +*/ +void PaUtil_Set2ndNonInterleavedInputChannel( PaUtilBufferProcessor* bufferProcessor, + unsigned int channel, void *data ); + + +/** Set the number of frames in the output host buffer(s) specified by the + PaUtil_Set*OutputChannel functions. + + @param bufferProcessor The buffer processor. + + @param frameCount The number of host output frames. A 0 frameCount indicates to + use the framesPerHostBuffer value passed to PaUtil_InitializeBufferProcessor. + + @see PaUtil_SetOutputChannel, PaUtil_SetInterleavedOutputChannels, + PaUtil_SetNonInterleavedOutputChannel +*/ +void PaUtil_SetOutputFrameCount( PaUtilBufferProcessor* bufferProcessor, + unsigned long frameCount ); + + +/** Indicate that the output will be discarded. This function should be used + when implementing the paNeverDropInput mode for full duplex streams. + + @param bufferProcessor The buffer processor. +*/ +void PaUtil_SetNoOutput( PaUtilBufferProcessor* bufferProcessor ); + + +/** Provide the buffer processor with a pointer to a host output channel. + + @param bufferProcessor The buffer processor. + @param channel The channel number. + @param data The buffer. + @param stride The stride from one sample to the next, in samples. For + interleaved host buffers, the stride will usually be the same as the number of + channels in the buffer. +*/ +void PaUtil_SetOutputChannel( PaUtilBufferProcessor* bufferProcessor, + unsigned int channel, void *data, unsigned int stride ); + + +/** Provide the buffer processor with a pointer to a number of interleaved + host output channels. + + @param bufferProcessor The buffer processor. + @param firstChannel The first channel number. + @param data The buffer. + @param channelCount The number of interleaved channels in the buffer. If + channelCount is zero, the number of channels specified to + PaUtil_InitializeBufferProcessor will be used. +*/ +void PaUtil_SetInterleavedOutputChannels( PaUtilBufferProcessor* bufferProcessor, + unsigned int firstChannel, void *data, unsigned int channelCount ); + + +/** Provide the buffer processor with a pointer to one non-interleaved host + output channel. + + @param bufferProcessor The buffer processor. + @param channel The channel number. + @param data The buffer. +*/ +void PaUtil_SetNonInterleavedOutputChannel( PaUtilBufferProcessor* bufferProcessor, + unsigned int channel, void *data ); + + +/** Use for the second buffer half when the output buffer is split in two halves. + @see PaUtil_SetOutputFrameCount +*/ +void PaUtil_Set2ndOutputFrameCount( PaUtilBufferProcessor* bufferProcessor, + unsigned long frameCount ); + +/** Use for the second buffer half when the output buffer is split in two halves. + @see PaUtil_SetOutputChannel +*/ +void PaUtil_Set2ndOutputChannel( PaUtilBufferProcessor* bufferProcessor, + unsigned int channel, void *data, unsigned int stride ); + +/** Use for the second buffer half when the output buffer is split in two halves. + @see PaUtil_SetInterleavedOutputChannels +*/ +void PaUtil_Set2ndInterleavedOutputChannels( PaUtilBufferProcessor* bufferProcessor, + unsigned int firstChannel, void *data, unsigned int channelCount ); + +/** Use for the second buffer half when the output buffer is split in two halves. + @see PaUtil_SetNonInterleavedOutputChannel +*/ +void PaUtil_Set2ndNonInterleavedOutputChannel( PaUtilBufferProcessor* bufferProcessor, + unsigned int channel, void *data ); + +/*@}*/ + + +/** @name Buffer processing functions for callback streams +*/ +/*@{*/ + +/** Commence processing a host buffer (or a pair of host buffers in the + full-duplex case) for a callback stream. + + @param bufferProcessor The buffer processor. + + @param timeInfo Timing information for the first sample of the host + buffer(s). This information may be adjusted when buffer adaption is being + performed. + + @param callbackStatusFlags Flags indicating whether underruns and overruns + have occurred since the last time the buffer processor was called. +*/ +void PaUtil_BeginBufferProcessing( PaUtilBufferProcessor* bufferProcessor, + PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags callbackStatusFlags ); + + +/** Finish processing a host buffer (or a pair of host buffers in the + full-duplex case) for a callback stream. + + @param bufferProcessor The buffer processor. + + @param callbackResult On input, indicates a previous callback result, and on + exit, the result of the user stream callback, if it is called. + On entry callbackResult should contain one of { paContinue, paComplete, or + paAbort}. If paComplete is passed, the stream callback will not be called + but any audio that was generated by previous stream callbacks will be copied + to the output buffer(s). You can check whether the buffer processor's internal + buffer is empty by calling PaUtil_IsBufferProcessorOutputEmpty. + + If the stream callback is called its result is stored in *callbackResult. If + the stream callback returns paComplete or paAbort, all output buffers will be + full of valid data - some of which may be zeros to acount for data that + wasn't generated by the terminating callback. + + @return The number of frames processed. This usually corresponds to the + number of frames specified by the PaUtil_Set*FrameCount functions, exept in + the paUtilVariableHostBufferSizePartialUsageAllowed buffer size mode when a + smaller value may be returned. +*/ +unsigned long PaUtil_EndBufferProcessing( PaUtilBufferProcessor* bufferProcessor, + int *callbackResult ); + + +/** Determine whether any callback generated output remains in the bufffer + processor's internal buffers. This method may be used to determine when to + continue calling PaUtil_EndBufferProcessing() after the callback has returned + a callbackResult of paComplete. + + @param bufferProcessor The buffer processor. + + @return Returns non-zero when callback generated output remains in the internal + buffer and zero (0) when there internal buffer contains no callback generated + data. +*/ +int PaUtil_IsBufferProcessorOutputEmpty( PaUtilBufferProcessor* bufferProcessor ); + +/*@}*/ + + +/** @name Buffer processing functions for blocking read/write streams +*/ +/*@{*/ + +/** Copy samples from host input channels set up by the PaUtil_Set*InputChannels + functions to a user supplied buffer. This function is intended for use with + blocking read/write streams. Copies the minimum of the number of + user frames (specified by the frameCount parameter) and the number of available + host frames (specified in a previous call to SetInputFrameCount()). + + @param bufferProcessor The buffer processor. + + @param buffer A pointer to the user buffer pointer, or a pointer to a pointer + to an array of user buffer pointers for a non-interleaved stream. It is + important that this parameter points to a copy of the user buffer pointers, + not to the actual user buffer pointers, because this function updates the + pointers before returning. + + @param frameCount The number of frames of data in the buffer(s) pointed to by + the buffer parameter. + + @return The number of frames copied. The buffer pointer(s) pointed to by the + buffer parameter are advanced to point to the frame(s) following the last one + filled. +*/ +unsigned long PaUtil_CopyInput( PaUtilBufferProcessor* bufferProcessor, + void **buffer, unsigned long frameCount ); + + +/* Copy samples from a user supplied buffer to host output channels set up by + the PaUtil_Set*OutputChannels functions. This function is intended for use with + blocking read/write streams. Copies the minimum of the number of + user frames (specified by the frameCount parameter) and the number of + host frames (specified in a previous call to SetOutputFrameCount()). + + @param bufferProcessor The buffer processor. + + @param buffer A pointer to the user buffer pointer, or a pointer to a pointer + to an array of user buffer pointers for a non-interleaved stream. It is + important that this parameter points to a copy of the user buffer pointers, + not to the actual user buffer pointers, because this function updates the + pointers before returning. + + @param frameCount The number of frames of data in the buffer(s) pointed to by + the buffer parameter. + + @return The number of frames copied. The buffer pointer(s) pointed to by the + buffer parameter are advanced to point to the frame(s) following the last one + copied. +*/ +unsigned long PaUtil_CopyOutput( PaUtilBufferProcessor* bufferProcessor, + const void ** buffer, unsigned long frameCount ); + + +/* Zero samples in host output channels set up by the PaUtil_Set*OutputChannels + functions. This function is useful for flushing streams. + Zeros the minimum of frameCount and the number of host frames specified in a + previous call to SetOutputFrameCount(). + + @param bufferProcessor The buffer processor. + + @param frameCount The maximum number of frames to zero. + + @return The number of frames zeroed. +*/ +unsigned long PaUtil_ZeroOutput( PaUtilBufferProcessor* bufferProcessor, + unsigned long frameCount ); + + +/*@}*/ + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* PA_PROCESS_H */ diff --git a/external/portaudio/include/pa_ringbuffer.h b/external/portaudio/include/pa_ringbuffer.h new file mode 100644 index 0000000..0cab3a5 --- /dev/null +++ b/external/portaudio/include/pa_ringbuffer.h @@ -0,0 +1,236 @@ +#ifndef PA_RINGBUFFER_H +#define PA_RINGBUFFER_H +/* + * $Id: pa_ringbuffer.h 1873 2012-10-07 19:00:11Z philburk $ + * Portable Audio I/O Library + * Ring Buffer utility. + * + * Author: Phil Burk, http://www.softsynth.com + * modified for SMP safety on OS X by Bjorn Roche. + * also allowed for const where possible. + * modified for multiple-byte-sized data elements by Sven Fischer + * + * Note that this is safe only for a single-thread reader + * and a single-thread writer. + * + * This program is distributed with the PortAudio Portable Audio Library. + * For more information see: http://www.portaudio.com + * Copyright (c) 1999-2000 Ross Bencina and Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup common_src + @brief Single-reader single-writer lock-free ring buffer + + PaUtilRingBuffer is a ring buffer used to transport samples between + different execution contexts (threads, OS callbacks, interrupt handlers) + without requiring the use of any locks. This only works when there is + a single reader and a single writer (ie. one thread or callback writes + to the ring buffer, another thread or callback reads from it). + + The PaUtilRingBuffer structure manages a ring buffer containing N + elements, where N must be a power of two. An element may be any size + (specified in bytes). + + The memory area used to store the buffer elements must be allocated by + the client prior to calling PaUtil_InitializeRingBuffer() and must outlive + the use of the ring buffer. + + @note The ring buffer functions are not normally exposed in the PortAudio libraries. + If you want to call them then you will need to add pa_ringbuffer.c to your application source code. +*/ + +#if defined(__APPLE__) +#include +typedef int32_t ring_buffer_size_t; +#elif defined( __GNUC__ ) +typedef long ring_buffer_size_t; +#elif (_MSC_VER >= 1400) +typedef long ring_buffer_size_t; +#elif defined(_MSC_VER) || defined(__BORLANDC__) +typedef long ring_buffer_size_t; +#else +typedef long ring_buffer_size_t; +#endif + + + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +typedef struct PaUtilRingBuffer +{ + ring_buffer_size_t bufferSize; /**< Number of elements in FIFO. Power of 2. Set by PaUtil_InitRingBuffer. */ + volatile ring_buffer_size_t writeIndex; /**< Index of next writable element. Set by PaUtil_AdvanceRingBufferWriteIndex. */ + volatile ring_buffer_size_t readIndex; /**< Index of next readable element. Set by PaUtil_AdvanceRingBufferReadIndex. */ + ring_buffer_size_t bigMask; /**< Used for wrapping indices with extra bit to distinguish full/empty. */ + ring_buffer_size_t smallMask; /**< Used for fitting indices to buffer. */ + ring_buffer_size_t elementSizeBytes; /**< Number of bytes per element. */ + char *buffer; /**< Pointer to the buffer containing the actual data. */ +}PaUtilRingBuffer; + +/** Initialize Ring Buffer to empty state ready to have elements written to it. + + @param rbuf The ring buffer. + + @param elementSizeBytes The size of a single data element in bytes. + + @param elementCount The number of elements in the buffer (must be a power of 2). + + @param dataPtr A pointer to a previously allocated area where the data + will be maintained. It must be elementCount*elementSizeBytes long. + + @return -1 if elementCount is not a power of 2, otherwise 0. +*/ +ring_buffer_size_t PaUtil_InitializeRingBuffer( PaUtilRingBuffer *rbuf, ring_buffer_size_t elementSizeBytes, ring_buffer_size_t elementCount, void *dataPtr ); + +/** Reset buffer to empty. Should only be called when buffer is NOT being read or written. + + @param rbuf The ring buffer. +*/ +void PaUtil_FlushRingBuffer( PaUtilRingBuffer *rbuf ); + +/** Retrieve the number of elements available in the ring buffer for writing. + + @param rbuf The ring buffer. + + @return The number of elements available for writing. +*/ +ring_buffer_size_t PaUtil_GetRingBufferWriteAvailable( const PaUtilRingBuffer *rbuf ); + +/** Retrieve the number of elements available in the ring buffer for reading. + + @param rbuf The ring buffer. + + @return The number of elements available for reading. +*/ +ring_buffer_size_t PaUtil_GetRingBufferReadAvailable( const PaUtilRingBuffer *rbuf ); + +/** Write data to the ring buffer. + + @param rbuf The ring buffer. + + @param data The address of new data to write to the buffer. + + @param elementCount The number of elements to be written. + + @return The number of elements written. +*/ +ring_buffer_size_t PaUtil_WriteRingBuffer( PaUtilRingBuffer *rbuf, const void *data, ring_buffer_size_t elementCount ); + +/** Read data from the ring buffer. + + @param rbuf The ring buffer. + + @param data The address where the data should be stored. + + @param elementCount The number of elements to be read. + + @return The number of elements read. +*/ +ring_buffer_size_t PaUtil_ReadRingBuffer( PaUtilRingBuffer *rbuf, void *data, ring_buffer_size_t elementCount ); + +/** Get address of region(s) to which we can write data. + + @param rbuf The ring buffer. + + @param elementCount The number of elements desired. + + @param dataPtr1 The address where the first (or only) region pointer will be + stored. + + @param sizePtr1 The address where the first (or only) region length will be + stored. + + @param dataPtr2 The address where the second region pointer will be stored if + the first region is too small to satisfy elementCount. + + @param sizePtr2 The address where the second region length will be stored if + the first region is too small to satisfy elementCount. + + @return The room available to be written or elementCount, whichever is smaller. +*/ +ring_buffer_size_t PaUtil_GetRingBufferWriteRegions( PaUtilRingBuffer *rbuf, ring_buffer_size_t elementCount, + void **dataPtr1, ring_buffer_size_t *sizePtr1, + void **dataPtr2, ring_buffer_size_t *sizePtr2 ); + +/** Advance the write index to the next location to be written. + + @param rbuf The ring buffer. + + @param elementCount The number of elements to advance. + + @return The new position. +*/ +ring_buffer_size_t PaUtil_AdvanceRingBufferWriteIndex( PaUtilRingBuffer *rbuf, ring_buffer_size_t elementCount ); + +/** Get address of region(s) from which we can read data. + + @param rbuf The ring buffer. + + @param elementCount The number of elements desired. + + @param dataPtr1 The address where the first (or only) region pointer will be + stored. + + @param sizePtr1 The address where the first (or only) region length will be + stored. + + @param dataPtr2 The address where the second region pointer will be stored if + the first region is too small to satisfy elementCount. + + @param sizePtr2 The address where the second region length will be stored if + the first region is too small to satisfy elementCount. + + @return The number of elements available for reading. +*/ +ring_buffer_size_t PaUtil_GetRingBufferReadRegions( PaUtilRingBuffer *rbuf, ring_buffer_size_t elementCount, + void **dataPtr1, ring_buffer_size_t *sizePtr1, + void **dataPtr2, ring_buffer_size_t *sizePtr2 ); + +/** Advance the read index to the next location to be read. + + @param rbuf The ring buffer. + + @param elementCount The number of elements to advance. + + @return The new position. +*/ +ring_buffer_size_t PaUtil_AdvanceRingBufferReadIndex( PaUtilRingBuffer *rbuf, ring_buffer_size_t elementCount ); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* PA_RINGBUFFER_H */ diff --git a/external/portaudio/include/pa_stream.h b/external/portaudio/include/pa_stream.h new file mode 100644 index 0000000..8d707b7 --- /dev/null +++ b/external/portaudio/include/pa_stream.h @@ -0,0 +1,205 @@ +#ifndef PA_STREAM_H +#define PA_STREAM_H +/* + * $Id: pa_stream.h 1339 2008-02-15 07:50:33Z rossb $ + * Portable Audio I/O Library + * stream interface + * + * Based on the Open Source API proposed by Ross Bencina + * Copyright (c) 1999-2008 Ross Bencina, Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup common_src + + @brief Stream interfaces, representation structures and helper functions + used to interface between pa_front.c host API implementations. +*/ + + +#include "portaudio.h" + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +#define PA_STREAM_MAGIC (0x18273645) + + +/** A structure representing an (abstract) interface to a host API. Contains + pointers to functions which implement the interface. + + All PaStreamInterface functions are guaranteed to be called with a non-null, + valid stream parameter. +*/ +typedef struct { + PaError (*Close)( PaStream* stream ); + PaError (*Start)( PaStream *stream ); + PaError (*Stop)( PaStream *stream ); + PaError (*Abort)( PaStream *stream ); + PaError (*IsStopped)( PaStream *stream ); + PaError (*IsActive)( PaStream *stream ); + PaTime (*GetTime)( PaStream *stream ); + double (*GetCpuLoad)( PaStream* stream ); + PaError (*Read)( PaStream* stream, void *buffer, unsigned long frames ); + PaError (*Write)( PaStream* stream, const void *buffer, unsigned long frames ); + signed long (*GetReadAvailable)( PaStream* stream ); + signed long (*GetWriteAvailable)( PaStream* stream ); +} PaUtilStreamInterface; + + +/** Initialize the fields of a PaUtilStreamInterface structure. +*/ +void PaUtil_InitializeStreamInterface( PaUtilStreamInterface *streamInterface, + PaError (*Close)( PaStream* ), + PaError (*Start)( PaStream* ), + PaError (*Stop)( PaStream* ), + PaError (*Abort)( PaStream* ), + PaError (*IsStopped)( PaStream* ), + PaError (*IsActive)( PaStream* ), + PaTime (*GetTime)( PaStream* ), + double (*GetCpuLoad)( PaStream* ), + PaError (*Read)( PaStream* stream, void *buffer, unsigned long frames ), + PaError (*Write)( PaStream* stream, const void *buffer, unsigned long frames ), + signed long (*GetReadAvailable)( PaStream* stream ), + signed long (*GetWriteAvailable)( PaStream* stream ) ); + + +/** Dummy Read function for use in interfaces to a callback based streams. + Pass to the Read parameter of PaUtil_InitializeStreamInterface. + @return An error code indicating that the function has no effect + because the stream is a callback stream. +*/ +PaError PaUtil_DummyRead( PaStream* stream, + void *buffer, + unsigned long frames ); + + +/** Dummy Write function for use in an interfaces to callback based streams. + Pass to the Write parameter of PaUtil_InitializeStreamInterface. + @return An error code indicating that the function has no effect + because the stream is a callback stream. +*/ +PaError PaUtil_DummyWrite( PaStream* stream, + const void *buffer, + unsigned long frames ); + + +/** Dummy GetReadAvailable function for use in interfaces to callback based + streams. Pass to the GetReadAvailable parameter of PaUtil_InitializeStreamInterface. + @return An error code indicating that the function has no effect + because the stream is a callback stream. +*/ +signed long PaUtil_DummyGetReadAvailable( PaStream* stream ); + + +/** Dummy GetWriteAvailable function for use in interfaces to callback based + streams. Pass to the GetWriteAvailable parameter of PaUtil_InitializeStreamInterface. + @return An error code indicating that the function has no effect + because the stream is a callback stream. +*/ +signed long PaUtil_DummyGetWriteAvailable( PaStream* stream ); + + + +/** Dummy GetCpuLoad function for use in an interface to a read/write stream. + Pass to the GetCpuLoad parameter of PaUtil_InitializeStreamInterface. + @return Returns 0. +*/ +double PaUtil_DummyGetCpuLoad( PaStream* stream ); + + +/** Non host specific data for a stream. This data is used by pa_front to + forward to the appropriate functions in the streamInterface structure. +*/ +typedef struct PaUtilStreamRepresentation { + unsigned long magic; /**< set to PA_STREAM_MAGIC */ + struct PaUtilStreamRepresentation *nextOpenStream; /**< field used by multi-api code */ + PaUtilStreamInterface *streamInterface; + PaStreamCallback *streamCallback; + PaStreamFinishedCallback *streamFinishedCallback; + void *userData; + PaStreamInfo streamInfo; +} PaUtilStreamRepresentation; + + +/** Initialize a PaUtilStreamRepresentation structure. + + @see PaUtil_InitializeStreamRepresentation +*/ +void PaUtil_InitializeStreamRepresentation( + PaUtilStreamRepresentation *streamRepresentation, + PaUtilStreamInterface *streamInterface, + PaStreamCallback *streamCallback, + void *userData ); + + +/** Clean up a PaUtilStreamRepresentation structure previously initialized + by a call to PaUtil_InitializeStreamRepresentation. + + @see PaUtil_InitializeStreamRepresentation +*/ +void PaUtil_TerminateStreamRepresentation( PaUtilStreamRepresentation *streamRepresentation ); + + +/** Check that the stream pointer is valid. + + @return Returns paNoError if the stream pointer appears to be OK, otherwise + returns an error indicating the cause of failure. +*/ +PaError PaUtil_ValidateStreamPointer( PaStream *stream ); + + +/** Cast an opaque stream pointer into a pointer to a PaUtilStreamRepresentation. + + @see PaUtilStreamRepresentation +*/ +#define PA_STREAM_REP( stream )\ + ((PaUtilStreamRepresentation*) (stream) ) + + +/** Cast an opaque stream pointer into a pointer to a PaUtilStreamInterface. + + @see PaUtilStreamRepresentation, PaUtilStreamInterface +*/ +#define PA_STREAM_INTERFACE( stream )\ + PA_STREAM_REP( (stream) )->streamInterface + + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* PA_STREAM_H */ diff --git a/external/portaudio/include/pa_trace.h b/external/portaudio/include/pa_trace.h new file mode 100644 index 0000000..612dbf3 --- /dev/null +++ b/external/portaudio/include/pa_trace.h @@ -0,0 +1,117 @@ +#ifndef PA_TRACE_H +#define PA_TRACE_H +/* + * $Id: pa_trace.h 1812 2012-02-14 09:32:57Z robiwan $ + * Portable Audio I/O Library Trace Facility + * Store trace information in real-time for later printing. + * + * Based on the Open Source API proposed by Ross Bencina + * Copyright (c) 1999-2000 Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup common_src + + @brief Real-time safe event trace logging facility for debugging. + + Allows data to be logged to a fixed size trace buffer in a real-time + execution context (such as at interrupt time). Each log entry consists + of a message comprising a string pointer and an int. The trace buffer + may be dumped to stdout later. + + This facility is only active if PA_TRACE_REALTIME_EVENTS is set to 1, + otherwise the trace functions expand to no-ops. + + @fn PaUtil_ResetTraceMessages + @brief Clear the trace buffer. + + @fn PaUtil_AddTraceMessage + @brief Add a message to the trace buffer. A message consists of string and an int. + @param msg The string pointer must remain valid until PaUtil_DumpTraceMessages + is called. As a result, usually only string literals should be passed as + the msg parameter. + + @fn PaUtil_DumpTraceMessages + @brief Print all messages in the trace buffer to stdout and clear the trace buffer. +*/ + +#ifndef PA_TRACE_REALTIME_EVENTS +#define PA_TRACE_REALTIME_EVENTS (0) /**< Set to 1 to enable logging using the trace functions defined below */ +#endif + +#ifndef PA_MAX_TRACE_RECORDS +#define PA_MAX_TRACE_RECORDS (2048) /**< Maximum number of records stored in trace buffer */ +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +#if PA_TRACE_REALTIME_EVENTS + +void PaUtil_ResetTraceMessages(); +void PaUtil_AddTraceMessage( const char *msg, int data ); +void PaUtil_DumpTraceMessages(); + +/* Alternative interface */ + +typedef void* LogHandle; + +int PaUtil_InitializeHighSpeedLog(LogHandle* phLog, unsigned maxSizeInBytes); +void PaUtil_ResetHighSpeedLogTimeRef(LogHandle hLog); +int PaUtil_AddHighSpeedLogMessage(LogHandle hLog, const char* fmt, ...); +void PaUtil_DumpHighSpeedLog(LogHandle hLog, const char* fileName); +void PaUtil_DiscardHighSpeedLog(LogHandle hLog); + +#else + +#define PaUtil_ResetTraceMessages() /* noop */ +#define PaUtil_AddTraceMessage(msg,data) /* noop */ +#define PaUtil_DumpTraceMessages() /* noop */ + +#define PaUtil_InitializeHighSpeedLog(phLog, maxSizeInBytes) (0) +#define PaUtil_ResetHighSpeedLogTimeRef(hLog) +#define PaUtil_AddHighSpeedLogMessage(...) (0) +#define PaUtil_DumpHighSpeedLog(hLog, fileName) +#define PaUtil_DiscardHighSpeedLog(hLog) + +#endif + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* PA_TRACE_H */ diff --git a/external/portaudio/include/pa_util.h b/external/portaudio/include/pa_util.h new file mode 100644 index 0000000..c454ea7 --- /dev/null +++ b/external/portaudio/include/pa_util.h @@ -0,0 +1,159 @@ +#ifndef PA_UTIL_H +#define PA_UTIL_H +/* + * $Id: pa_util.h 1584 2011-02-02 18:58:17Z rossb $ + * Portable Audio I/O Library implementation utilities header + * common implementation utilities and interfaces + * + * Based on the Open Source API proposed by Ross Bencina + * Copyright (c) 1999-2008 Ross Bencina, Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup common_src + + @brief Prototypes for utility functions used by PortAudio implementations. + + Some functions declared here are defined in pa_front.c while others + are implemented separately for each platform. +*/ + + +#include "portaudio.h" + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +struct PaUtilHostApiRepresentation; + + +/** Retrieve a specific host API representation. This function can be used + by implementations to retrieve a pointer to their representation in + host api specific extension functions which aren't passed a rep pointer + by pa_front.c. + + @param hostApi A pointer to a host API represenation pointer. Apon success + this will receive the requested representation pointer. + + @param type A valid host API type identifier. + + @returns An error code. If the result is PaNoError then a pointer to the + requested host API representation will be stored in *hostApi. If the host API + specified by type is not found, this function returns paHostApiNotFound. +*/ +PaError PaUtil_GetHostApiRepresentation( struct PaUtilHostApiRepresentation **hostApi, + PaHostApiTypeId type ); + + +/** Convert a PortAudio device index into a host API specific device index. + @param hostApiDevice Pointer to a device index, on success this will recieve the + converted device index value. + @param device The PortAudio device index to convert. + @param hostApi The host api which the index should be converted for. + + @returns On success returns PaNoError and places the converted index in the + hostApiDevice parameter. +*/ +PaError PaUtil_DeviceIndexToHostApiDeviceIndex( + PaDeviceIndex *hostApiDevice, PaDeviceIndex device, + struct PaUtilHostApiRepresentation *hostApi ); + + +/** Set the host error information returned by Pa_GetLastHostErrorInfo. This + function and the paUnanticipatedHostError error code should be used as a + last resort. Implementors should use existing PA error codes where possible, + or nominate new ones. Note that at it is always better to use + PaUtil_SetLastHostErrorInfo() and paUnanticipatedHostError than to return an + ambiguous or inaccurate PaError code. + + @param hostApiType The host API which encountered the error (ie of the caller) + + @param errorCode The error code returned by the native API function. + + @param errorText A string describing the error. PaUtil_SetLastHostErrorInfo + makes a copy of the string, so it is not necessary for the pointer to remain + valid after the call to PaUtil_SetLastHostErrorInfo() returns. + +*/ +void PaUtil_SetLastHostErrorInfo( PaHostApiTypeId hostApiType, long errorCode, + const char *errorText ); + + + +/* the following functions are implemented in a platform platform specific + .c file +*/ + +/** Allocate size bytes, guaranteed to be aligned to a FIXME byte boundary */ +void *PaUtil_AllocateMemory( long size ); + + +/** Realease block if non-NULL. block may be NULL */ +void PaUtil_FreeMemory( void *block ); + + +/** Return the number of currently allocated blocks. This function can be + used for detecting memory leaks. + + @note Allocations will only be tracked if PA_TRACK_MEMORY is #defined. If + it isn't, this function will always return 0. +*/ +int PaUtil_CountCurrentlyAllocatedBlocks( void ); + + +/** Initialize the clock used by PaUtil_GetTime(). Call this before calling + PaUtil_GetTime. + + @see PaUtil_GetTime +*/ +void PaUtil_InitializeClock( void ); + + +/** Return the system time in seconds. Used to implement CPU load functions + + @see PaUtil_InitializeClock +*/ +double PaUtil_GetTime( void ); + + +/* void Pa_Sleep( long msec ); must also be implemented in per-platform .c file */ + + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* PA_UTIL_H */ diff --git a/external/portaudio/include/pa_win_ds.h b/external/portaudio/include/pa_win_ds.h new file mode 100644 index 0000000..5d38641 --- /dev/null +++ b/external/portaudio/include/pa_win_ds.h @@ -0,0 +1,95 @@ +#ifndef PA_WIN_DS_H +#define PA_WIN_DS_H +/* + * $Id: $ + * PortAudio Portable Real-Time Audio Library + * DirectSound specific extensions + * + * Copyright (c) 1999-2007 Ross Bencina and Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup public_header + @brief DirectSound-specific PortAudio API extension header file. +*/ + +#include "portaudio.h" +#include "pa_win_waveformat.h" + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +#define paWinDirectSoundUseLowLevelLatencyParameters (0x01) +#define paWinDirectSoundUseChannelMask (0x04) + + +typedef struct PaWinDirectSoundStreamInfo{ + unsigned long size; /**< sizeof(PaWinDirectSoundStreamInfo) */ + PaHostApiTypeId hostApiType; /**< paDirectSound */ + unsigned long version; /**< 2 */ + + unsigned long flags; /**< enable other features of this struct */ + + /** + low-level latency setting support + Sets the size of the DirectSound host buffer. + When flags contains the paWinDirectSoundUseLowLevelLatencyParameters + this size will be used instead of interpreting the generic latency + parameters to Pa_OpenStream(). If the flag is not set this value is ignored. + + If the stream is a full duplex stream the implementation requires that + the values of framesPerBuffer for input and output match (if both are specified). + */ + unsigned long framesPerBuffer; + + /** + support for WAVEFORMATEXTENSIBLE channel masks. If flags contains + paWinDirectSoundUseChannelMask this allows you to specify which speakers + to address in a multichannel stream. Constants for channelMask + are specified in pa_win_waveformat.h + + */ + PaWinWaveFormatChannelMask channelMask; + +}PaWinDirectSoundStreamInfo; + + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* PA_WIN_DS_H */ diff --git a/external/portaudio/include/pa_win_wasapi.h b/external/portaudio/include/pa_win_wasapi.h new file mode 100644 index 0000000..a60aa04 --- /dev/null +++ b/external/portaudio/include/pa_win_wasapi.h @@ -0,0 +1,391 @@ +#ifndef PA_WIN_WASAPI_H +#define PA_WIN_WASAPI_H +/* + * $Id: $ + * PortAudio Portable Real-Time Audio Library + * DirectSound specific extensions + * + * Copyright (c) 1999-2007 Ross Bencina and Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup public_header + @brief WASAPI-specific PortAudio API extension header file. +*/ + +#include "portaudio.h" +#include "pa_win_waveformat.h" + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +/* Setup flags */ +typedef enum PaWasapiFlags +{ + /* puts WASAPI into exclusive mode */ + paWinWasapiExclusive = (1 << 0), + + /* allows to skip internal PA processing completely */ + paWinWasapiRedirectHostProcessor = (1 << 1), + + /* assigns custom channel mask */ + paWinWasapiUseChannelMask = (1 << 2), + + /* selects non-Event driven method of data read/write + Note: WASAPI Event driven core is capable of 2ms latency!!!, but Polling + method can only provide 15-20ms latency. */ + paWinWasapiPolling = (1 << 3), + + /* forces custom thread priority setting. must be used if PaWasapiStreamInfo::threadPriority + is set to custom value. */ + paWinWasapiThreadPriority = (1 << 4) +} +PaWasapiFlags; +#define paWinWasapiExclusive (paWinWasapiExclusive) +#define paWinWasapiRedirectHostProcessor (paWinWasapiRedirectHostProcessor) +#define paWinWasapiUseChannelMask (paWinWasapiUseChannelMask) +#define paWinWasapiPolling (paWinWasapiPolling) +#define paWinWasapiThreadPriority (paWinWasapiThreadPriority) + + +/* Host processor. Allows to skip internal PA processing completely. + You must set paWinWasapiRedirectHostProcessor flag to PaWasapiStreamInfo::flags member + in order to have host processor redirected to your callback. + Use with caution! inputFrames and outputFrames depend solely on final device setup. + To query maximal values of inputFrames/outputFrames use PaWasapi_GetFramesPerHostBuffer. +*/ +typedef void (*PaWasapiHostProcessorCallback) (void *inputBuffer, long inputFrames, + void *outputBuffer, long outputFrames, + void *userData); + +/* Device role */ +typedef enum PaWasapiDeviceRole +{ + eRoleRemoteNetworkDevice = 0, + eRoleSpeakers, + eRoleLineLevel, + eRoleHeadphones, + eRoleMicrophone, + eRoleHeadset, + eRoleHandset, + eRoleUnknownDigitalPassthrough, + eRoleSPDIF, + eRoleHDMI, + eRoleUnknownFormFactor +} +PaWasapiDeviceRole; + + +/* Jack connection type */ +typedef enum PaWasapiJackConnectionType +{ + eJackConnTypeUnknown, + eJackConnType3Point5mm, + eJackConnTypeQuarter, + eJackConnTypeAtapiInternal, + eJackConnTypeRCA, + eJackConnTypeOptical, + eJackConnTypeOtherDigital, + eJackConnTypeOtherAnalog, + eJackConnTypeMultichannelAnalogDIN, + eJackConnTypeXlrProfessional, + eJackConnTypeRJ11Modem, + eJackConnTypeCombination +} +PaWasapiJackConnectionType; + + +/* Jack geometric location */ +typedef enum PaWasapiJackGeoLocation +{ + eJackGeoLocUnk = 0, + eJackGeoLocRear = 0x1, /* matches EPcxGeoLocation::eGeoLocRear */ + eJackGeoLocFront, + eJackGeoLocLeft, + eJackGeoLocRight, + eJackGeoLocTop, + eJackGeoLocBottom, + eJackGeoLocRearPanel, + eJackGeoLocRiser, + eJackGeoLocInsideMobileLid, + eJackGeoLocDrivebay, + eJackGeoLocHDMI, + eJackGeoLocOutsideMobileLid, + eJackGeoLocATAPI, + eJackGeoLocReserved5, + eJackGeoLocReserved6, +} +PaWasapiJackGeoLocation; + + +/* Jack general location */ +typedef enum PaWasapiJackGenLocation +{ + eJackGenLocPrimaryBox = 0, + eJackGenLocInternal, + eJackGenLocSeparate, + eJackGenLocOther +} +PaWasapiJackGenLocation; + + +/* Jack's type of port */ +typedef enum PaWasapiJackPortConnection +{ + eJackPortConnJack = 0, + eJackPortConnIntegratedDevice, + eJackPortConnBothIntegratedAndJack, + eJackPortConnUnknown +} +PaWasapiJackPortConnection; + + +/* Thread priority */ +typedef enum PaWasapiThreadPriority +{ + eThreadPriorityNone = 0, + eThreadPriorityAudio, //!< Default for Shared mode. + eThreadPriorityCapture, + eThreadPriorityDistribution, + eThreadPriorityGames, + eThreadPriorityPlayback, + eThreadPriorityProAudio, //!< Default for Exclusive mode. + eThreadPriorityWindowManager +} +PaWasapiThreadPriority; + + +/* Stream descriptor. */ +typedef struct PaWasapiJackDescription +{ + unsigned long channelMapping; + unsigned long color; /* derived from macro: #define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16))) */ + PaWasapiJackConnectionType connectionType; + PaWasapiJackGeoLocation geoLocation; + PaWasapiJackGenLocation genLocation; + PaWasapiJackPortConnection portConnection; + unsigned int isConnected; +} +PaWasapiJackDescription; + + +/* Stream descriptor. */ +typedef struct PaWasapiStreamInfo +{ + unsigned long size; /**< sizeof(PaWasapiStreamInfo) */ + PaHostApiTypeId hostApiType; /**< paWASAPI */ + unsigned long version; /**< 1 */ + + unsigned long flags; /**< collection of PaWasapiFlags */ + + /* Support for WAVEFORMATEXTENSIBLE channel masks. If flags contains + paWinWasapiUseChannelMask this allows you to specify which speakers + to address in a multichannel stream. Constants for channelMask + are specified in pa_win_waveformat.h. Will be used only if + paWinWasapiUseChannelMask flag is specified. + */ + PaWinWaveFormatChannelMask channelMask; + + /* Delivers raw data to callback obtained from GetBuffer() methods skipping + internal PortAudio processing inventory completely. userData parameter will + be the same that was passed to Pa_OpenStream method. Will be used only if + paWinWasapiRedirectHostProcessor flag is specified. + */ + PaWasapiHostProcessorCallback hostProcessorOutput; + PaWasapiHostProcessorCallback hostProcessorInput; + + /* Specifies thread priority explicitly. Will be used only if paWinWasapiThreadPriority flag + is specified. + + Please note, if Input/Output streams are opened simultaniously (Full-Duplex mode) + you shall specify same value for threadPriority or othervise one of the values will be used + to setup thread priority. + */ + PaWasapiThreadPriority threadPriority; +} +PaWasapiStreamInfo; + + +/** Returns default sound format for device. Format is represented by PaWinWaveFormat or + WAVEFORMATEXTENSIBLE structure. + + @param pFormat Pointer to PaWinWaveFormat or WAVEFORMATEXTENSIBLE structure. + @param nFormatSize Size of PaWinWaveFormat or WAVEFORMATEXTENSIBLE structure in bytes. + @param nDevice Device index. + + @return Non-negative value indicating the number of bytes copied into format decriptor + or, a PaErrorCode (which are always negative) if PortAudio is not initialized + or an error is encountered. +*/ +int PaWasapi_GetDeviceDefaultFormat( void *pFormat, unsigned int nFormatSize, PaDeviceIndex nDevice ); + + +/** Returns device role (PaWasapiDeviceRole enum). + + @param nDevice device index. + + @return Non-negative value indicating device role or, a PaErrorCode (which are always negative) + if PortAudio is not initialized or an error is encountered. +*/ +int/*PaWasapiDeviceRole*/ PaWasapi_GetDeviceRole( PaDeviceIndex nDevice ); + + +/** Boost thread priority of calling thread (MMCSS). Use it for Blocking Interface only for thread + which makes calls to Pa_WriteStream/Pa_ReadStream. + + @param hTask Handle to pointer to priority task. Must be used with PaWasapi_RevertThreadPriority + method to revert thread priority to initial state. + + @param nPriorityClass Id of thread priority of PaWasapiThreadPriority type. Specifying + eThreadPriorityNone does nothing. + + @return Error code indicating success or failure. + @see PaWasapi_RevertThreadPriority +*/ +PaError PaWasapi_ThreadPriorityBoost( void **hTask, PaWasapiThreadPriority nPriorityClass ); + + +/** Boost thread priority of calling thread (MMCSS). Use it for Blocking Interface only for thread + which makes calls to Pa_WriteStream/Pa_ReadStream. + + @param hTask Task handle obtained by PaWasapi_BoostThreadPriority method. + @return Error code indicating success or failure. + @see PaWasapi_BoostThreadPriority +*/ +PaError PaWasapi_ThreadPriorityRevert( void *hTask ); + + +/** Get number of frames per host buffer. This is maximal value of frames of WASAPI buffer which + can be locked for operations. Use this method as helper to findout maximal values of + inputFrames/outputFrames of PaWasapiHostProcessorCallback. + + @param pStream Pointer to PaStream to query. + @param nInput Pointer to variable to receive number of input frames. Can be NULL. + @param nOutput Pointer to variable to receive number of output frames. Can be NULL. + @return Error code indicating success or failure. + @see PaWasapiHostProcessorCallback +*/ +PaError PaWasapi_GetFramesPerHostBuffer( PaStream *pStream, unsigned int *nInput, unsigned int *nOutput ); + + +/** Get number of jacks associated with a WASAPI device. Use this method to determine if + there are any jacks associated with the provided WASAPI device. Not all audio devices + will support this capability. This is valid for both input and output devices. + @param nDevice device index. + @param jcount Number of jacks is returned in this variable + @return Error code indicating success or failure + @see PaWasapi_GetJackDescription + */ +PaError PaWasapi_GetJackCount(PaDeviceIndex nDevice, int *jcount); + + +/** Get the jack description associated with a WASAPI device and jack number + Before this function is called, use PaWasapi_GetJackCount to determine the + number of jacks associated with device. If jcount is greater than zero, then + each jack from 0 to jcount can be queried with this function to get the jack + description. + @param nDevice device index. + @param jindex Which jack to return information + @param KSJACK_DESCRIPTION This structure filled in on success. + @return Error code indicating success or failure + @see PaWasapi_GetJackCount + */ +PaError PaWasapi_GetJackDescription(PaDeviceIndex nDevice, int jindex, PaWasapiJackDescription *pJackDescription); + + +/* + IMPORTANT: + + WASAPI is implemented for Callback and Blocking interfaces. It supports Shared and Exclusive + share modes. + + Exclusive Mode: + + Exclusive mode allows to deliver audio data directly to hardware bypassing + software mixing. + Exclusive mode is specified by 'paWinWasapiExclusive' flag. + + Callback Interface: + + Provides best audio quality with low latency. Callback interface is implemented in + two versions: + + 1) Event-Driven: + This is the most powerful WASAPI implementation which provides glitch-free + audio at around 3ms latency in Exclusive mode. Lowest possible latency for this mode is + 3 ms for HD Audio class audio chips. For the Shared mode latency can not be + lower than 20 ms. + + 2) Poll-Driven: + Polling is another 2-nd method to operate with WASAPI. It is less efficient than Event-Driven + and provides latency at around 10-13ms. Polling must be used to overcome a system bug + under Windows Vista x64 when application is WOW64(32-bit) and Event-Driven method simply + times out (event handle is never signalled on buffer completion). Please note, such WOW64 bug + does not exist in Vista x86 or Windows 7. + Polling can be setup by speciying 'paWinWasapiPolling' flag. Our WASAPI implementation detects + WOW64 bug and sets 'paWinWasapiPolling' automatically. + + Thread priority: + + Normally thread priority is set automatically and does not require modification. Although + if user wants some tweaking thread priority can be modified by setting 'paWinWasapiThreadPriority' + flag and specifying 'PaWasapiStreamInfo::threadPriority' with value from PaWasapiThreadPriority + enum. + + Blocking Interface: + + Blocking interface is implemented but due to above described Poll-Driven method can not + deliver lowest possible latency. Specifying too low latency in Shared mode will result in + distorted audio although Exclusive mode adds stability. + + Pa_IsFormatSupported: + + To check format with correct Share Mode (Exclusive/Shared) you must supply + PaWasapiStreamInfo with flags paWinWasapiExclusive set through member of + PaStreamParameters::hostApiSpecificStreamInfo structure. + + Pa_OpenStream: + + To set desired Share Mode (Exclusive/Shared) you must supply + PaWasapiStreamInfo with flags paWinWasapiExclusive set through member of + PaStreamParameters::hostApiSpecificStreamInfo structure. +*/ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* PA_WIN_WASAPI_H */ diff --git a/external/portaudio/include/pa_win_waveformat.h b/external/portaudio/include/pa_win_waveformat.h new file mode 100644 index 0000000..2c00267 --- /dev/null +++ b/external/portaudio/include/pa_win_waveformat.h @@ -0,0 +1,199 @@ +#ifndef PA_WIN_WAVEFORMAT_H +#define PA_WIN_WAVEFORMAT_H + +/* + * PortAudio Portable Real-Time Audio Library + * Windows WAVEFORMAT* data structure utilities + * portaudio.h should be included before this file. + * + * Copyright (c) 2007 Ross Bencina + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup public_header + @brief Windows specific PortAudio API extension and utilities header file. +*/ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + The following #defines for speaker channel masks are the same + as those in ksmedia.h, except with PAWIN_ prepended, KSAUDIO_ removed + in some cases, and casts to PaWinWaveFormatChannelMask added. +*/ + +typedef unsigned long PaWinWaveFormatChannelMask; + +/* Speaker Positions: */ +#define PAWIN_SPEAKER_FRONT_LEFT ((PaWinWaveFormatChannelMask)0x1) +#define PAWIN_SPEAKER_FRONT_RIGHT ((PaWinWaveFormatChannelMask)0x2) +#define PAWIN_SPEAKER_FRONT_CENTER ((PaWinWaveFormatChannelMask)0x4) +#define PAWIN_SPEAKER_LOW_FREQUENCY ((PaWinWaveFormatChannelMask)0x8) +#define PAWIN_SPEAKER_BACK_LEFT ((PaWinWaveFormatChannelMask)0x10) +#define PAWIN_SPEAKER_BACK_RIGHT ((PaWinWaveFormatChannelMask)0x20) +#define PAWIN_SPEAKER_FRONT_LEFT_OF_CENTER ((PaWinWaveFormatChannelMask)0x40) +#define PAWIN_SPEAKER_FRONT_RIGHT_OF_CENTER ((PaWinWaveFormatChannelMask)0x80) +#define PAWIN_SPEAKER_BACK_CENTER ((PaWinWaveFormatChannelMask)0x100) +#define PAWIN_SPEAKER_SIDE_LEFT ((PaWinWaveFormatChannelMask)0x200) +#define PAWIN_SPEAKER_SIDE_RIGHT ((PaWinWaveFormatChannelMask)0x400) +#define PAWIN_SPEAKER_TOP_CENTER ((PaWinWaveFormatChannelMask)0x800) +#define PAWIN_SPEAKER_TOP_FRONT_LEFT ((PaWinWaveFormatChannelMask)0x1000) +#define PAWIN_SPEAKER_TOP_FRONT_CENTER ((PaWinWaveFormatChannelMask)0x2000) +#define PAWIN_SPEAKER_TOP_FRONT_RIGHT ((PaWinWaveFormatChannelMask)0x4000) +#define PAWIN_SPEAKER_TOP_BACK_LEFT ((PaWinWaveFormatChannelMask)0x8000) +#define PAWIN_SPEAKER_TOP_BACK_CENTER ((PaWinWaveFormatChannelMask)0x10000) +#define PAWIN_SPEAKER_TOP_BACK_RIGHT ((PaWinWaveFormatChannelMask)0x20000) + +/* Bit mask locations reserved for future use */ +#define PAWIN_SPEAKER_RESERVED ((PaWinWaveFormatChannelMask)0x7FFC0000) + +/* Used to specify that any possible permutation of speaker configurations */ +#define PAWIN_SPEAKER_ALL ((PaWinWaveFormatChannelMask)0x80000000) + +/* DirectSound Speaker Config */ +#define PAWIN_SPEAKER_DIRECTOUT 0 +#define PAWIN_SPEAKER_MONO (PAWIN_SPEAKER_FRONT_CENTER) +#define PAWIN_SPEAKER_STEREO (PAWIN_SPEAKER_FRONT_LEFT | PAWIN_SPEAKER_FRONT_RIGHT) +#define PAWIN_SPEAKER_QUAD (PAWIN_SPEAKER_FRONT_LEFT | PAWIN_SPEAKER_FRONT_RIGHT | \ + PAWIN_SPEAKER_BACK_LEFT | PAWIN_SPEAKER_BACK_RIGHT) +#define PAWIN_SPEAKER_SURROUND (PAWIN_SPEAKER_FRONT_LEFT | PAWIN_SPEAKER_FRONT_RIGHT | \ + PAWIN_SPEAKER_FRONT_CENTER | PAWIN_SPEAKER_BACK_CENTER) +#define PAWIN_SPEAKER_5POINT1 (PAWIN_SPEAKER_FRONT_LEFT | PAWIN_SPEAKER_FRONT_RIGHT | \ + PAWIN_SPEAKER_FRONT_CENTER | PAWIN_SPEAKER_LOW_FREQUENCY | \ + PAWIN_SPEAKER_BACK_LEFT | PAWIN_SPEAKER_BACK_RIGHT) +#define PAWIN_SPEAKER_7POINT1 (PAWIN_SPEAKER_FRONT_LEFT | PAWIN_SPEAKER_FRONT_RIGHT | \ + PAWIN_SPEAKER_FRONT_CENTER | PAWIN_SPEAKER_LOW_FREQUENCY | \ + PAWIN_SPEAKER_BACK_LEFT | PAWIN_SPEAKER_BACK_RIGHT | \ + PAWIN_SPEAKER_FRONT_LEFT_OF_CENTER | PAWIN_SPEAKER_FRONT_RIGHT_OF_CENTER) +#define PAWIN_SPEAKER_5POINT1_SURROUND (PAWIN_SPEAKER_FRONT_LEFT | PAWIN_SPEAKER_FRONT_RIGHT | \ + PAWIN_SPEAKER_FRONT_CENTER | PAWIN_SPEAKER_LOW_FREQUENCY | \ + PAWIN_SPEAKER_SIDE_LEFT | PAWIN_SPEAKER_SIDE_RIGHT) +#define PAWIN_SPEAKER_7POINT1_SURROUND (PAWIN_SPEAKER_FRONT_LEFT | PAWIN_SPEAKER_FRONT_RIGHT | \ + PAWIN_SPEAKER_FRONT_CENTER | PAWIN_SPEAKER_LOW_FREQUENCY | \ + PAWIN_SPEAKER_BACK_LEFT | PAWIN_SPEAKER_BACK_RIGHT | \ + PAWIN_SPEAKER_SIDE_LEFT | PAWIN_SPEAKER_SIDE_RIGHT) +/* + According to the Microsoft documentation: + The following are obsolete 5.1 and 7.1 settings (they lack side speakers). Note this means + that the default 5.1 and 7.1 settings (KSAUDIO_SPEAKER_5POINT1 and KSAUDIO_SPEAKER_7POINT1 are + similarly obsolete but are unchanged for compatibility reasons). +*/ +#define PAWIN_SPEAKER_5POINT1_BACK PAWIN_SPEAKER_5POINT1 +#define PAWIN_SPEAKER_7POINT1_WIDE PAWIN_SPEAKER_7POINT1 + +/* DVD Speaker Positions */ +#define PAWIN_SPEAKER_GROUND_FRONT_LEFT PAWIN_SPEAKER_FRONT_LEFT +#define PAWIN_SPEAKER_GROUND_FRONT_CENTER PAWIN_SPEAKER_FRONT_CENTER +#define PAWIN_SPEAKER_GROUND_FRONT_RIGHT PAWIN_SPEAKER_FRONT_RIGHT +#define PAWIN_SPEAKER_GROUND_REAR_LEFT PAWIN_SPEAKER_BACK_LEFT +#define PAWIN_SPEAKER_GROUND_REAR_RIGHT PAWIN_SPEAKER_BACK_RIGHT +#define PAWIN_SPEAKER_TOP_MIDDLE PAWIN_SPEAKER_TOP_CENTER +#define PAWIN_SPEAKER_SUPER_WOOFER PAWIN_SPEAKER_LOW_FREQUENCY + + +/* + PaWinWaveFormat is defined here to provide compatibility with + compilation environments which don't have headers defining + WAVEFORMATEXTENSIBLE (e.g. older versions of MSVC, Borland C++ etc. + + The fields for WAVEFORMATEX and WAVEFORMATEXTENSIBLE are declared as an + unsigned char array here to avoid clients who include this file having + a dependency on windows.h and mmsystem.h, and also to to avoid having + to write separate packing pragmas for each compiler. +*/ +#define PAWIN_SIZEOF_WAVEFORMATEX 18 +#define PAWIN_SIZEOF_WAVEFORMATEXTENSIBLE (PAWIN_SIZEOF_WAVEFORMATEX + 22) + +typedef struct{ + unsigned char fields[ PAWIN_SIZEOF_WAVEFORMATEXTENSIBLE ]; + unsigned long extraLongForAlignment; /* ensure that compiler aligns struct to DWORD */ +} PaWinWaveFormat; + +/* + WAVEFORMATEXTENSIBLE fields: + + union { + WORD wValidBitsPerSample; + WORD wSamplesPerBlock; + WORD wReserved; + } Samples; + DWORD dwChannelMask; + GUID SubFormat; +*/ + +#define PAWIN_INDEXOF_WVALIDBITSPERSAMPLE (PAWIN_SIZEOF_WAVEFORMATEX+0) +#define PAWIN_INDEXOF_DWCHANNELMASK (PAWIN_SIZEOF_WAVEFORMATEX+2) +#define PAWIN_INDEXOF_SUBFORMAT (PAWIN_SIZEOF_WAVEFORMATEX+6) + + +/* + Valid values to pass for the waveFormatTag PaWin_InitializeWaveFormatEx and + PaWin_InitializeWaveFormatExtensible functions below. These must match + the standard Windows WAVE_FORMAT_* values. +*/ +#define PAWIN_WAVE_FORMAT_PCM (1) +#define PAWIN_WAVE_FORMAT_IEEE_FLOAT (3) +#define PAWIN_WAVE_FORMAT_DOLBY_AC3_SPDIF (0x0092) +#define PAWIN_WAVE_FORMAT_WMA_SPDIF (0x0164) + + +/* + returns PAWIN_WAVE_FORMAT_PCM or PAWIN_WAVE_FORMAT_IEEE_FLOAT + depending on the sampleFormat parameter. +*/ +int PaWin_SampleFormatToLinearWaveFormatTag( PaSampleFormat sampleFormat ); + +/* + Use the following two functions to initialize the waveformat structure. +*/ + +void PaWin_InitializeWaveFormatEx( PaWinWaveFormat *waveFormat, + int numChannels, PaSampleFormat sampleFormat, int waveFormatTag, double sampleRate ); + + +void PaWin_InitializeWaveFormatExtensible( PaWinWaveFormat *waveFormat, + int numChannels, PaSampleFormat sampleFormat, int waveFormatTag, double sampleRate, + PaWinWaveFormatChannelMask channelMask ); + + +/* Map a channel count to a speaker channel mask */ +PaWinWaveFormatChannelMask PaWin_DefaultChannelMask( int numChannels ); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* PA_WIN_WAVEFORMAT_H */ \ No newline at end of file diff --git a/external/portaudio/include/pa_win_wdmks.h b/external/portaudio/include/pa_win_wdmks.h new file mode 100644 index 0000000..9fe9284 --- /dev/null +++ b/external/portaudio/include/pa_win_wdmks.h @@ -0,0 +1,106 @@ +#ifndef PA_WIN_WDMKS_H +#define PA_WIN_WDMKS_H +/* + * $Id: pa_win_wdmks.h 1812 2012-02-14 09:32:57Z robiwan $ + * PortAudio Portable Real-Time Audio Library + * WDM/KS specific extensions + * + * Copyright (c) 1999-2007 Ross Bencina and Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup public_header + @brief WDM Kernel Streaming-specific PortAudio API extension header file. +*/ + + +#include "portaudio.h" + +#include + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + typedef struct PaWinWDMKSInfo{ + unsigned long size; /**< sizeof(PaWinWDMKSInfo) */ + PaHostApiTypeId hostApiType; /**< paWDMKS */ + unsigned long version; /**< 1 */ + + /* The number of packets to use for WaveCyclic devices, range is [2, 8]. Set to zero for default value of 2. */ + unsigned noOfPackets; + } PaWinWDMKSInfo; + + typedef enum PaWDMKSType + { + Type_kNotUsed, + Type_kWaveCyclic, + Type_kWaveRT, + Type_kCnt, + } PaWDMKSType; + + typedef enum PaWDMKSSubType + { + SubType_kUnknown, + SubType_kNotification, + SubType_kPolled, + SubType_kCnt, + } PaWDMKSSubType; + + typedef struct PaWinWDMKSDeviceInfo { + wchar_t filterPath[MAX_PATH]; /**< KS filter path in Unicode! */ + wchar_t topologyPath[MAX_PATH]; /**< Topology filter path in Unicode! */ + PaWDMKSType streamingType; + GUID deviceProductGuid; /**< The product GUID of the device (if supported) */ + } PaWinWDMKSDeviceInfo; + + typedef struct PaWDMKSDirectionSpecificStreamInfo + { + PaDeviceIndex device; + unsigned channels; /**< No of channels the device is opened with */ + unsigned framesPerHostBuffer; /**< No of frames of the device buffer */ + int endpointPinId; /**< Endpoint pin ID (on topology filter if topologyName is not empty) */ + int muxNodeId; /**< Only valid for input */ + PaWDMKSSubType streamingSubType; /**< Not known until device is opened for streaming */ + } PaWDMKSDirectionSpecificStreamInfo; + + typedef struct PaWDMKSSpecificStreamInfo { + PaWDMKSDirectionSpecificStreamInfo input; + PaWDMKSDirectionSpecificStreamInfo output; + } PaWDMKSSpecificStreamInfo; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* PA_WIN_DS_H */ diff --git a/external/portaudio/include/pa_win_wmme.h b/external/portaudio/include/pa_win_wmme.h new file mode 100644 index 0000000..ac5efe7 --- /dev/null +++ b/external/portaudio/include/pa_win_wmme.h @@ -0,0 +1,185 @@ +#ifndef PA_WIN_WMME_H +#define PA_WIN_WMME_H +/* + * $Id: pa_win_wmme.h 1592 2011-02-04 10:41:58Z rossb $ + * PortAudio Portable Real-Time Audio Library + * MME specific extensions + * + * Copyright (c) 1999-2000 Ross Bencina and Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup public_header + @brief WMME-specific PortAudio API extension header file. +*/ + +#include "portaudio.h" +#include "pa_win_waveformat.h" + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +/* The following are flags which can be set in + PaWinMmeStreamInfo's flags field. +*/ + +#define paWinMmeUseLowLevelLatencyParameters (0x01) +#define paWinMmeUseMultipleDevices (0x02) /* use mme specific multiple device feature */ +#define paWinMmeUseChannelMask (0x04) + +/* By default, the mme implementation drops the processing thread's priority + to THREAD_PRIORITY_NORMAL and sleeps the thread if the CPU load exceeds 100% + This flag disables any priority throttling. The processing thread will always + run at THREAD_PRIORITY_TIME_CRITICAL. +*/ +#define paWinMmeDontThrottleOverloadedProcessingThread (0x08) + +/* Flags for non-PCM spdif passthrough. +*/ +#define paWinMmeWaveFormatDolbyAc3Spdif (0x10) +#define paWinMmeWaveFormatWmaSpdif (0x20) + + +typedef struct PaWinMmeDeviceAndChannelCount{ + PaDeviceIndex device; + int channelCount; +}PaWinMmeDeviceAndChannelCount; + + +typedef struct PaWinMmeStreamInfo{ + unsigned long size; /**< sizeof(PaWinMmeStreamInfo) */ + PaHostApiTypeId hostApiType; /**< paMME */ + unsigned long version; /**< 1 */ + + unsigned long flags; + + /* low-level latency setting support + These settings control the number and size of host buffers in order + to set latency. They will be used instead of the generic parameters + to Pa_OpenStream() if flags contains the PaWinMmeUseLowLevelLatencyParameters + flag. + + If PaWinMmeStreamInfo structures with PaWinMmeUseLowLevelLatencyParameters + are supplied for both input and output in a full duplex stream, then the + input and output framesPerBuffer must be the same, or the larger of the + two must be a multiple of the smaller, otherwise a + paIncompatibleHostApiSpecificStreamInfo error will be returned from + Pa_OpenStream(). + */ + unsigned long framesPerBuffer; + unsigned long bufferCount; /* formerly numBuffers */ + + /* multiple devices per direction support + If flags contains the PaWinMmeUseMultipleDevices flag, + this functionality will be used, otherwise the device parameter to + Pa_OpenStream() will be used instead. + If devices are specified here, the corresponding device parameter + to Pa_OpenStream() should be set to paUseHostApiSpecificDeviceSpecification, + otherwise an paInvalidDevice error will result. + The total number of channels accross all specified devices + must agree with the corresponding channelCount parameter to + Pa_OpenStream() otherwise a paInvalidChannelCount error will result. + */ + PaWinMmeDeviceAndChannelCount *devices; + unsigned long deviceCount; + + /* + support for WAVEFORMATEXTENSIBLE channel masks. If flags contains + paWinMmeUseChannelMask this allows you to specify which speakers + to address in a multichannel stream. Constants for channelMask + are specified in pa_win_waveformat.h + + */ + PaWinWaveFormatChannelMask channelMask; + +}PaWinMmeStreamInfo; + + +/** Retrieve the number of wave in handles used by a PortAudio WinMME stream. + Returns zero if the stream is output only. + + @return A non-negative value indicating the number of wave in handles + or, a PaErrorCode (which are always negative) if PortAudio is not initialized + or an error is encountered. + + @see PaWinMME_GetStreamInputHandle +*/ +int PaWinMME_GetStreamInputHandleCount( PaStream* stream ); + + +/** Retrieve a wave in handle used by a PortAudio WinMME stream. + + @param stream The stream to query. + @param handleIndex The zero based index of the wave in handle to retrieve. This + should be in the range [0, PaWinMME_GetStreamInputHandleCount(stream)-1]. + + @return A valid wave in handle, or NULL if an error occurred. + + @see PaWinMME_GetStreamInputHandle +*/ +HWAVEIN PaWinMME_GetStreamInputHandle( PaStream* stream, int handleIndex ); + + +/** Retrieve the number of wave out handles used by a PortAudio WinMME stream. + Returns zero if the stream is input only. + + @return A non-negative value indicating the number of wave out handles + or, a PaErrorCode (which are always negative) if PortAudio is not initialized + or an error is encountered. + + @see PaWinMME_GetStreamOutputHandle +*/ +int PaWinMME_GetStreamOutputHandleCount( PaStream* stream ); + + +/** Retrieve a wave out handle used by a PortAudio WinMME stream. + + @param stream The stream to query. + @param handleIndex The zero based index of the wave out handle to retrieve. + This should be in the range [0, PaWinMME_GetStreamOutputHandleCount(stream)-1]. + + @return A valid wave out handle, or NULL if an error occurred. + + @see PaWinMME_GetStreamOutputHandleCount +*/ +HWAVEOUT PaWinMME_GetStreamOutputHandle( PaStream* stream, int handleIndex ); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* PA_WIN_WMME_H */ diff --git a/external/portaudio/include/portaudio.h b/external/portaudio/include/portaudio.h new file mode 100644 index 0000000..5e11dad --- /dev/null +++ b/external/portaudio/include/portaudio.h @@ -0,0 +1,1174 @@ +#ifndef PORTAUDIO_H +#define PORTAUDIO_H +/* + * $Id: portaudio.h 1859 2012-09-01 00:10:13Z philburk $ + * PortAudio Portable Real-Time Audio Library + * PortAudio API Header File + * Latest version available at: http://www.portaudio.com/ + * + * Copyright (c) 1999-2002 Ross Bencina and Phil Burk + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * The text above constitutes the entire PortAudio license; however, + * the PortAudio community also makes the following non-binding requests: + * + * Any person wishing to distribute modifications to the Software is + * requested to send the modifications to the original developer so that + * they can be incorporated into the canonical version. It is also + * requested that these non-binding requests be included along with the + * license above. + */ + +/** @file + @ingroup public_header + @brief The portable PortAudio API. +*/ + + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +/** Retrieve the release number of the currently running PortAudio build, + eg 1900. +*/ +int Pa_GetVersion( void ); + + +/** Retrieve a textual description of the current PortAudio build, + eg "PortAudio V19-devel 13 October 2002". +*/ +const char* Pa_GetVersionText( void ); + + +/** Error codes returned by PortAudio functions. + Note that with the exception of paNoError, all PaErrorCodes are negative. +*/ + +typedef int PaError; +typedef enum PaErrorCode +{ + paNoError = 0, + + paNotInitialized = -10000, + paUnanticipatedHostError, + paInvalidChannelCount, + paInvalidSampleRate, + paInvalidDevice, + paInvalidFlag, + paSampleFormatNotSupported, + paBadIODeviceCombination, + paInsufficientMemory, + paBufferTooBig, + paBufferTooSmall, + paNullCallback, + paBadStreamPtr, + paTimedOut, + paInternalError, + paDeviceUnavailable, + paIncompatibleHostApiSpecificStreamInfo, + paStreamIsStopped, + paStreamIsNotStopped, + paInputOverflowed, + paOutputUnderflowed, + paHostApiNotFound, + paInvalidHostApi, + paCanNotReadFromACallbackStream, + paCanNotWriteToACallbackStream, + paCanNotReadFromAnOutputOnlyStream, + paCanNotWriteToAnInputOnlyStream, + paIncompatibleStreamHostApi, + paBadBufferPtr +} PaErrorCode; + + +/** Translate the supplied PortAudio error code into a human readable + message. +*/ +const char *Pa_GetErrorText( PaError errorCode ); + + +/** Library initialization function - call this before using PortAudio. + This function initializes internal data structures and prepares underlying + host APIs for use. With the exception of Pa_GetVersion(), Pa_GetVersionText(), + and Pa_GetErrorText(), this function MUST be called before using any other + PortAudio API functions. + + If Pa_Initialize() is called multiple times, each successful + call must be matched with a corresponding call to Pa_Terminate(). + Pairs of calls to Pa_Initialize()/Pa_Terminate() may overlap, and are not + required to be fully nested. + + Note that if Pa_Initialize() returns an error code, Pa_Terminate() should + NOT be called. + + @return paNoError if successful, otherwise an error code indicating the cause + of failure. + + @see Pa_Terminate +*/ +PaError Pa_Initialize( void ); + + +/** Library termination function - call this when finished using PortAudio. + This function deallocates all resources allocated by PortAudio since it was + initialized by a call to Pa_Initialize(). In cases where Pa_Initialise() has + been called multiple times, each call must be matched with a corresponding call + to Pa_Terminate(). The final matching call to Pa_Terminate() will automatically + close any PortAudio streams that are still open. + + Pa_Terminate() MUST be called before exiting a program which uses PortAudio. + Failure to do so may result in serious resource leaks, such as audio devices + not being available until the next reboot. + + @return paNoError if successful, otherwise an error code indicating the cause + of failure. + + @see Pa_Initialize +*/ +PaError Pa_Terminate( void ); + + + +/** The type used to refer to audio devices. Values of this type usually + range from 0 to (Pa_GetDeviceCount()-1), and may also take on the PaNoDevice + and paUseHostApiSpecificDeviceSpecification values. + + @see Pa_GetDeviceCount, paNoDevice, paUseHostApiSpecificDeviceSpecification +*/ +typedef int PaDeviceIndex; + + +/** A special PaDeviceIndex value indicating that no device is available, + or should be used. + + @see PaDeviceIndex +*/ +#define paNoDevice ((PaDeviceIndex)-1) + + +/** A special PaDeviceIndex value indicating that the device(s) to be used + are specified in the host api specific stream info structure. + + @see PaDeviceIndex +*/ +#define paUseHostApiSpecificDeviceSpecification ((PaDeviceIndex)-2) + + +/* Host API enumeration mechanism */ + +/** The type used to enumerate to host APIs at runtime. Values of this type + range from 0 to (Pa_GetHostApiCount()-1). + + @see Pa_GetHostApiCount +*/ +typedef int PaHostApiIndex; + + +/** Retrieve the number of available host APIs. Even if a host API is + available it may have no devices available. + + @return A non-negative value indicating the number of available host APIs + or, a PaErrorCode (which are always negative) if PortAudio is not initialized + or an error is encountered. + + @see PaHostApiIndex +*/ +PaHostApiIndex Pa_GetHostApiCount( void ); + + +/** Retrieve the index of the default host API. The default host API will be + the lowest common denominator host API on the current platform and is + unlikely to provide the best performance. + + @return A non-negative value ranging from 0 to (Pa_GetHostApiCount()-1) + indicating the default host API index or, a PaErrorCode (which are always + negative) if PortAudio is not initialized or an error is encountered. +*/ +PaHostApiIndex Pa_GetDefaultHostApi( void ); + + +/** Unchanging unique identifiers for each supported host API. This type + is used in the PaHostApiInfo structure. The values are guaranteed to be + unique and to never change, thus allowing code to be written that + conditionally uses host API specific extensions. + + New type ids will be allocated when support for a host API reaches + "public alpha" status, prior to that developers should use the + paInDevelopment type id. + + @see PaHostApiInfo +*/ +typedef enum PaHostApiTypeId +{ + paInDevelopment=0, /* use while developing support for a new host API */ + paDirectSound=1, + paMME=2, + paASIO=3, + paSoundManager=4, + paCoreAudio=5, + paOSS=7, + paALSA=8, + paAL=9, + paBeOS=10, + paWDMKS=11, + paJACK=12, + paWASAPI=13, + paAudioScienceHPI=14 +} PaHostApiTypeId; + + +/** A structure containing information about a particular host API. */ + +typedef struct PaHostApiInfo +{ + /** this is struct version 1 */ + int structVersion; + /** The well known unique identifier of this host API @see PaHostApiTypeId */ + PaHostApiTypeId type; + /** A textual description of the host API for display on user interfaces. */ + const char *name; + + /** The number of devices belonging to this host API. This field may be + used in conjunction with Pa_HostApiDeviceIndexToDeviceIndex() to enumerate + all devices for this host API. + @see Pa_HostApiDeviceIndexToDeviceIndex + */ + int deviceCount; + + /** The default input device for this host API. The value will be a + device index ranging from 0 to (Pa_GetDeviceCount()-1), or paNoDevice + if no default input device is available. + */ + PaDeviceIndex defaultInputDevice; + + /** The default output device for this host API. The value will be a + device index ranging from 0 to (Pa_GetDeviceCount()-1), or paNoDevice + if no default output device is available. + */ + PaDeviceIndex defaultOutputDevice; + +} PaHostApiInfo; + + +/** Retrieve a pointer to a structure containing information about a specific + host Api. + + @param hostApi A valid host API index ranging from 0 to (Pa_GetHostApiCount()-1) + + @return A pointer to an immutable PaHostApiInfo structure describing + a specific host API. If the hostApi parameter is out of range or an error + is encountered, the function returns NULL. + + The returned structure is owned by the PortAudio implementation and must not + be manipulated or freed. The pointer is only guaranteed to be valid between + calls to Pa_Initialize() and Pa_Terminate(). +*/ +const PaHostApiInfo * Pa_GetHostApiInfo( PaHostApiIndex hostApi ); + + +/** Convert a static host API unique identifier, into a runtime + host API index. + + @param type A unique host API identifier belonging to the PaHostApiTypeId + enumeration. + + @return A valid PaHostApiIndex ranging from 0 to (Pa_GetHostApiCount()-1) or, + a PaErrorCode (which are always negative) if PortAudio is not initialized + or an error is encountered. + + The paHostApiNotFound error code indicates that the host API specified by the + type parameter is not available. + + @see PaHostApiTypeId +*/ +PaHostApiIndex Pa_HostApiTypeIdToHostApiIndex( PaHostApiTypeId type ); + + +/** Convert a host-API-specific device index to standard PortAudio device index. + This function may be used in conjunction with the deviceCount field of + PaHostApiInfo to enumerate all devices for the specified host API. + + @param hostApi A valid host API index ranging from 0 to (Pa_GetHostApiCount()-1) + + @param hostApiDeviceIndex A valid per-host device index in the range + 0 to (Pa_GetHostApiInfo(hostApi)->deviceCount-1) + + @return A non-negative PaDeviceIndex ranging from 0 to (Pa_GetDeviceCount()-1) + or, a PaErrorCode (which are always negative) if PortAudio is not initialized + or an error is encountered. + + A paInvalidHostApi error code indicates that the host API index specified by + the hostApi parameter is out of range. + + A paInvalidDevice error code indicates that the hostApiDeviceIndex parameter + is out of range. + + @see PaHostApiInfo +*/ +PaDeviceIndex Pa_HostApiDeviceIndexToDeviceIndex( PaHostApiIndex hostApi, + int hostApiDeviceIndex ); + + + +/** Structure used to return information about a host error condition. +*/ +typedef struct PaHostErrorInfo{ + PaHostApiTypeId hostApiType; /**< the host API which returned the error code */ + long errorCode; /**< the error code returned */ + const char *errorText; /**< a textual description of the error if available, otherwise a zero-length string */ +}PaHostErrorInfo; + + +/** Return information about the last host error encountered. The error + information returned by Pa_GetLastHostErrorInfo() will never be modified + asynchronously by errors occurring in other PortAudio owned threads + (such as the thread that manages the stream callback.) + + This function is provided as a last resort, primarily to enhance debugging + by providing clients with access to all available error information. + + @return A pointer to an immutable structure constraining information about + the host error. The values in this structure will only be valid if a + PortAudio function has previously returned the paUnanticipatedHostError + error code. +*/ +const PaHostErrorInfo* Pa_GetLastHostErrorInfo( void ); + + + +/* Device enumeration and capabilities */ + +/** Retrieve the number of available devices. The number of available devices + may be zero. + + @return A non-negative value indicating the number of available devices or, + a PaErrorCode (which are always negative) if PortAudio is not initialized + or an error is encountered. +*/ +PaDeviceIndex Pa_GetDeviceCount( void ); + + +/** Retrieve the index of the default input device. The result can be + used in the inputDevice parameter to Pa_OpenStream(). + + @return The default input device index for the default host API, or paNoDevice + if no default input device is available or an error was encountered. +*/ +PaDeviceIndex Pa_GetDefaultInputDevice( void ); + + +/** Retrieve the index of the default output device. The result can be + used in the outputDevice parameter to Pa_OpenStream(). + + @return The default output device index for the default host API, or paNoDevice + if no default output device is available or an error was encountered. + + @note + On the PC, the user can specify a default device by + setting an environment variable. For example, to use device #1. +
+ set PA_RECOMMENDED_OUTPUT_DEVICE=1
+
+ The user should first determine the available device ids by using + the supplied application "pa_devs". +*/ +PaDeviceIndex Pa_GetDefaultOutputDevice( void ); + + +/** The type used to represent monotonic time in seconds. PaTime is + used for the fields of the PaStreamCallbackTimeInfo argument to the + PaStreamCallback and as the result of Pa_GetStreamTime(). + + PaTime values have unspecified origin. + + @see PaStreamCallback, PaStreamCallbackTimeInfo, Pa_GetStreamTime +*/ +typedef double PaTime; + + +/** A type used to specify one or more sample formats. Each value indicates + a possible format for sound data passed to and from the stream callback, + Pa_ReadStream and Pa_WriteStream. + + The standard formats paFloat32, paInt16, paInt32, paInt24, paInt8 + and aUInt8 are usually implemented by all implementations. + + The floating point representation (paFloat32) uses +1.0 and -1.0 as the + maximum and minimum respectively. + + paUInt8 is an unsigned 8 bit format where 128 is considered "ground" + + The paNonInterleaved flag indicates that audio data is passed as an array + of pointers to separate buffers, one buffer for each channel. Usually, + when this flag is not used, audio data is passed as a single buffer with + all channels interleaved. + + @see Pa_OpenStream, Pa_OpenDefaultStream, PaDeviceInfo + @see paFloat32, paInt16, paInt32, paInt24, paInt8 + @see paUInt8, paCustomFormat, paNonInterleaved +*/ +typedef unsigned long PaSampleFormat; + + +#define paFloat32 ((PaSampleFormat) 0x00000001) /**< @see PaSampleFormat */ +#define paInt32 ((PaSampleFormat) 0x00000002) /**< @see PaSampleFormat */ +#define paInt24 ((PaSampleFormat) 0x00000004) /**< Packed 24 bit format. @see PaSampleFormat */ +#define paInt16 ((PaSampleFormat) 0x00000008) /**< @see PaSampleFormat */ +#define paInt8 ((PaSampleFormat) 0x00000010) /**< @see PaSampleFormat */ +#define paUInt8 ((PaSampleFormat) 0x00000020) /**< @see PaSampleFormat */ +#define paCustomFormat ((PaSampleFormat) 0x00010000) /**< @see PaSampleFormat */ + +#define paNonInterleaved ((PaSampleFormat) 0x80000000) /**< @see PaSampleFormat */ + +/** A structure providing information and capabilities of PortAudio devices. + Devices may support input, output or both input and output. +*/ +typedef struct PaDeviceInfo +{ + int structVersion; /* this is struct version 2 */ + const char *name; + PaHostApiIndex hostApi; /**< note this is a host API index, not a type id*/ + + int maxInputChannels; + int maxOutputChannels; + + /** Default latency values for interactive performance. */ + PaTime defaultLowInputLatency; + PaTime defaultLowOutputLatency; + /** Default latency values for robust non-interactive applications (eg. playing sound files). */ + PaTime defaultHighInputLatency; + PaTime defaultHighOutputLatency; + + double defaultSampleRate; +} PaDeviceInfo; + + +/** Retrieve a pointer to a PaDeviceInfo structure containing information + about the specified device. + @return A pointer to an immutable PaDeviceInfo structure. If the device + parameter is out of range the function returns NULL. + + @param device A valid device index in the range 0 to (Pa_GetDeviceCount()-1) + + @note PortAudio manages the memory referenced by the returned pointer, + the client must not manipulate or free the memory. The pointer is only + guaranteed to be valid between calls to Pa_Initialize() and Pa_Terminate(). + + @see PaDeviceInfo, PaDeviceIndex +*/ +const PaDeviceInfo* Pa_GetDeviceInfo( PaDeviceIndex device ); + + +/** Parameters for one direction (input or output) of a stream. +*/ +typedef struct PaStreamParameters +{ + /** A valid device index in the range 0 to (Pa_GetDeviceCount()-1) + specifying the device to be used or the special constant + paUseHostApiSpecificDeviceSpecification which indicates that the actual + device(s) to use are specified in hostApiSpecificStreamInfo. + This field must not be set to paNoDevice. + */ + PaDeviceIndex device; + + /** The number of channels of sound to be delivered to the + stream callback or accessed by Pa_ReadStream() or Pa_WriteStream(). + It can range from 1 to the value of maxInputChannels in the + PaDeviceInfo record for the device specified by the device parameter. + */ + int channelCount; + + /** The sample format of the buffer provided to the stream callback, + a_ReadStream() or Pa_WriteStream(). It may be any of the formats described + by the PaSampleFormat enumeration. + */ + PaSampleFormat sampleFormat; + + /** The desired latency in seconds. Where practical, implementations should + configure their latency based on these parameters, otherwise they may + choose the closest viable latency instead. Unless the suggested latency + is greater than the absolute upper limit for the device implementations + should round the suggestedLatency up to the next practical value - ie to + provide an equal or higher latency than suggestedLatency wherever possible. + Actual latency values for an open stream may be retrieved using the + inputLatency and outputLatency fields of the PaStreamInfo structure + returned by Pa_GetStreamInfo(). + @see default*Latency in PaDeviceInfo, *Latency in PaStreamInfo + */ + PaTime suggestedLatency; + + /** An optional pointer to a host api specific data structure + containing additional information for device setup and/or stream processing. + hostApiSpecificStreamInfo is never required for correct operation, + if not used it should be set to NULL. + */ + void *hostApiSpecificStreamInfo; + +} PaStreamParameters; + + +/** Return code for Pa_IsFormatSupported indicating success. */ +#define paFormatIsSupported (0) + +/** Determine whether it would be possible to open a stream with the specified + parameters. + + @param inputParameters A structure that describes the input parameters used to + open a stream. The suggestedLatency field is ignored. See PaStreamParameters + for a description of these parameters. inputParameters must be NULL for + output-only streams. + + @param outputParameters A structure that describes the output parameters used + to open a stream. The suggestedLatency field is ignored. See PaStreamParameters + for a description of these parameters. outputParameters must be NULL for + input-only streams. + + @param sampleRate The required sampleRate. For full-duplex streams it is the + sample rate for both input and output + + @return Returns 0 if the format is supported, and an error code indicating why + the format is not supported otherwise. The constant paFormatIsSupported is + provided to compare with the return value for success. + + @see paFormatIsSupported, PaStreamParameters +*/ +PaError Pa_IsFormatSupported( const PaStreamParameters *inputParameters, + const PaStreamParameters *outputParameters, + double sampleRate ); + + + +/* Streaming types and functions */ + + +/** + A single PaStream can provide multiple channels of real-time + streaming audio input and output to a client application. A stream + provides access to audio hardware represented by one or more + PaDevices. Depending on the underlying Host API, it may be possible + to open multiple streams using the same device, however this behavior + is implementation defined. Portable applications should assume that + a PaDevice may be simultaneously used by at most one PaStream. + + Pointers to PaStream objects are passed between PortAudio functions that + operate on streams. + + @see Pa_OpenStream, Pa_OpenDefaultStream, Pa_OpenDefaultStream, Pa_CloseStream, + Pa_StartStream, Pa_StopStream, Pa_AbortStream, Pa_IsStreamActive, + Pa_GetStreamTime, Pa_GetStreamCpuLoad + +*/ +typedef void PaStream; + + +/** Can be passed as the framesPerBuffer parameter to Pa_OpenStream() + or Pa_OpenDefaultStream() to indicate that the stream callback will + accept buffers of any size. +*/ +#define paFramesPerBufferUnspecified (0) + + +/** Flags used to control the behavior of a stream. They are passed as + parameters to Pa_OpenStream or Pa_OpenDefaultStream. Multiple flags may be + ORed together. + + @see Pa_OpenStream, Pa_OpenDefaultStream + @see paNoFlag, paClipOff, paDitherOff, paNeverDropInput, + paPrimeOutputBuffersUsingStreamCallback, paPlatformSpecificFlags +*/ +typedef unsigned long PaStreamFlags; + +/** @see PaStreamFlags */ +#define paNoFlag ((PaStreamFlags) 0) + +/** Disable default clipping of out of range samples. + @see PaStreamFlags +*/ +#define paClipOff ((PaStreamFlags) 0x00000001) + +/** Disable default dithering. + @see PaStreamFlags +*/ +#define paDitherOff ((PaStreamFlags) 0x00000002) + +/** Flag requests that where possible a full duplex stream will not discard + overflowed input samples without calling the stream callback. This flag is + only valid for full duplex callback streams and only when used in combination + with the paFramesPerBufferUnspecified (0) framesPerBuffer parameter. Using + this flag incorrectly results in a paInvalidFlag error being returned from + Pa_OpenStream and Pa_OpenDefaultStream. + + @see PaStreamFlags, paFramesPerBufferUnspecified +*/ +#define paNeverDropInput ((PaStreamFlags) 0x00000004) + +/** Call the stream callback to fill initial output buffers, rather than the + default behavior of priming the buffers with zeros (silence). This flag has + no effect for input-only and blocking read/write streams. + + @see PaStreamFlags +*/ +#define paPrimeOutputBuffersUsingStreamCallback ((PaStreamFlags) 0x00000008) + +/** A mask specifying the platform specific bits. + @see PaStreamFlags +*/ +#define paPlatformSpecificFlags ((PaStreamFlags)0xFFFF0000) + +/** + Timing information for the buffers passed to the stream callback. + + Time values are expressed in seconds and are synchronised with the time base used by Pa_GetStreamTime() for the associated stream. + + @see PaStreamCallback, Pa_GetStreamTime +*/ +typedef struct PaStreamCallbackTimeInfo{ + PaTime inputBufferAdcTime; /**< The time when the first sample of the input buffer was captured at the ADC input */ + PaTime currentTime; /**< The time when the stream callback was invoked */ + PaTime outputBufferDacTime; /**< The time when the first sample of the output buffer will output the DAC */ +} PaStreamCallbackTimeInfo; + + +/** + Flag bit constants for the statusFlags to PaStreamCallback. + + @see paInputUnderflow, paInputOverflow, paOutputUnderflow, paOutputOverflow, + paPrimingOutput +*/ +typedef unsigned long PaStreamCallbackFlags; + +/** In a stream opened with paFramesPerBufferUnspecified, indicates that + input data is all silence (zeros) because no real data is available. In a + stream opened without paFramesPerBufferUnspecified, it indicates that one or + more zero samples have been inserted into the input buffer to compensate + for an input underflow. + @see PaStreamCallbackFlags +*/ +#define paInputUnderflow ((PaStreamCallbackFlags) 0x00000001) + +/** In a stream opened with paFramesPerBufferUnspecified, indicates that data + prior to the first sample of the input buffer was discarded due to an + overflow, possibly because the stream callback is using too much CPU time. + Otherwise indicates that data prior to one or more samples in the + input buffer was discarded. + @see PaStreamCallbackFlags +*/ +#define paInputOverflow ((PaStreamCallbackFlags) 0x00000002) + +/** Indicates that output data (or a gap) was inserted, possibly because the + stream callback is using too much CPU time. + @see PaStreamCallbackFlags +*/ +#define paOutputUnderflow ((PaStreamCallbackFlags) 0x00000004) + +/** Indicates that output data will be discarded because no room is available. + @see PaStreamCallbackFlags +*/ +#define paOutputOverflow ((PaStreamCallbackFlags) 0x00000008) + +/** Some of all of the output data will be used to prime the stream, input + data may be zero. + @see PaStreamCallbackFlags +*/ +#define paPrimingOutput ((PaStreamCallbackFlags) 0x00000010) + +/** + Allowable return values for the PaStreamCallback. + @see PaStreamCallback +*/ +typedef enum PaStreamCallbackResult +{ + paContinue=0, /**< Signal that the stream should continue invoking the callback and processing audio. */ + paComplete=1, /**< Signal that the stream should stop invoking the callback and finish once all output samples have played. */ + paAbort=2 /**< Signal that the stream should stop invoking the callback and finish as soon as possible. */ +} PaStreamCallbackResult; + + +/** + Functions of type PaStreamCallback are implemented by PortAudio clients. + They consume, process or generate audio in response to requests from an + active PortAudio stream. + + When a stream is running, PortAudio calls the stream callback periodically. + The callback function is responsible for processing buffers of audio samples + passed via the input and output parameters. + + The PortAudio stream callback runs at very high or real-time priority. + It is required to consistently meet its time deadlines. Do not allocate + memory, access the file system, call library functions or call other functions + from the stream callback that may block or take an unpredictable amount of + time to complete. + + In order for a stream to maintain glitch-free operation the callback + must consume and return audio data faster than it is recorded and/or + played. PortAudio anticipates that each callback invocation may execute for + a duration approaching the duration of frameCount audio frames at the stream + sample rate. It is reasonable to expect to be able to utilise 70% or more of + the available CPU time in the PortAudio callback. However, due to buffer size + adaption and other factors, not all host APIs are able to guarantee audio + stability under heavy CPU load with arbitrary fixed callback buffer sizes. + When high callback CPU utilisation is required the most robust behavior + can be achieved by using paFramesPerBufferUnspecified as the + Pa_OpenStream() framesPerBuffer parameter. + + @param input and @param output are either arrays of interleaved samples or; + if non-interleaved samples were requested using the paNonInterleaved sample + format flag, an array of buffer pointers, one non-interleaved buffer for + each channel. + + The format, packing and number of channels used by the buffers are + determined by parameters to Pa_OpenStream(). + + @param frameCount The number of sample frames to be processed by + the stream callback. + + @param timeInfo Timestamps indicating the ADC capture time of the first sample + in the input buffer, the DAC output time of the first sample in the output buffer + and the time the callback was invoked. + See PaStreamCallbackTimeInfo and Pa_GetStreamTime() + + @param statusFlags Flags indicating whether input and/or output buffers + have been inserted or will be dropped to overcome underflow or overflow + conditions. + + @param userData The value of a user supplied pointer passed to + Pa_OpenStream() intended for storing synthesis data etc. + + @return + The stream callback should return one of the values in the + ::PaStreamCallbackResult enumeration. To ensure that the callback continues + to be called, it should return paContinue (0). Either paComplete or paAbort + can be returned to finish stream processing, after either of these values is + returned the callback will not be called again. If paAbort is returned the + stream will finish as soon as possible. If paComplete is returned, the stream + will continue until all buffers generated by the callback have been played. + This may be useful in applications such as soundfile players where a specific + duration of output is required. However, it is not necessary to utilize this + mechanism as Pa_StopStream(), Pa_AbortStream() or Pa_CloseStream() can also + be used to stop the stream. The callback must always fill the entire output + buffer irrespective of its return value. + + @see Pa_OpenStream, Pa_OpenDefaultStream + + @note With the exception of Pa_GetStreamCpuLoad() it is not permissible to call + PortAudio API functions from within the stream callback. +*/ +typedef int PaStreamCallback( + const void *input, void *output, + unsigned long frameCount, + const PaStreamCallbackTimeInfo* timeInfo, + PaStreamCallbackFlags statusFlags, + void *userData ); + + +/** Opens a stream for either input, output or both. + + @param stream The address of a PaStream pointer which will receive + a pointer to the newly opened stream. + + @param inputParameters A structure that describes the input parameters used by + the opened stream. See PaStreamParameters for a description of these parameters. + inputParameters must be NULL for output-only streams. + + @param outputParameters A structure that describes the output parameters used by + the opened stream. See PaStreamParameters for a description of these parameters. + outputParameters must be NULL for input-only streams. + + @param sampleRate The desired sampleRate. For full-duplex streams it is the + sample rate for both input and output + + @param framesPerBuffer The number of frames passed to the stream callback + function, or the preferred block granularity for a blocking read/write stream. + The special value paFramesPerBufferUnspecified (0) may be used to request that + the stream callback will receive an optimal (and possibly varying) number of + frames based on host requirements and the requested latency settings. + Note: With some host APIs, the use of non-zero framesPerBuffer for a callback + stream may introduce an additional layer of buffering which could introduce + additional latency. PortAudio guarantees that the additional latency + will be kept to the theoretical minimum however, it is strongly recommended + that a non-zero framesPerBuffer value only be used when your algorithm + requires a fixed number of frames per stream callback. + + @param streamFlags Flags which modify the behavior of the streaming process. + This parameter may contain a combination of flags ORed together. Some flags may + only be relevant to certain buffer formats. + + @param streamCallback A pointer to a client supplied function that is responsible + for processing and filling input and output buffers. If this parameter is NULL + the stream will be opened in 'blocking read/write' mode. In blocking mode, + the client can receive sample data using Pa_ReadStream and write sample data + using Pa_WriteStream, the number of samples that may be read or written + without blocking is returned by Pa_GetStreamReadAvailable and + Pa_GetStreamWriteAvailable respectively. + + @param userData A client supplied pointer which is passed to the stream callback + function. It could for example, contain a pointer to instance data necessary + for processing the audio buffers. This parameter is ignored if streamCallback + is NULL. + + @return + Upon success Pa_OpenStream() returns paNoError and places a pointer to a + valid PaStream in the stream argument. The stream is inactive (stopped). + If a call to Pa_OpenStream() fails, a non-zero error code is returned (see + PaError for possible error codes) and the value of stream is invalid. + + @see PaStreamParameters, PaStreamCallback, Pa_ReadStream, Pa_WriteStream, + Pa_GetStreamReadAvailable, Pa_GetStreamWriteAvailable +*/ +PaError Pa_OpenStream( PaStream** stream, + const PaStreamParameters *inputParameters, + const PaStreamParameters *outputParameters, + double sampleRate, + unsigned long framesPerBuffer, + PaStreamFlags streamFlags, + PaStreamCallback *streamCallback, + void *userData ); + + +/** A simplified version of Pa_OpenStream() that opens the default input + and/or output devices. + + @param stream The address of a PaStream pointer which will receive + a pointer to the newly opened stream. + + @param numInputChannels The number of channels of sound that will be supplied + to the stream callback or returned by Pa_ReadStream. It can range from 1 to + the value of maxInputChannels in the PaDeviceInfo record for the default input + device. If 0 the stream is opened as an output-only stream. + + @param numOutputChannels The number of channels of sound to be delivered to the + stream callback or passed to Pa_WriteStream. It can range from 1 to the value + of maxOutputChannels in the PaDeviceInfo record for the default output device. + If 0 the stream is opened as an output-only stream. + + @param sampleFormat The sample format of both the input and output buffers + provided to the callback or passed to and from Pa_ReadStream and Pa_WriteStream. + sampleFormat may be any of the formats described by the PaSampleFormat + enumeration. + + @param sampleRate Same as Pa_OpenStream parameter of the same name. + @param framesPerBuffer Same as Pa_OpenStream parameter of the same name. + @param streamCallback Same as Pa_OpenStream parameter of the same name. + @param userData Same as Pa_OpenStream parameter of the same name. + + @return As for Pa_OpenStream + + @see Pa_OpenStream, PaStreamCallback +*/ +PaError Pa_OpenDefaultStream( PaStream** stream, + int numInputChannels, + int numOutputChannels, + PaSampleFormat sampleFormat, + double sampleRate, + unsigned long framesPerBuffer, + PaStreamCallback *streamCallback, + void *userData ); + + +/** Closes an audio stream. If the audio stream is active it + discards any pending buffers as if Pa_AbortStream() had been called. +*/ +PaError Pa_CloseStream( PaStream *stream ); + + +/** Functions of type PaStreamFinishedCallback are implemented by PortAudio + clients. They can be registered with a stream using the Pa_SetStreamFinishedCallback + function. Once registered they are called when the stream becomes inactive + (ie once a call to Pa_StopStream() will not block). + A stream will become inactive after the stream callback returns non-zero, + or when Pa_StopStream or Pa_AbortStream is called. For a stream providing audio + output, if the stream callback returns paComplete, or Pa_StopStream is called, + the stream finished callback will not be called until all generated sample data + has been played. + + @param userData The userData parameter supplied to Pa_OpenStream() + + @see Pa_SetStreamFinishedCallback +*/ +typedef void PaStreamFinishedCallback( void *userData ); + + +/** Register a stream finished callback function which will be called when the + stream becomes inactive. See the description of PaStreamFinishedCallback for + further details about when the callback will be called. + + @param stream a pointer to a PaStream that is in the stopped state - if the + stream is not stopped, the stream's finished callback will remain unchanged + and an error code will be returned. + + @param streamFinishedCallback a pointer to a function with the same signature + as PaStreamFinishedCallback, that will be called when the stream becomes + inactive. Passing NULL for this parameter will un-register a previously + registered stream finished callback function. + + @return on success returns paNoError, otherwise an error code indicating the cause + of the error. + + @see PaStreamFinishedCallback +*/ +PaError Pa_SetStreamFinishedCallback( PaStream *stream, PaStreamFinishedCallback* streamFinishedCallback ); + + +/** Commences audio processing. +*/ +PaError Pa_StartStream( PaStream *stream ); + + +/** Terminates audio processing. It waits until all pending + audio buffers have been played before it returns. +*/ +PaError Pa_StopStream( PaStream *stream ); + + +/** Terminates audio processing immediately without waiting for pending + buffers to complete. +*/ +PaError Pa_AbortStream( PaStream *stream ); + + +/** Determine whether the stream is stopped. + A stream is considered to be stopped prior to a successful call to + Pa_StartStream and after a successful call to Pa_StopStream or Pa_AbortStream. + If a stream callback returns a value other than paContinue the stream is NOT + considered to be stopped. + + @return Returns one (1) when the stream is stopped, zero (0) when + the stream is running or, a PaErrorCode (which are always negative) if + PortAudio is not initialized or an error is encountered. + + @see Pa_StopStream, Pa_AbortStream, Pa_IsStreamActive +*/ +PaError Pa_IsStreamStopped( PaStream *stream ); + + +/** Determine whether the stream is active. + A stream is active after a successful call to Pa_StartStream(), until it + becomes inactive either as a result of a call to Pa_StopStream() or + Pa_AbortStream(), or as a result of a return value other than paContinue from + the stream callback. In the latter case, the stream is considered inactive + after the last buffer has finished playing. + + @return Returns one (1) when the stream is active (ie playing or recording + audio), zero (0) when not playing or, a PaErrorCode (which are always negative) + if PortAudio is not initialized or an error is encountered. + + @see Pa_StopStream, Pa_AbortStream, Pa_IsStreamStopped +*/ +PaError Pa_IsStreamActive( PaStream *stream ); + + + +/** A structure containing unchanging information about an open stream. + @see Pa_GetStreamInfo +*/ + +typedef struct PaStreamInfo +{ + /** this is struct version 1 */ + int structVersion; + + /** The input latency of the stream in seconds. This value provides the most + accurate estimate of input latency available to the implementation. It may + differ significantly from the suggestedLatency value passed to Pa_OpenStream(). + The value of this field will be zero (0.) for output-only streams. + @see PaTime + */ + PaTime inputLatency; + + /** The output latency of the stream in seconds. This value provides the most + accurate estimate of output latency available to the implementation. It may + differ significantly from the suggestedLatency value passed to Pa_OpenStream(). + The value of this field will be zero (0.) for input-only streams. + @see PaTime + */ + PaTime outputLatency; + + /** The sample rate of the stream in Hertz (samples per second). In cases + where the hardware sample rate is inaccurate and PortAudio is aware of it, + the value of this field may be different from the sampleRate parameter + passed to Pa_OpenStream(). If information about the actual hardware sample + rate is not available, this field will have the same value as the sampleRate + parameter passed to Pa_OpenStream(). + */ + double sampleRate; + +} PaStreamInfo; + + +/** Retrieve a pointer to a PaStreamInfo structure containing information + about the specified stream. + @return A pointer to an immutable PaStreamInfo structure. If the stream + parameter is invalid, or an error is encountered, the function returns NULL. + + @param stream A pointer to an open stream previously created with Pa_OpenStream. + + @note PortAudio manages the memory referenced by the returned pointer, + the client must not manipulate or free the memory. The pointer is only + guaranteed to be valid until the specified stream is closed. + + @see PaStreamInfo +*/ +const PaStreamInfo* Pa_GetStreamInfo( PaStream *stream ); + + +/** Returns the current time in seconds for a stream according to the same clock used + to generate callback PaStreamCallbackTimeInfo timestamps. The time values are + monotonically increasing and have unspecified origin. + + Pa_GetStreamTime returns valid time values for the entire life of the stream, + from when the stream is opened until it is closed. Starting and stopping the stream + does not affect the passage of time returned by Pa_GetStreamTime. + + This time may be used for synchronizing other events to the audio stream, for + example synchronizing audio to MIDI. + + @return The stream's current time in seconds, or 0 if an error occurred. + + @see PaTime, PaStreamCallback, PaStreamCallbackTimeInfo +*/ +PaTime Pa_GetStreamTime( PaStream *stream ); + + +/** Retrieve CPU usage information for the specified stream. + The "CPU Load" is a fraction of total CPU time consumed by a callback stream's + audio processing routines including, but not limited to the client supplied + stream callback. This function does not work with blocking read/write streams. + + This function may be called from the stream callback function or the + application. + + @return + A floating point value, typically between 0.0 and 1.0, where 1.0 indicates + that the stream callback is consuming the maximum number of CPU cycles possible + to maintain real-time operation. A value of 0.5 would imply that PortAudio and + the stream callback was consuming roughly 50% of the available CPU time. The + return value may exceed 1.0. A value of 0.0 will always be returned for a + blocking read/write stream, or if an error occurs. +*/ +double Pa_GetStreamCpuLoad( PaStream* stream ); + + +/** Read samples from an input stream. The function doesn't return until + the entire buffer has been filled - this may involve waiting for the operating + system to supply the data. + + @param stream A pointer to an open stream previously created with Pa_OpenStream. + + @param buffer A pointer to a buffer of sample frames. The buffer contains + samples in the format specified by the inputParameters->sampleFormat field + used to open the stream, and the number of channels specified by + inputParameters->numChannels. If non-interleaved samples were requested using + the paNonInterleaved sample format flag, buffer is a pointer to the first element + of an array of buffer pointers, one non-interleaved buffer for each channel. + + @param frames The number of frames to be read into buffer. This parameter + is not constrained to a specific range, however high performance applications + will want to match this parameter to the framesPerBuffer parameter used + when opening the stream. + + @return On success PaNoError will be returned, or PaInputOverflowed if input + data was discarded by PortAudio after the previous call and before this call. +*/ +PaError Pa_ReadStream( PaStream* stream, + void *buffer, + unsigned long frames ); + + +/** Write samples to an output stream. This function doesn't return until the + entire buffer has been consumed - this may involve waiting for the operating + system to consume the data. + + @param stream A pointer to an open stream previously created with Pa_OpenStream. + + @param buffer A pointer to a buffer of sample frames. The buffer contains + samples in the format specified by the outputParameters->sampleFormat field + used to open the stream, and the number of channels specified by + outputParameters->numChannels. If non-interleaved samples were requested using + the paNonInterleaved sample format flag, buffer is a pointer to the first element + of an array of buffer pointers, one non-interleaved buffer for each channel. + + @param frames The number of frames to be written from buffer. This parameter + is not constrained to a specific range, however high performance applications + will want to match this parameter to the framesPerBuffer parameter used + when opening the stream. + + @return On success PaNoError will be returned, or paOutputUnderflowed if + additional output data was inserted after the previous call and before this + call. +*/ +PaError Pa_WriteStream( PaStream* stream, + const void *buffer, + unsigned long frames ); + + +/** Retrieve the number of frames that can be read from the stream without + waiting. + + @return Returns a non-negative value representing the maximum number of frames + that can be read from the stream without blocking or busy waiting or, a + PaErrorCode (which are always negative) if PortAudio is not initialized or an + error is encountered. +*/ +signed long Pa_GetStreamReadAvailable( PaStream* stream ); + + +/** Retrieve the number of frames that can be written to the stream without + waiting. + + @return Returns a non-negative value representing the maximum number of frames + that can be written to the stream without blocking or busy waiting or, a + PaErrorCode (which are always negative) if PortAudio is not initialized or an + error is encountered. +*/ +signed long Pa_GetStreamWriteAvailable( PaStream* stream ); + + +/* Miscellaneous utilities */ + + +/** Retrieve the size of a given sample format in bytes. + + @return The size in bytes of a single sample in the specified format, + or paSampleFormatNotSupported if the format is not supported. +*/ +PaError Pa_GetSampleSize( PaSampleFormat format ); + + +/** Put the caller to sleep for at least 'msec' milliseconds. This function is + provided only as a convenience for authors of portable code (such as the tests + and examples in the PortAudio distribution.) + + The function may sleep longer than requested so don't rely on this for accurate + musical timing. +*/ +void Pa_Sleep( long msec ); + + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* PORTAUDIO_H */ diff --git a/external/portaudio/libs/libportaudio.dll b/external/portaudio/libs/libportaudio.dll new file mode 100644 index 0000000000000000000000000000000000000000..47262e02647e04934e957b4dd9654352b561367b GIT binary patch literal 192025 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 QhjuXj_W~J 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 literal 0 HcmV?d00001 diff --git a/external/portaudio/libs/libportaudio_static.a b/external/portaudio/libs/libportaudio_static.a new file mode 100644 index 0000000000000000000000000000000000000000..2330eb05d880d56608067e1d8112b00919b634a7 GIT binary patch literal 165110 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 aXj6TRmg-Fj-^=YSq)EN2%$N?4-v19XuR=Hg literal 0 HcmV?d00001 diff --git a/src/Demodulate.cpp b/src/Demodulate.cpp deleted file mode 100644 index 6ea7ee3..0000000 --- a/src/Demodulate.cpp +++ /dev/null @@ -1,698 +0,0 @@ -#include "Demodulate.h" -#include "CubicSDRDefs.h" - -#include -#include -#include -#include - -#define DEFAULT_SAMPLE_RATE 24000 -#define DEFAULT_BUF_LENGTH (1 * 16384) -#define MAXIMUM_OVERSAMPLE 16 -#define MAXIMUM_BUF_LENGTH (MAXIMUM_OVERSAMPLE * DEFAULT_BUF_LENGTH) -#define AUTO_GAIN -100 -#define BUFFER_DUMP 4096 -//#define MAXIMUM_RATE 2400000 -#define PI_INT (1<<14) -#define ONE_INT (1<<14) -static int *atan_lut = NULL; -static int atan_lut_size = 131072; /* 512 KB */ -static int atan_lut_coef = 8; -//static uint32_t MINIMUM_RATE = 1000000; - -/* {length, coef, coef, coef} and scaled by 2^15 - for now, only length 9, optimal way to get +85% bandwidth */ -#define CIC_TABLE_MAX 10 -int cic_9_tables[][10] = { { 0, }, { 9, -156, -97, 2798, -15489, 61019, -15489, 2798, -97, -156 }, { 9, -128, -568, 5593, -24125, 74126, -24125, 5593, - -568, -128 }, { 9, -129, -639, 6187, -26281, 77511, -26281, 6187, -639, -129 }, - { 9, -122, -612, 6082, -26353, 77818, -26353, 6082, -612, -122 }, { 9, -120, -602, 6015, -26269, 77757, -26269, 6015, -602, -120 }, { 9, -120, - -582, 5951, -26128, 77542, -26128, 5951, -582, -120 }, { 9, -119, -580, 5931, -26094, 77505, -26094, 5931, -580, -119 }, { 9, -119, - -578, 5921, -26077, 77484, -26077, 5921, -578, -119 }, { 9, -119, -577, 5917, -26067, 77473, -26067, 5917, -577, -119 }, { 9, -199, - -362, 5303, -25505, 77489, -25505, 5303, -362, -199 }, }; - -#ifdef _MSC_VER -double log2(double n) -{ - return log(n) / log(2.0); -} -#endif -void rotate_90(unsigned char *buf, uint32_t len) -/* 90 rotation is 1+0j, 0+1j, -1+0j, 0-1j - or [0, 1, -3, 2, -4, -5, 7, -6] */ -{ - uint32_t i; - unsigned char tmp; - for (i = 0; i < len; i += 8) { - /* uint8_t negation = 255 - x */ - tmp = 255 - buf[i + 3]; - buf[i + 3] = buf[i + 2]; - buf[i + 2] = tmp; - buf[i + 4] = 255 - buf[i + 4]; - buf[i + 5] = 255 - buf[i + 5]; - tmp = 255 - buf[i + 6]; - buf[i + 6] = buf[i + 7]; - buf[i + 7] = tmp; - } -} - -int translate_init(struct translate_state *ts) -/* two pass: first to find optimal length, second to alloc/fill */ -{ - int max_length = 100000; - int i, s, c, best_i; - double a, a2, err, best_360; - if (fabs(ts->angle) < 2 * M_PI / max_length) { - std::cout << "angle too small or array too short\n" << std::endl; - return 1; - } - ts->i = 0; - ts->sincos = NULL; - if (ts->len) { - max_length = ts->len; - ts->sincos = (int16_t *) malloc(max_length * sizeof(int16_t)); - } - a = 0.0; - err = 0.0; - best_i = 0; - best_360 = 4.0; - for (i = 0; i < max_length; i += 2) { - s = (int) round(sin(a + err) * (1 << 14)); - c = (int) round(cos(a + err) * (1 << 14)); - a2 = atan2(s, c); - err = fmod(a, 2 * M_PI) - a2; - a += ts->angle; - while (a > M_PI) { - a -= 2 * M_PI; - } - while (a < -M_PI) { - a += 2 * M_PI; - } - if (i != 0 && fabs(a) < best_360) { - best_i = i; - best_360 = fabs(a); - } - if (i != 0 && fabs(a) < 0.0000001) { - break; - } - if (ts->sincos) { - ts->sincos[i] = s; - ts->sincos[i + 1] = c; -//fprintf(stderr, "%i %i %i\n", i, s, c); - } - } - if (ts->sincos) { - return 0; - } - ts->len = best_i + 2; - return translate_init(ts); -} - -void translate(Demodulate *d) { - int i, len, sc_i, sc_len; - int32_t tmp, ar, aj, br, bj; - int16_t *buf = d->lowpassed; - int16_t *sincos = d->rotate.sincos; - len = d->lp_len; - sc_i = d->rotate.i; - sc_len = d->rotate.len; - for (i = 0; i < len; i += 2, sc_i += 2) { - sc_i = sc_i % sc_len; - ar = (int32_t) buf[i]; - aj = (int32_t) buf[i + 1]; - br = (int32_t) sincos[sc_i]; - bj = (int32_t) sincos[sc_i + 1]; - tmp = ar * br - aj * bj; - buf[i] = (int16_t) (tmp >> 14); - tmp = aj * br + ar * bj; - buf[i + 1] = (int16_t) (tmp >> 14); - } - d->rotate.i = sc_i; -} - -void low_pass(Demodulate *d) -/* simple square window FIR */ -{ - int i = 0, i2 = 0; - while (i < d->lp_len) { - d->now_r += d->lowpassed[i]; - d->now_j += d->lowpassed[i + 1]; - i += 2; - d->prev_index++; - if (d->prev_index < d->downsample) { - continue; - } - d->lowpassed[i2] = d->now_r; // * d->output_scale; - d->lowpassed[i2 + 1] = d->now_j; // * d->output_scale; - d->prev_index = 0; - d->now_r = 0; - d->now_j = 0; - i2 += 2; - } - d->lp_len = i2; -} - -int low_pass_simple(int16_t *signal2, int len, int step) -// no wrap around, length must be multiple of step - { - int i, i2, sum; - for (i = 0; i < len; i += step) { - sum = 0; - for (i2 = 0; i2 < step; i2++) { - sum += (int) signal2[i + i2]; - } -//signal2[i/step] = (int16_t)(sum / step); - signal2[i / step] = (int16_t) (sum); - } - signal2[i / step + 1] = signal2[i / step]; - return len / step; -} - -void low_pass_real(Demodulate *s) -/* simple square window FIR */ -// add support for upsampling? - { - int16_t *lp = s->lowpassed; - int i = 0, i2 = 0; - int fast = (int) s->rate_out; - int slow = s->rate_out2; - while (i < s->lp_len) { - s->now_lpr += lp[i]; - i++; - s->prev_lpr_index += slow; - if (s->prev_lpr_index < fast) { - continue; - } - lp[i2] = (int16_t) (s->now_lpr / (fast / slow)); - s->prev_lpr_index -= fast; - s->now_lpr = 0; - i2 += 1; - } - s->lp_len = i2; -} - -void fifth_order(int16_t *data, int length, int16_t *hist) -/* for half of interleaved data */ -{ - int i; - int16_t a, b, c, d, e, f; - a = hist[1]; - b = hist[2]; - c = hist[3]; - d = hist[4]; - e = hist[5]; - f = data[0]; - /* a downsample should improve resolution, so don't fully shift */ - data[0] = (a + (b + e) * 5 + (c + d) * 10 + f) >> 4; - for (i = 4; i < length; i += 4) { - a = c; - b = d; - c = e; - d = f; - e = data[i - 2]; - f = data[i]; - data[i / 2] = (a + (b + e) * 5 + (c + d) * 10 + f) >> 4; - } - /* archive */ - hist[0] = a; - hist[1] = b; - hist[2] = c; - hist[3] = d; - hist[4] = e; - hist[5] = f; -} - -void generic_fir(int16_t *data, int length, int *fir, int16_t *hist) -/* Okay, not at all generic. Assumes length 9, fix that eventually. */ -{ - int d, temp, sum; - for (d = 0; d < length; d += 2) { - temp = data[d]; - sum = 0; - sum += (hist[0] + hist[8]) * fir[1]; - sum += (hist[1] + hist[7]) * fir[2]; - sum += (hist[2] + hist[6]) * fir[3]; - sum += (hist[3] + hist[5]) * fir[4]; - sum += hist[4] * fir[5]; - data[d] = sum >> 15; - hist[0] = hist[1]; - hist[1] = hist[2]; - hist[2] = hist[3]; - hist[3] = hist[4]; - hist[4] = hist[5]; - hist[5] = hist[6]; - hist[6] = hist[7]; - hist[7] = hist[8]; - hist[8] = temp; - } -} - -/* define our own complex math ops - because ARMv5 has no hardware float */ -void multiply(int ar, int aj, int br, int bj, int *cr, int *cj) { - *cr = ar * br - aj * bj; - *cj = aj * br + ar * bj; -} -int polar_discriminant(int ar, int aj, int br, int bj) { - int cr, cj; - double angle; - multiply(ar, aj, br, -bj, &cr, &cj); - angle = atan2((double) cj, (double) cr); - return (int) (angle / M_PI * (1 << 14)); -} -int fast_atan2(int y, int x) -/* pre scaled for int16 */ -{ - int yabs, angle; - int pi4 = (1 << 12), pi34 = 3 * (1 << 12); // note pi = 1<<14 - if (x == 0 && y == 0) { - return 0; - } - yabs = y; - if (yabs < 0) { - yabs = -yabs; - } - if (x >= 0) { - angle = pi4 - pi4 * (x - yabs) / (x + yabs); - } else { - angle = pi34 - pi4 * (x + yabs) / (yabs - x); - } - if (y < 0) { - return -angle; - } - return angle; -} - -int polar_disc_fast(int ar, int aj, int br, int bj) { - int cr, cj; - multiply(ar, aj, br, -bj, &cr, &cj); - return fast_atan2(cj, cr); -} - -int atan_lut_init(void) { - int i = 0; - atan_lut = (int *) malloc(atan_lut_size * sizeof(int)); - for (i = 0; i < atan_lut_size; i++) { - atan_lut[i] = (int) (atan((double) i / (1 << atan_lut_coef)) / M_PI * (1 << 14)); - } - return 0; -} - -int polar_disc_lut(int ar, int aj, int br, int bj) { - int cr, cj, x, x_abs; - multiply(ar, aj, br, -bj, &cr, &cj); - /* special cases */ - if (cr == 0 || cj == 0) { - if (cr == 0 && cj == 0) { - return 0; - } - if (cr == 0 && cj > 0) { - return 1 << 13; - } - if (cr == 0 && cj < 0) { - return -(1 << 13); - } - if (cj == 0 && cr > 0) { - return 0; - } - if (cj == 0 && cr < 0) { - return 1 << 14; - } - } - /* real range -32768 - 32768 use 64x range -> absolute maximum: 2097152 */ - x = (cj << atan_lut_coef) / cr; - x_abs = abs(x); - if (x_abs >= atan_lut_size) { - /* we can use linear range, but it is not necessary */ - return (cj > 0) ? 1 << 13 : -1 << 13; - } - if (x > 0) { - return (cj > 0) ? atan_lut[x] : atan_lut[x] - (1 << 14); - } else { - return (cj > 0) ? (1 << 14) - atan_lut[-x] : -atan_lut[-x]; - } - return 0; -} - -int esbensen(int ar, int aj, int br, int bj) -/* - input signal: s(t) = a*exp(-i*w*t+p) - a = amplitude, w = angular freq, p = phase difference - solve w - s' = -i(w)*a*exp(-i*w*t+p) - s'*conj(s) = -i*w*a*a - s'*conj(s) / |s|^2 = -i*w - */ -{ - int cj, dr, dj; - int scaled_pi = 2608; /* 1<<14 / (2*pi) */ - dr = (br - ar) * 2; - dj = (bj - aj) * 2; - cj = bj * dr - br * dj; /* imag(ds*conj(s)) */ - return (scaled_pi * cj / (ar * ar + aj * aj + 1)); -} - -void fm_demod(Demodulate *fm) { - int i, pcm = 0; - int16_t *lp = fm->lowpassed; - int16_t pr = fm->pre_r; - int16_t pj = fm->pre_j; - for (i = 0; i < (fm->lp_len - 1); i += 2) { - switch (fm->custom_atan) { - case 0: - pcm = polar_discriminant(lp[i], lp[i + 1], pr, pj); - break; - case 1: - pcm = polar_disc_fast(lp[i], lp[i + 1], pr, pj); - break; - case 2: - pcm = polar_disc_lut(lp[i], lp[i + 1], pr, pj); - break; - case 3: - pcm = esbensen(lp[i], lp[i + 1], pr, pj); - break; - } - pr = lp[i]; - pj = lp[i + 1]; - fm->lowpassed[i / 2] = (int16_t) pcm; - } - fm->pre_r = pr; - fm->pre_j = pj; - fm->lp_len = fm->lp_len / 2; -} - -void am_demod(Demodulate *fm) -// todo, fix this extreme laziness - { - int32_t i, pcm; - int16_t *lp = fm->lowpassed; - for (i = 0; i < fm->lp_len; i += 2) { -// hypot uses floats but won't overflow -//r[i/2] = (int16_t)hypot(lp[i], lp[i+1]); - pcm = lp[i] * lp[i]; - pcm += lp[i + 1] * lp[i + 1]; - lp[i / 2] = (int16_t) sqrt(pcm) * fm->output_scale; - } - fm->lp_len = fm->lp_len / 2; -// lowpass? (3khz) -} - -void usb_demod(Demodulate *fm) { - int i, pcm; - int16_t *lp = fm->lowpassed; - for (i = 0; i < fm->lp_len; i += 2) { - pcm = lp[i] + lp[i + 1]; - lp[i / 2] = (int16_t) pcm * fm->output_scale; - } - fm->lp_len = fm->lp_len / 2; -} - -void lsb_demod(Demodulate *fm) { - int i, pcm; - int16_t *lp = fm->lowpassed; - for (i = 0; i < fm->lp_len; i += 2) { - pcm = lp[i] - lp[i + 1]; - lp[i / 2] = (int16_t) pcm * fm->output_scale; - } - fm->lp_len = fm->lp_len / 2; -} - -void raw_demod(Demodulate *fm) { - return; -} - -void deemph_filter(Demodulate *fm) { - static int avg; // cheating, not threadsafe - int i, d; - int16_t *lp = fm->lowpassed; -// de-emph IIR -// avg = avg * (1 - alpha) + sample * alpha; - for (i = 0; i < fm->lp_len; i++) { - d = lp[i] - avg; - if (d > 0) { - avg += (d + fm->deemph_a / 2) / fm->deemph_a; - } else { - avg += (d - fm->deemph_a / 2) / fm->deemph_a; - } - lp[i] = (int16_t) avg; - } -} - -void dc_block_filter(Demodulate *fm) { - int i, avg; - int64_t sum = 0; - int16_t *lp = fm->lowpassed; - for (i = 0; i < fm->lp_len; i++) { - sum += lp[i]; - } - avg = sum / fm->lp_len; - avg = (avg + fm->dc_avg * 9) / 10; - for (i = 0; i < fm->lp_len; i++) { - lp[i] -= avg; - } - fm->dc_avg = avg; -} - -int mad(int16_t *samples, int len, int step) -/* mean average deviation */ -{ - int i = 0, sum = 0, ave = 0; - if (len == 0) { - return 0; - } - for (i = 0; i < len; i += step) { - sum += samples[i]; - } - ave = sum / (len * step); - sum = 0; - for (i = 0; i < len; i += step) { - sum += abs(samples[i] - ave); - } - return sum / (len / step); -} - -int rms(int16_t *samples, int len, int step) -/* largely lifted from rtl_power */ -{ - int i; - long p, t, s; - double dc, err; - p = t = 0L; - for (i = 0; i < len; i += step) { - s = (long) samples[i]; - t += s; - p += s * s; - } - /* correct for dc offset in squares */ - dc = (double) (t * step) / (double) len; - err = t * 2 * dc - dc * dc * len; - return (int) sqrt((p - err) / len); -} - -int squelch_to_rms(int db, struct dongle_state *dongle, Demodulate *demod) -/* 0 dB = 1 rms at 50dB gain and 1024 downsample */ -{ - double linear, gain, downsample; - if (db == 0) { - return 0; - } - linear = pow(10.0, (double) db / 20.0); - gain = 50.0; -// if (dongle->gain != AUTO_GAIN) { -// gain = (double) (dongle->gain) / 10.0; -// } - gain = 50.0 - gain; - gain = pow(10.0, gain / 20.0); - downsample = 1024.0 / (double) demod->downsample; - linear = linear / gain; - linear = linear / downsample; - return (int) linear + 1; -} - -Demodulate::Demodulate() { - rate_in = DEFAULT_SAMPLE_RATE; - rate_out = DEFAULT_SAMPLE_RATE; - squelch_level = 0; - conseq_squelch = 10; - terminate_on_squelch = 0; - squelch_hits = 11; - downsample_passes = 0; - comp_fir_size = 0; - prev_index = 0; - post_downsample = 1; // once this works, default = 4 - custom_atan = 0; - deemph = 0; - rotate_enable = 0; - rotate.len = 0; - rotate.sincos = NULL; - rate_out2 = -1; // flag for disabled - mode_demod = &fm_demod; -// pre_j = s->pre_r = s->now_r = s->now_j = 0; - prev_lpr_index = 0; - deemph_a = 0; - now_lpr = 0; - dc_block = 1; - dc_avg = 0; - output_target = &output.results[0]; - lowpassed = NULL; - - mode_demod = &fm_demod; - rate_in = 170000; - rate_out = 170000; - rate_out2 = 44000; - output.rate = 44000; - custom_atan = 1; -// post_downsample = 4; - deemph = 1; - squelch_level = 0; - - int capture_freq; - - // downsample = (SRATE / rate_in) + 1; - downsample = (SRATE / rate_in) + 1; - if (downsample_passes) { - downsample_passes = (int) log2(downsample) + 1; - downsample = 1 << downsample_passes; - } - - if (deemph) { - deemph_a = (int)round(1.0/((1.0-exp(-1.0/(rate_out * 75e-6))))); - } - - capture_freq=DEFAULT_FREQ; - - //capture_freq = freq; - //capture_rate = downsample * rate_in; - - int edge = 0; - -// if (d->pre_rotate) { -// capture_freq = freq + capture_rate/4;} - capture_freq += edge * rate_in / 2; - output_scale = (1 << 15) / (128 * downsample); - if (output_scale < 1) { - output_scale = 1; - } - if (mode_demod == &fm_demod) { - output_scale = 1; - } - - custom_atan = 1; - //demod.post_downsample = 4; - deemph = 1; - squelch_level = 0; - - int r, opt; - int dev_given = 0; - int custom_ppm = 0; - - output.results[0].trycond = 1; - output.results[0].buf = NULL; - output.results[1].trycond = 1; - output.results[1].buf = NULL; - - -// controller.freqs[0] = 100000000; -// controller.freq_len = 0; -// controller.edge = 0; -// controller.wb_mode = 0; - -// if (strcmp("fm", optarg) == 0) { -// demod.mode_demod = &fm_demod; -// } -// if (strcmp("raw", optarg) == 0) { -// demod.mode_demod = &raw_demod; -// } -// if (strcmp("am", optarg) == 0) { -// demod.mode_demod = &am_demod; -// } -// if (strcmp("usb", optarg) == 0) { -// demod.mode_demod = &usb_demod; -// } -// if (strcmp("lsb", optarg) == 0) { -// demod.mode_demod = &lsb_demod; -// } -// if (strcmp("wbfm", optarg) == 0) { -// controller.wb_mode = 1; - -// } -// break; - - // rate_in *= post_downsample; - if (!output.rate) { - output.rate = rate_out; - } - -// if (controller.freq_len > 1) { -// terminate_on_squelch = 0; -// } - - output.padded = 0; -} - -void Demodulate::demod(std::vector &buffer) { - int i, ds_p; - int do_squelch = 0; - int sr = 0; - if (rotate_enable) { - translate(this); - } - ds_p = downsample_passes; - - lowpassed = &buffer[0]; - lp_len = buffer.size(); - - if (ds_p) { - for (i = 0; i < ds_p; i++) { - fifth_order(lowpassed, (lp_len >> i), lp_i_hist[i]); - fifth_order(lowpassed + 1, (lp_len >> i) - 1, lp_q_hist[i]); - } - lp_len = lp_len >> ds_p; - /* droop compensation */ - if (comp_fir_size == 9 && ds_p <= CIC_TABLE_MAX) { - generic_fir(lowpassed, lp_len, cic_9_tables[ds_p], droop_i_hist); - generic_fir(lowpassed + 1, lp_len - 1, cic_9_tables[ds_p], droop_q_hist); - } - } else { - low_pass(this); - } - /* power squelch */ - if (squelch_level) { - sr = rms(lowpassed, lp_len, 1); - if (sr < squelch_level) { - do_squelch = 1; - } - } - if (do_squelch) { - squelch_hits++; - for (i = 0; i < lp_len; i++) { - lowpassed[i] = 0; - } - } else { - squelch_hits = 0; - } - - mode_demod(this); /* lowpassed -> lowpassed */ - if (mode_demod == &raw_demod) { - return; - } - - if (dc_block) { - dc_block_filter(this); - } - - /* todo, fm noise squelch */ - // use nicer filter here too? - if (post_downsample > 1) { - lp_len = low_pass_simple(lowpassed, lp_len, post_downsample); - } - if (deemph) { - deemph_filter(this); - } - if (rate_out2 > 0) { - low_pass_real(this); - } - - output_target->buf = lowpassed; - output_target->len = lp_len; -} - diff --git a/src/Demodulate.h b/src/Demodulate.h deleted file mode 100644 index e38cd5e..0000000 --- a/src/Demodulate.h +++ /dev/null @@ -1,93 +0,0 @@ -#pragma once - -/* - * based on rtl_fm.c - * https://github.com/keenerd/rtl-sdr/blob/master/src/rtl_fm.c - */ - -#include -#include -#include - -#define FREQUENCIES_LIMIT 1000 - -struct translate_state { - double angle; /* radians */ - int16_t *sincos; /* pairs */ - int len; - int i; -}; - -struct buffer_bucket { - int16_t *buf; - int len; - int trycond; -}; - -struct output_state { - int exit_flag; - struct buffer_bucket results[2]; - int rate; - int wav_format; - int padded; - int lrmix; -}; - -struct controller_state { - int exit_flag; - uint32_t freqs[FREQUENCIES_LIMIT]; - int freq_len; - int freq_now; - int edge; - int wb_mode; -}; - -/* define our own complex math ops - because ARMv5 has no hardware float */ -void multiply(int ar, int aj, int br, int bj, int *cr, int *cj); -int polar_discriminant(int ar, int aj, int br, int bj); -int fast_atan2(int y, int x); -int polar_disc_fast(int ar, int aj, int br, int bj); -int polar_disc_lut(int ar, int aj, int br, int bj); - -class Demodulate { - -public: - Demodulate(); - - ~Demodulate() { - - } - - void demod(std::vector &buffer); - -public: - int16_t *lowpassed; - int lp_len; - int16_t lp_i_hist[10][6]; - int16_t lp_q_hist[10][6]; - int16_t droop_i_hist[9]; - int16_t droop_q_hist[9]; - int rate_in; - int rate_out; - int rate_out2; - int now_r, now_j; - int pre_r, pre_j; - int prev_index; - int downsample; /* min 1, max 256 */ - int post_downsample; - int output_scale; - int squelch_level, conseq_squelch, squelch_hits, terminate_on_squelch; - int downsample_passes; - int comp_fir_size; - int custom_atan; - int deemph, deemph_a; - int now_lpr; - int prev_lpr_index; - int dc_block, dc_avg; - int rotate_enable; - struct translate_state rotate; - void (*mode_demod)(Demodulate *); - struct buffer_bucket *output_target; - struct output_state output; -}; diff --git a/src/PrimaryGLContext.cpp b/src/PrimaryGLContext.cpp index 21c16bd..5354cce 100644 --- a/src/PrimaryGLContext.cpp +++ b/src/PrimaryGLContext.cpp @@ -14,8 +14,8 @@ #include "CubicSDRDefs.h" #include "AppFrame.h" #include -#include "Demodulate.h" -#include "complex.h" + +#include "pa_debugprint.h" wxString glGetwxString(GLenum name) { const GLubyte *v = glGetString(name); @@ -104,6 +104,37 @@ EVT_KEY_DOWN(TestGLCanvas::OnKeyDown) EVT_IDLE(TestGLCanvas::OnIdle) wxEND_EVENT_TABLE() +static int patestCallback(const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo* timeInfo, + PaStreamCallbackFlags statusFlags, void *userData) { + + TestGLCanvas *src = (TestGLCanvas *) userData; + + if (!src->audio_queue.size()) { + return paContinue; + } + float *out = (float*) outputBuffer; + + std::vector *nextBuffer = src->audio_queue.front(); + + for (int i = 0; i < framesPerBuffer * 2; i++) { + out[i] = (*nextBuffer)[src->audio_queue_ptr]; + + src->audio_queue_ptr++; + + if (src->audio_queue_ptr == nextBuffer->size()) { + src->audio_queue.pop(); + delete nextBuffer; + src->audio_queue_ptr = 0; + if (!src->audio_queue.size()) { + break; + } + nextBuffer = src->audio_queue.front(); + } + } + + return paContinue; +} + TestGLCanvas::TestGLCanvas(wxWindow *parent, int *attribList) : wxGLCanvas(parent, wxID_ANY, attribList, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE), parent(parent) { @@ -124,65 +155,31 @@ TestGLCanvas::TestGLCanvas(wxWindow *parent, int *attribList) : fft_ceil_ma = fft_ceil_maa = 1.0; - dev = alcOpenDevice(NULL); - if (!dev) { - fprintf(stderr, "Oops\n"); - } - - ALCint contextAttr[] = {ALC_FREQUENCY,44100,0}; - ctx = alcCreateContext(dev, contextAttr); - alcMakeContextCurrent(ctx); - if (!ctx) { - fprintf(stderr, "Oops2\n"); - } - - alGenBuffers(AL_NUM_BUFFERS, buffers); - alGenSources(1, &source); - alSourcef(source, AL_PITCH, 1.0f); - alSourcef(source, AL_GAIN, 1.0f); - alSourcei(source, AL_LOOPING, AL_FALSE); - - // prime the buffers - int16_t buffer_init[AL_BUFFER_SIZE]; - - for (int i = 0; i < AL_BUFFER_SIZE; i++) { - buffer_init[i] = 0; - } - - for (int i = 0; i < AL_NUM_BUFFERS; i++) { - alBufferData(buffers[i], AL_FORMAT_STEREO16, buffer_init, AL_BUFFER_SIZE*2, audio_frequency); - } - if (alGetError() != AL_NO_ERROR) { - std::cout << "Error priming :(\n"; - } - - alSourceQueueBuffers(source, AL_NUM_BUFFERS, buffers); - alSourcePlay(source); - if (alGetError() != AL_NO_ERROR) { + PaError err; + err = Pa_Initialize(); + if (err != paNoError) { std::cout << "Error starting :(\n"; } - /* - // define filter length, type, number of bands - unsigned int n = 55; - liquid_firdespm_btype btype = LIQUID_FIRDESPM_BANDPASS; - unsigned int num_bands = 3; - // band edge description [size: num_bands x 2] - float bands[6] = { 0.0f, 0.14f, 0.15f, 0.35f, 0.36f, 0.5f }; + outputParameters.device = 5; /* default output device */ + if (outputParameters.device == paNoDevice) { + std::cout << "Error: No default output device.\n"; + } - // desired response [size: num_bands x 1] - float des[3] = { 1.0f, 0.0f, 1.0f }; + outputParameters.channelCount = 2; /* Stereo output, most likely supported. */ + outputParameters.sampleFormat = paFloat32; /* 32 bit floating point output. */ + outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency; + outputParameters.hostApiSpecificStreamInfo = NULL; - // relative weights [size: num_bands x 1] - float weights[3] = { 1.0f, 1.0f, 1.0f }; + stream = NULL; - // in-band weighting functions [size: num_bands x 1] - liquid_firdespm_wtype wtype[3] = { LIQUID_FIRDESPM_FLATWEIGHT, LIQUID_FIRDESPM_EXPWEIGHT, LIQUID_FIRDESPM_FLATWEIGHT }; + err = Pa_OpenStream(&stream, NULL, &outputParameters, 44100, 256, paClipOff, &patestCallback, this); - // allocate memory for array and design filter - float h[n]; - firdespm_run(n, num_bands, bands, des, weights, wtype, btype, h); - */ + err = Pa_StartStream(stream); + if (err != paNoError) { + std::cout << "Error starting stream: " << Pa_GetErrorText(err) << std::endl; + std::cout << "\tPortAudio error: " << Pa_GetErrorText(err) << std::endl; + } float fc = 0.5f * (bandwidth / SRATE); // filter cutoff frequency float ft = 0.05f; // filter transition @@ -196,11 +193,6 @@ TestGLCanvas::TestGLCanvas(wxWindow *parent, int *attribList) : fir_filter = firfilt_crcf_create(h, h_len); - unsigned int m = 5; // filter semi-length - float slsl = 60.0f; // filter sidelobe suppression level - - fir_hil = firhilbf_create(m, slsl); - // create multi-stage arbitrary resampler object resampler = msresamp_crcf_create(resample_ratio, As); msresamp_crcf_print(resampler); @@ -215,10 +207,10 @@ TestGLCanvas::TestGLCanvas(wxWindow *parent, int *attribList) : } TestGLCanvas::~TestGLCanvas() { - alcMakeContextCurrent(NULL); - alcDestroyContext(ctx); - alcCloseDevice(dev); - + PaError err; + err = Pa_StopStream(stream); + err = Pa_CloseStream(stream); + Pa_Terminate(); } void TestGLCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) { @@ -240,12 +232,12 @@ void TestGLCanvas::OnKeyDown(wxKeyEvent& event) { switch (event.GetKeyCode()) { case WXK_RIGHT: freq = ((AppFrame*) parent)->getFrequency(); - freq += 10000; + freq += 100000; ((AppFrame*) parent)->setFrequency(freq); break; case WXK_LEFT: freq = ((AppFrame*) parent)->getFrequency(); - freq -= 10000; + freq -= 100000; ((AppFrame*) parent)->setFrequency(freq); break; case WXK_DOWN: @@ -275,67 +267,6 @@ float polar_discriminant2(float ar, float aj, float br, float bj) { void TestGLCanvas::setData(std::vector *data) { if (data && data->size()) { - /* - std::vector tmp(data->begin(), data->end()); - demod.demod(tmp); - - if (waveform_points.size() < demod.lp_len * 2) { - waveform_points.resize(demod.lp_len * 2); - } - - float waveform_ceil = 0; - - for (int i = 0, iMax = demod.lp_len; i < iMax; i++) { - float v = fabs(demod.lowpassed[i]); - if (v > waveform_ceil) { - waveform_ceil = v; - } - } - - for (int i = 0, iMax = demod.lp_len; i < iMax; i++) { - waveform_points[i * 2 + 1] = (float) demod.lowpassed[i] / waveform_ceil; - waveform_points[i * 2] = ((double) i / (double) iMax); - } - - ALint val; - ALuint buffer; - - alGetSourcei(source, AL_SOURCE_STATE, &val); - if (val != AL_PLAYING) { - alSourcePlay(source); - } - - // std::cout << "buffer: " << demod.output_target->len << "@" << frequency << std::endl; - std::vector *newBuffer = new std::vector; - newBuffer->resize(demod.output_target->len); - memcpy(&(*newBuffer)[0],demod.output_target->buf,demod.output_target->len*2); - audio_queue.push(newBuffer); - - - frequency = demod.output.rate; - - while (audio_queue.size()>8) { - alGetSourcei(source, AL_BUFFERS_PROCESSED, &val); - if (val <= 0) { - break; - } - - std::vector *nextBuffer = audio_queue.front(); - - alSourceUnqueueBuffers(source, 1, &buffer); - alBufferData(buffer, format, &(*nextBuffer)[0], nextBuffer->size()*2, frequency); - alSourceQueueBuffers(source, 1, &buffer); - - audio_queue.pop(); - - delete nextBuffer; - - if (alGetError() != AL_NO_ERROR) { - std::cout << "Error buffering :(\n"; - } - } - */ - if (spectrum_points.size() < FFT_SIZE * 2) { spectrum_points.resize(FFT_SIZE * 2); } @@ -408,35 +339,16 @@ void TestGLCanvas::setData(std::vector *data) { // fftw_execute(plan[1]); for (int i = 0, iMax = FFT_SIZE; i < iMax; i++) { - spectrum_points[i * 2 + 1] = fft_result_maa[i] / fft_ceil_maa; + spectrum_points[i * 2 + 1] = log10(fft_result_maa[i]) / log10(fft_ceil_maa); +// spectrum_points[i * 2 + 1] = (fft_result_maa[i]) / (fft_ceil_maa); spectrum_points[i * 2] = ((double) i / (double) iMax); } float waveform_ceil = 0, waveform_floor = 0; -// std::vector output_buffer; -// output_buffer.resize(num_written); - -// for (int i = 0, iMax = BUF_SIZE / 2; i < iMax; i++) { -// liquid_float_complex x; -// x.real = in[i][0]; -// x.imag = in[i][1]; -// float y[2]; -// -// firhilbf_interp_execute(fir_hil, x, y); -// output_buffer[i] = y[1]; -// -// if (waveform_ceil < y[1]) { -// waveform_ceil = y[1]; -// } -// } - - int i; float pcm = 0; - float pr = pre_r; - float pj = pre_j; - for (i = 0; i < num_written; i++) { + for (int i = 0; i < num_written; i++) { freqdem_demodulate(fdem, resampled_output[i], &pcm); resampled_output[i].real = (float) pcm; @@ -451,13 +363,6 @@ void TestGLCanvas::setData(std::vector *data) { } } - droop_ofs = -(waveform_ceil + waveform_floor) / 2.0; - droop_ofs_ma = droop_ofs_ma + (droop_ofs - droop_ofs_ma) * 0.01; - droop_ofs_maa = droop_ofs_maa + (droop_ofs_ma - droop_ofs_maa) * 0.01; - - pre_r = pr; - pre_j = pj; - int audio_out_size = ceil((float) (num_written) * audio_resample_ratio); liquid_float_complex resampled_audio_output[audio_out_size]; @@ -473,46 +378,14 @@ void TestGLCanvas::setData(std::vector *data) { waveform_points[i * 2] = ((double) i / (double) iMax); } -// std::cout << num_audio_written << std::endl; - - ALint val; - ALuint buffer; - - // std::cout << "buffer: " << demod.output_target->len << "@" << frequency << std::endl; - std::vector *newBuffer = new std::vector; - newBuffer->resize(num_audio_written*2); + std::vector *newBuffer = new std::vector; + newBuffer->resize(num_audio_written * 2); for (int i = 0; i < num_audio_written; i++) { - (*newBuffer)[i] = resampled_audio_output[i].real * 32767.0; - (*newBuffer)[i+num_audio_written] = resampled_audio_output[i].real * 32767.0; + (*newBuffer)[i * 2] = resampled_audio_output[i].real; + (*newBuffer)[i * 2 + 1] = resampled_audio_output[i].real; } audio_queue.push(newBuffer); - - while (audio_queue.size() > 4) { - alGetSourcei(source, AL_BUFFERS_PROCESSED, &val); - if (val <= 0) { - break; - } - - std::vector *nextBuffer = audio_queue.front(); - - alSourceUnqueueBuffers(source, 1, &buffer); - alBufferData(buffer, AL_FORMAT_STEREO16, &(*nextBuffer)[0], nextBuffer->size()*2, audio_frequency); - alSourceQueueBuffers(source, 1, &buffer); - - audio_queue.pop(); - - delete nextBuffer; - - if (alGetError() != AL_NO_ERROR) { - std::cout << "Error buffering :(\n"; - } - - alGetSourcei(source, AL_SOURCE_STATE, &val); - if (val != AL_PLAYING) { - alSourcePlay(source); - } - } } } diff --git a/src/PrimaryGLContext.h b/src/PrimaryGLContext.h index 6fd5100..0889ec2 100644 --- a/src/PrimaryGLContext.h +++ b/src/PrimaryGLContext.h @@ -11,18 +11,8 @@ #include "liquid/liquid.h" -#include "Demodulate.h" - -#ifdef WIN32 -#include -#include -#else -#include -#include -#endif - -#define AL_NUM_BUFFERS 16 -#define AL_BUFFER_SIZE 8192 +#include "portaudio.h" +#include "pa_stream.h" class PrimaryGLContext: public wxGLContext { public: @@ -31,8 +21,6 @@ public: void Plot(std::vector &points, std::vector &points2); private: - // textures for the cube faces - GLuint m_textures[6]; }; class TestGLCanvas: public wxGLCanvas { @@ -42,6 +30,9 @@ public: void setData(std::vector *data); + std::queue< std::vector * > audio_queue; + unsigned int audio_queue_ptr; + private: void OnPaint(wxPaintEvent& event); void OnKeyDown(wxKeyEvent& event); @@ -57,8 +48,6 @@ private: firfilt_crcf fir_filter; - firhilbf fir_hil; - float pre_r; float pre_j; float droop_ofs, droop_ofs_ma, droop_ofs_maa; @@ -67,7 +56,6 @@ private: msresamp_crcf audio_resampler; float resample_ratio; - freqdem fdem; float fft_ceil_ma, fft_ceil_maa; @@ -76,17 +64,13 @@ private: std::vector fft_result_ma; std::vector fft_result_maa; - std::queue< std::vector * > audio_queue; - - Demodulate demod; - - ALCdevice *dev; - ALCcontext *ctx; - - ALuint source, buffers[AL_NUM_BUFFERS]; - ALuint bandwidth; - ALuint audio_frequency; + unsigned int bandwidth; + unsigned int audio_frequency; float audio_resample_ratio; + PaStreamParameters outputParameters; + PaStream *stream; + + wxDECLARE_EVENT_TABLE(); };