mirror of
https://github.com/cookiengineer/audacity
synced 2026-01-19 23:36:08 +01:00
Introduce end-of-line normalization
Ensures that all files that Git considers to be text will have normalized (LF) line endings in the repository. When core.eol is set to native (which is the default), Git will convert the line endings of normalized files in your working directory back to your platform's native line ending. See also https://git-scm.com/docs/gitattributes
This commit is contained in:
@@ -1,178 +1,178 @@
|
||||
Note: Because PortAudioCpp is now in the main PortAudio SVN repository, having these per-release changelogs probably doesn't make much sense anymore. Perhaps it's better to just note mayor changes by date from now on.
|
||||
|
||||
PortAudioCpp v19 revision 16 06/05/22:
|
||||
|
||||
mblaauw:
|
||||
- Added up-to-date MSVC 6.0 projects created by David Moore. Besides MSVC 6.0 users, MSVC 7.0 users may use these projects and automatically convert them to MSVC 7.0 projects.
|
||||
- Changed the code and projects (MSVC 7.1 only) to be up-to-date with PortAudio's new directory structure.
|
||||
- Added equivalents of the PaAsio_GetInputChannelName() and PaAsio_GetOutputChannelName() functions to the AsioDeviceAdapter wrapper-class (missing functions pointed out by David Moore).
|
||||
- Added code to PortAudio's main SVN repository.
|
||||
|
||||
PortAudioCpp v19 revision 15 (unknown release date):
|
||||
|
||||
mblaauw:
|
||||
- Changed some exception handling code in HostApi's constructor.
|
||||
- Added accessors to PortAudio PaStream from PortAudioCpp Stream (their absense being pointed out
|
||||
by Tom Jordan).
|
||||
- Fixed a bug/typo in MemFunToCallbackInterfaceAdapter::init() thanks to Fredrik Viklund.
|
||||
- Fixed issue with concrete Stream classes possibly throwing an exception and fixed documentation w.r.t. this.
|
||||
- Moved files to portaudio/binding/cpp/. Made new msvc 7.1 projects to reflect the change and removed msvc 6.0
|
||||
and 7.0 projects (because I can no longer maintain them myself). Gnu projects will probably need updating.
|
||||
|
||||
PortAudioCpp v19 revision 14 03/10/24:
|
||||
|
||||
mblaauw:
|
||||
- Fixed some error handling bugs in Stream and System (pointed out by Tom Jordan).
|
||||
- Updated documentation a little (main page).
|
||||
- Fixed order of members so initializer list was in the right order in
|
||||
StreamParameters (pointed out by Ludwig Schwardt).
|
||||
- Added new lines at EOF's (as indicated by Ludwig Schwardt).
|
||||
|
||||
PortAudioCpp v19 revision 13 03/10/19:
|
||||
|
||||
lschwardt:
|
||||
- Added build files for GNU/Linux.
|
||||
- Fixed bug in Exception where the inherited what() member function (and destructor) had looser
|
||||
exception specification (namely no exception specification, i.e. could throw anything) than
|
||||
the std::exception base class's what() member function (which had throw(), i.e. no-throw guarantee).
|
||||
- Changed the iterators so that they have a set of public typedefs instead of deriving the C++ standard
|
||||
library std::iterator<> struct. G++ 2.95 doesn't support std::exception<> and composition-by-aggregation
|
||||
is prefered over composition-by-inheritance in this case.
|
||||
- Changed some minor things to avoid G++ warning messages.
|
||||
|
||||
mblaauw:
|
||||
- Renamed this file (/WHATSNEW.txt) to /CHANGELOG.
|
||||
- Renamed /PA_ISSUES.txt to /PA_ISSUES.
|
||||
- Added /INSTALL file with some build info for GNU/Linux and VC6.
|
||||
- Added MSVC 6.0 projects for building PortAudioCpp as a staticly or dynamically linkable library.
|
||||
- Moved build files to /build/(gnu/ or vc6/).
|
||||
- Moved Doxygen configuration files to /doc/ and output to /doc/api_reference/.
|
||||
- Added a /doc/README with some info how to generate Doxygen documentation.
|
||||
|
||||
PortAudioCpp v19 revision 12 03/09/02:
|
||||
|
||||
mblaauw:
|
||||
- Updated code to reflect changes on V19-devel CVS branch.
|
||||
- Fixed some typos in the documentation.
|
||||
|
||||
PortAudioCpp v19 revision 11 03/07/31:
|
||||
|
||||
mblaauw:
|
||||
- Renamed SingleDirecionStreamParameters to DirectionSpecificStreamParameters.
|
||||
- Implemented BlockingStream.
|
||||
- Updated code to reflect recent changes to PortAudio V19-devel.
|
||||
- Fixed a potential memory leak when an exception was thrown in the HostApi
|
||||
constructor.
|
||||
- Renamed ``Latency'' to ``BufferSize'' in AsioDeviceAdapter.
|
||||
- Updated class documentation.
|
||||
|
||||
PortAudioCpp v19 revision 10 03/07/18:
|
||||
|
||||
mblaauw:
|
||||
- SingleDirectionStreamParameters now has a (static) null() method.
|
||||
- StreamParameters uses references for the direction-specific stream parameters
|
||||
instead of pointers (use null() method (above) instead of NULL).
|
||||
- StreamParameters and SingleDirectionStreamParameters must now be fully specified
|
||||
and now default values are used (because this was not very useful in general and
|
||||
only made things more complex).
|
||||
- Updated documentation.
|
||||
|
||||
PortAudioCpp v19 revision 09 03/06/25:
|
||||
|
||||
mblaauw:
|
||||
- Changed some things in SingleDirectionStreamParameters to ease it's usage.
|
||||
- Placed all SingleDirectionStreamParameters stuff into a separate file.
|
||||
+ Totally redid the callback stuff, now it's less ackward and supports C++ functions.
|
||||
|
||||
PortAudioCpp v19 revision 08 03/06/20:
|
||||
|
||||
mblaauw:
|
||||
- Made deconstructors for Device and HostApi private.
|
||||
+ Added a AsioDeviceWrapper host api specific device extension class.
|
||||
- Refactored Exception into a Exception base class and PaException and PaCppException
|
||||
derived classes.
|
||||
- Added ASIO specific device info to the devs.cxx example.
|
||||
- Fixed a bug in System::hostApiCount() and System::defaultHostApi().
|
||||
+ Moved Device::null to System::nullDevice.
|
||||
- Fixed some bugs in Device and System.
|
||||
|
||||
PortAudioCpp v19 revision 07 03/06/08:
|
||||
|
||||
mblaauw:
|
||||
- Updated some doxy comments.
|
||||
+ Renamed CbXyz to CallbackXyz.
|
||||
+ Renamed all ``configurations'' to ``parameters''.
|
||||
+ Renamed HalfDuplexStreamConfiguration to SingleDirectionStreamConfiguration.
|
||||
- Renamed SingleDirectionStreamParameters::streamParameters() to
|
||||
SingleDirectionStreamParameters::paSteamParameters.
|
||||
- Added a non-constant version of SingleDirectionStreamParameters::paStreamParameters().
|
||||
- A few improvements to SingleDirectionStreamParameters.
|
||||
- Allowed AutoSystem to be created without initializing the System singleton
|
||||
(using a ctor flag).
|
||||
- Added a BlockingStream class (not implemented for now).
|
||||
- Fixed many bugs in the implementation of the iterators.
|
||||
- Fixed a bug in Device::operator==().
|
||||
+ Added a C++ version of the patest_sine.c test/example.
|
||||
- Added a ctor for StreamParameters for a default half-duplex stream.
|
||||
- Added SingleDirectionStreamParameters::setDevice() and setNumChannels().
|
||||
- Renamed System::numHostApis() to System::hostApiCount().
|
||||
+ Rewrote the iterators and related classes. They are now fully STL compliant. The System now
|
||||
has a static array of all HostApis and all Devices. Only the System can create HostApis and
|
||||
Devices and they are non-copyable now. All HostApis and Devices are now passed by-reference.
|
||||
- Renamed (System::) getVersion() to version() and getVersionText() to versionText().
|
||||
- Renamed (Device::) numXyzChannels() to maxXyzChannels().
|
||||
- Changed some stuff in StreamParameters.
|
||||
+ Added a C++ version of the patest_devs.c test/example.
|
||||
|
||||
PortAudioCpp v19 revision 06 03/06/04:
|
||||
|
||||
mblaauw:
|
||||
+ Added this file to the project (roughly, a `+' denotes a major change, a `-' a minor change).
|
||||
- Added System::deviceByIndex(), useful when a Device's index is stored for instance.
|
||||
- Renamed System::hostApiFromTypeId() to System::hostApiByTypeId().
|
||||
- Updated and added some Doxygen documentation.
|
||||
- Made Stream::usedIntputLatency(), Stream::usedOutputLatency() and
|
||||
Stream::usedSampleRate() throw an paInternalError equivalent exception instead of paBadStreamPtr.
|
||||
- Changed exception handling in Stream::open() functions. They now follow the PA error handling
|
||||
mechanism better and a couple of bugs regarding ownership of objects were fixed.
|
||||
- Renamed Device::isDefaultXyzDevice() to Device::isSystemDefaultXyzDevice().
|
||||
- Added Device::isHostApiDefaultXyzDevice().
|
||||
- Added StreamConfiguration::unsetFlag().
|
||||
- Removed CUSTOM from SampleDataFormat.
|
||||
- System::hostApiByTypeId() now throws an paInternalError if the type id was out-of-range; this
|
||||
is a temporary work-around (see comments).
|
||||
- Changed CbInterface to use paCallbackFun() instead of operator()().
|
||||
- Renamed ``object'' to ``instance'' in CbMemFunAdapter.hxx.
|
||||
- Added StreamConfiguration::setXyzHostApiSpecificSampleFormat().
|
||||
- Added StreamConfiguration::isXyzSampleFormatHostApiSpecific().
|
||||
- Changed error handling in System::terminate(), it can now throw an Exception.
|
||||
- Added error handling in System::defaultHostApi().
|
||||
- Added error handling in System::hostApisEnd().
|
||||
- Changed some (but probably not all) C casts to C++ casts to avoid confusion with a
|
||||
certain Python person.
|
||||
- Renamed RaiiSystem to AutoSystem (class and file) as this is a come common convention.
|
||||
- Renamed System::numDevices() to System::deviceCount() to be more compatible with PortAudio
|
||||
(although PortAudio uses Pa_CountDevices() instead, see comment).
|
||||
- Renamed HostApi::numDevices() to HostApi::deviceCount().
|
||||
- Changed INC_ to INCLUDED_ in the header multiple include guards.
|
||||
- Changed the order of functions in the StreamConfiguration class' header.
|
||||
- Written some more info in PortAudioCpp.hxx (Doxygen).
|
||||
- Added CallbackStream.hxx and CallbackStream.cxx files.
|
||||
+ Refactored StreamConfiguration to remove the duplication which was there. There is now a
|
||||
HalfDuplexStreamConfiguration class. Also made some improvements to these classes while
|
||||
doing the refactoring.
|
||||
+ Moved all code files to source/portaudiocpp/ and changed includes.
|
||||
+ Moved all header files to include/portaudiocpp/ to easy a binary build if needed. The project
|
||||
must be set to have .../include/ as a path to look for includes.
|
||||
+ Refactored the Stream class into a Stream base class and a CallbackStream derived class.
|
||||
- Renamed Stream::usingXyz() to Stream::xyz().
|
||||
- Updated some doxy comments.
|
||||
- Changed ``using namespace portaudio'' in .cxx files to ``namespace portaudio { ... }''.
|
||||
|
||||
PortAudioCpp v19 revision 05 03/04/09:
|
||||
|
||||
mblaauw:
|
||||
- Initial release on the PortAudio mailinglist.
|
||||
|
||||
|
||||
|
||||
Note: Because PortAudioCpp is now in the main PortAudio SVN repository, having these per-release changelogs probably doesn't make much sense anymore. Perhaps it's better to just note mayor changes by date from now on.
|
||||
|
||||
PortAudioCpp v19 revision 16 06/05/22:
|
||||
|
||||
mblaauw:
|
||||
- Added up-to-date MSVC 6.0 projects created by David Moore. Besides MSVC 6.0 users, MSVC 7.0 users may use these projects and automatically convert them to MSVC 7.0 projects.
|
||||
- Changed the code and projects (MSVC 7.1 only) to be up-to-date with PortAudio's new directory structure.
|
||||
- Added equivalents of the PaAsio_GetInputChannelName() and PaAsio_GetOutputChannelName() functions to the AsioDeviceAdapter wrapper-class (missing functions pointed out by David Moore).
|
||||
- Added code to PortAudio's main SVN repository.
|
||||
|
||||
PortAudioCpp v19 revision 15 (unknown release date):
|
||||
|
||||
mblaauw:
|
||||
- Changed some exception handling code in HostApi's constructor.
|
||||
- Added accessors to PortAudio PaStream from PortAudioCpp Stream (their absense being pointed out
|
||||
by Tom Jordan).
|
||||
- Fixed a bug/typo in MemFunToCallbackInterfaceAdapter::init() thanks to Fredrik Viklund.
|
||||
- Fixed issue with concrete Stream classes possibly throwing an exception and fixed documentation w.r.t. this.
|
||||
- Moved files to portaudio/binding/cpp/. Made new msvc 7.1 projects to reflect the change and removed msvc 6.0
|
||||
and 7.0 projects (because I can no longer maintain them myself). Gnu projects will probably need updating.
|
||||
|
||||
PortAudioCpp v19 revision 14 03/10/24:
|
||||
|
||||
mblaauw:
|
||||
- Fixed some error handling bugs in Stream and System (pointed out by Tom Jordan).
|
||||
- Updated documentation a little (main page).
|
||||
- Fixed order of members so initializer list was in the right order in
|
||||
StreamParameters (pointed out by Ludwig Schwardt).
|
||||
- Added new lines at EOF's (as indicated by Ludwig Schwardt).
|
||||
|
||||
PortAudioCpp v19 revision 13 03/10/19:
|
||||
|
||||
lschwardt:
|
||||
- Added build files for GNU/Linux.
|
||||
- Fixed bug in Exception where the inherited what() member function (and destructor) had looser
|
||||
exception specification (namely no exception specification, i.e. could throw anything) than
|
||||
the std::exception base class's what() member function (which had throw(), i.e. no-throw guarantee).
|
||||
- Changed the iterators so that they have a set of public typedefs instead of deriving the C++ standard
|
||||
library std::iterator<> struct. G++ 2.95 doesn't support std::exception<> and composition-by-aggregation
|
||||
is prefered over composition-by-inheritance in this case.
|
||||
- Changed some minor things to avoid G++ warning messages.
|
||||
|
||||
mblaauw:
|
||||
- Renamed this file (/WHATSNEW.txt) to /CHANGELOG.
|
||||
- Renamed /PA_ISSUES.txt to /PA_ISSUES.
|
||||
- Added /INSTALL file with some build info for GNU/Linux and VC6.
|
||||
- Added MSVC 6.0 projects for building PortAudioCpp as a staticly or dynamically linkable library.
|
||||
- Moved build files to /build/(gnu/ or vc6/).
|
||||
- Moved Doxygen configuration files to /doc/ and output to /doc/api_reference/.
|
||||
- Added a /doc/README with some info how to generate Doxygen documentation.
|
||||
|
||||
PortAudioCpp v19 revision 12 03/09/02:
|
||||
|
||||
mblaauw:
|
||||
- Updated code to reflect changes on V19-devel CVS branch.
|
||||
- Fixed some typos in the documentation.
|
||||
|
||||
PortAudioCpp v19 revision 11 03/07/31:
|
||||
|
||||
mblaauw:
|
||||
- Renamed SingleDirecionStreamParameters to DirectionSpecificStreamParameters.
|
||||
- Implemented BlockingStream.
|
||||
- Updated code to reflect recent changes to PortAudio V19-devel.
|
||||
- Fixed a potential memory leak when an exception was thrown in the HostApi
|
||||
constructor.
|
||||
- Renamed ``Latency'' to ``BufferSize'' in AsioDeviceAdapter.
|
||||
- Updated class documentation.
|
||||
|
||||
PortAudioCpp v19 revision 10 03/07/18:
|
||||
|
||||
mblaauw:
|
||||
- SingleDirectionStreamParameters now has a (static) null() method.
|
||||
- StreamParameters uses references for the direction-specific stream parameters
|
||||
instead of pointers (use null() method (above) instead of NULL).
|
||||
- StreamParameters and SingleDirectionStreamParameters must now be fully specified
|
||||
and now default values are used (because this was not very useful in general and
|
||||
only made things more complex).
|
||||
- Updated documentation.
|
||||
|
||||
PortAudioCpp v19 revision 09 03/06/25:
|
||||
|
||||
mblaauw:
|
||||
- Changed some things in SingleDirectionStreamParameters to ease it's usage.
|
||||
- Placed all SingleDirectionStreamParameters stuff into a separate file.
|
||||
+ Totally redid the callback stuff, now it's less ackward and supports C++ functions.
|
||||
|
||||
PortAudioCpp v19 revision 08 03/06/20:
|
||||
|
||||
mblaauw:
|
||||
- Made deconstructors for Device and HostApi private.
|
||||
+ Added a AsioDeviceWrapper host api specific device extension class.
|
||||
- Refactored Exception into a Exception base class and PaException and PaCppException
|
||||
derived classes.
|
||||
- Added ASIO specific device info to the devs.cxx example.
|
||||
- Fixed a bug in System::hostApiCount() and System::defaultHostApi().
|
||||
+ Moved Device::null to System::nullDevice.
|
||||
- Fixed some bugs in Device and System.
|
||||
|
||||
PortAudioCpp v19 revision 07 03/06/08:
|
||||
|
||||
mblaauw:
|
||||
- Updated some doxy comments.
|
||||
+ Renamed CbXyz to CallbackXyz.
|
||||
+ Renamed all ``configurations'' to ``parameters''.
|
||||
+ Renamed HalfDuplexStreamConfiguration to SingleDirectionStreamConfiguration.
|
||||
- Renamed SingleDirectionStreamParameters::streamParameters() to
|
||||
SingleDirectionStreamParameters::paSteamParameters.
|
||||
- Added a non-constant version of SingleDirectionStreamParameters::paStreamParameters().
|
||||
- A few improvements to SingleDirectionStreamParameters.
|
||||
- Allowed AutoSystem to be created without initializing the System singleton
|
||||
(using a ctor flag).
|
||||
- Added a BlockingStream class (not implemented for now).
|
||||
- Fixed many bugs in the implementation of the iterators.
|
||||
- Fixed a bug in Device::operator==().
|
||||
+ Added a C++ version of the patest_sine.c test/example.
|
||||
- Added a ctor for StreamParameters for a default half-duplex stream.
|
||||
- Added SingleDirectionStreamParameters::setDevice() and setNumChannels().
|
||||
- Renamed System::numHostApis() to System::hostApiCount().
|
||||
+ Rewrote the iterators and related classes. They are now fully STL compliant. The System now
|
||||
has a static array of all HostApis and all Devices. Only the System can create HostApis and
|
||||
Devices and they are non-copyable now. All HostApis and Devices are now passed by-reference.
|
||||
- Renamed (System::) getVersion() to version() and getVersionText() to versionText().
|
||||
- Renamed (Device::) numXyzChannels() to maxXyzChannels().
|
||||
- Changed some stuff in StreamParameters.
|
||||
+ Added a C++ version of the patest_devs.c test/example.
|
||||
|
||||
PortAudioCpp v19 revision 06 03/06/04:
|
||||
|
||||
mblaauw:
|
||||
+ Added this file to the project (roughly, a `+' denotes a major change, a `-' a minor change).
|
||||
- Added System::deviceByIndex(), useful when a Device's index is stored for instance.
|
||||
- Renamed System::hostApiFromTypeId() to System::hostApiByTypeId().
|
||||
- Updated and added some Doxygen documentation.
|
||||
- Made Stream::usedIntputLatency(), Stream::usedOutputLatency() and
|
||||
Stream::usedSampleRate() throw an paInternalError equivalent exception instead of paBadStreamPtr.
|
||||
- Changed exception handling in Stream::open() functions. They now follow the PA error handling
|
||||
mechanism better and a couple of bugs regarding ownership of objects were fixed.
|
||||
- Renamed Device::isDefaultXyzDevice() to Device::isSystemDefaultXyzDevice().
|
||||
- Added Device::isHostApiDefaultXyzDevice().
|
||||
- Added StreamConfiguration::unsetFlag().
|
||||
- Removed CUSTOM from SampleDataFormat.
|
||||
- System::hostApiByTypeId() now throws an paInternalError if the type id was out-of-range; this
|
||||
is a temporary work-around (see comments).
|
||||
- Changed CbInterface to use paCallbackFun() instead of operator()().
|
||||
- Renamed ``object'' to ``instance'' in CbMemFunAdapter.hxx.
|
||||
- Added StreamConfiguration::setXyzHostApiSpecificSampleFormat().
|
||||
- Added StreamConfiguration::isXyzSampleFormatHostApiSpecific().
|
||||
- Changed error handling in System::terminate(), it can now throw an Exception.
|
||||
- Added error handling in System::defaultHostApi().
|
||||
- Added error handling in System::hostApisEnd().
|
||||
- Changed some (but probably not all) C casts to C++ casts to avoid confusion with a
|
||||
certain Python person.
|
||||
- Renamed RaiiSystem to AutoSystem (class and file) as this is a come common convention.
|
||||
- Renamed System::numDevices() to System::deviceCount() to be more compatible with PortAudio
|
||||
(although PortAudio uses Pa_CountDevices() instead, see comment).
|
||||
- Renamed HostApi::numDevices() to HostApi::deviceCount().
|
||||
- Changed INC_ to INCLUDED_ in the header multiple include guards.
|
||||
- Changed the order of functions in the StreamConfiguration class' header.
|
||||
- Written some more info in PortAudioCpp.hxx (Doxygen).
|
||||
- Added CallbackStream.hxx and CallbackStream.cxx files.
|
||||
+ Refactored StreamConfiguration to remove the duplication which was there. There is now a
|
||||
HalfDuplexStreamConfiguration class. Also made some improvements to these classes while
|
||||
doing the refactoring.
|
||||
+ Moved all code files to source/portaudiocpp/ and changed includes.
|
||||
+ Moved all header files to include/portaudiocpp/ to easy a binary build if needed. The project
|
||||
must be set to have .../include/ as a path to look for includes.
|
||||
+ Refactored the Stream class into a Stream base class and a CallbackStream derived class.
|
||||
- Renamed Stream::usingXyz() to Stream::xyz().
|
||||
- Updated some doxy comments.
|
||||
- Changed ``using namespace portaudio'' in .cxx files to ``namespace portaudio { ... }''.
|
||||
|
||||
PortAudioCpp v19 revision 05 03/04/09:
|
||||
|
||||
mblaauw:
|
||||
- Initial release on the PortAudio mailinglist.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,248 +1,248 @@
|
||||
# Microsoft Developer Studio Project File - Name="devs_example" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=devs_example - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "devs_example.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "devs_example.mak" CFG="devs_example - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "devs_example - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "devs_example - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "devs_example - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MTd /W3 /GX /O2 /I "../../include/" /I "../../../../include/" /I "../../../../src/common/" /I "../../../../../asiosdk2/common/" /I "../../../../../asiosdk2/host/" /I "../../../../../asiosdk2/host/pc/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 portaudiocpp-vc6-r.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../../bin/devs_example.exe" /libpath:"../../lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "devs_example - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include/" /I "../../../../include/" /I "../../../../src/common/" /I "../../../../../asiosdk2/common/" /I "../../../../../asiosdk2/host/" /I "../../../../../asiosdk2/host/pc/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 portaudiocpp-vc6-d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../bin/devs_example.exe" /pdbtype:sept /libpath:"../../lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "devs_example - Win32 Release"
|
||||
# Name "devs_example - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\pa_asio\iasiothiscallresolver.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_allocation.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\pa_asio\pa_asio.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_converters.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_cpuload.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_dither.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_front.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_process.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\skeleton\pa_hostapi_skeleton.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_stream.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_trace.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_win_hostapis.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_win_util.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\wmme\pa_win_wmme.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_x86_plain_converters.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\pa_asio\iasiothiscallresolver.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_allocation.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_converters.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_cpuload.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_dither.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_endianness.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_hostapi.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_process.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_stream.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_trace.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_types.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_util.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_x86_plain_converters.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# Begin Group "Example Files"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\example\devs.cxx
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "ASIO 2 SDK"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\..\asiosdk2\common\asio.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\..\asiosdk2\host\asiodrivers.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\..\asiosdk2\host\pc\asiolist.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
# Microsoft Developer Studio Project File - Name="devs_example" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=devs_example - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "devs_example.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "devs_example.mak" CFG="devs_example - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "devs_example - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "devs_example - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "devs_example - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MTd /W3 /GX /O2 /I "../../include/" /I "../../../../include/" /I "../../../../src/common/" /I "../../../../../asiosdk2/common/" /I "../../../../../asiosdk2/host/" /I "../../../../../asiosdk2/host/pc/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 portaudiocpp-vc6-r.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../../bin/devs_example.exe" /libpath:"../../lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "devs_example - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include/" /I "../../../../include/" /I "../../../../src/common/" /I "../../../../../asiosdk2/common/" /I "../../../../../asiosdk2/host/" /I "../../../../../asiosdk2/host/pc/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 portaudiocpp-vc6-d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../bin/devs_example.exe" /pdbtype:sept /libpath:"../../lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "devs_example - Win32 Release"
|
||||
# Name "devs_example - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\pa_asio\iasiothiscallresolver.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_allocation.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\pa_asio\pa_asio.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_converters.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_cpuload.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_dither.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_front.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_process.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\skeleton\pa_hostapi_skeleton.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_stream.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_trace.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_win_hostapis.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_win_util.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\wmme\pa_win_wmme.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_x86_plain_converters.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\pa_asio\iasiothiscallresolver.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_allocation.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_converters.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_cpuload.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_dither.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_endianness.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_hostapi.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_process.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_stream.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_trace.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_types.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_util.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_x86_plain_converters.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# Begin Group "Example Files"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\example\devs.cxx
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "ASIO 2 SDK"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\..\asiosdk2\common\asio.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\..\asiosdk2\host\asiodrivers.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\..\asiosdk2\host\pc\asiolist.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
|
||||
@@ -1,44 +1,44 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "devs_example"=".\devs_example.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name static_library
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "static_library"=".\static_library.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "devs_example"=".\devs_example.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name static_library
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "static_library"=".\static_library.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
|
||||
@@ -1,252 +1,252 @@
|
||||
# Microsoft Developer Studio Project File - Name="sine_example" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=sine_example - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "sine_example.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "sine_example.mak" CFG="sine_example - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "sine_example - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "sine_example - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "sine_example - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MTd /W3 /GX /O2 /I "../../include/" /I "../../../../include/" /I "../../../../src/common/" /I "../../../../../asiosdk2/common/" /I "../../../../../asiosdk2/host/" /I "../../../../../asiosdk2/host/pc/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 portaudiocpp-vc6-r.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../../bin/sine_example.exe" /libpath:"../../lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "sine_example - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include/" /I "../../../../include/" /I "../../../../src/common/" /I "../../../../../asiosdk2/common/" /I "../../../../../asiosdk2/host/" /I "../../../../../asiosdk2/host/pc/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 portaudiocpp-vc6-d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../bin/sine_example.exe" /pdbtype:sept /libpath:"../../lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "sine_example - Win32 Release"
|
||||
# Name "sine_example - Win32 Debug"
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\pa_asio\iasiothiscallresolver.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_allocation.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_converters.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_cpuload.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_dither.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_endianness.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_hostapi.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_process.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_stream.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_trace.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_types.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_util.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_x86_plain_converters.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# Begin Group "Example Files"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\example\sine.cxx
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\pa_asio\iasiothiscallresolver.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_allocation.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\pa_asio\pa_asio.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_converters.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_cpuload.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_dither.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_front.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_process.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\skeleton\pa_hostapi_skeleton.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_stream.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_trace.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_win_hostapis.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_win_util.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\wasapi\pa_win_wasapi.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\wmme\pa_win_wmme.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_x86_plain_converters.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "ASIO 2 SDK"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\..\asiosdk2\common\asio.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\..\asiosdk2\host\asiodrivers.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\..\asiosdk2\host\pc\asiolist.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
# Microsoft Developer Studio Project File - Name="sine_example" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=sine_example - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "sine_example.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "sine_example.mak" CFG="sine_example - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "sine_example - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "sine_example - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "sine_example - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MTd /W3 /GX /O2 /I "../../include/" /I "../../../../include/" /I "../../../../src/common/" /I "../../../../../asiosdk2/common/" /I "../../../../../asiosdk2/host/" /I "../../../../../asiosdk2/host/pc/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 portaudiocpp-vc6-r.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../../bin/sine_example.exe" /libpath:"../../lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "sine_example - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include/" /I "../../../../include/" /I "../../../../src/common/" /I "../../../../../asiosdk2/common/" /I "../../../../../asiosdk2/host/" /I "../../../../../asiosdk2/host/pc/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 portaudiocpp-vc6-d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../bin/sine_example.exe" /pdbtype:sept /libpath:"../../lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "sine_example - Win32 Release"
|
||||
# Name "sine_example - Win32 Debug"
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\pa_asio\iasiothiscallresolver.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_allocation.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_converters.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_cpuload.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_dither.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_endianness.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_hostapi.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_process.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_stream.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_trace.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_types.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_util.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_x86_plain_converters.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# Begin Group "Example Files"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\example\sine.cxx
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\pa_asio\iasiothiscallresolver.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_allocation.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\pa_asio\pa_asio.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_converters.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_cpuload.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_dither.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_front.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_process.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\skeleton\pa_hostapi_skeleton.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_stream.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\common\pa_trace.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_win_hostapis.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_win_util.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\wasapi\pa_win_wasapi.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\hostapi\wmme\pa_win_wmme.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\src\os\win\pa_x86_plain_converters.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "ASIO 2 SDK"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\..\asiosdk2\common\asio.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\..\asiosdk2\host\asiodrivers.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\..\..\asiosdk2\host\pc\asiolist.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
|
||||
@@ -1,44 +1,44 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "sine_example"=".\sine_example.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name static_library
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "static_library"=".\static_library.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "sine_example"=".\sine_example.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name static_library
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "static_library"=".\static_library.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
|
||||
@@ -1,395 +1,395 @@
|
||||
# Microsoft Developer Studio Project File - Name="static_library" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Static Library" 0x0104
|
||||
|
||||
CFG=static_library - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "static_library.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "static_library.mak" CFG="static_library - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "static_library - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "static_library - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
|
||||
# ADD CPP /nologo /MTd /W3 /GX /O2 /I "../../include/" /I "../../../../include/" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"../../lib/portaudiocpp-vc6-r.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include/" /I "../../../../include/" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"../../lib/portaudiocpp-vc6-d.lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "static_library - Win32 Release"
|
||||
# Name "static_library - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\AsioDeviceAdapter.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\BlockingStream.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\CallbackInterface.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\CallbackStream.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\CFunCallbackStream.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\CppFunCallbackStream.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\Device.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\DirectionSpecificStreamParameters.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\Exception.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\HostApi.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\InterfaceCallbackStream.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\MemFunCallbackStream.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\Stream.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\StreamParameters.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\System.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\SystemDeviceIterator.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\SystemHostApiIterator.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\AsioDeviceAdapter.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\AutoSystem.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\BlockingStream.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\CallbackInterface.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\CallbackStream.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\CFunCallbackStream.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\CppFunCallbackStream.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\Device.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\DirectionSpecificStreamParameters.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\Exception.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\HostApi.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\InterfaceCallbackStream.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\MemFunCallbackStream.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\PortAudioCpp.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\SampleDataFormat.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\Stream.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\StreamParameters.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\System.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\SystemDeviceIterator.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\SystemHostApiIterator.hxx
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
# Microsoft Developer Studio Project File - Name="static_library" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Static Library" 0x0104
|
||||
|
||||
CFG=static_library - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "static_library.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "static_library.mak" CFG="static_library - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "static_library - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "static_library - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
|
||||
# ADD CPP /nologo /MTd /W3 /GX /O2 /I "../../include/" /I "../../../../include/" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"../../lib/portaudiocpp-vc6-r.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include/" /I "../../../../include/" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"../../lib/portaudiocpp-vc6-d.lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "static_library - Win32 Release"
|
||||
# Name "static_library - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\AsioDeviceAdapter.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\BlockingStream.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\CallbackInterface.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\CallbackStream.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\CFunCallbackStream.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\CppFunCallbackStream.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\Device.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\DirectionSpecificStreamParameters.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\Exception.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\HostApi.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\InterfaceCallbackStream.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\MemFunCallbackStream.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\Stream.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\StreamParameters.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\System.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\SystemDeviceIterator.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\source\portaudiocpp\SystemHostApiIterator.cxx
|
||||
|
||||
!IF "$(CFG)" == "static_library - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "static_library - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\AsioDeviceAdapter.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\AutoSystem.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\BlockingStream.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\CallbackInterface.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\CallbackStream.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\CFunCallbackStream.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\CppFunCallbackStream.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\Device.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\DirectionSpecificStreamParameters.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\Exception.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\HostApi.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\InterfaceCallbackStream.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\MemFunCallbackStream.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\PortAudioCpp.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\SampleDataFormat.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\Stream.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\StreamParameters.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\System.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\SystemDeviceIterator.hxx
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\include\portaudiocpp\SystemHostApiIterator.hxx
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "static_library"=".\static_library.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "static_library"=".\static_library.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "devs_example", "devs_example.vcproj", "{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A} = {D18EA0C9-8C65-441D-884C-55EB43A84F2A}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "static_library", "static_library.vcproj", "{D18EA0C9-8C65-441D-884C-55EB43A84F2A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
Debug = Debug
|
||||
Release = Release
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfiguration) = postSolution
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Debug.ActiveCfg = Debug|Win32
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Debug.Build.0 = Debug|Win32
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Release.ActiveCfg = Release|Win32
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Release.Build.0 = Release|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.ActiveCfg = Debug|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.Build.0 = Debug|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.ActiveCfg = Release|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "devs_example", "devs_example.vcproj", "{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A} = {D18EA0C9-8C65-441D-884C-55EB43A84F2A}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "static_library", "static_library.vcproj", "{D18EA0C9-8C65-441D-884C-55EB43A84F2A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
Debug = Debug
|
||||
Release = Release
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfiguration) = postSolution
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Debug.ActiveCfg = Debug|Win32
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Debug.Build.0 = Debug|Win32
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Release.ActiveCfg = Release|Win32
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Release.Build.0 = Release|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.ActiveCfg = Debug|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.Build.0 = Debug|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.ActiveCfg = Release|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
@@ -1,195 +1,195 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="devs_example"
|
||||
ProjectGUID="{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="Debug"
|
||||
IntermediateDirectory="Debug"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../include/;../../../../include/;../../../../src/common/;../../../../../asiosdk2/common/,../../../../../asiosdk2/host/,../../../../../asiosdk2/host/pc/"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="$(IntDir)/vc71.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="../../lib/portaudiocpp-vc7_1-d.lib"
|
||||
OutputFile="../../bin/devs_example.exe"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/devs_example.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="Release"
|
||||
IntermediateDirectory="Release"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../include/;../../../../include/;../../../../src/common/;../../../../../asiosdk2/common/,../../../../../asiosdk2/host/,../../../../../asiosdk2/host/pc/"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="$(IntDir)/vc71.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="../../lib/portaudiocpp-vc7_1-r.lib"
|
||||
OutputFile="../../bin/devs_example.exe"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Files"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath="..\..\example\devs.cxx">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="PortAudio v19 Files"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_allocation.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\asio\pa_asio.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_converters.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_cpuload.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_dither.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_front.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_process.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\skeleton\pa_hostapi_skeleton.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_stream.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_trace.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\dsound\pa_win_ds.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\os\win\pa_win_hostapis.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\os\win\pa_win_util.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\wasapi\pa_win_wasapi.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\wmme\pa_win_wmme.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\os\win\pa_x86_plain_converters.c">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="ASIO 2 SDK Files"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath="..\..\..\..\..\asiosdk2\common\asio.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\..\asiosdk2\host\asiodrivers.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\..\asiosdk2\host\pc\asiolist.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="devs_example"
|
||||
ProjectGUID="{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="Debug"
|
||||
IntermediateDirectory="Debug"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../include/;../../../../include/;../../../../src/common/;../../../../../asiosdk2/common/,../../../../../asiosdk2/host/,../../../../../asiosdk2/host/pc/"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="$(IntDir)/vc71.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="../../lib/portaudiocpp-vc7_1-d.lib"
|
||||
OutputFile="../../bin/devs_example.exe"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/devs_example.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="Release"
|
||||
IntermediateDirectory="Release"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../include/;../../../../include/;../../../../src/common/;../../../../../asiosdk2/common/,../../../../../asiosdk2/host/,../../../../../asiosdk2/host/pc/"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="$(IntDir)/vc71.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="../../lib/portaudiocpp-vc7_1-r.lib"
|
||||
OutputFile="../../bin/devs_example.exe"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Files"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath="..\..\example\devs.cxx">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="PortAudio v19 Files"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_allocation.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\asio\pa_asio.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_converters.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_cpuload.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_dither.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_front.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_process.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\skeleton\pa_hostapi_skeleton.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_stream.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_trace.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\dsound\pa_win_ds.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\os\win\pa_win_hostapis.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\os\win\pa_win_util.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\wasapi\pa_win_wasapi.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\wmme\pa_win_wmme.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\os\win\pa_x86_plain_converters.c">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="ASIO 2 SDK Files"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath="..\..\..\..\..\asiosdk2\common\asio.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\..\asiosdk2\host\asiodrivers.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\..\asiosdk2\host\pc\asiolist.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sine_example", "sine_example.vcproj", "{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A} = {D18EA0C9-8C65-441D-884C-55EB43A84F2A}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "static_library", "static_library.vcproj", "{D18EA0C9-8C65-441D-884C-55EB43A84F2A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
Debug = Debug
|
||||
Release = Release
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfiguration) = postSolution
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Debug.ActiveCfg = Debug|Win32
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Debug.Build.0 = Debug|Win32
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Release.ActiveCfg = Release|Win32
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Release.Build.0 = Release|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.ActiveCfg = Debug|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.Build.0 = Debug|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.ActiveCfg = Release|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sine_example", "sine_example.vcproj", "{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A} = {D18EA0C9-8C65-441D-884C-55EB43A84F2A}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "static_library", "static_library.vcproj", "{D18EA0C9-8C65-441D-884C-55EB43A84F2A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
Debug = Debug
|
||||
Release = Release
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfiguration) = postSolution
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Debug.ActiveCfg = Debug|Win32
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Debug.Build.0 = Debug|Win32
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Release.ActiveCfg = Release|Win32
|
||||
{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}.Release.Build.0 = Release|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.ActiveCfg = Debug|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.Build.0 = Debug|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.ActiveCfg = Release|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
@@ -1,327 +1,327 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="sine_example"
|
||||
ProjectGUID="{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="Debug"
|
||||
IntermediateDirectory="Debug"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../include/;../../../../include/;../../../../src/common/;../../../../../asiosdk2/common/,../../../../../asiosdk2/host/,../../../../../asiosdk2/host/pc/"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="$(IntDir)/vc71.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="../../lib/portaudiocpp-vc7_1-d.lib"
|
||||
OutputFile="../../bin/sine_example.exe"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/sine_example.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="Release"
|
||||
IntermediateDirectory="Release"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../include/;../../../../include/;../../../../src/common/;../../../../../asiosdk2/common/,../../../../../asiosdk2/host/,../../../../../asiosdk2/host/pc/"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="$(IntDir)/vc71.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="../../lib/portaudiocpp-vc7_1-r.lib"
|
||||
OutputFile="../../bin/sine_example.exe"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Files"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath="..\..\example\sine.cxx">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="PortAudio v19 Files"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_allocation.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\asio\pa_asio.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_converters.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_cpuload.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_dither.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_front.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_process.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\skeleton\pa_hostapi_skeleton.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_stream.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_trace.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\dsound\pa_win_ds.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\os\win\pa_win_hostapis.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\os\win\pa_win_util.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\wasapi\pa_win_wasapi.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\wmme\pa_win_wmme.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\os\win\pa_x86_plain_converters.c">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="ASIO 2 SDK Files"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath="..\..\..\..\..\asiosdk2\common\asio.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\..\asiosdk2\host\asiodrivers.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\..\asiosdk2\host\pc\asiolist.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="sine_example"
|
||||
ProjectGUID="{1B9A038D-80A3-4DBD-9F0D-AF10B49B863A}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="Debug"
|
||||
IntermediateDirectory="Debug"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../include/;../../../../include/;../../../../src/common/;../../../../../asiosdk2/common/,../../../../../asiosdk2/host/,../../../../../asiosdk2/host/pc/"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="$(IntDir)/vc71.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="../../lib/portaudiocpp-vc7_1-d.lib"
|
||||
OutputFile="../../bin/sine_example.exe"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/sine_example.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="Release"
|
||||
IntermediateDirectory="Release"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../include/;../../../../include/;../../../../src/common/;../../../../../asiosdk2/common/,../../../../../asiosdk2/host/,../../../../../asiosdk2/host/pc/"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="$(IntDir)/vc71.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="../../lib/portaudiocpp-vc7_1-r.lib"
|
||||
OutputFile="../../bin/sine_example.exe"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Files"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath="..\..\example\sine.cxx">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="PortAudio v19 Files"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_allocation.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\asio\pa_asio.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_converters.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_cpuload.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_dither.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_front.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_process.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\skeleton\pa_hostapi_skeleton.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_stream.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\common\pa_trace.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\dsound\pa_win_ds.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\dsound\pa_win_ds_dynlink.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\os\win\pa_win_hostapis.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\os\win\pa_win_util.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\wasapi\pa_win_wasapi.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\hostapi\wmme\pa_win_wmme.c">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\src\os\win\pa_x86_plain_converters.c">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="ASIO 2 SDK Files"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath="..\..\..\..\..\asiosdk2\common\asio.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\..\asiosdk2\host\asiodrivers.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\..\asiosdk2\host\pc\asiolist.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "static_library", "static_library.vcproj", "{D18EA0C9-8C65-441D-884C-55EB43A84F2A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
Debug = Debug
|
||||
Release = Release
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfiguration) = postSolution
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.ActiveCfg = Debug|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.Build.0 = Debug|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.ActiveCfg = Release|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "static_library", "static_library.vcproj", "{D18EA0C9-8C65-441D-884C-55EB43A84F2A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
Debug = Debug
|
||||
Release = Release
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfiguration) = postSolution
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.ActiveCfg = Debug|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Debug.Build.0 = Debug|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.ActiveCfg = Release|Win32
|
||||
{D18EA0C9-8C65-441D-884C-55EB43A84F2A}.Release.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
@@ -1,218 +1,218 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="static_library"
|
||||
ProjectGUID="{D18EA0C9-8C65-441D-884C-55EB43A84F2A}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../lib/"
|
||||
IntermediateDirectory="Debug"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../include/;../../../../include/"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="$(IntDir)/vc71.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="$(OutDir)/portaudiocpp-vc7_1-d.lib"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../lib/"
|
||||
IntermediateDirectory="Release"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../include/;../../../../include/"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="$(IntDir)/vc71.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="$(OutDir)/portaudiocpp-vc7_1-r.lib"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Files"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\AsioDeviceAdapter.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\AsioDeviceAdapter.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\AutoSystem.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\BlockingStream.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\BlockingStream.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\CallbackInterface.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\CallbackInterface.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\CallbackStream.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\CallbackStream.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\CFunCallbackStream.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\CFunCallbackStream.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\CppFunCallbackStream.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\CppFunCallbackStream.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\Device.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\Device.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\DirectionSpecificStreamParameters.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\DirectionSpecificStreamParameters.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\Exception.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\Exception.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\HostApi.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\HostApi.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\InterfaceCallbackStream.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\InterfaceCallbackStream.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\MemFunCallbackStream.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\MemFunCallbackStream.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\PortAudioCpp.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\SampleDataFormat.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\Stream.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\Stream.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\StreamParameters.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\StreamParameters.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\System.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\System.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\SystemDeviceIterator.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\SystemDeviceIterator.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\SystemHostApiIterator.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\SystemHostApiIterator.hxx">
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="static_library"
|
||||
ProjectGUID="{D18EA0C9-8C65-441D-884C-55EB43A84F2A}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../lib/"
|
||||
IntermediateDirectory="Debug"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../include/;../../../../include/"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="$(IntDir)/vc71.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="$(OutDir)/portaudiocpp-vc7_1-d.lib"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../lib/"
|
||||
IntermediateDirectory="Release"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../include/;../../../../include/"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="$(IntDir)/vc71.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="$(OutDir)/portaudiocpp-vc7_1-r.lib"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Files"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\AsioDeviceAdapter.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\AsioDeviceAdapter.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\AutoSystem.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\BlockingStream.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\BlockingStream.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\CallbackInterface.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\CallbackInterface.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\CallbackStream.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\CallbackStream.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\CFunCallbackStream.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\CFunCallbackStream.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\CppFunCallbackStream.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\CppFunCallbackStream.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\Device.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\Device.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\DirectionSpecificStreamParameters.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\DirectionSpecificStreamParameters.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\Exception.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\Exception.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\HostApi.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\HostApi.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\InterfaceCallbackStream.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\InterfaceCallbackStream.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\MemFunCallbackStream.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\MemFunCallbackStream.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\PortAudioCpp.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\SampleDataFormat.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\Stream.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\Stream.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\StreamParameters.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\StreamParameters.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\System.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\System.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\SystemDeviceIterator.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\SystemDeviceIterator.hxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\portaudiocpp\SystemHostApiIterator.cxx">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\include\portaudiocpp\SystemHostApiIterator.hxx">
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
|
||||
@@ -1,34 +1,34 @@
|
||||
GNU/Linux:
|
||||
----------
|
||||
|
||||
1) Download and install a recent version of Doxygen (preferably version 1.3.3 or
|
||||
later). See http://www.doxygen.org/.
|
||||
2) Download and install a recent version of GraphViz. See
|
||||
http://www.research.att.com/sw/tools/graphviz/.
|
||||
3) Run ``doxygen config.doxy.linux'' in this directory or load and generate the file
|
||||
config.doxy.linux from the Doxywizard application. Or alternatively ``make docs'' can
|
||||
be run from the build/gnu folder.
|
||||
|
||||
The generated html documentation will be placed in /doc/api_reference/. To open
|
||||
the main page of the documentation, open the file /doc/api_reference/index.html in
|
||||
an html browser.
|
||||
|
||||
|
||||
Windows:
|
||||
--------
|
||||
|
||||
1) Download and install a recent Doxygen (preferably version 1.3.4 or later). See
|
||||
http://www.doxygen.org/.
|
||||
2) Download and install a recent version of GraphViz. See
|
||||
http://www.research.att.com/sw/tools/graphviz/.
|
||||
3) If needed, edit the config.doxy file in an ascii text editor so that
|
||||
``DOT_PATH'' variable points to the folder where GraphViz is installed.
|
||||
4) Run ``doxygen config.doxy'' in this directory or load and generate the file
|
||||
config.doxy from the Doxywizard application.
|
||||
|
||||
The generated html documentation will be placed in /doc/api_reference/. To open
|
||||
the main page of the documentation, open the file /doc/api_reference/index.html in
|
||||
an html browser.
|
||||
|
||||
|
||||
|
||||
GNU/Linux:
|
||||
----------
|
||||
|
||||
1) Download and install a recent version of Doxygen (preferably version 1.3.3 or
|
||||
later). See http://www.doxygen.org/.
|
||||
2) Download and install a recent version of GraphViz. See
|
||||
http://www.research.att.com/sw/tools/graphviz/.
|
||||
3) Run ``doxygen config.doxy.linux'' in this directory or load and generate the file
|
||||
config.doxy.linux from the Doxywizard application. Or alternatively ``make docs'' can
|
||||
be run from the build/gnu folder.
|
||||
|
||||
The generated html documentation will be placed in /doc/api_reference/. To open
|
||||
the main page of the documentation, open the file /doc/api_reference/index.html in
|
||||
an html browser.
|
||||
|
||||
|
||||
Windows:
|
||||
--------
|
||||
|
||||
1) Download and install a recent Doxygen (preferably version 1.3.4 or later). See
|
||||
http://www.doxygen.org/.
|
||||
2) Download and install a recent version of GraphViz. See
|
||||
http://www.research.att.com/sw/tools/graphviz/.
|
||||
3) If needed, edit the config.doxy file in an ascii text editor so that
|
||||
``DOT_PATH'' variable points to the folder where GraphViz is installed.
|
||||
4) Run ``doxygen config.doxy'' in this directory or load and generate the file
|
||||
config.doxy from the Doxywizard application.
|
||||
|
||||
The generated html documentation will be placed in /doc/api_reference/. To open
|
||||
the main page of the documentation, open the file /doc/api_reference/index.html in
|
||||
an html browser.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,210 +1,210 @@
|
||||
# Doxyfile 1.3.3
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# General configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
PROJECT_NAME = PortAudioCpp
|
||||
PROJECT_NUMBER = 2.0
|
||||
OUTPUT_DIRECTORY = ./
|
||||
OUTPUT_LANGUAGE = English
|
||||
USE_WINDOWS_ENCODING = YES
|
||||
EXTRACT_ALL = YES
|
||||
EXTRACT_PRIVATE = YES
|
||||
EXTRACT_STATIC = YES
|
||||
EXTRACT_LOCAL_CLASSES = YES
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
HIDE_FRIEND_COMPOUNDS = NO
|
||||
HIDE_IN_BODY_DOCS = NO
|
||||
BRIEF_MEMBER_DESC = YES
|
||||
REPEAT_BRIEF = YES
|
||||
ALWAYS_DETAILED_SEC = YES
|
||||
INLINE_INHERITED_MEMB = NO
|
||||
FULL_PATH_NAMES = NO
|
||||
STRIP_FROM_PATH =
|
||||
INTERNAL_DOCS = NO
|
||||
CASE_SENSE_NAMES = YES
|
||||
SHORT_NAMES = YES
|
||||
HIDE_SCOPE_NAMES = NO
|
||||
SHOW_INCLUDE_FILES = YES
|
||||
JAVADOC_AUTOBRIEF = NO
|
||||
MULTILINE_CPP_IS_BRIEF = NO
|
||||
DETAILS_AT_TOP = YES
|
||||
INHERIT_DOCS = YES
|
||||
INLINE_INFO = YES
|
||||
SORT_MEMBER_DOCS = NO
|
||||
DISTRIBUTE_GROUP_DOC = NO
|
||||
TAB_SIZE = 4
|
||||
GENERATE_TODOLIST = YES
|
||||
GENERATE_TESTLIST = YES
|
||||
GENERATE_BUGLIST = YES
|
||||
GENERATE_DEPRECATEDLIST= YES
|
||||
ALIASES =
|
||||
ENABLED_SECTIONS =
|
||||
MAX_INITIALIZER_LINES = 30
|
||||
OPTIMIZE_OUTPUT_FOR_C = NO
|
||||
OPTIMIZE_OUTPUT_JAVA = NO
|
||||
SHOW_USED_FILES = YES
|
||||
SUBGROUPING = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to warning and progress messages
|
||||
#---------------------------------------------------------------------------
|
||||
QUIET = NO
|
||||
WARNINGS = YES
|
||||
WARN_IF_UNDOCUMENTED = YES
|
||||
WARN_IF_DOC_ERROR = YES
|
||||
WARN_FORMAT = "$file:$line: $text"
|
||||
WARN_LOGFILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
INPUT = ../source \
|
||||
../include
|
||||
FILE_PATTERNS = *.hxx \
|
||||
*.cxx
|
||||
RECURSIVE = YES
|
||||
EXCLUDE =
|
||||
EXCLUDE_SYMLINKS = NO
|
||||
EXCLUDE_PATTERNS =
|
||||
EXAMPLE_PATH =
|
||||
EXAMPLE_PATTERNS =
|
||||
EXAMPLE_RECURSIVE = NO
|
||||
IMAGE_PATH =
|
||||
INPUT_FILTER =
|
||||
FILTER_SOURCE_FILES = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to source browsing
|
||||
#---------------------------------------------------------------------------
|
||||
SOURCE_BROWSER = NO
|
||||
INLINE_SOURCES = NO
|
||||
STRIP_CODE_COMMENTS = YES
|
||||
REFERENCED_BY_RELATION = YES
|
||||
REFERENCES_RELATION = YES
|
||||
VERBATIM_HEADERS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the alphabetical class index
|
||||
#---------------------------------------------------------------------------
|
||||
ALPHABETICAL_INDEX = YES
|
||||
COLS_IN_ALPHA_INDEX = 2
|
||||
IGNORE_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the HTML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_HTML = YES
|
||||
HTML_OUTPUT = api_reference
|
||||
HTML_FILE_EXTENSION = .html
|
||||
HTML_HEADER =
|
||||
HTML_FOOTER =
|
||||
HTML_STYLESHEET =
|
||||
HTML_ALIGN_MEMBERS = YES
|
||||
GENERATE_HTMLHELP = NO
|
||||
CHM_FILE =
|
||||
HHC_LOCATION =
|
||||
GENERATE_CHI = NO
|
||||
BINARY_TOC = NO
|
||||
TOC_EXPAND = NO
|
||||
DISABLE_INDEX = NO
|
||||
ENUM_VALUES_PER_LINE = 4
|
||||
GENERATE_TREEVIEW = NO
|
||||
TREEVIEW_WIDTH = 250
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the LaTeX output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_LATEX = NO
|
||||
LATEX_OUTPUT = latex
|
||||
LATEX_CMD_NAME = latex
|
||||
MAKEINDEX_CMD_NAME = makeindex
|
||||
COMPACT_LATEX = NO
|
||||
PAPER_TYPE = a4wide
|
||||
EXTRA_PACKAGES =
|
||||
LATEX_HEADER =
|
||||
PDF_HYPERLINKS = NO
|
||||
USE_PDFLATEX = NO
|
||||
LATEX_BATCHMODE = NO
|
||||
LATEX_HIDE_INDICES = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the RTF output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_RTF = NO
|
||||
RTF_OUTPUT = rtf
|
||||
COMPACT_RTF = NO
|
||||
RTF_HYPERLINKS = NO
|
||||
RTF_STYLESHEET_FILE =
|
||||
RTF_EXTENSIONS_FILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the man page output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_MAN = NO
|
||||
MAN_OUTPUT = man
|
||||
MAN_EXTENSION = .3
|
||||
MAN_LINKS = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the XML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_XML = NO
|
||||
XML_OUTPUT = xml
|
||||
XML_SCHEMA =
|
||||
XML_DTD =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options for the AutoGen Definitions output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_AUTOGEN_DEF = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the Perl module output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_PERLMOD = NO
|
||||
PERLMOD_LATEX = NO
|
||||
PERLMOD_PRETTY = YES
|
||||
PERLMOD_MAKEVAR_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the preprocessor
|
||||
#---------------------------------------------------------------------------
|
||||
ENABLE_PREPROCESSING = YES
|
||||
MACRO_EXPANSION = NO
|
||||
EXPAND_ONLY_PREDEF = NO
|
||||
SEARCH_INCLUDES = YES
|
||||
INCLUDE_PATH =
|
||||
INCLUDE_FILE_PATTERNS =
|
||||
PREDEFINED =
|
||||
EXPAND_AS_DEFINED =
|
||||
SKIP_FUNCTION_MACROS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::addtions related to external references
|
||||
#---------------------------------------------------------------------------
|
||||
TAGFILES =
|
||||
GENERATE_TAGFILE =
|
||||
ALLEXTERNALS = NO
|
||||
EXTERNAL_GROUPS = YES
|
||||
PERL_PATH = /usr/bin/perl
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the dot tool
|
||||
#---------------------------------------------------------------------------
|
||||
CLASS_DIAGRAMS = YES
|
||||
HIDE_UNDOC_RELATIONS = YES
|
||||
HAVE_DOT = YES
|
||||
CLASS_GRAPH = YES
|
||||
COLLABORATION_GRAPH = YES
|
||||
UML_LOOK = YES
|
||||
TEMPLATE_RELATIONS = YES
|
||||
INCLUDE_GRAPH = YES
|
||||
INCLUDED_BY_GRAPH = YES
|
||||
CALL_GRAPH = NO
|
||||
GRAPHICAL_HIERARCHY = YES
|
||||
DOT_IMAGE_FORMAT = png
|
||||
DOT_PATH = "/usr/bin/dot"
|
||||
DOTFILE_DIRS =
|
||||
MAX_DOT_GRAPH_WIDTH = 1024
|
||||
MAX_DOT_GRAPH_HEIGHT = 1024
|
||||
MAX_DOT_GRAPH_DEPTH = 0
|
||||
GENERATE_LEGEND = YES
|
||||
DOT_CLEANUP = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::addtions related to the search engine
|
||||
#---------------------------------------------------------------------------
|
||||
SEARCHENGINE = NO
|
||||
CGI_NAME = search.cgi
|
||||
CGI_URL =
|
||||
DOC_URL =
|
||||
DOC_ABSPATH =
|
||||
BIN_ABSPATH = /usr/local/bin/
|
||||
EXT_DOC_PATHS =
|
||||
# Doxyfile 1.3.3
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# General configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
PROJECT_NAME = PortAudioCpp
|
||||
PROJECT_NUMBER = 2.0
|
||||
OUTPUT_DIRECTORY = ./
|
||||
OUTPUT_LANGUAGE = English
|
||||
USE_WINDOWS_ENCODING = YES
|
||||
EXTRACT_ALL = YES
|
||||
EXTRACT_PRIVATE = YES
|
||||
EXTRACT_STATIC = YES
|
||||
EXTRACT_LOCAL_CLASSES = YES
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
HIDE_FRIEND_COMPOUNDS = NO
|
||||
HIDE_IN_BODY_DOCS = NO
|
||||
BRIEF_MEMBER_DESC = YES
|
||||
REPEAT_BRIEF = YES
|
||||
ALWAYS_DETAILED_SEC = YES
|
||||
INLINE_INHERITED_MEMB = NO
|
||||
FULL_PATH_NAMES = NO
|
||||
STRIP_FROM_PATH =
|
||||
INTERNAL_DOCS = NO
|
||||
CASE_SENSE_NAMES = YES
|
||||
SHORT_NAMES = YES
|
||||
HIDE_SCOPE_NAMES = NO
|
||||
SHOW_INCLUDE_FILES = YES
|
||||
JAVADOC_AUTOBRIEF = NO
|
||||
MULTILINE_CPP_IS_BRIEF = NO
|
||||
DETAILS_AT_TOP = YES
|
||||
INHERIT_DOCS = YES
|
||||
INLINE_INFO = YES
|
||||
SORT_MEMBER_DOCS = NO
|
||||
DISTRIBUTE_GROUP_DOC = NO
|
||||
TAB_SIZE = 4
|
||||
GENERATE_TODOLIST = YES
|
||||
GENERATE_TESTLIST = YES
|
||||
GENERATE_BUGLIST = YES
|
||||
GENERATE_DEPRECATEDLIST= YES
|
||||
ALIASES =
|
||||
ENABLED_SECTIONS =
|
||||
MAX_INITIALIZER_LINES = 30
|
||||
OPTIMIZE_OUTPUT_FOR_C = NO
|
||||
OPTIMIZE_OUTPUT_JAVA = NO
|
||||
SHOW_USED_FILES = YES
|
||||
SUBGROUPING = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to warning and progress messages
|
||||
#---------------------------------------------------------------------------
|
||||
QUIET = NO
|
||||
WARNINGS = YES
|
||||
WARN_IF_UNDOCUMENTED = YES
|
||||
WARN_IF_DOC_ERROR = YES
|
||||
WARN_FORMAT = "$file:$line: $text"
|
||||
WARN_LOGFILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
INPUT = ../source \
|
||||
../include
|
||||
FILE_PATTERNS = *.hxx \
|
||||
*.cxx
|
||||
RECURSIVE = YES
|
||||
EXCLUDE =
|
||||
EXCLUDE_SYMLINKS = NO
|
||||
EXCLUDE_PATTERNS =
|
||||
EXAMPLE_PATH =
|
||||
EXAMPLE_PATTERNS =
|
||||
EXAMPLE_RECURSIVE = NO
|
||||
IMAGE_PATH =
|
||||
INPUT_FILTER =
|
||||
FILTER_SOURCE_FILES = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to source browsing
|
||||
#---------------------------------------------------------------------------
|
||||
SOURCE_BROWSER = NO
|
||||
INLINE_SOURCES = NO
|
||||
STRIP_CODE_COMMENTS = YES
|
||||
REFERENCED_BY_RELATION = YES
|
||||
REFERENCES_RELATION = YES
|
||||
VERBATIM_HEADERS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the alphabetical class index
|
||||
#---------------------------------------------------------------------------
|
||||
ALPHABETICAL_INDEX = YES
|
||||
COLS_IN_ALPHA_INDEX = 2
|
||||
IGNORE_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the HTML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_HTML = YES
|
||||
HTML_OUTPUT = api_reference
|
||||
HTML_FILE_EXTENSION = .html
|
||||
HTML_HEADER =
|
||||
HTML_FOOTER =
|
||||
HTML_STYLESHEET =
|
||||
HTML_ALIGN_MEMBERS = YES
|
||||
GENERATE_HTMLHELP = NO
|
||||
CHM_FILE =
|
||||
HHC_LOCATION =
|
||||
GENERATE_CHI = NO
|
||||
BINARY_TOC = NO
|
||||
TOC_EXPAND = NO
|
||||
DISABLE_INDEX = NO
|
||||
ENUM_VALUES_PER_LINE = 4
|
||||
GENERATE_TREEVIEW = NO
|
||||
TREEVIEW_WIDTH = 250
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the LaTeX output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_LATEX = NO
|
||||
LATEX_OUTPUT = latex
|
||||
LATEX_CMD_NAME = latex
|
||||
MAKEINDEX_CMD_NAME = makeindex
|
||||
COMPACT_LATEX = NO
|
||||
PAPER_TYPE = a4wide
|
||||
EXTRA_PACKAGES =
|
||||
LATEX_HEADER =
|
||||
PDF_HYPERLINKS = NO
|
||||
USE_PDFLATEX = NO
|
||||
LATEX_BATCHMODE = NO
|
||||
LATEX_HIDE_INDICES = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the RTF output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_RTF = NO
|
||||
RTF_OUTPUT = rtf
|
||||
COMPACT_RTF = NO
|
||||
RTF_HYPERLINKS = NO
|
||||
RTF_STYLESHEET_FILE =
|
||||
RTF_EXTENSIONS_FILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the man page output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_MAN = NO
|
||||
MAN_OUTPUT = man
|
||||
MAN_EXTENSION = .3
|
||||
MAN_LINKS = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the XML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_XML = NO
|
||||
XML_OUTPUT = xml
|
||||
XML_SCHEMA =
|
||||
XML_DTD =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options for the AutoGen Definitions output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_AUTOGEN_DEF = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the Perl module output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_PERLMOD = NO
|
||||
PERLMOD_LATEX = NO
|
||||
PERLMOD_PRETTY = YES
|
||||
PERLMOD_MAKEVAR_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the preprocessor
|
||||
#---------------------------------------------------------------------------
|
||||
ENABLE_PREPROCESSING = YES
|
||||
MACRO_EXPANSION = NO
|
||||
EXPAND_ONLY_PREDEF = NO
|
||||
SEARCH_INCLUDES = YES
|
||||
INCLUDE_PATH =
|
||||
INCLUDE_FILE_PATTERNS =
|
||||
PREDEFINED =
|
||||
EXPAND_AS_DEFINED =
|
||||
SKIP_FUNCTION_MACROS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::addtions related to external references
|
||||
#---------------------------------------------------------------------------
|
||||
TAGFILES =
|
||||
GENERATE_TAGFILE =
|
||||
ALLEXTERNALS = NO
|
||||
EXTERNAL_GROUPS = YES
|
||||
PERL_PATH = /usr/bin/perl
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the dot tool
|
||||
#---------------------------------------------------------------------------
|
||||
CLASS_DIAGRAMS = YES
|
||||
HIDE_UNDOC_RELATIONS = YES
|
||||
HAVE_DOT = YES
|
||||
CLASS_GRAPH = YES
|
||||
COLLABORATION_GRAPH = YES
|
||||
UML_LOOK = YES
|
||||
TEMPLATE_RELATIONS = YES
|
||||
INCLUDE_GRAPH = YES
|
||||
INCLUDED_BY_GRAPH = YES
|
||||
CALL_GRAPH = NO
|
||||
GRAPHICAL_HIERARCHY = YES
|
||||
DOT_IMAGE_FORMAT = png
|
||||
DOT_PATH = "/usr/bin/dot"
|
||||
DOTFILE_DIRS =
|
||||
MAX_DOT_GRAPH_WIDTH = 1024
|
||||
MAX_DOT_GRAPH_HEIGHT = 1024
|
||||
MAX_DOT_GRAPH_DEPTH = 0
|
||||
GENERATE_LEGEND = YES
|
||||
DOT_CLEANUP = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::addtions related to the search engine
|
||||
#---------------------------------------------------------------------------
|
||||
SEARCHENGINE = NO
|
||||
CGI_NAME = search.cgi
|
||||
CGI_URL =
|
||||
DOC_URL =
|
||||
DOC_ABSPATH =
|
||||
BIN_ABSPATH = /usr/local/bin/
|
||||
EXT_DOC_PATHS =
|
||||
|
||||
@@ -1,137 +1,137 @@
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include <iostream>
|
||||
#include <cmath>
|
||||
#include <cassert>
|
||||
#include <cstddef>
|
||||
#include "portaudiocpp/PortAudioCpp.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Some constants:
|
||||
const int NUM_SECONDS = 5;
|
||||
const double SAMPLE_RATE = 44100.0;
|
||||
const int FRAMES_PER_BUFFER = 64;
|
||||
const int TABLE_SIZE = 200;
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// SineGenerator class:
|
||||
class SineGenerator
|
||||
{
|
||||
public:
|
||||
SineGenerator(int tableSize) : tableSize_(tableSize), leftPhase_(0), rightPhase_(0)
|
||||
{
|
||||
const double PI = 3.14159265;
|
||||
table_ = new float[tableSize];
|
||||
for (int i = 0; i < tableSize; ++i)
|
||||
{
|
||||
table_[i] = 0.125f * (float)sin(((double)i/(double)tableSize)*PI*2.);
|
||||
}
|
||||
}
|
||||
|
||||
~SineGenerator()
|
||||
{
|
||||
delete[] table_;
|
||||
}
|
||||
|
||||
int generate(const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags)
|
||||
{
|
||||
assert(outputBuffer != NULL);
|
||||
|
||||
float **out = static_cast<float **>(outputBuffer);
|
||||
|
||||
for (unsigned int i = 0; i < framesPerBuffer; ++i)
|
||||
{
|
||||
out[0][i] = table_[leftPhase_];
|
||||
out[1][i] = table_[rightPhase_];
|
||||
|
||||
leftPhase_ += 1;
|
||||
if (leftPhase_ >= tableSize_)
|
||||
leftPhase_ -= tableSize_;
|
||||
|
||||
rightPhase_ += 3;
|
||||
if (rightPhase_ >= tableSize_)
|
||||
rightPhase_ -= tableSize_;
|
||||
}
|
||||
|
||||
return paContinue;
|
||||
}
|
||||
|
||||
private:
|
||||
float *table_;
|
||||
int tableSize_;
|
||||
int leftPhase_;
|
||||
int rightPhase_;
|
||||
};
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// main:
|
||||
int main(int, char *[]);
|
||||
int main(int, char *[])
|
||||
{
|
||||
try
|
||||
{
|
||||
// Create a SineGenerator object:
|
||||
SineGenerator sineGenerator(TABLE_SIZE);
|
||||
|
||||
std::cout << "Setting up PortAudio..." << std::endl;
|
||||
|
||||
// Set up the System:
|
||||
portaudio::AutoSystem autoSys;
|
||||
portaudio::System &sys = portaudio::System::instance();
|
||||
|
||||
// Set up the parameters required to open a (Callback)Stream:
|
||||
portaudio::DirectionSpecificStreamParameters outParams(sys.defaultOutputDevice(), 2, portaudio::FLOAT32, false, sys.defaultOutputDevice().defaultLowOutputLatency(), NULL);
|
||||
portaudio::StreamParameters params(portaudio::DirectionSpecificStreamParameters::null(), outParams, SAMPLE_RATE, FRAMES_PER_BUFFER, paClipOff);
|
||||
|
||||
std::cout << "Opening stereo output stream..." << std::endl;
|
||||
|
||||
// Create (and open) a new Stream, using the SineGenerator::generate function as a callback:
|
||||
portaudio::MemFunCallbackStream<SineGenerator> stream(params, sineGenerator, &SineGenerator::generate);
|
||||
|
||||
std::cout << "Starting playback for " << NUM_SECONDS << " seconds." << std::endl;
|
||||
|
||||
// Start the Stream (audio playback starts):
|
||||
stream.start();
|
||||
|
||||
// Wait for 5 seconds:
|
||||
sys.sleep(NUM_SECONDS * 1000);
|
||||
|
||||
std::cout << "Closing stream..." <<std::endl;
|
||||
|
||||
// Stop the Stream (not strictly needed as termintating the System will also stop all open Streams):
|
||||
stream.stop();
|
||||
|
||||
// Close the Stream (not strictly needed as terminating the System will also close all open Streams):
|
||||
stream.close();
|
||||
|
||||
// Terminate the System (not strictly needed as the AutoSystem will also take care of this when it
|
||||
// goes out of scope):
|
||||
sys.terminate();
|
||||
|
||||
std::cout << "Test finished." << std::endl;
|
||||
}
|
||||
catch (const portaudio::PaException &e)
|
||||
{
|
||||
std::cout << "A PortAudio error occured: " << e.paErrorText() << std::endl;
|
||||
}
|
||||
catch (const portaudio::PaCppException &e)
|
||||
{
|
||||
std::cout << "A PortAudioCpp error occured: " << e.what() << std::endl;
|
||||
}
|
||||
catch (const std::exception &e)
|
||||
{
|
||||
std::cout << "A generic exception occured: " << e.what() << std::endl;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
std::cout << "An unknown exception occured." << std::endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include <iostream>
|
||||
#include <cmath>
|
||||
#include <cassert>
|
||||
#include <cstddef>
|
||||
#include "portaudiocpp/PortAudioCpp.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Some constants:
|
||||
const int NUM_SECONDS = 5;
|
||||
const double SAMPLE_RATE = 44100.0;
|
||||
const int FRAMES_PER_BUFFER = 64;
|
||||
const int TABLE_SIZE = 200;
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// SineGenerator class:
|
||||
class SineGenerator
|
||||
{
|
||||
public:
|
||||
SineGenerator(int tableSize) : tableSize_(tableSize), leftPhase_(0), rightPhase_(0)
|
||||
{
|
||||
const double PI = 3.14159265;
|
||||
table_ = new float[tableSize];
|
||||
for (int i = 0; i < tableSize; ++i)
|
||||
{
|
||||
table_[i] = 0.125f * (float)sin(((double)i/(double)tableSize)*PI*2.);
|
||||
}
|
||||
}
|
||||
|
||||
~SineGenerator()
|
||||
{
|
||||
delete[] table_;
|
||||
}
|
||||
|
||||
int generate(const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags)
|
||||
{
|
||||
assert(outputBuffer != NULL);
|
||||
|
||||
float **out = static_cast<float **>(outputBuffer);
|
||||
|
||||
for (unsigned int i = 0; i < framesPerBuffer; ++i)
|
||||
{
|
||||
out[0][i] = table_[leftPhase_];
|
||||
out[1][i] = table_[rightPhase_];
|
||||
|
||||
leftPhase_ += 1;
|
||||
if (leftPhase_ >= tableSize_)
|
||||
leftPhase_ -= tableSize_;
|
||||
|
||||
rightPhase_ += 3;
|
||||
if (rightPhase_ >= tableSize_)
|
||||
rightPhase_ -= tableSize_;
|
||||
}
|
||||
|
||||
return paContinue;
|
||||
}
|
||||
|
||||
private:
|
||||
float *table_;
|
||||
int tableSize_;
|
||||
int leftPhase_;
|
||||
int rightPhase_;
|
||||
};
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// main:
|
||||
int main(int, char *[]);
|
||||
int main(int, char *[])
|
||||
{
|
||||
try
|
||||
{
|
||||
// Create a SineGenerator object:
|
||||
SineGenerator sineGenerator(TABLE_SIZE);
|
||||
|
||||
std::cout << "Setting up PortAudio..." << std::endl;
|
||||
|
||||
// Set up the System:
|
||||
portaudio::AutoSystem autoSys;
|
||||
portaudio::System &sys = portaudio::System::instance();
|
||||
|
||||
// Set up the parameters required to open a (Callback)Stream:
|
||||
portaudio::DirectionSpecificStreamParameters outParams(sys.defaultOutputDevice(), 2, portaudio::FLOAT32, false, sys.defaultOutputDevice().defaultLowOutputLatency(), NULL);
|
||||
portaudio::StreamParameters params(portaudio::DirectionSpecificStreamParameters::null(), outParams, SAMPLE_RATE, FRAMES_PER_BUFFER, paClipOff);
|
||||
|
||||
std::cout << "Opening stereo output stream..." << std::endl;
|
||||
|
||||
// Create (and open) a new Stream, using the SineGenerator::generate function as a callback:
|
||||
portaudio::MemFunCallbackStream<SineGenerator> stream(params, sineGenerator, &SineGenerator::generate);
|
||||
|
||||
std::cout << "Starting playback for " << NUM_SECONDS << " seconds." << std::endl;
|
||||
|
||||
// Start the Stream (audio playback starts):
|
||||
stream.start();
|
||||
|
||||
// Wait for 5 seconds:
|
||||
sys.sleep(NUM_SECONDS * 1000);
|
||||
|
||||
std::cout << "Closing stream..." <<std::endl;
|
||||
|
||||
// Stop the Stream (not strictly needed as termintating the System will also stop all open Streams):
|
||||
stream.stop();
|
||||
|
||||
// Close the Stream (not strictly needed as terminating the System will also close all open Streams):
|
||||
stream.close();
|
||||
|
||||
// Terminate the System (not strictly needed as the AutoSystem will also take care of this when it
|
||||
// goes out of scope):
|
||||
sys.terminate();
|
||||
|
||||
std::cout << "Test finished." << std::endl;
|
||||
}
|
||||
catch (const portaudio::PaException &e)
|
||||
{
|
||||
std::cout << "A PortAudio error occured: " << e.paErrorText() << std::endl;
|
||||
}
|
||||
catch (const portaudio::PaCppException &e)
|
||||
{
|
||||
std::cout << "A PortAudioCpp error occured: " << e.what() << std::endl;
|
||||
}
|
||||
catch (const std::exception &e)
|
||||
{
|
||||
std::cout << "A generic exception occured: " << e.what() << std::endl;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
std::cout << "An unknown exception occured." << std::endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace portaudio
|
||||
|
||||
void showControlPanel(void *systemSpecific);
|
||||
|
||||
const char *inputChannelName(int channelIndex) const;
|
||||
const char *inputChannelName(int channelIndex) const;
|
||||
const char *outputChannelName(int channelIndex) const;
|
||||
|
||||
private:
|
||||
|
||||
@@ -1,62 +1,62 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_AUTOSYSTEM_HXX
|
||||
#define INCLUDED_PORTAUDIO_AUTOSYSTEM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudiocpp/System.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief A RAII idiom class to ensure automatic clean-up when an exception is
|
||||
/// raised.
|
||||
///
|
||||
/// A simple helper class which uses the 'Resource Acquisition is Initialization'
|
||||
/// idiom (RAII). Use this class to initialize/terminate the System rather than
|
||||
/// using System directly. AutoSystem must be created on stack and must be valid
|
||||
/// throughout the time you wish to use PortAudioCpp. Your 'main' function might be
|
||||
/// a good place for it.
|
||||
///
|
||||
/// To avoid having to type portaudio::System::instance().xyz() all the time, it's usually
|
||||
/// a good idea to make a reference to the System which can be accessed directly.
|
||||
/// @verbatim
|
||||
/// portaudio::AutoSys autoSys;
|
||||
/// portaudio::System &sys = portaudio::System::instance();
|
||||
/// @endverbatim
|
||||
//////
|
||||
class AutoSystem
|
||||
{
|
||||
public:
|
||||
AutoSystem(bool initialize = true)
|
||||
{
|
||||
if (initialize)
|
||||
System::initialize();
|
||||
}
|
||||
|
||||
~AutoSystem()
|
||||
{
|
||||
if (System::exists())
|
||||
System::terminate();
|
||||
}
|
||||
|
||||
void initialize()
|
||||
{
|
||||
System::initialize();
|
||||
}
|
||||
|
||||
void terminate()
|
||||
{
|
||||
System::terminate();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_AUTOSYSTEM_HXX
|
||||
#ifndef INCLUDED_PORTAUDIO_AUTOSYSTEM_HXX
|
||||
#define INCLUDED_PORTAUDIO_AUTOSYSTEM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudiocpp/System.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief A RAII idiom class to ensure automatic clean-up when an exception is
|
||||
/// raised.
|
||||
///
|
||||
/// A simple helper class which uses the 'Resource Acquisition is Initialization'
|
||||
/// idiom (RAII). Use this class to initialize/terminate the System rather than
|
||||
/// using System directly. AutoSystem must be created on stack and must be valid
|
||||
/// throughout the time you wish to use PortAudioCpp. Your 'main' function might be
|
||||
/// a good place for it.
|
||||
///
|
||||
/// To avoid having to type portaudio::System::instance().xyz() all the time, it's usually
|
||||
/// a good idea to make a reference to the System which can be accessed directly.
|
||||
/// @verbatim
|
||||
/// portaudio::AutoSys autoSys;
|
||||
/// portaudio::System &sys = portaudio::System::instance();
|
||||
/// @endverbatim
|
||||
//////
|
||||
class AutoSystem
|
||||
{
|
||||
public:
|
||||
AutoSystem(bool initialize = true)
|
||||
{
|
||||
if (initialize)
|
||||
System::initialize();
|
||||
}
|
||||
|
||||
~AutoSystem()
|
||||
{
|
||||
if (System::exists())
|
||||
System::terminate();
|
||||
}
|
||||
|
||||
void initialize()
|
||||
{
|
||||
System::initialize();
|
||||
}
|
||||
|
||||
void terminate()
|
||||
{
|
||||
System::terminate();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_AUTOSYSTEM_HXX
|
||||
|
||||
@@ -1,45 +1,45 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_BLOCKINGSTREAM_HXX
|
||||
#define INCLUDED_PORTAUDIO_BLOCKINGSTREAM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudiocpp/Stream.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
|
||||
//////
|
||||
/// @brief Stream class for blocking read/write-style input and output.
|
||||
//////
|
||||
class BlockingStream : public Stream
|
||||
{
|
||||
public:
|
||||
BlockingStream();
|
||||
BlockingStream(const StreamParameters ¶meters);
|
||||
~BlockingStream();
|
||||
|
||||
void open(const StreamParameters ¶meters);
|
||||
|
||||
void read(void *buffer, unsigned long numFrames);
|
||||
void write(const void *buffer, unsigned long numFrames);
|
||||
|
||||
signed long availableReadSize() const;
|
||||
signed long availableWriteSize() const;
|
||||
|
||||
private:
|
||||
BlockingStream(const BlockingStream &); // non-copyable
|
||||
BlockingStream &operator=(const BlockingStream &); // non-copyable
|
||||
};
|
||||
|
||||
|
||||
|
||||
} // portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_BLOCKINGSTREAM_HXX
|
||||
|
||||
#ifndef INCLUDED_PORTAUDIO_BLOCKINGSTREAM_HXX
|
||||
#define INCLUDED_PORTAUDIO_BLOCKINGSTREAM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudiocpp/Stream.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
|
||||
//////
|
||||
/// @brief Stream class for blocking read/write-style input and output.
|
||||
//////
|
||||
class BlockingStream : public Stream
|
||||
{
|
||||
public:
|
||||
BlockingStream();
|
||||
BlockingStream(const StreamParameters ¶meters);
|
||||
~BlockingStream();
|
||||
|
||||
void open(const StreamParameters ¶meters);
|
||||
|
||||
void read(void *buffer, unsigned long numFrames);
|
||||
void write(const void *buffer, unsigned long numFrames);
|
||||
|
||||
signed long availableReadSize() const;
|
||||
signed long availableWriteSize() const;
|
||||
|
||||
private:
|
||||
BlockingStream(const BlockingStream &); // non-copyable
|
||||
BlockingStream &operator=(const BlockingStream &); // non-copyable
|
||||
};
|
||||
|
||||
|
||||
|
||||
} // portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_BLOCKINGSTREAM_HXX
|
||||
|
||||
|
||||
@@ -1,49 +1,49 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_CFUNCALLBACKSTREAM_HXX
|
||||
#define INCLUDED_PORTAUDIO_CFUNCALLBACKSTREAM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/CallbackStream.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s)
|
||||
namespace portaudio
|
||||
{
|
||||
class StreamParameters;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @brief Callback stream using a free function with C linkage. It's important that the function
|
||||
/// the passed function pointer points to is declared ``extern "C"''.
|
||||
//////
|
||||
class CFunCallbackStream : public CallbackStream
|
||||
{
|
||||
public:
|
||||
CFunCallbackStream();
|
||||
CFunCallbackStream(const StreamParameters ¶meters, PaStreamCallback *funPtr, void *userData);
|
||||
~CFunCallbackStream();
|
||||
|
||||
void open(const StreamParameters ¶meters, PaStreamCallback *funPtr, void *userData);
|
||||
|
||||
private:
|
||||
CFunCallbackStream(const CFunCallbackStream &); // non-copyable
|
||||
CFunCallbackStream &operator=(const CFunCallbackStream &); // non-copyable
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
} // portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_MEMFUNCALLBACKSTREAM_HXX
|
||||
|
||||
#ifndef INCLUDED_PORTAUDIO_CFUNCALLBACKSTREAM_HXX
|
||||
#define INCLUDED_PORTAUDIO_CFUNCALLBACKSTREAM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/CallbackStream.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s)
|
||||
namespace portaudio
|
||||
{
|
||||
class StreamParameters;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @brief Callback stream using a free function with C linkage. It's important that the function
|
||||
/// the passed function pointer points to is declared ``extern "C"''.
|
||||
//////
|
||||
class CFunCallbackStream : public CallbackStream
|
||||
{
|
||||
public:
|
||||
CFunCallbackStream();
|
||||
CFunCallbackStream(const StreamParameters ¶meters, PaStreamCallback *funPtr, void *userData);
|
||||
~CFunCallbackStream();
|
||||
|
||||
void open(const StreamParameters ¶meters, PaStreamCallback *funPtr, void *userData);
|
||||
|
||||
private:
|
||||
CFunCallbackStream(const CFunCallbackStream &); // non-copyable
|
||||
CFunCallbackStream &operator=(const CFunCallbackStream &); // non-copyable
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
} // portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_MEMFUNCALLBACKSTREAM_HXX
|
||||
|
||||
|
||||
@@ -1,45 +1,45 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_CALLBACKINTERFACE_HXX
|
||||
#define INCLUDED_PORTAUDIO_CALLBACKINTERFACE_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @brief Interface for an object that's callable as a PortAudioCpp callback object (ie that implements the
|
||||
/// paCallbackFun method).
|
||||
//////
|
||||
class CallbackInterface
|
||||
{
|
||||
public:
|
||||
virtual ~CallbackInterface() {}
|
||||
|
||||
virtual int paCallbackFun(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags) = 0;
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
namespace impl
|
||||
{
|
||||
extern "C"
|
||||
{
|
||||
int callbackInterfaceToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags,
|
||||
void *userData);
|
||||
} // extern "C"
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_CALLBACKINTERFACE_HXX
|
||||
#ifndef INCLUDED_PORTAUDIO_CALLBACKINTERFACE_HXX
|
||||
#define INCLUDED_PORTAUDIO_CALLBACKINTERFACE_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @brief Interface for an object that's callable as a PortAudioCpp callback object (ie that implements the
|
||||
/// paCallbackFun method).
|
||||
//////
|
||||
class CallbackInterface
|
||||
{
|
||||
public:
|
||||
virtual ~CallbackInterface() {}
|
||||
|
||||
virtual int paCallbackFun(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags) = 0;
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
namespace impl
|
||||
{
|
||||
extern "C"
|
||||
{
|
||||
int callbackInterfaceToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags,
|
||||
void *userData);
|
||||
} // extern "C"
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_CALLBACKINTERFACE_HXX
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_CALLBACKSTREAM_HXX
|
||||
#define INCLUDED_PORTAUDIO_CALLBACKSTREAM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/Stream.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief Base class for all Streams which use a callback-based mechanism.
|
||||
//////
|
||||
class CallbackStream : public Stream
|
||||
{
|
||||
protected:
|
||||
CallbackStream();
|
||||
virtual ~CallbackStream();
|
||||
|
||||
public:
|
||||
// stream info (time-varying)
|
||||
double cpuLoad() const;
|
||||
|
||||
private:
|
||||
CallbackStream(const CallbackStream &); // non-copyable
|
||||
CallbackStream &operator=(const CallbackStream &); // non-copyable
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_CALLBACKSTREAM_HXX
|
||||
#ifndef INCLUDED_PORTAUDIO_CALLBACKSTREAM_HXX
|
||||
#define INCLUDED_PORTAUDIO_CALLBACKSTREAM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/Stream.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief Base class for all Streams which use a callback-based mechanism.
|
||||
//////
|
||||
class CallbackStream : public Stream
|
||||
{
|
||||
protected:
|
||||
CallbackStream();
|
||||
virtual ~CallbackStream();
|
||||
|
||||
public:
|
||||
// stream info (time-varying)
|
||||
double cpuLoad() const;
|
||||
|
||||
private:
|
||||
CallbackStream(const CallbackStream &); // non-copyable
|
||||
CallbackStream &operator=(const CallbackStream &); // non-copyable
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_CALLBACKSTREAM_HXX
|
||||
|
||||
@@ -1,86 +1,86 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_CPPFUNCALLBACKSTREAM_HXX
|
||||
#define INCLUDED_PORTAUDIO_CPPFUNCALLBACKSTREAM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/CallbackStream.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class StreamParameters;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
namespace impl
|
||||
{
|
||||
extern "C"
|
||||
{
|
||||
int cppCallbackToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags,
|
||||
void *userData);
|
||||
} // extern "C"
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @brief Callback stream using a C++ function (either a free function or a static function)
|
||||
/// callback.
|
||||
//////
|
||||
class FunCallbackStream : public CallbackStream
|
||||
{
|
||||
public:
|
||||
typedef int (*CallbackFunPtr)(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags,
|
||||
void *userData);
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @brief Simple structure containing a function pointer to the C++ callback function and a
|
||||
/// (void) pointer to the user supplied data.
|
||||
//////
|
||||
struct CppToCCallbackData
|
||||
{
|
||||
CppToCCallbackData();
|
||||
CppToCCallbackData(CallbackFunPtr funPtr, void *userData);
|
||||
void init(CallbackFunPtr funPtr, void *userData);
|
||||
|
||||
CallbackFunPtr funPtr;
|
||||
void *userData;
|
||||
};
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
FunCallbackStream();
|
||||
FunCallbackStream(const StreamParameters ¶meters, CallbackFunPtr funPtr, void *userData);
|
||||
~FunCallbackStream();
|
||||
|
||||
void open(const StreamParameters ¶meters, CallbackFunPtr funPtr, void *userData);
|
||||
|
||||
private:
|
||||
FunCallbackStream(const FunCallbackStream &); // non-copyable
|
||||
FunCallbackStream &operator=(const FunCallbackStream &); // non-copyable
|
||||
|
||||
CppToCCallbackData adapterData_;
|
||||
|
||||
void open(const StreamParameters ¶meters);
|
||||
};
|
||||
|
||||
|
||||
} // portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_CPPFUNCALLBACKSTREAM_HXX
|
||||
#ifndef INCLUDED_PORTAUDIO_CPPFUNCALLBACKSTREAM_HXX
|
||||
#define INCLUDED_PORTAUDIO_CPPFUNCALLBACKSTREAM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/CallbackStream.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class StreamParameters;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
namespace impl
|
||||
{
|
||||
extern "C"
|
||||
{
|
||||
int cppCallbackToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags,
|
||||
void *userData);
|
||||
} // extern "C"
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @brief Callback stream using a C++ function (either a free function or a static function)
|
||||
/// callback.
|
||||
//////
|
||||
class FunCallbackStream : public CallbackStream
|
||||
{
|
||||
public:
|
||||
typedef int (*CallbackFunPtr)(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags,
|
||||
void *userData);
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @brief Simple structure containing a function pointer to the C++ callback function and a
|
||||
/// (void) pointer to the user supplied data.
|
||||
//////
|
||||
struct CppToCCallbackData
|
||||
{
|
||||
CppToCCallbackData();
|
||||
CppToCCallbackData(CallbackFunPtr funPtr, void *userData);
|
||||
void init(CallbackFunPtr funPtr, void *userData);
|
||||
|
||||
CallbackFunPtr funPtr;
|
||||
void *userData;
|
||||
};
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
FunCallbackStream();
|
||||
FunCallbackStream(const StreamParameters ¶meters, CallbackFunPtr funPtr, void *userData);
|
||||
~FunCallbackStream();
|
||||
|
||||
void open(const StreamParameters ¶meters, CallbackFunPtr funPtr, void *userData);
|
||||
|
||||
private:
|
||||
FunCallbackStream(const FunCallbackStream &); // non-copyable
|
||||
FunCallbackStream &operator=(const FunCallbackStream &); // non-copyable
|
||||
|
||||
CppToCCallbackData adapterData_;
|
||||
|
||||
void open(const StreamParameters ¶meters);
|
||||
};
|
||||
|
||||
|
||||
} // portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_CPPFUNCALLBACKSTREAM_HXX
|
||||
|
||||
@@ -1,91 +1,91 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_DEVICE_HXX
|
||||
#define INCLUDED_PORTAUDIO_DEVICE_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include <iterator>
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/SampleDataFormat.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class System;
|
||||
class HostApi;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
//////
|
||||
/// @brief Class which represents a PortAudio device in the System.
|
||||
///
|
||||
/// A single physical device in the system may have multiple PortAudio
|
||||
/// Device representations using different HostApi 's though. A Device
|
||||
/// can be half-duplex or full-duplex. A half-duplex Device can be used
|
||||
/// to create a half-duplex Stream. A full-duplex Device can be used to
|
||||
/// create a full-duplex Stream. If supported by the HostApi, two
|
||||
/// half-duplex Devices can even be used to create a full-duplex Stream.
|
||||
///
|
||||
/// Note that Device objects are very light-weight and can be passed around
|
||||
/// by-value.
|
||||
//////
|
||||
class Device
|
||||
{
|
||||
public:
|
||||
// query info: name, max in channels, max out channels,
|
||||
// default low/hight input/output latency, default sample rate
|
||||
PaDeviceIndex index() const;
|
||||
const char *name() const;
|
||||
int maxInputChannels() const;
|
||||
int maxOutputChannels() const;
|
||||
PaTime defaultLowInputLatency() const;
|
||||
PaTime defaultHighInputLatency() const;
|
||||
PaTime defaultLowOutputLatency() const;
|
||||
PaTime defaultHighOutputLatency() const;
|
||||
double defaultSampleRate() const;
|
||||
|
||||
bool isInputOnlyDevice() const; // extended
|
||||
bool isOutputOnlyDevice() const; // extended
|
||||
bool isFullDuplexDevice() const; // extended
|
||||
bool isSystemDefaultInputDevice() const; // extended
|
||||
bool isSystemDefaultOutputDevice() const; // extended
|
||||
bool isHostApiDefaultInputDevice() const; // extended
|
||||
bool isHostApiDefaultOutputDevice() const; // extended
|
||||
|
||||
bool operator==(const Device &rhs) const;
|
||||
bool operator!=(const Device &rhs) const;
|
||||
|
||||
// host api reference
|
||||
HostApi &hostApi();
|
||||
const HostApi &hostApi() const;
|
||||
|
||||
private:
|
||||
PaDeviceIndex index_;
|
||||
const PaDeviceInfo *info_;
|
||||
|
||||
private:
|
||||
friend class System;
|
||||
|
||||
explicit Device(PaDeviceIndex index);
|
||||
~Device();
|
||||
|
||||
Device(const Device &); // non-copyable
|
||||
Device &operator=(const Device &); // non-copyable
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_DEVICE_HXX
|
||||
|
||||
#ifndef INCLUDED_PORTAUDIO_DEVICE_HXX
|
||||
#define INCLUDED_PORTAUDIO_DEVICE_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include <iterator>
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/SampleDataFormat.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class System;
|
||||
class HostApi;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
//////
|
||||
/// @brief Class which represents a PortAudio device in the System.
|
||||
///
|
||||
/// A single physical device in the system may have multiple PortAudio
|
||||
/// Device representations using different HostApi 's though. A Device
|
||||
/// can be half-duplex or full-duplex. A half-duplex Device can be used
|
||||
/// to create a half-duplex Stream. A full-duplex Device can be used to
|
||||
/// create a full-duplex Stream. If supported by the HostApi, two
|
||||
/// half-duplex Devices can even be used to create a full-duplex Stream.
|
||||
///
|
||||
/// Note that Device objects are very light-weight and can be passed around
|
||||
/// by-value.
|
||||
//////
|
||||
class Device
|
||||
{
|
||||
public:
|
||||
// query info: name, max in channels, max out channels,
|
||||
// default low/hight input/output latency, default sample rate
|
||||
PaDeviceIndex index() const;
|
||||
const char *name() const;
|
||||
int maxInputChannels() const;
|
||||
int maxOutputChannels() const;
|
||||
PaTime defaultLowInputLatency() const;
|
||||
PaTime defaultHighInputLatency() const;
|
||||
PaTime defaultLowOutputLatency() const;
|
||||
PaTime defaultHighOutputLatency() const;
|
||||
double defaultSampleRate() const;
|
||||
|
||||
bool isInputOnlyDevice() const; // extended
|
||||
bool isOutputOnlyDevice() const; // extended
|
||||
bool isFullDuplexDevice() const; // extended
|
||||
bool isSystemDefaultInputDevice() const; // extended
|
||||
bool isSystemDefaultOutputDevice() const; // extended
|
||||
bool isHostApiDefaultInputDevice() const; // extended
|
||||
bool isHostApiDefaultOutputDevice() const; // extended
|
||||
|
||||
bool operator==(const Device &rhs) const;
|
||||
bool operator!=(const Device &rhs) const;
|
||||
|
||||
// host api reference
|
||||
HostApi &hostApi();
|
||||
const HostApi &hostApi() const;
|
||||
|
||||
private:
|
||||
PaDeviceIndex index_;
|
||||
const PaDeviceInfo *info_;
|
||||
|
||||
private:
|
||||
friend class System;
|
||||
|
||||
explicit Device(PaDeviceIndex index);
|
||||
~Device();
|
||||
|
||||
Device(const Device &); // non-copyable
|
||||
Device &operator=(const Device &); // non-copyable
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_DEVICE_HXX
|
||||
|
||||
|
||||
@@ -1,77 +1,77 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_SINGLEDIRECTIONSTREAMPARAMETERS_HXX
|
||||
#define INCLUDED_PORTAUDIO_SINGLEDIRECTIONSTREAMPARAMETERS_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/System.hxx"
|
||||
#include "portaudiocpp/SampleDataFormat.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class Device;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
//////
|
||||
/// @brief All parameters for one direction (either in or out) of a Stream. Together with
|
||||
/// parameters common to both directions, two DirectionSpecificStreamParameters can make up
|
||||
/// a StreamParameters object which contains all parameters for a Stream.
|
||||
//////
|
||||
class DirectionSpecificStreamParameters
|
||||
{
|
||||
public:
|
||||
static DirectionSpecificStreamParameters null();
|
||||
|
||||
DirectionSpecificStreamParameters();
|
||||
DirectionSpecificStreamParameters(const Device &device, int numChannels, SampleDataFormat format,
|
||||
bool interleaved, PaTime suggestedLatency, void *hostApiSpecificStreamInfo);
|
||||
|
||||
// Set up methods:
|
||||
void setDevice(const Device &device);
|
||||
void setNumChannels(int numChannels);
|
||||
|
||||
void setSampleFormat(SampleDataFormat format, bool interleaved = true);
|
||||
void setHostApiSpecificSampleFormat(PaSampleFormat format, bool interleaved = true);
|
||||
|
||||
void setSuggestedLatency(PaTime latency);
|
||||
|
||||
void setHostApiSpecificStreamInfo(void *streamInfo);
|
||||
|
||||
// Accessor methods:
|
||||
PaStreamParameters *paStreamParameters();
|
||||
const PaStreamParameters *paStreamParameters() const;
|
||||
|
||||
Device &device() const;
|
||||
int numChannels() const;
|
||||
|
||||
SampleDataFormat sampleFormat() const;
|
||||
bool isSampleFormatInterleaved() const;
|
||||
bool isSampleFormatHostApiSpecific() const;
|
||||
PaSampleFormat hostApiSpecificSampleFormat() const;
|
||||
|
||||
PaTime suggestedLatency() const;
|
||||
|
||||
void *hostApiSpecificStreamInfo() const;
|
||||
|
||||
private:
|
||||
PaStreamParameters paStreamParameters_;
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_SINGLEDIRECTIONSTREAMPARAMETERS_HXX
|
||||
#ifndef INCLUDED_PORTAUDIO_SINGLEDIRECTIONSTREAMPARAMETERS_HXX
|
||||
#define INCLUDED_PORTAUDIO_SINGLEDIRECTIONSTREAMPARAMETERS_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/System.hxx"
|
||||
#include "portaudiocpp/SampleDataFormat.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class Device;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
//////
|
||||
/// @brief All parameters for one direction (either in or out) of a Stream. Together with
|
||||
/// parameters common to both directions, two DirectionSpecificStreamParameters can make up
|
||||
/// a StreamParameters object which contains all parameters for a Stream.
|
||||
//////
|
||||
class DirectionSpecificStreamParameters
|
||||
{
|
||||
public:
|
||||
static DirectionSpecificStreamParameters null();
|
||||
|
||||
DirectionSpecificStreamParameters();
|
||||
DirectionSpecificStreamParameters(const Device &device, int numChannels, SampleDataFormat format,
|
||||
bool interleaved, PaTime suggestedLatency, void *hostApiSpecificStreamInfo);
|
||||
|
||||
// Set up methods:
|
||||
void setDevice(const Device &device);
|
||||
void setNumChannels(int numChannels);
|
||||
|
||||
void setSampleFormat(SampleDataFormat format, bool interleaved = true);
|
||||
void setHostApiSpecificSampleFormat(PaSampleFormat format, bool interleaved = true);
|
||||
|
||||
void setSuggestedLatency(PaTime latency);
|
||||
|
||||
void setHostApiSpecificStreamInfo(void *streamInfo);
|
||||
|
||||
// Accessor methods:
|
||||
PaStreamParameters *paStreamParameters();
|
||||
const PaStreamParameters *paStreamParameters() const;
|
||||
|
||||
Device &device() const;
|
||||
int numChannels() const;
|
||||
|
||||
SampleDataFormat sampleFormat() const;
|
||||
bool isSampleFormatInterleaved() const;
|
||||
bool isSampleFormatHostApiSpecific() const;
|
||||
PaSampleFormat hostApiSpecificSampleFormat() const;
|
||||
|
||||
PaTime suggestedLatency() const;
|
||||
|
||||
void *hostApiSpecificStreamInfo() const;
|
||||
|
||||
private:
|
||||
PaStreamParameters paStreamParameters_;
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_SINGLEDIRECTIONSTREAMPARAMETERS_HXX
|
||||
|
||||
@@ -1,108 +1,108 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_EXCEPTION_HXX
|
||||
#define INCLUDED_PORTAUDIO_EXCEPTION_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include <exception>
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
//////
|
||||
/// @brief Base class for all exceptions PortAudioCpp can throw.
|
||||
///
|
||||
/// Class is derived from std::exception.
|
||||
//////
|
||||
class Exception : public std::exception
|
||||
{
|
||||
public:
|
||||
virtual ~Exception() throw() {}
|
||||
|
||||
virtual const char *what() const throw() = 0;
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @brief Wrapper for PortAudio error codes to C++ exceptions.
|
||||
///
|
||||
/// It wraps up PortAudio's error handling mechanism using
|
||||
/// C++ exceptions and is derived from std::exception for
|
||||
/// easy exception handling and to ease integration with
|
||||
/// other code.
|
||||
///
|
||||
/// To know what exceptions each function may throw, look up
|
||||
/// the errors that can occure in the PortAudio documentation
|
||||
/// for the equivalent functions.
|
||||
///
|
||||
/// Some functions are likely to throw an exception (such as
|
||||
/// Stream::open(), etc) and these should always be called in
|
||||
/// try{} catch{} blocks and the thrown exceptions should be
|
||||
/// handled properly (ie. the application shouldn't just abort,
|
||||
/// but merely display a warning dialog to the user or something).
|
||||
/// However nearly all functions in PortAudioCpp are capable
|
||||
/// of throwing exceptions. When a function like Stream::isStopped()
|
||||
/// throws an exception, it's such an exceptional state that it's
|
||||
/// not likely that it can be recovered. PaExceptions such as these
|
||||
/// can ``safely'' be left to be handled by some outer catch-all-like
|
||||
/// mechanism for unrecoverable errors.
|
||||
//////
|
||||
class PaException : public Exception
|
||||
{
|
||||
public:
|
||||
explicit PaException(PaError error);
|
||||
|
||||
const char *what() const throw();
|
||||
|
||||
PaError paError() const;
|
||||
const char *paErrorText() const;
|
||||
|
||||
bool isHostApiError() const; // extended
|
||||
long lastHostApiError() const;
|
||||
const char *lastHostApiErrorText() const;
|
||||
|
||||
bool operator==(const PaException &rhs) const;
|
||||
bool operator!=(const PaException &rhs) const;
|
||||
|
||||
private:
|
||||
PaError error_;
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @brief Exceptions specific to PortAudioCpp (ie. exceptions which do not have an
|
||||
/// equivalent PortAudio error code).
|
||||
//////
|
||||
class PaCppException : public Exception
|
||||
{
|
||||
public:
|
||||
enum ExceptionSpecifier
|
||||
{
|
||||
UNABLE_TO_ADAPT_DEVICE
|
||||
};
|
||||
|
||||
PaCppException(ExceptionSpecifier specifier);
|
||||
|
||||
const char *what() const throw();
|
||||
|
||||
ExceptionSpecifier specifier() const;
|
||||
|
||||
bool operator==(const PaCppException &rhs) const;
|
||||
bool operator!=(const PaCppException &rhs) const;
|
||||
|
||||
private:
|
||||
ExceptionSpecifier specifier_;
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_EXCEPTION_HXX
|
||||
|
||||
#ifndef INCLUDED_PORTAUDIO_EXCEPTION_HXX
|
||||
#define INCLUDED_PORTAUDIO_EXCEPTION_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include <exception>
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
//////
|
||||
/// @brief Base class for all exceptions PortAudioCpp can throw.
|
||||
///
|
||||
/// Class is derived from std::exception.
|
||||
//////
|
||||
class Exception : public std::exception
|
||||
{
|
||||
public:
|
||||
virtual ~Exception() throw() {}
|
||||
|
||||
virtual const char *what() const throw() = 0;
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @brief Wrapper for PortAudio error codes to C++ exceptions.
|
||||
///
|
||||
/// It wraps up PortAudio's error handling mechanism using
|
||||
/// C++ exceptions and is derived from std::exception for
|
||||
/// easy exception handling and to ease integration with
|
||||
/// other code.
|
||||
///
|
||||
/// To know what exceptions each function may throw, look up
|
||||
/// the errors that can occure in the PortAudio documentation
|
||||
/// for the equivalent functions.
|
||||
///
|
||||
/// Some functions are likely to throw an exception (such as
|
||||
/// Stream::open(), etc) and these should always be called in
|
||||
/// try{} catch{} blocks and the thrown exceptions should be
|
||||
/// handled properly (ie. the application shouldn't just abort,
|
||||
/// but merely display a warning dialog to the user or something).
|
||||
/// However nearly all functions in PortAudioCpp are capable
|
||||
/// of throwing exceptions. When a function like Stream::isStopped()
|
||||
/// throws an exception, it's such an exceptional state that it's
|
||||
/// not likely that it can be recovered. PaExceptions such as these
|
||||
/// can ``safely'' be left to be handled by some outer catch-all-like
|
||||
/// mechanism for unrecoverable errors.
|
||||
//////
|
||||
class PaException : public Exception
|
||||
{
|
||||
public:
|
||||
explicit PaException(PaError error);
|
||||
|
||||
const char *what() const throw();
|
||||
|
||||
PaError paError() const;
|
||||
const char *paErrorText() const;
|
||||
|
||||
bool isHostApiError() const; // extended
|
||||
long lastHostApiError() const;
|
||||
const char *lastHostApiErrorText() const;
|
||||
|
||||
bool operator==(const PaException &rhs) const;
|
||||
bool operator!=(const PaException &rhs) const;
|
||||
|
||||
private:
|
||||
PaError error_;
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @brief Exceptions specific to PortAudioCpp (ie. exceptions which do not have an
|
||||
/// equivalent PortAudio error code).
|
||||
//////
|
||||
class PaCppException : public Exception
|
||||
{
|
||||
public:
|
||||
enum ExceptionSpecifier
|
||||
{
|
||||
UNABLE_TO_ADAPT_DEVICE
|
||||
};
|
||||
|
||||
PaCppException(ExceptionSpecifier specifier);
|
||||
|
||||
const char *what() const throw();
|
||||
|
||||
ExceptionSpecifier specifier() const;
|
||||
|
||||
bool operator==(const PaCppException &rhs) const;
|
||||
bool operator!=(const PaCppException &rhs) const;
|
||||
|
||||
private:
|
||||
ExceptionSpecifier specifier_;
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_EXCEPTION_HXX
|
||||
|
||||
|
||||
@@ -1,76 +1,76 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_HOSTAPI_HXX
|
||||
#define INCLUDED_PORTAUDIO_HOSTAPI_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/System.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class Device;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief HostApi represents a host API (usually type of driver) in the System.
|
||||
///
|
||||
/// A single System can support multiple HostApi's each one typically having
|
||||
/// a set of Devices using that HostApi (usually driver type). All Devices in
|
||||
/// the HostApi can be enumerated and the default input/output Device for this
|
||||
/// HostApi can be retreived.
|
||||
//////
|
||||
class HostApi
|
||||
{
|
||||
public:
|
||||
typedef System::DeviceIterator DeviceIterator;
|
||||
|
||||
// query info: id, name, numDevices
|
||||
PaHostApiTypeId typeId() const;
|
||||
PaHostApiIndex index() const;
|
||||
const char *name() const;
|
||||
int deviceCount() const;
|
||||
|
||||
// iterate devices
|
||||
DeviceIterator devicesBegin();
|
||||
DeviceIterator devicesEnd();
|
||||
|
||||
// default devices
|
||||
Device &defaultInputDevice() const;
|
||||
Device &defaultOutputDevice() const;
|
||||
|
||||
// comparison operators
|
||||
bool operator==(const HostApi &rhs) const;
|
||||
bool operator!=(const HostApi &rhs) const;
|
||||
|
||||
private:
|
||||
const PaHostApiInfo *info_;
|
||||
Device **devices_;
|
||||
|
||||
private:
|
||||
friend class System;
|
||||
|
||||
explicit HostApi(PaHostApiIndex index);
|
||||
~HostApi();
|
||||
|
||||
HostApi(const HostApi &); // non-copyable
|
||||
HostApi &operator=(const HostApi &); // non-copyable
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_HOSTAPI_HXX
|
||||
|
||||
#ifndef INCLUDED_PORTAUDIO_HOSTAPI_HXX
|
||||
#define INCLUDED_PORTAUDIO_HOSTAPI_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/System.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class Device;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief HostApi represents a host API (usually type of driver) in the System.
|
||||
///
|
||||
/// A single System can support multiple HostApi's each one typically having
|
||||
/// a set of Devices using that HostApi (usually driver type). All Devices in
|
||||
/// the HostApi can be enumerated and the default input/output Device for this
|
||||
/// HostApi can be retreived.
|
||||
//////
|
||||
class HostApi
|
||||
{
|
||||
public:
|
||||
typedef System::DeviceIterator DeviceIterator;
|
||||
|
||||
// query info: id, name, numDevices
|
||||
PaHostApiTypeId typeId() const;
|
||||
PaHostApiIndex index() const;
|
||||
const char *name() const;
|
||||
int deviceCount() const;
|
||||
|
||||
// iterate devices
|
||||
DeviceIterator devicesBegin();
|
||||
DeviceIterator devicesEnd();
|
||||
|
||||
// default devices
|
||||
Device &defaultInputDevice() const;
|
||||
Device &defaultOutputDevice() const;
|
||||
|
||||
// comparison operators
|
||||
bool operator==(const HostApi &rhs) const;
|
||||
bool operator!=(const HostApi &rhs) const;
|
||||
|
||||
private:
|
||||
const PaHostApiInfo *info_;
|
||||
Device **devices_;
|
||||
|
||||
private:
|
||||
friend class System;
|
||||
|
||||
explicit HostApi(PaHostApiIndex index);
|
||||
~HostApi();
|
||||
|
||||
HostApi(const HostApi &); // non-copyable
|
||||
HostApi &operator=(const HostApi &); // non-copyable
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_HOSTAPI_HXX
|
||||
|
||||
|
||||
@@ -1,49 +1,49 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_INTERFACECALLBACKSTREAM_HXX
|
||||
#define INCLUDED_PORTAUDIO_INTERFACECALLBACKSTREAM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/CallbackStream.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s)
|
||||
namespace portaudio
|
||||
{
|
||||
class StreamParameters;
|
||||
class CallbackInterface;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief Callback stream using an instance of an object that's derived from the CallbackInterface
|
||||
/// interface.
|
||||
//////
|
||||
class InterfaceCallbackStream : public CallbackStream
|
||||
{
|
||||
public:
|
||||
InterfaceCallbackStream();
|
||||
InterfaceCallbackStream(const StreamParameters ¶meters, CallbackInterface &instance);
|
||||
~InterfaceCallbackStream();
|
||||
|
||||
void open(const StreamParameters ¶meters, CallbackInterface &instance);
|
||||
|
||||
private:
|
||||
InterfaceCallbackStream(const InterfaceCallbackStream &); // non-copyable
|
||||
InterfaceCallbackStream &operator=(const InterfaceCallbackStream &); // non-copyable
|
||||
};
|
||||
|
||||
|
||||
} // portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_INTERFACECALLBACKSTREAM_HXX
|
||||
#ifndef INCLUDED_PORTAUDIO_INTERFACECALLBACKSTREAM_HXX
|
||||
#define INCLUDED_PORTAUDIO_INTERFACECALLBACKSTREAM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/CallbackStream.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s)
|
||||
namespace portaudio
|
||||
{
|
||||
class StreamParameters;
|
||||
class CallbackInterface;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief Callback stream using an instance of an object that's derived from the CallbackInterface
|
||||
/// interface.
|
||||
//////
|
||||
class InterfaceCallbackStream : public CallbackStream
|
||||
{
|
||||
public:
|
||||
InterfaceCallbackStream();
|
||||
InterfaceCallbackStream(const StreamParameters ¶meters, CallbackInterface &instance);
|
||||
~InterfaceCallbackStream();
|
||||
|
||||
void open(const StreamParameters ¶meters, CallbackInterface &instance);
|
||||
|
||||
private:
|
||||
InterfaceCallbackStream(const InterfaceCallbackStream &); // non-copyable
|
||||
InterfaceCallbackStream &operator=(const InterfaceCallbackStream &); // non-copyable
|
||||
};
|
||||
|
||||
|
||||
} // portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_INTERFACECALLBACKSTREAM_HXX
|
||||
|
||||
@@ -1,107 +1,107 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_MEMFUNCALLBACKSTREAM_HXX
|
||||
#define INCLUDED_PORTAUDIO_MEMFUNCALLBACKSTREAM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/CallbackStream.hxx"
|
||||
#include "portaudiocpp/CallbackInterface.hxx"
|
||||
#include "portaudiocpp/StreamParameters.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
#include "portaudiocpp/InterfaceCallbackStream.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief Callback stream using a class's member function as a callback. Template argument T is the type of the
|
||||
/// class of which a member function is going to be used.
|
||||
///
|
||||
/// Example usage:
|
||||
/// @verbatim MemFunCallback<MyClass> stream = MemFunCallbackStream(parameters, *this, &MyClass::myCallbackFunction); @endverbatim
|
||||
//////
|
||||
template<typename T>
|
||||
class MemFunCallbackStream : public CallbackStream
|
||||
{
|
||||
public:
|
||||
typedef int (T::*CallbackFunPtr)(const void *, void *, unsigned long, const PaStreamCallbackTimeInfo *,
|
||||
PaStreamCallbackFlags);
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
MemFunCallbackStream()
|
||||
{
|
||||
}
|
||||
|
||||
MemFunCallbackStream(const StreamParameters ¶meters, T &instance, CallbackFunPtr memFun) : adapter_(instance, memFun)
|
||||
{
|
||||
open(parameters);
|
||||
}
|
||||
|
||||
~MemFunCallbackStream()
|
||||
{
|
||||
close();
|
||||
}
|
||||
|
||||
void open(const StreamParameters ¶meters, T &instance, CallbackFunPtr memFun)
|
||||
{
|
||||
// XXX: need to check if already open?
|
||||
|
||||
adapter_.init(instance, memFun);
|
||||
open(parameters);
|
||||
}
|
||||
|
||||
private:
|
||||
MemFunCallbackStream(const MemFunCallbackStream &); // non-copyable
|
||||
MemFunCallbackStream &operator=(const MemFunCallbackStream &); // non-copyable
|
||||
|
||||
//////
|
||||
/// @brief Inner class which adapts a member function callback to a CallbackInterface compliant
|
||||
/// class (so it can be adapted using the paCallbackAdapter function).
|
||||
//////
|
||||
class MemFunToCallbackInterfaceAdapter : public CallbackInterface
|
||||
{
|
||||
public:
|
||||
MemFunToCallbackInterfaceAdapter() {}
|
||||
MemFunToCallbackInterfaceAdapter(T &instance, CallbackFunPtr memFun) : instance_(&instance), memFun_(memFun) {}
|
||||
|
||||
void init(T &instance, CallbackFunPtr memFun)
|
||||
{
|
||||
instance_ = &instance;
|
||||
memFun_ = memFun;
|
||||
}
|
||||
|
||||
int paCallbackFun(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags)
|
||||
{
|
||||
return (instance_->*memFun_)(inputBuffer, outputBuffer, numFrames, timeInfo, statusFlags);
|
||||
}
|
||||
|
||||
private:
|
||||
T *instance_;
|
||||
CallbackFunPtr memFun_;
|
||||
};
|
||||
|
||||
MemFunToCallbackInterfaceAdapter adapter_;
|
||||
|
||||
void open(const StreamParameters ¶meters)
|
||||
{
|
||||
PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
|
||||
parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::callbackInterfaceToPaCallbackAdapter,
|
||||
static_cast<void *>(&adapter_));
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
} // portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_MEMFUNCALLBACKSTREAM_HXX
|
||||
#ifndef INCLUDED_PORTAUDIO_MEMFUNCALLBACKSTREAM_HXX
|
||||
#define INCLUDED_PORTAUDIO_MEMFUNCALLBACKSTREAM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/CallbackStream.hxx"
|
||||
#include "portaudiocpp/CallbackInterface.hxx"
|
||||
#include "portaudiocpp/StreamParameters.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
#include "portaudiocpp/InterfaceCallbackStream.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief Callback stream using a class's member function as a callback. Template argument T is the type of the
|
||||
/// class of which a member function is going to be used.
|
||||
///
|
||||
/// Example usage:
|
||||
/// @verbatim MemFunCallback<MyClass> stream = MemFunCallbackStream(parameters, *this, &MyClass::myCallbackFunction); @endverbatim
|
||||
//////
|
||||
template<typename T>
|
||||
class MemFunCallbackStream : public CallbackStream
|
||||
{
|
||||
public:
|
||||
typedef int (T::*CallbackFunPtr)(const void *, void *, unsigned long, const PaStreamCallbackTimeInfo *,
|
||||
PaStreamCallbackFlags);
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
MemFunCallbackStream()
|
||||
{
|
||||
}
|
||||
|
||||
MemFunCallbackStream(const StreamParameters ¶meters, T &instance, CallbackFunPtr memFun) : adapter_(instance, memFun)
|
||||
{
|
||||
open(parameters);
|
||||
}
|
||||
|
||||
~MemFunCallbackStream()
|
||||
{
|
||||
close();
|
||||
}
|
||||
|
||||
void open(const StreamParameters ¶meters, T &instance, CallbackFunPtr memFun)
|
||||
{
|
||||
// XXX: need to check if already open?
|
||||
|
||||
adapter_.init(instance, memFun);
|
||||
open(parameters);
|
||||
}
|
||||
|
||||
private:
|
||||
MemFunCallbackStream(const MemFunCallbackStream &); // non-copyable
|
||||
MemFunCallbackStream &operator=(const MemFunCallbackStream &); // non-copyable
|
||||
|
||||
//////
|
||||
/// @brief Inner class which adapts a member function callback to a CallbackInterface compliant
|
||||
/// class (so it can be adapted using the paCallbackAdapter function).
|
||||
//////
|
||||
class MemFunToCallbackInterfaceAdapter : public CallbackInterface
|
||||
{
|
||||
public:
|
||||
MemFunToCallbackInterfaceAdapter() {}
|
||||
MemFunToCallbackInterfaceAdapter(T &instance, CallbackFunPtr memFun) : instance_(&instance), memFun_(memFun) {}
|
||||
|
||||
void init(T &instance, CallbackFunPtr memFun)
|
||||
{
|
||||
instance_ = &instance;
|
||||
memFun_ = memFun;
|
||||
}
|
||||
|
||||
int paCallbackFun(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags)
|
||||
{
|
||||
return (instance_->*memFun_)(inputBuffer, outputBuffer, numFrames, timeInfo, statusFlags);
|
||||
}
|
||||
|
||||
private:
|
||||
T *instance_;
|
||||
CallbackFunPtr memFun_;
|
||||
};
|
||||
|
||||
MemFunToCallbackInterfaceAdapter adapter_;
|
||||
|
||||
void open(const StreamParameters ¶meters)
|
||||
{
|
||||
PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
|
||||
parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::callbackInterfaceToPaCallbackAdapter,
|
||||
static_cast<void *>(&adapter_));
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
} // portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_MEMFUNCALLBACKSTREAM_HXX
|
||||
|
||||
@@ -1,109 +1,109 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_PORTAUDIOCPP_HXX
|
||||
#define INCLUDED_PORTAUDIO_PORTAUDIOCPP_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @mainpage PortAudioCpp
|
||||
///
|
||||
/// <h1>PortAudioCpp - A Native C++ Binding of PortAudio V19</h1>
|
||||
/// <h2>PortAudio</h2>
|
||||
/// <p>
|
||||
/// PortAudio is a portable and mature C API for accessing audio hardware. It offers both callback-based and blocking
|
||||
/// style input and output, deals with sample data format conversions, dithering and much more. There are a large number
|
||||
/// of implementations available for various platforms including Windows MME, Windows DirectX, Windows and MacOS (Classic)
|
||||
/// ASIO, MacOS Classic SoundManager, MacOS X CoreAudio, OSS (Linux), Linux ALSA, JACK (MacOS X and Linux) and SGI Irix
|
||||
/// AL. Note that, currently not all of these implementations are equally complete or up-to-date (as PortAudio V19 is
|
||||
/// still in development). Because PortAudio has a C API, it can easily be called from a variety of other programming
|
||||
/// languages.
|
||||
/// </p>
|
||||
/// <h2>PortAudioCpp</h2>
|
||||
/// <p>
|
||||
/// Although, it is possible to use PortAudio's C API from within a C++ program, this is usually a little awkward
|
||||
/// as procedural and object-oriented paradigms need to be mixed. PortAudioCpp aims to resolve this by encapsulating
|
||||
/// PortAudio's C API to form an equivalent object-oriented C++ API. It provides a more natural integration of PortAudio
|
||||
/// into C++ programs as well as a more structured interface. PortAudio's concepts were preserved as much as possible and
|
||||
/// no additional features were added except for some `convenience methods'.
|
||||
/// </p>
|
||||
/// <p>
|
||||
/// PortAudioCpp's main features are:
|
||||
/// <ul>
|
||||
/// <li>Structured object model.</li>
|
||||
/// <li>C++ exception handling instead of C-style error return codes.</li>
|
||||
/// <li>Handling of callbacks using free functions (C and C++), static functions, member functions or instances of classes
|
||||
/// derived from a given interface.</li>
|
||||
/// <li>STL compliant iterators to host APIs and devices.</li>
|
||||
/// <li>Some additional convenience functions to more easily set up and use PortAudio.</li>
|
||||
/// </ul>
|
||||
/// </p>
|
||||
/// <p>
|
||||
/// PortAudioCpp requires a recent version of the PortAudio V19 source code. This can be obtained from CVS or as a snapshot
|
||||
/// from the website. The examples also require the ASIO 2 SDK which can be obtained from the Steinberg website. Alternatively, the
|
||||
/// examples can easily be modified to compile without needing ASIO.
|
||||
/// </p>
|
||||
/// <p>
|
||||
/// Supported platforms:
|
||||
/// <ul>
|
||||
/// <li>Microsoft Visual C++ 6.0, 7.0 (.NET 2002) and 7.1 (.NET 2003).</li>
|
||||
/// <li>GNU G++ 2.95 and G++ 3.3.</li>
|
||||
/// </ul>
|
||||
/// Other platforms should be easily supported as PortAudioCpp is platform-independent and (reasonably) C++ standard compliant.
|
||||
/// </p>
|
||||
/// <p>
|
||||
/// This documentation mainly provides information specific to PortAudioCpp. For a more complete explaination of all of the
|
||||
/// concepts used, please consult the PortAudio documentation.
|
||||
/// </p>
|
||||
/// <p>
|
||||
/// PortAudioCpp was developed by Merlijn Blaauw with many great suggestions and help from Ross Bencina. Ludwig Schwardt provided
|
||||
/// GNU/Linux build files and checked G++ compatibility. PortAudioCpp may be used under the same licensing, conditions and
|
||||
/// warranty as PortAudio. See <a href="http://www.portaudio.com/license.html">the PortAudio license</a> for more details.
|
||||
/// </p>
|
||||
/// <h2>Links</h2>
|
||||
/// <p>
|
||||
/// <a href="http://www.portaudio.com/">Official PortAudio site.</a><br>
|
||||
/// </p>
|
||||
//////
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @namespace portaudio
|
||||
///
|
||||
/// To avoid name collision, everything in PortAudioCpp is in the portaudio
|
||||
/// namespace. If this name is too long it's usually pretty safe to use an
|
||||
/// alias like ``namespace pa = portaudio;''.
|
||||
//////
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @file PortAudioCpp.hxx
|
||||
/// An include-all header file (for lazy programmers and using pre-compiled headers).
|
||||
//////
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/AutoSystem.hxx"
|
||||
#include "portaudiocpp/BlockingStream.hxx"
|
||||
#include "portaudiocpp/CallbackInterface.hxx"
|
||||
#include "portaudiocpp/CallbackStream.hxx"
|
||||
#include "portaudiocpp/CFunCallbackStream.hxx"
|
||||
#include "portaudiocpp/CppFunCallbackStream.hxx"
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
#include "portaudiocpp/HostApi.hxx"
|
||||
#include "portaudiocpp/InterfaceCallbackStream.hxx"
|
||||
#include "portaudiocpp/MemFunCallbackStream.hxx"
|
||||
#include "portaudiocpp/SampleDataFormat.hxx"
|
||||
#include "portaudiocpp/DirectionSpecificStreamParameters.hxx"
|
||||
#include "portaudiocpp/Stream.hxx"
|
||||
#include "portaudiocpp/StreamParameters.hxx"
|
||||
#include "portaudiocpp/System.hxx"
|
||||
#include "portaudiocpp/SystemDeviceIterator.hxx"
|
||||
#include "portaudiocpp/SystemHostApiIterator.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_PORTAUDIOCPP_HXX
|
||||
#ifndef INCLUDED_PORTAUDIO_PORTAUDIOCPP_HXX
|
||||
#define INCLUDED_PORTAUDIO_PORTAUDIOCPP_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @mainpage PortAudioCpp
|
||||
///
|
||||
/// <h1>PortAudioCpp - A Native C++ Binding of PortAudio V19</h1>
|
||||
/// <h2>PortAudio</h2>
|
||||
/// <p>
|
||||
/// PortAudio is a portable and mature C API for accessing audio hardware. It offers both callback-based and blocking
|
||||
/// style input and output, deals with sample data format conversions, dithering and much more. There are a large number
|
||||
/// of implementations available for various platforms including Windows MME, Windows DirectX, Windows and MacOS (Classic)
|
||||
/// ASIO, MacOS Classic SoundManager, MacOS X CoreAudio, OSS (Linux), Linux ALSA, JACK (MacOS X and Linux) and SGI Irix
|
||||
/// AL. Note that, currently not all of these implementations are equally complete or up-to-date (as PortAudio V19 is
|
||||
/// still in development). Because PortAudio has a C API, it can easily be called from a variety of other programming
|
||||
/// languages.
|
||||
/// </p>
|
||||
/// <h2>PortAudioCpp</h2>
|
||||
/// <p>
|
||||
/// Although, it is possible to use PortAudio's C API from within a C++ program, this is usually a little awkward
|
||||
/// as procedural and object-oriented paradigms need to be mixed. PortAudioCpp aims to resolve this by encapsulating
|
||||
/// PortAudio's C API to form an equivalent object-oriented C++ API. It provides a more natural integration of PortAudio
|
||||
/// into C++ programs as well as a more structured interface. PortAudio's concepts were preserved as much as possible and
|
||||
/// no additional features were added except for some `convenience methods'.
|
||||
/// </p>
|
||||
/// <p>
|
||||
/// PortAudioCpp's main features are:
|
||||
/// <ul>
|
||||
/// <li>Structured object model.</li>
|
||||
/// <li>C++ exception handling instead of C-style error return codes.</li>
|
||||
/// <li>Handling of callbacks using free functions (C and C++), static functions, member functions or instances of classes
|
||||
/// derived from a given interface.</li>
|
||||
/// <li>STL compliant iterators to host APIs and devices.</li>
|
||||
/// <li>Some additional convenience functions to more easily set up and use PortAudio.</li>
|
||||
/// </ul>
|
||||
/// </p>
|
||||
/// <p>
|
||||
/// PortAudioCpp requires a recent version of the PortAudio V19 source code. This can be obtained from CVS or as a snapshot
|
||||
/// from the website. The examples also require the ASIO 2 SDK which can be obtained from the Steinberg website. Alternatively, the
|
||||
/// examples can easily be modified to compile without needing ASIO.
|
||||
/// </p>
|
||||
/// <p>
|
||||
/// Supported platforms:
|
||||
/// <ul>
|
||||
/// <li>Microsoft Visual C++ 6.0, 7.0 (.NET 2002) and 7.1 (.NET 2003).</li>
|
||||
/// <li>GNU G++ 2.95 and G++ 3.3.</li>
|
||||
/// </ul>
|
||||
/// Other platforms should be easily supported as PortAudioCpp is platform-independent and (reasonably) C++ standard compliant.
|
||||
/// </p>
|
||||
/// <p>
|
||||
/// This documentation mainly provides information specific to PortAudioCpp. For a more complete explaination of all of the
|
||||
/// concepts used, please consult the PortAudio documentation.
|
||||
/// </p>
|
||||
/// <p>
|
||||
/// PortAudioCpp was developed by Merlijn Blaauw with many great suggestions and help from Ross Bencina. Ludwig Schwardt provided
|
||||
/// GNU/Linux build files and checked G++ compatibility. PortAudioCpp may be used under the same licensing, conditions and
|
||||
/// warranty as PortAudio. See <a href="http://www.portaudio.com/license.html">the PortAudio license</a> for more details.
|
||||
/// </p>
|
||||
/// <h2>Links</h2>
|
||||
/// <p>
|
||||
/// <a href="http://www.portaudio.com/">Official PortAudio site.</a><br>
|
||||
/// </p>
|
||||
//////
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @namespace portaudio
|
||||
///
|
||||
/// To avoid name collision, everything in PortAudioCpp is in the portaudio
|
||||
/// namespace. If this name is too long it's usually pretty safe to use an
|
||||
/// alias like ``namespace pa = portaudio;''.
|
||||
//////
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// @file PortAudioCpp.hxx
|
||||
/// An include-all header file (for lazy programmers and using pre-compiled headers).
|
||||
//////
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/AutoSystem.hxx"
|
||||
#include "portaudiocpp/BlockingStream.hxx"
|
||||
#include "portaudiocpp/CallbackInterface.hxx"
|
||||
#include "portaudiocpp/CallbackStream.hxx"
|
||||
#include "portaudiocpp/CFunCallbackStream.hxx"
|
||||
#include "portaudiocpp/CppFunCallbackStream.hxx"
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
#include "portaudiocpp/HostApi.hxx"
|
||||
#include "portaudiocpp/InterfaceCallbackStream.hxx"
|
||||
#include "portaudiocpp/MemFunCallbackStream.hxx"
|
||||
#include "portaudiocpp/SampleDataFormat.hxx"
|
||||
#include "portaudiocpp/DirectionSpecificStreamParameters.hxx"
|
||||
#include "portaudiocpp/Stream.hxx"
|
||||
#include "portaudiocpp/StreamParameters.hxx"
|
||||
#include "portaudiocpp/System.hxx"
|
||||
#include "portaudiocpp/SystemDeviceIterator.hxx"
|
||||
#include "portaudiocpp/SystemHostApiIterator.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_PORTAUDIOCPP_HXX
|
||||
|
||||
@@ -1,35 +1,35 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_SAMPLEDATAFORMAT_HXX
|
||||
#define INCLUDED_PORTAUDIO_SAMPLEDATAFORMAT_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief PortAudio sample data formats.
|
||||
///
|
||||
/// Small helper enum to wrap the PortAudio defines.
|
||||
//////
|
||||
enum SampleDataFormat
|
||||
{
|
||||
INVALID_FORMAT = 0,
|
||||
FLOAT32 = paFloat32,
|
||||
INT32 = paInt32,
|
||||
INT24 = paInt24,
|
||||
INT16 = paInt16,
|
||||
INT8 = paInt8,
|
||||
UINT8 = paUInt8
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_SAMPLEDATAFORMAT_HXX
|
||||
#ifndef INCLUDED_PORTAUDIO_SAMPLEDATAFORMAT_HXX
|
||||
#define INCLUDED_PORTAUDIO_SAMPLEDATAFORMAT_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief PortAudio sample data formats.
|
||||
///
|
||||
/// Small helper enum to wrap the PortAudio defines.
|
||||
//////
|
||||
enum SampleDataFormat
|
||||
{
|
||||
INVALID_FORMAT = 0,
|
||||
FLOAT32 = paFloat32,
|
||||
INT32 = paInt32,
|
||||
INT24 = paInt24,
|
||||
INT16 = paInt16,
|
||||
INT8 = paInt8,
|
||||
UINT8 = paUInt8
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_SAMPLEDATAFORMAT_HXX
|
||||
|
||||
@@ -1,82 +1,82 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_STREAM_HXX
|
||||
#define INCLUDED_PORTAUDIO_STREAM_HXX
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class StreamParameters;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief A Stream represents an active or inactive input and/or output data
|
||||
/// stream in the System.
|
||||
///
|
||||
/// Concrete Stream classes should ensure themselves being in a closed state at
|
||||
/// destruction (i.e. by calling their own close() method in their deconstructor).
|
||||
/// Following good C++ programming practices, care must be taken to ensure no
|
||||
/// exceptions are thrown by the deconstructor of these classes. As a consequence,
|
||||
/// clients need to explicitly call close() to ensure the stream closed successfully.
|
||||
///
|
||||
/// The Stream object can be used to manipulate the Stream's state. Also, time-constant
|
||||
/// and time-varying information about the Stream can be retreived.
|
||||
//////
|
||||
class Stream
|
||||
{
|
||||
public:
|
||||
// Opening/closing:
|
||||
virtual ~Stream();
|
||||
|
||||
virtual void close();
|
||||
bool isOpen() const;
|
||||
|
||||
// Additional set up:
|
||||
void setStreamFinishedCallback(PaStreamFinishedCallback *callback);
|
||||
|
||||
// State management:
|
||||
void start();
|
||||
void stop();
|
||||
void abort();
|
||||
|
||||
bool isStopped() const;
|
||||
bool isActive() const;
|
||||
|
||||
// Stream info (time-constant, but might become time-variant soon):
|
||||
PaTime inputLatency() const;
|
||||
PaTime outputLatency() const;
|
||||
double sampleRate() const;
|
||||
|
||||
// Stream info (time-varying):
|
||||
PaTime time() const;
|
||||
|
||||
// Accessors for PortAudio PaStream, useful for interfacing
|
||||
// with PortAudio add-ons (such as PortMixer) for instance:
|
||||
const PaStream *paStream() const;
|
||||
PaStream *paStream();
|
||||
|
||||
protected:
|
||||
Stream(); // abstract class
|
||||
|
||||
PaStream *stream_;
|
||||
|
||||
private:
|
||||
Stream(const Stream &); // non-copyable
|
||||
Stream &operator=(const Stream &); // non-copyable
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_STREAM_HXX
|
||||
|
||||
#ifndef INCLUDED_PORTAUDIO_STREAM_HXX
|
||||
#define INCLUDED_PORTAUDIO_STREAM_HXX
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class StreamParameters;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief A Stream represents an active or inactive input and/or output data
|
||||
/// stream in the System.
|
||||
///
|
||||
/// Concrete Stream classes should ensure themselves being in a closed state at
|
||||
/// destruction (i.e. by calling their own close() method in their deconstructor).
|
||||
/// Following good C++ programming practices, care must be taken to ensure no
|
||||
/// exceptions are thrown by the deconstructor of these classes. As a consequence,
|
||||
/// clients need to explicitly call close() to ensure the stream closed successfully.
|
||||
///
|
||||
/// The Stream object can be used to manipulate the Stream's state. Also, time-constant
|
||||
/// and time-varying information about the Stream can be retreived.
|
||||
//////
|
||||
class Stream
|
||||
{
|
||||
public:
|
||||
// Opening/closing:
|
||||
virtual ~Stream();
|
||||
|
||||
virtual void close();
|
||||
bool isOpen() const;
|
||||
|
||||
// Additional set up:
|
||||
void setStreamFinishedCallback(PaStreamFinishedCallback *callback);
|
||||
|
||||
// State management:
|
||||
void start();
|
||||
void stop();
|
||||
void abort();
|
||||
|
||||
bool isStopped() const;
|
||||
bool isActive() const;
|
||||
|
||||
// Stream info (time-constant, but might become time-variant soon):
|
||||
PaTime inputLatency() const;
|
||||
PaTime outputLatency() const;
|
||||
double sampleRate() const;
|
||||
|
||||
// Stream info (time-varying):
|
||||
PaTime time() const;
|
||||
|
||||
// Accessors for PortAudio PaStream, useful for interfacing
|
||||
// with PortAudio add-ons (such as PortMixer) for instance:
|
||||
const PaStream *paStream() const;
|
||||
PaStream *paStream();
|
||||
|
||||
protected:
|
||||
Stream(); // abstract class
|
||||
|
||||
PaStream *stream_;
|
||||
|
||||
private:
|
||||
Stream(const Stream &); // non-copyable
|
||||
Stream &operator=(const Stream &); // non-copyable
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_STREAM_HXX
|
||||
|
||||
|
||||
@@ -1,77 +1,77 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_STREAMPARAMETERS_HXX
|
||||
#define INCLUDED_PORTAUDIO_STREAMPARAMETERS_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/DirectionSpecificStreamParameters.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
//////
|
||||
/// @brief The entire set of parameters needed to configure and open
|
||||
/// a Stream.
|
||||
///
|
||||
/// It contains parameters of input, output and shared parameters.
|
||||
/// Using the isSupported() method, the StreamParameters can be
|
||||
/// checked if opening a Stream using this StreamParameters would
|
||||
/// succeed or not. Accessors are provided to higher-level parameters
|
||||
/// aswell as the lower-level parameters which are mainly intended for
|
||||
/// internal use.
|
||||
//////
|
||||
class StreamParameters
|
||||
{
|
||||
public:
|
||||
StreamParameters();
|
||||
StreamParameters(const DirectionSpecificStreamParameters &inputParameters,
|
||||
const DirectionSpecificStreamParameters &outputParameters, double sampleRate,
|
||||
unsigned long framesPerBuffer, PaStreamFlags flags);
|
||||
|
||||
// Set up for direction-specific:
|
||||
void setInputParameters(const DirectionSpecificStreamParameters ¶meters);
|
||||
void setOutputParameters(const DirectionSpecificStreamParameters ¶meters);
|
||||
|
||||
// Set up for common parameters:
|
||||
void setSampleRate(double sampleRate);
|
||||
void setFramesPerBuffer(unsigned long framesPerBuffer);
|
||||
void setFlag(PaStreamFlags flag);
|
||||
void unsetFlag(PaStreamFlags flag);
|
||||
void clearFlags();
|
||||
|
||||
// Validation:
|
||||
bool isSupported() const;
|
||||
|
||||
// Accessors (direction-specific):
|
||||
DirectionSpecificStreamParameters &inputParameters();
|
||||
const DirectionSpecificStreamParameters &inputParameters() const;
|
||||
DirectionSpecificStreamParameters &outputParameters();
|
||||
const DirectionSpecificStreamParameters &outputParameters() const;
|
||||
|
||||
// Accessors (common):
|
||||
double sampleRate() const;
|
||||
unsigned long framesPerBuffer() const;
|
||||
PaStreamFlags flags() const;
|
||||
bool isFlagSet(PaStreamFlags flag) const;
|
||||
|
||||
private:
|
||||
// Half-duplex specific parameters:
|
||||
DirectionSpecificStreamParameters inputParameters_;
|
||||
DirectionSpecificStreamParameters outputParameters_;
|
||||
|
||||
// Common parameters:
|
||||
double sampleRate_;
|
||||
unsigned long framesPerBuffer_;
|
||||
PaStreamFlags flags_;
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_STREAMPARAMETERS_HXX
|
||||
#ifndef INCLUDED_PORTAUDIO_STREAMPARAMETERS_HXX
|
||||
#define INCLUDED_PORTAUDIO_STREAMPARAMETERS_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/DirectionSpecificStreamParameters.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
//////
|
||||
/// @brief The entire set of parameters needed to configure and open
|
||||
/// a Stream.
|
||||
///
|
||||
/// It contains parameters of input, output and shared parameters.
|
||||
/// Using the isSupported() method, the StreamParameters can be
|
||||
/// checked if opening a Stream using this StreamParameters would
|
||||
/// succeed or not. Accessors are provided to higher-level parameters
|
||||
/// aswell as the lower-level parameters which are mainly intended for
|
||||
/// internal use.
|
||||
//////
|
||||
class StreamParameters
|
||||
{
|
||||
public:
|
||||
StreamParameters();
|
||||
StreamParameters(const DirectionSpecificStreamParameters &inputParameters,
|
||||
const DirectionSpecificStreamParameters &outputParameters, double sampleRate,
|
||||
unsigned long framesPerBuffer, PaStreamFlags flags);
|
||||
|
||||
// Set up for direction-specific:
|
||||
void setInputParameters(const DirectionSpecificStreamParameters ¶meters);
|
||||
void setOutputParameters(const DirectionSpecificStreamParameters ¶meters);
|
||||
|
||||
// Set up for common parameters:
|
||||
void setSampleRate(double sampleRate);
|
||||
void setFramesPerBuffer(unsigned long framesPerBuffer);
|
||||
void setFlag(PaStreamFlags flag);
|
||||
void unsetFlag(PaStreamFlags flag);
|
||||
void clearFlags();
|
||||
|
||||
// Validation:
|
||||
bool isSupported() const;
|
||||
|
||||
// Accessors (direction-specific):
|
||||
DirectionSpecificStreamParameters &inputParameters();
|
||||
const DirectionSpecificStreamParameters &inputParameters() const;
|
||||
DirectionSpecificStreamParameters &outputParameters();
|
||||
const DirectionSpecificStreamParameters &outputParameters() const;
|
||||
|
||||
// Accessors (common):
|
||||
double sampleRate() const;
|
||||
unsigned long framesPerBuffer() const;
|
||||
PaStreamFlags flags() const;
|
||||
bool isFlagSet(PaStreamFlags flag) const;
|
||||
|
||||
private:
|
||||
// Half-duplex specific parameters:
|
||||
DirectionSpecificStreamParameters inputParameters_;
|
||||
DirectionSpecificStreamParameters outputParameters_;
|
||||
|
||||
// Common parameters:
|
||||
double sampleRate_;
|
||||
unsigned long framesPerBuffer_;
|
||||
PaStreamFlags flags_;
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_STREAMPARAMETERS_HXX
|
||||
|
||||
@@ -1,107 +1,107 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_SYSTEM_HXX
|
||||
#define INCLUDED_PORTAUDIO_SYSTEM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class Device;
|
||||
class Stream;
|
||||
class HostApi;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief System singleton which represents the PortAudio system.
|
||||
///
|
||||
/// The System is used to initialize/terminate PortAudio and provide
|
||||
/// a single acccess point to the PortAudio System (instance()).
|
||||
/// It can be used to iterate through all HostApi 's in the System as
|
||||
/// well as all devices in the System. It also provides some utility
|
||||
/// functionality of PortAudio.
|
||||
///
|
||||
/// Terminating the System will also abort and close the open streams.
|
||||
/// The Stream objects will need to be deallocated by the client though
|
||||
/// (it's usually a good idea to have them cleaned up automatically).
|
||||
//////
|
||||
class System
|
||||
{
|
||||
public:
|
||||
class HostApiIterator; // forward declaration
|
||||
class DeviceIterator; // forward declaration
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
static int version();
|
||||
static const char *versionText();
|
||||
|
||||
static void initialize();
|
||||
static void terminate();
|
||||
|
||||
static System &instance();
|
||||
static bool exists();
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
// host apis:
|
||||
HostApiIterator hostApisBegin();
|
||||
HostApiIterator hostApisEnd();
|
||||
|
||||
HostApi &defaultHostApi();
|
||||
|
||||
HostApi &hostApiByTypeId(PaHostApiTypeId type);
|
||||
HostApi &hostApiByIndex(PaHostApiIndex index);
|
||||
|
||||
int hostApiCount();
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
// devices:
|
||||
DeviceIterator devicesBegin();
|
||||
DeviceIterator devicesEnd();
|
||||
|
||||
Device &defaultInputDevice();
|
||||
Device &defaultOutputDevice();
|
||||
|
||||
Device &deviceByIndex(PaDeviceIndex index);
|
||||
|
||||
int deviceCount();
|
||||
|
||||
static Device &nullDevice();
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
// misc:
|
||||
void sleep(long msec);
|
||||
int sizeOfSample(PaSampleFormat format);
|
||||
|
||||
private:
|
||||
System();
|
||||
~System();
|
||||
|
||||
static System *instance_;
|
||||
static int initCount_;
|
||||
|
||||
static HostApi **hostApis_;
|
||||
static Device **devices_;
|
||||
|
||||
static Device *nullDevice_;
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_SYSTEM_HXX
|
||||
|
||||
#ifndef INCLUDED_PORTAUDIO_SYSTEM_HXX
|
||||
#define INCLUDED_PORTAUDIO_SYSTEM_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class Device;
|
||||
class Stream;
|
||||
class HostApi;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief System singleton which represents the PortAudio system.
|
||||
///
|
||||
/// The System is used to initialize/terminate PortAudio and provide
|
||||
/// a single acccess point to the PortAudio System (instance()).
|
||||
/// It can be used to iterate through all HostApi 's in the System as
|
||||
/// well as all devices in the System. It also provides some utility
|
||||
/// functionality of PortAudio.
|
||||
///
|
||||
/// Terminating the System will also abort and close the open streams.
|
||||
/// The Stream objects will need to be deallocated by the client though
|
||||
/// (it's usually a good idea to have them cleaned up automatically).
|
||||
//////
|
||||
class System
|
||||
{
|
||||
public:
|
||||
class HostApiIterator; // forward declaration
|
||||
class DeviceIterator; // forward declaration
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
static int version();
|
||||
static const char *versionText();
|
||||
|
||||
static void initialize();
|
||||
static void terminate();
|
||||
|
||||
static System &instance();
|
||||
static bool exists();
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
// host apis:
|
||||
HostApiIterator hostApisBegin();
|
||||
HostApiIterator hostApisEnd();
|
||||
|
||||
HostApi &defaultHostApi();
|
||||
|
||||
HostApi &hostApiByTypeId(PaHostApiTypeId type);
|
||||
HostApi &hostApiByIndex(PaHostApiIndex index);
|
||||
|
||||
int hostApiCount();
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
// devices:
|
||||
DeviceIterator devicesBegin();
|
||||
DeviceIterator devicesEnd();
|
||||
|
||||
Device &defaultInputDevice();
|
||||
Device &defaultOutputDevice();
|
||||
|
||||
Device &deviceByIndex(PaDeviceIndex index);
|
||||
|
||||
int deviceCount();
|
||||
|
||||
static Device &nullDevice();
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
// misc:
|
||||
void sleep(long msec);
|
||||
int sizeOfSample(PaSampleFormat format);
|
||||
|
||||
private:
|
||||
System();
|
||||
~System();
|
||||
|
||||
static System *instance_;
|
||||
static int initCount_;
|
||||
|
||||
static HostApi **hostApis_;
|
||||
static Device **devices_;
|
||||
|
||||
static Device *nullDevice_;
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_SYSTEM_HXX
|
||||
|
||||
|
||||
@@ -1,66 +1,66 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX
|
||||
#define INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include <iterator>
|
||||
#include <cstddef>
|
||||
|
||||
#include "portaudiocpp/System.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class Device;
|
||||
class HostApi;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief Iterator class for iterating through all Devices in a System.
|
||||
///
|
||||
/// Devices will be iterated by iterating all Devices in each
|
||||
/// HostApi in the System. Compliant with the STL bidirectional
|
||||
/// iterator concept.
|
||||
//////
|
||||
class System::DeviceIterator
|
||||
{
|
||||
public:
|
||||
typedef std::bidirectional_iterator_tag iterator_category;
|
||||
typedef Device value_type;
|
||||
typedef ptrdiff_t difference_type;
|
||||
typedef Device * pointer;
|
||||
typedef Device & reference;
|
||||
|
||||
Device &operator*() const;
|
||||
Device *operator->() const;
|
||||
|
||||
DeviceIterator &operator++();
|
||||
DeviceIterator operator++(int);
|
||||
DeviceIterator &operator--();
|
||||
DeviceIterator operator--(int);
|
||||
|
||||
bool operator==(const DeviceIterator &rhs) const;
|
||||
bool operator!=(const DeviceIterator &rhs) const;
|
||||
|
||||
private:
|
||||
friend class System;
|
||||
friend class HostApi;
|
||||
Device **ptr_;
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX
|
||||
|
||||
#ifndef INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX
|
||||
#define INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include <iterator>
|
||||
#include <cstddef>
|
||||
|
||||
#include "portaudiocpp/System.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class Device;
|
||||
class HostApi;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief Iterator class for iterating through all Devices in a System.
|
||||
///
|
||||
/// Devices will be iterated by iterating all Devices in each
|
||||
/// HostApi in the System. Compliant with the STL bidirectional
|
||||
/// iterator concept.
|
||||
//////
|
||||
class System::DeviceIterator
|
||||
{
|
||||
public:
|
||||
typedef std::bidirectional_iterator_tag iterator_category;
|
||||
typedef Device value_type;
|
||||
typedef ptrdiff_t difference_type;
|
||||
typedef Device * pointer;
|
||||
typedef Device & reference;
|
||||
|
||||
Device &operator*() const;
|
||||
Device *operator->() const;
|
||||
|
||||
DeviceIterator &operator++();
|
||||
DeviceIterator operator++(int);
|
||||
DeviceIterator &operator--();
|
||||
DeviceIterator operator--(int);
|
||||
|
||||
bool operator==(const DeviceIterator &rhs) const;
|
||||
bool operator!=(const DeviceIterator &rhs) const;
|
||||
|
||||
private:
|
||||
friend class System;
|
||||
friend class HostApi;
|
||||
Device **ptr_;
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX
|
||||
|
||||
|
||||
@@ -1,61 +1,61 @@
|
||||
#ifndef INCLUDED_PORTAUDIO_SYSTEMHOSTAPIITERATOR_HXX
|
||||
#define INCLUDED_PORTAUDIO_SYSTEMHOSTAPIITERATOR_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include <iterator>
|
||||
#include <cstddef>
|
||||
|
||||
#include "portaudiocpp/System.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class HostApi;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief Iterator class for iterating through all HostApis in a System.
|
||||
///
|
||||
/// Compliant with the STL bidirectional iterator concept.
|
||||
//////
|
||||
class System::HostApiIterator
|
||||
{
|
||||
public:
|
||||
typedef std::bidirectional_iterator_tag iterator_category;
|
||||
typedef Device value_type;
|
||||
typedef ptrdiff_t difference_type;
|
||||
typedef HostApi * pointer;
|
||||
typedef HostApi & reference;
|
||||
|
||||
HostApi &operator*() const;
|
||||
HostApi *operator->() const;
|
||||
|
||||
HostApiIterator &operator++();
|
||||
HostApiIterator operator++(int);
|
||||
HostApiIterator &operator--();
|
||||
HostApiIterator operator--(int);
|
||||
|
||||
bool operator==(const HostApiIterator &rhs) const;
|
||||
bool operator!=(const HostApiIterator &rhs) const;
|
||||
|
||||
private:
|
||||
friend class System;
|
||||
HostApi **ptr_;
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_SYSTEMHOSTAPIITERATOR_HXX
|
||||
#ifndef INCLUDED_PORTAUDIO_SYSTEMHOSTAPIITERATOR_HXX
|
||||
#define INCLUDED_PORTAUDIO_SYSTEMHOSTAPIITERATOR_HXX
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#include <iterator>
|
||||
#include <cstddef>
|
||||
|
||||
#include "portaudiocpp/System.hxx"
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Forward declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
class HostApi;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
// Declaration(s):
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
|
||||
//////
|
||||
/// @brief Iterator class for iterating through all HostApis in a System.
|
||||
///
|
||||
/// Compliant with the STL bidirectional iterator concept.
|
||||
//////
|
||||
class System::HostApiIterator
|
||||
{
|
||||
public:
|
||||
typedef std::bidirectional_iterator_tag iterator_category;
|
||||
typedef Device value_type;
|
||||
typedef ptrdiff_t difference_type;
|
||||
typedef HostApi * pointer;
|
||||
typedef HostApi & reference;
|
||||
|
||||
HostApi &operator*() const;
|
||||
HostApi *operator->() const;
|
||||
|
||||
HostApiIterator &operator++();
|
||||
HostApiIterator operator++(int);
|
||||
HostApiIterator &operator--();
|
||||
HostApiIterator operator--(int);
|
||||
|
||||
bool operator==(const HostApiIterator &rhs) const;
|
||||
bool operator!=(const HostApiIterator &rhs) const;
|
||||
|
||||
private:
|
||||
friend class System;
|
||||
HostApi **ptr_;
|
||||
};
|
||||
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
#endif // INCLUDED_PORTAUDIO_SYSTEMHOSTAPIITERATOR_HXX
|
||||
|
||||
@@ -1,83 +1,83 @@
|
||||
#include "portaudiocpp/AsioDeviceAdapter.hxx"
|
||||
|
||||
#include "portaudio.h"
|
||||
#include "pa_asio.h"
|
||||
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
#include "portaudiocpp/HostApi.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
AsioDeviceAdapter::AsioDeviceAdapter(Device &device)
|
||||
{
|
||||
if (device.hostApi().typeId() != paASIO)
|
||||
throw PaCppException(PaCppException::UNABLE_TO_ADAPT_DEVICE);
|
||||
|
||||
device_ = &device;
|
||||
|
||||
PaError err = PaAsio_GetAvailableLatencyValues(device_->index(), &minBufferSize_, &maxBufferSize_,
|
||||
&preferredBufferSize_, &granularity_);
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
|
||||
}
|
||||
|
||||
Device &AsioDeviceAdapter::device()
|
||||
{
|
||||
return *device_;
|
||||
}
|
||||
|
||||
long AsioDeviceAdapter::minBufferSize() const
|
||||
{
|
||||
return minBufferSize_;
|
||||
}
|
||||
|
||||
long AsioDeviceAdapter::maxBufferSize() const
|
||||
{
|
||||
return maxBufferSize_;
|
||||
}
|
||||
|
||||
long AsioDeviceAdapter::preferredBufferSize() const
|
||||
{
|
||||
return preferredBufferSize_;
|
||||
}
|
||||
|
||||
long AsioDeviceAdapter::granularity() const
|
||||
{
|
||||
return granularity_;
|
||||
}
|
||||
|
||||
void AsioDeviceAdapter::showControlPanel(void *systemSpecific)
|
||||
{
|
||||
PaError err = PaAsio_ShowControlPanel(device_->index(), systemSpecific);
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
|
||||
const char *AsioDeviceAdapter::inputChannelName(int channelIndex) const
|
||||
{
|
||||
const char *channelName;
|
||||
#include "portaudiocpp/AsioDeviceAdapter.hxx"
|
||||
|
||||
#include "portaudio.h"
|
||||
#include "pa_asio.h"
|
||||
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
#include "portaudiocpp/HostApi.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
AsioDeviceAdapter::AsioDeviceAdapter(Device &device)
|
||||
{
|
||||
if (device.hostApi().typeId() != paASIO)
|
||||
throw PaCppException(PaCppException::UNABLE_TO_ADAPT_DEVICE);
|
||||
|
||||
device_ = &device;
|
||||
|
||||
PaError err = PaAsio_GetAvailableLatencyValues(device_->index(), &minBufferSize_, &maxBufferSize_,
|
||||
&preferredBufferSize_, &granularity_);
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
|
||||
}
|
||||
|
||||
Device &AsioDeviceAdapter::device()
|
||||
{
|
||||
return *device_;
|
||||
}
|
||||
|
||||
long AsioDeviceAdapter::minBufferSize() const
|
||||
{
|
||||
return minBufferSize_;
|
||||
}
|
||||
|
||||
long AsioDeviceAdapter::maxBufferSize() const
|
||||
{
|
||||
return maxBufferSize_;
|
||||
}
|
||||
|
||||
long AsioDeviceAdapter::preferredBufferSize() const
|
||||
{
|
||||
return preferredBufferSize_;
|
||||
}
|
||||
|
||||
long AsioDeviceAdapter::granularity() const
|
||||
{
|
||||
return granularity_;
|
||||
}
|
||||
|
||||
void AsioDeviceAdapter::showControlPanel(void *systemSpecific)
|
||||
{
|
||||
PaError err = PaAsio_ShowControlPanel(device_->index(), systemSpecific);
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
|
||||
const char *AsioDeviceAdapter::inputChannelName(int channelIndex) const
|
||||
{
|
||||
const char *channelName;
|
||||
PaError err = PaAsio_GetInputChannelName(device_->index(), channelIndex, &channelName);
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
|
||||
return channelName;
|
||||
}
|
||||
|
||||
const char *AsioDeviceAdapter::outputChannelName(int channelIndex) const
|
||||
{
|
||||
const char *channelName;
|
||||
}
|
||||
|
||||
const char *AsioDeviceAdapter::outputChannelName(int channelIndex) const
|
||||
{
|
||||
const char *channelName;
|
||||
PaError err = PaAsio_GetOutputChannelName(device_->index(), channelIndex, &channelName);
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
|
||||
return channelName;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,100 +1,100 @@
|
||||
#include "portaudiocpp/BlockingStream.hxx"
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/StreamParameters.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
|
||||
BlockingStream::BlockingStream()
|
||||
{
|
||||
}
|
||||
|
||||
BlockingStream::BlockingStream(const StreamParameters ¶meters)
|
||||
{
|
||||
open(parameters);
|
||||
}
|
||||
|
||||
BlockingStream::~BlockingStream()
|
||||
{
|
||||
try
|
||||
{
|
||||
close();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// ignore all errors
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
|
||||
void BlockingStream::open(const StreamParameters ¶meters)
|
||||
{
|
||||
PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
|
||||
parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), NULL, NULL);
|
||||
|
||||
if (err != paNoError)
|
||||
{
|
||||
throw PaException(err);
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
|
||||
void BlockingStream::read(void *buffer, unsigned long numFrames)
|
||||
{
|
||||
PaError err = Pa_ReadStream(stream_, buffer, numFrames);
|
||||
|
||||
if (err != paNoError)
|
||||
{
|
||||
throw PaException(err);
|
||||
}
|
||||
}
|
||||
|
||||
void BlockingStream::write(const void *buffer, unsigned long numFrames)
|
||||
{
|
||||
PaError err = Pa_WriteStream(stream_, buffer, numFrames);
|
||||
|
||||
if (err != paNoError)
|
||||
{
|
||||
throw PaException(err);
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
|
||||
signed long BlockingStream::availableReadSize() const
|
||||
{
|
||||
signed long avail = Pa_GetStreamReadAvailable(stream_);
|
||||
|
||||
if (avail < 0)
|
||||
{
|
||||
throw PaException(avail);
|
||||
}
|
||||
|
||||
return avail;
|
||||
}
|
||||
|
||||
signed long BlockingStream::availableWriteSize() const
|
||||
{
|
||||
signed long avail = Pa_GetStreamWriteAvailable(stream_);
|
||||
|
||||
if (avail < 0)
|
||||
{
|
||||
throw PaException(avail);
|
||||
}
|
||||
|
||||
return avail;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
|
||||
} // portaudio
|
||||
|
||||
|
||||
|
||||
#include "portaudiocpp/BlockingStream.hxx"
|
||||
|
||||
#include "portaudio.h"
|
||||
|
||||
#include "portaudiocpp/StreamParameters.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
|
||||
BlockingStream::BlockingStream()
|
||||
{
|
||||
}
|
||||
|
||||
BlockingStream::BlockingStream(const StreamParameters ¶meters)
|
||||
{
|
||||
open(parameters);
|
||||
}
|
||||
|
||||
BlockingStream::~BlockingStream()
|
||||
{
|
||||
try
|
||||
{
|
||||
close();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// ignore all errors
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
|
||||
void BlockingStream::open(const StreamParameters ¶meters)
|
||||
{
|
||||
PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
|
||||
parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), NULL, NULL);
|
||||
|
||||
if (err != paNoError)
|
||||
{
|
||||
throw PaException(err);
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
|
||||
void BlockingStream::read(void *buffer, unsigned long numFrames)
|
||||
{
|
||||
PaError err = Pa_ReadStream(stream_, buffer, numFrames);
|
||||
|
||||
if (err != paNoError)
|
||||
{
|
||||
throw PaException(err);
|
||||
}
|
||||
}
|
||||
|
||||
void BlockingStream::write(const void *buffer, unsigned long numFrames)
|
||||
{
|
||||
PaError err = Pa_WriteStream(stream_, buffer, numFrames);
|
||||
|
||||
if (err != paNoError)
|
||||
{
|
||||
throw PaException(err);
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
|
||||
signed long BlockingStream::availableReadSize() const
|
||||
{
|
||||
signed long avail = Pa_GetStreamReadAvailable(stream_);
|
||||
|
||||
if (avail < 0)
|
||||
{
|
||||
throw PaException(avail);
|
||||
}
|
||||
|
||||
return avail;
|
||||
}
|
||||
|
||||
signed long BlockingStream::availableWriteSize() const
|
||||
{
|
||||
signed long avail = Pa_GetStreamWriteAvailable(stream_);
|
||||
|
||||
if (avail < 0)
|
||||
{
|
||||
throw PaException(avail);
|
||||
}
|
||||
|
||||
return avail;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
|
||||
} // portaudio
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,41 +1,41 @@
|
||||
#include "portaudiocpp/CFunCallbackStream.hxx"
|
||||
|
||||
#include "portaudiocpp/StreamParameters.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
CFunCallbackStream::CFunCallbackStream()
|
||||
{
|
||||
}
|
||||
|
||||
CFunCallbackStream::CFunCallbackStream(const StreamParameters ¶meters, PaStreamCallback *funPtr, void *userData)
|
||||
{
|
||||
open(parameters, funPtr, userData);
|
||||
}
|
||||
|
||||
CFunCallbackStream::~CFunCallbackStream()
|
||||
{
|
||||
try
|
||||
{
|
||||
close();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// ignore all errors
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------==
|
||||
|
||||
void CFunCallbackStream::open(const StreamParameters ¶meters, PaStreamCallback *funPtr, void *userData)
|
||||
{
|
||||
PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
|
||||
parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), funPtr, userData);
|
||||
|
||||
if (err != paNoError)
|
||||
{
|
||||
throw PaException(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "portaudiocpp/CFunCallbackStream.hxx"
|
||||
|
||||
#include "portaudiocpp/StreamParameters.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
CFunCallbackStream::CFunCallbackStream()
|
||||
{
|
||||
}
|
||||
|
||||
CFunCallbackStream::CFunCallbackStream(const StreamParameters ¶meters, PaStreamCallback *funPtr, void *userData)
|
||||
{
|
||||
open(parameters, funPtr, userData);
|
||||
}
|
||||
|
||||
CFunCallbackStream::~CFunCallbackStream()
|
||||
{
|
||||
try
|
||||
{
|
||||
close();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// ignore all errors
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------==
|
||||
|
||||
void CFunCallbackStream::open(const StreamParameters ¶meters, PaStreamCallback *funPtr, void *userData)
|
||||
{
|
||||
PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
|
||||
parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), funPtr, userData);
|
||||
|
||||
if (err != paNoError)
|
||||
{
|
||||
throw PaException(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
#include "portaudiocpp/CallbackInterface.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
namespace impl
|
||||
{
|
||||
|
||||
//////
|
||||
/// Adapts any CallbackInterface object to a C-callable function (ie this function). A
|
||||
/// pointer to the object should be passed as ``userData'' when setting up the callback.
|
||||
//////
|
||||
int callbackInterfaceToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData)
|
||||
{
|
||||
CallbackInterface *cb = static_cast<CallbackInterface *>(userData);
|
||||
return cb->paCallbackFun(inputBuffer, outputBuffer, numFrames, timeInfo, statusFlags);
|
||||
}
|
||||
|
||||
|
||||
} // namespace impl
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
#include "portaudiocpp/CallbackInterface.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
namespace impl
|
||||
{
|
||||
|
||||
//////
|
||||
/// Adapts any CallbackInterface object to a C-callable function (ie this function). A
|
||||
/// pointer to the object should be passed as ``userData'' when setting up the callback.
|
||||
//////
|
||||
int callbackInterfaceToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData)
|
||||
{
|
||||
CallbackInterface *cb = static_cast<CallbackInterface *>(userData);
|
||||
return cb->paCallbackFun(inputBuffer, outputBuffer, numFrames, timeInfo, statusFlags);
|
||||
}
|
||||
|
||||
|
||||
} // namespace impl
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
#include "portaudiocpp/CallbackStream.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
CallbackStream::CallbackStream()
|
||||
{
|
||||
}
|
||||
|
||||
CallbackStream::~CallbackStream()
|
||||
{
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
double CallbackStream::cpuLoad() const
|
||||
{
|
||||
return Pa_GetStreamCpuLoad(stream_);
|
||||
}
|
||||
|
||||
} // namespace portaudio
|
||||
#include "portaudiocpp/CallbackStream.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
CallbackStream::CallbackStream()
|
||||
{
|
||||
}
|
||||
|
||||
CallbackStream::~CallbackStream()
|
||||
{
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
double CallbackStream::cpuLoad() const
|
||||
{
|
||||
return Pa_GetStreamCpuLoad(stream_);
|
||||
}
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
@@ -1,81 +1,81 @@
|
||||
#include "portaudiocpp/CppFunCallbackStream.hxx"
|
||||
|
||||
#include "portaudiocpp/StreamParameters.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
namespace impl
|
||||
{
|
||||
//////
|
||||
/// Adapts any a C++ callback to a C-callable function (ie this function). A
|
||||
/// pointer to a struct with the C++ function pointer and the actual user data should be
|
||||
/// passed as the ``userData'' parameter when setting up the callback.
|
||||
//////
|
||||
int cppCallbackToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData)
|
||||
{
|
||||
FunCallbackStream::CppToCCallbackData *data = static_cast<FunCallbackStream::CppToCCallbackData *>(userData);
|
||||
return data->funPtr(inputBuffer, outputBuffer, numFrames, timeInfo, statusFlags, data->userData);
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
FunCallbackStream::CppToCCallbackData::CppToCCallbackData()
|
||||
{
|
||||
}
|
||||
|
||||
FunCallbackStream::CppToCCallbackData::CppToCCallbackData(CallbackFunPtr funPtr, void *userData) : funPtr(funPtr), userData(userData)
|
||||
{
|
||||
}
|
||||
|
||||
void FunCallbackStream::CppToCCallbackData::init(CallbackFunPtr funPtr, void *userData)
|
||||
{
|
||||
this->funPtr = funPtr;
|
||||
this->userData = userData;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
FunCallbackStream::FunCallbackStream()
|
||||
{
|
||||
}
|
||||
|
||||
FunCallbackStream::FunCallbackStream(const StreamParameters ¶meters, CallbackFunPtr funPtr, void *userData) : adapterData_(funPtr, userData)
|
||||
{
|
||||
open(parameters);
|
||||
}
|
||||
|
||||
FunCallbackStream::~FunCallbackStream()
|
||||
{
|
||||
try
|
||||
{
|
||||
close();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// ignore all errors
|
||||
}
|
||||
}
|
||||
|
||||
void FunCallbackStream::open(const StreamParameters ¶meters, CallbackFunPtr funPtr, void *userData)
|
||||
{
|
||||
adapterData_.init(funPtr, userData);
|
||||
open(parameters);
|
||||
}
|
||||
|
||||
void FunCallbackStream::open(const StreamParameters ¶meters)
|
||||
{
|
||||
PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
|
||||
parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::cppCallbackToPaCallbackAdapter,
|
||||
static_cast<void *>(&adapterData_));
|
||||
|
||||
if (err != paNoError)
|
||||
{
|
||||
throw PaException(err);
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
}
|
||||
#include "portaudiocpp/CppFunCallbackStream.hxx"
|
||||
|
||||
#include "portaudiocpp/StreamParameters.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
namespace impl
|
||||
{
|
||||
//////
|
||||
/// Adapts any a C++ callback to a C-callable function (ie this function). A
|
||||
/// pointer to a struct with the C++ function pointer and the actual user data should be
|
||||
/// passed as the ``userData'' parameter when setting up the callback.
|
||||
//////
|
||||
int cppCallbackToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData)
|
||||
{
|
||||
FunCallbackStream::CppToCCallbackData *data = static_cast<FunCallbackStream::CppToCCallbackData *>(userData);
|
||||
return data->funPtr(inputBuffer, outputBuffer, numFrames, timeInfo, statusFlags, data->userData);
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
FunCallbackStream::CppToCCallbackData::CppToCCallbackData()
|
||||
{
|
||||
}
|
||||
|
||||
FunCallbackStream::CppToCCallbackData::CppToCCallbackData(CallbackFunPtr funPtr, void *userData) : funPtr(funPtr), userData(userData)
|
||||
{
|
||||
}
|
||||
|
||||
void FunCallbackStream::CppToCCallbackData::init(CallbackFunPtr funPtr, void *userData)
|
||||
{
|
||||
this->funPtr = funPtr;
|
||||
this->userData = userData;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
FunCallbackStream::FunCallbackStream()
|
||||
{
|
||||
}
|
||||
|
||||
FunCallbackStream::FunCallbackStream(const StreamParameters ¶meters, CallbackFunPtr funPtr, void *userData) : adapterData_(funPtr, userData)
|
||||
{
|
||||
open(parameters);
|
||||
}
|
||||
|
||||
FunCallbackStream::~FunCallbackStream()
|
||||
{
|
||||
try
|
||||
{
|
||||
close();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// ignore all errors
|
||||
}
|
||||
}
|
||||
|
||||
void FunCallbackStream::open(const StreamParameters ¶meters, CallbackFunPtr funPtr, void *userData)
|
||||
{
|
||||
adapterData_.init(funPtr, userData);
|
||||
open(parameters);
|
||||
}
|
||||
|
||||
void FunCallbackStream::open(const StreamParameters ¶meters)
|
||||
{
|
||||
PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
|
||||
parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::cppCallbackToPaCallbackAdapter,
|
||||
static_cast<void *>(&adapterData_));
|
||||
|
||||
if (err != paNoError)
|
||||
{
|
||||
throw PaException(err);
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
@@ -1,168 +1,168 @@
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
#include "portaudiocpp/HostApi.hxx"
|
||||
#include "portaudiocpp/System.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
Device::Device(PaDeviceIndex index) : index_(index)
|
||||
{
|
||||
if (index == paNoDevice)
|
||||
info_ = NULL;
|
||||
else
|
||||
info_ = Pa_GetDeviceInfo(index);
|
||||
}
|
||||
|
||||
Device::~Device()
|
||||
{
|
||||
}
|
||||
|
||||
PaDeviceIndex Device::index() const
|
||||
{
|
||||
return index_;
|
||||
}
|
||||
|
||||
const char *Device::name() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return "";
|
||||
|
||||
return info_->name;
|
||||
}
|
||||
|
||||
int Device::maxInputChannels() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return 0;
|
||||
|
||||
return info_->maxInputChannels;
|
||||
}
|
||||
|
||||
int Device::maxOutputChannels() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return 0;
|
||||
|
||||
return info_->maxOutputChannels;
|
||||
}
|
||||
|
||||
PaTime Device::defaultLowInputLatency() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return static_cast<PaTime>(0.0);
|
||||
|
||||
return info_->defaultLowInputLatency;
|
||||
}
|
||||
|
||||
PaTime Device::defaultHighInputLatency() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return static_cast<PaTime>(0.0);
|
||||
|
||||
return info_->defaultHighInputLatency;
|
||||
}
|
||||
|
||||
PaTime Device::defaultLowOutputLatency() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return static_cast<PaTime>(0.0);
|
||||
|
||||
return info_->defaultLowOutputLatency;
|
||||
}
|
||||
|
||||
PaTime Device::defaultHighOutputLatency() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return static_cast<PaTime>(0.0);
|
||||
|
||||
return info_->defaultHighOutputLatency;
|
||||
}
|
||||
|
||||
double Device::defaultSampleRate() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return 0.0;
|
||||
|
||||
return info_->defaultSampleRate;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
bool Device::isInputOnlyDevice() const
|
||||
{
|
||||
return (maxOutputChannels() == 0);
|
||||
}
|
||||
|
||||
bool Device::isOutputOnlyDevice() const
|
||||
{
|
||||
return (maxInputChannels() == 0);
|
||||
}
|
||||
|
||||
bool Device::isFullDuplexDevice() const
|
||||
{
|
||||
return (maxInputChannels() > 0 && maxOutputChannels() > 0);
|
||||
}
|
||||
|
||||
bool Device::isSystemDefaultInputDevice() const
|
||||
{
|
||||
return (System::instance().defaultInputDevice() == *this);
|
||||
}
|
||||
|
||||
bool Device::isSystemDefaultOutputDevice() const
|
||||
{
|
||||
return (System::instance().defaultOutputDevice() == *this);
|
||||
}
|
||||
|
||||
bool Device::isHostApiDefaultInputDevice() const
|
||||
{
|
||||
return (hostApi().defaultInputDevice() == *this);
|
||||
}
|
||||
|
||||
bool Device::isHostApiDefaultOutputDevice() const
|
||||
{
|
||||
return (hostApi().defaultOutputDevice() == *this);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
bool Device::operator==(const Device &rhs) const
|
||||
{
|
||||
return (index_ == rhs.index_);
|
||||
}
|
||||
|
||||
bool Device::operator!=(const Device &rhs) const
|
||||
{
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
HostApi &Device::hostApi()
|
||||
{
|
||||
// NOTE: will cause an exception when called for the null device
|
||||
if (info_ == NULL)
|
||||
throw PaException(paInternalError);
|
||||
|
||||
return System::instance().hostApiByIndex(info_->hostApi);
|
||||
}
|
||||
|
||||
const HostApi &Device::hostApi() const
|
||||
{
|
||||
// NOTE; will cause an exception when called for the null device
|
||||
if (info_ == NULL)
|
||||
throw PaException(paInternalError);
|
||||
|
||||
return System::instance().hostApiByIndex(info_->hostApi);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
#include "portaudiocpp/HostApi.hxx"
|
||||
#include "portaudiocpp/System.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
Device::Device(PaDeviceIndex index) : index_(index)
|
||||
{
|
||||
if (index == paNoDevice)
|
||||
info_ = NULL;
|
||||
else
|
||||
info_ = Pa_GetDeviceInfo(index);
|
||||
}
|
||||
|
||||
Device::~Device()
|
||||
{
|
||||
}
|
||||
|
||||
PaDeviceIndex Device::index() const
|
||||
{
|
||||
return index_;
|
||||
}
|
||||
|
||||
const char *Device::name() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return "";
|
||||
|
||||
return info_->name;
|
||||
}
|
||||
|
||||
int Device::maxInputChannels() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return 0;
|
||||
|
||||
return info_->maxInputChannels;
|
||||
}
|
||||
|
||||
int Device::maxOutputChannels() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return 0;
|
||||
|
||||
return info_->maxOutputChannels;
|
||||
}
|
||||
|
||||
PaTime Device::defaultLowInputLatency() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return static_cast<PaTime>(0.0);
|
||||
|
||||
return info_->defaultLowInputLatency;
|
||||
}
|
||||
|
||||
PaTime Device::defaultHighInputLatency() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return static_cast<PaTime>(0.0);
|
||||
|
||||
return info_->defaultHighInputLatency;
|
||||
}
|
||||
|
||||
PaTime Device::defaultLowOutputLatency() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return static_cast<PaTime>(0.0);
|
||||
|
||||
return info_->defaultLowOutputLatency;
|
||||
}
|
||||
|
||||
PaTime Device::defaultHighOutputLatency() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return static_cast<PaTime>(0.0);
|
||||
|
||||
return info_->defaultHighOutputLatency;
|
||||
}
|
||||
|
||||
double Device::defaultSampleRate() const
|
||||
{
|
||||
if (info_ == NULL)
|
||||
return 0.0;
|
||||
|
||||
return info_->defaultSampleRate;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
bool Device::isInputOnlyDevice() const
|
||||
{
|
||||
return (maxOutputChannels() == 0);
|
||||
}
|
||||
|
||||
bool Device::isOutputOnlyDevice() const
|
||||
{
|
||||
return (maxInputChannels() == 0);
|
||||
}
|
||||
|
||||
bool Device::isFullDuplexDevice() const
|
||||
{
|
||||
return (maxInputChannels() > 0 && maxOutputChannels() > 0);
|
||||
}
|
||||
|
||||
bool Device::isSystemDefaultInputDevice() const
|
||||
{
|
||||
return (System::instance().defaultInputDevice() == *this);
|
||||
}
|
||||
|
||||
bool Device::isSystemDefaultOutputDevice() const
|
||||
{
|
||||
return (System::instance().defaultOutputDevice() == *this);
|
||||
}
|
||||
|
||||
bool Device::isHostApiDefaultInputDevice() const
|
||||
{
|
||||
return (hostApi().defaultInputDevice() == *this);
|
||||
}
|
||||
|
||||
bool Device::isHostApiDefaultOutputDevice() const
|
||||
{
|
||||
return (hostApi().defaultOutputDevice() == *this);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
bool Device::operator==(const Device &rhs) const
|
||||
{
|
||||
return (index_ == rhs.index_);
|
||||
}
|
||||
|
||||
bool Device::operator!=(const Device &rhs) const
|
||||
{
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
HostApi &Device::hostApi()
|
||||
{
|
||||
// NOTE: will cause an exception when called for the null device
|
||||
if (info_ == NULL)
|
||||
throw PaException(paInternalError);
|
||||
|
||||
return System::instance().hostApiByIndex(info_->hostApi);
|
||||
}
|
||||
|
||||
const HostApi &Device::hostApi() const
|
||||
{
|
||||
// NOTE; will cause an exception when called for the null device
|
||||
if (info_ == NULL)
|
||||
throw PaException(paInternalError);
|
||||
|
||||
return System::instance().hostApiByIndex(info_->hostApi);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
|
||||
@@ -1,163 +1,163 @@
|
||||
#include "portaudiocpp/DirectionSpecificStreamParameters.hxx"
|
||||
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Returns a `nil' DirectionSpecificStreamParameters object. This can be used to
|
||||
/// specify that one direction of a Stream is not required (i.e. when creating
|
||||
/// a half-duplex Stream). All fields of the null DirectionSpecificStreamParameters
|
||||
/// object are invalid except for the device and the number of channel, which are set
|
||||
/// to paNoDevice and 0 respectively.
|
||||
//////
|
||||
DirectionSpecificStreamParameters DirectionSpecificStreamParameters::null()
|
||||
{
|
||||
DirectionSpecificStreamParameters tmp;
|
||||
tmp.paStreamParameters_.device = paNoDevice;
|
||||
tmp.paStreamParameters_.channelCount = 0;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Default constructor -- all parameters will be uninitialized.
|
||||
//////
|
||||
DirectionSpecificStreamParameters::DirectionSpecificStreamParameters()
|
||||
{
|
||||
}
|
||||
|
||||
//////
|
||||
/// Constructor which sets all required fields.
|
||||
//////
|
||||
DirectionSpecificStreamParameters::DirectionSpecificStreamParameters(const Device &device, int numChannels,
|
||||
SampleDataFormat format, bool interleaved, PaTime suggestedLatency, void *hostApiSpecificStreamInfo)
|
||||
{
|
||||
setDevice(device);
|
||||
setNumChannels(numChannels);
|
||||
setSampleFormat(format, interleaved);
|
||||
setSuggestedLatency(suggestedLatency);
|
||||
setHostApiSpecificStreamInfo(hostApiSpecificStreamInfo);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
void DirectionSpecificStreamParameters::setDevice(const Device &device)
|
||||
{
|
||||
paStreamParameters_.device = device.index();
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setNumChannels(int numChannels)
|
||||
{
|
||||
paStreamParameters_.channelCount = numChannels;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setSampleFormat(SampleDataFormat format, bool interleaved)
|
||||
{
|
||||
paStreamParameters_.sampleFormat = static_cast<PaSampleFormat>(format);
|
||||
|
||||
if (!interleaved)
|
||||
paStreamParameters_.sampleFormat |= paNonInterleaved;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setHostApiSpecificSampleFormat(PaSampleFormat format, bool interleaved)
|
||||
{
|
||||
paStreamParameters_.sampleFormat = format;
|
||||
|
||||
paStreamParameters_.sampleFormat |= paCustomFormat;
|
||||
|
||||
if (!interleaved)
|
||||
paStreamParameters_.sampleFormat |= paNonInterleaved;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setSuggestedLatency(PaTime latency)
|
||||
{
|
||||
paStreamParameters_.suggestedLatency = latency;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setHostApiSpecificStreamInfo(void *streamInfo)
|
||||
{
|
||||
paStreamParameters_.hostApiSpecificStreamInfo = streamInfo;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
PaStreamParameters *DirectionSpecificStreamParameters::paStreamParameters()
|
||||
{
|
||||
if (paStreamParameters_.channelCount > 0 && paStreamParameters_.device != paNoDevice)
|
||||
return &paStreamParameters_;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const PaStreamParameters *DirectionSpecificStreamParameters::paStreamParameters() const
|
||||
{
|
||||
if (paStreamParameters_.channelCount > 0 && paStreamParameters_.device != paNoDevice)
|
||||
return &paStreamParameters_;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Device &DirectionSpecificStreamParameters::device() const
|
||||
{
|
||||
return System::instance().deviceByIndex(paStreamParameters_.device);
|
||||
}
|
||||
|
||||
int DirectionSpecificStreamParameters::numChannels() const
|
||||
{
|
||||
return paStreamParameters_.channelCount;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the (non host api-specific) sample format, without including
|
||||
/// the paNonInterleaved flag. If the sample format is host api-spefific,
|
||||
/// INVALID_FORMAT (0) will be returned.
|
||||
//////
|
||||
SampleDataFormat DirectionSpecificStreamParameters::sampleFormat() const
|
||||
{
|
||||
if (isSampleFormatHostApiSpecific())
|
||||
return INVALID_FORMAT;
|
||||
else
|
||||
return static_cast<SampleDataFormat>(paStreamParameters_.sampleFormat & ~paNonInterleaved);
|
||||
}
|
||||
|
||||
bool DirectionSpecificStreamParameters::isSampleFormatInterleaved() const
|
||||
{
|
||||
return ((paStreamParameters_.sampleFormat & paNonInterleaved) == 0);
|
||||
}
|
||||
|
||||
bool DirectionSpecificStreamParameters::isSampleFormatHostApiSpecific() const
|
||||
{
|
||||
return ((paStreamParameters_.sampleFormat & paCustomFormat) == 0);
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the host api-specific sample format, without including any
|
||||
/// paCustomFormat or paNonInterleaved flags. Will return 0 if the sample format is
|
||||
/// not host api-specific.
|
||||
//////
|
||||
PaSampleFormat DirectionSpecificStreamParameters::hostApiSpecificSampleFormat() const
|
||||
{
|
||||
if (isSampleFormatHostApiSpecific())
|
||||
return paStreamParameters_.sampleFormat & ~paCustomFormat & ~paNonInterleaved;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
PaTime DirectionSpecificStreamParameters::suggestedLatency() const
|
||||
{
|
||||
return paStreamParameters_.suggestedLatency;
|
||||
}
|
||||
|
||||
void *DirectionSpecificStreamParameters::hostApiSpecificStreamInfo() const
|
||||
{
|
||||
return paStreamParameters_.hostApiSpecificStreamInfo;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
#include "portaudiocpp/DirectionSpecificStreamParameters.hxx"
|
||||
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Returns a `nil' DirectionSpecificStreamParameters object. This can be used to
|
||||
/// specify that one direction of a Stream is not required (i.e. when creating
|
||||
/// a half-duplex Stream). All fields of the null DirectionSpecificStreamParameters
|
||||
/// object are invalid except for the device and the number of channel, which are set
|
||||
/// to paNoDevice and 0 respectively.
|
||||
//////
|
||||
DirectionSpecificStreamParameters DirectionSpecificStreamParameters::null()
|
||||
{
|
||||
DirectionSpecificStreamParameters tmp;
|
||||
tmp.paStreamParameters_.device = paNoDevice;
|
||||
tmp.paStreamParameters_.channelCount = 0;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Default constructor -- all parameters will be uninitialized.
|
||||
//////
|
||||
DirectionSpecificStreamParameters::DirectionSpecificStreamParameters()
|
||||
{
|
||||
}
|
||||
|
||||
//////
|
||||
/// Constructor which sets all required fields.
|
||||
//////
|
||||
DirectionSpecificStreamParameters::DirectionSpecificStreamParameters(const Device &device, int numChannels,
|
||||
SampleDataFormat format, bool interleaved, PaTime suggestedLatency, void *hostApiSpecificStreamInfo)
|
||||
{
|
||||
setDevice(device);
|
||||
setNumChannels(numChannels);
|
||||
setSampleFormat(format, interleaved);
|
||||
setSuggestedLatency(suggestedLatency);
|
||||
setHostApiSpecificStreamInfo(hostApiSpecificStreamInfo);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
void DirectionSpecificStreamParameters::setDevice(const Device &device)
|
||||
{
|
||||
paStreamParameters_.device = device.index();
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setNumChannels(int numChannels)
|
||||
{
|
||||
paStreamParameters_.channelCount = numChannels;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setSampleFormat(SampleDataFormat format, bool interleaved)
|
||||
{
|
||||
paStreamParameters_.sampleFormat = static_cast<PaSampleFormat>(format);
|
||||
|
||||
if (!interleaved)
|
||||
paStreamParameters_.sampleFormat |= paNonInterleaved;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setHostApiSpecificSampleFormat(PaSampleFormat format, bool interleaved)
|
||||
{
|
||||
paStreamParameters_.sampleFormat = format;
|
||||
|
||||
paStreamParameters_.sampleFormat |= paCustomFormat;
|
||||
|
||||
if (!interleaved)
|
||||
paStreamParameters_.sampleFormat |= paNonInterleaved;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setSuggestedLatency(PaTime latency)
|
||||
{
|
||||
paStreamParameters_.suggestedLatency = latency;
|
||||
}
|
||||
|
||||
void DirectionSpecificStreamParameters::setHostApiSpecificStreamInfo(void *streamInfo)
|
||||
{
|
||||
paStreamParameters_.hostApiSpecificStreamInfo = streamInfo;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
PaStreamParameters *DirectionSpecificStreamParameters::paStreamParameters()
|
||||
{
|
||||
if (paStreamParameters_.channelCount > 0 && paStreamParameters_.device != paNoDevice)
|
||||
return &paStreamParameters_;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const PaStreamParameters *DirectionSpecificStreamParameters::paStreamParameters() const
|
||||
{
|
||||
if (paStreamParameters_.channelCount > 0 && paStreamParameters_.device != paNoDevice)
|
||||
return &paStreamParameters_;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Device &DirectionSpecificStreamParameters::device() const
|
||||
{
|
||||
return System::instance().deviceByIndex(paStreamParameters_.device);
|
||||
}
|
||||
|
||||
int DirectionSpecificStreamParameters::numChannels() const
|
||||
{
|
||||
return paStreamParameters_.channelCount;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the (non host api-specific) sample format, without including
|
||||
/// the paNonInterleaved flag. If the sample format is host api-spefific,
|
||||
/// INVALID_FORMAT (0) will be returned.
|
||||
//////
|
||||
SampleDataFormat DirectionSpecificStreamParameters::sampleFormat() const
|
||||
{
|
||||
if (isSampleFormatHostApiSpecific())
|
||||
return INVALID_FORMAT;
|
||||
else
|
||||
return static_cast<SampleDataFormat>(paStreamParameters_.sampleFormat & ~paNonInterleaved);
|
||||
}
|
||||
|
||||
bool DirectionSpecificStreamParameters::isSampleFormatInterleaved() const
|
||||
{
|
||||
return ((paStreamParameters_.sampleFormat & paNonInterleaved) == 0);
|
||||
}
|
||||
|
||||
bool DirectionSpecificStreamParameters::isSampleFormatHostApiSpecific() const
|
||||
{
|
||||
return ((paStreamParameters_.sampleFormat & paCustomFormat) == 0);
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the host api-specific sample format, without including any
|
||||
/// paCustomFormat or paNonInterleaved flags. Will return 0 if the sample format is
|
||||
/// not host api-specific.
|
||||
//////
|
||||
PaSampleFormat DirectionSpecificStreamParameters::hostApiSpecificSampleFormat() const
|
||||
{
|
||||
if (isSampleFormatHostApiSpecific())
|
||||
return paStreamParameters_.sampleFormat & ~paCustomFormat & ~paNonInterleaved;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
PaTime DirectionSpecificStreamParameters::suggestedLatency() const
|
||||
{
|
||||
return paStreamParameters_.suggestedLatency;
|
||||
}
|
||||
|
||||
void *DirectionSpecificStreamParameters::hostApiSpecificStreamInfo() const
|
||||
{
|
||||
return paStreamParameters_.hostApiSpecificStreamInfo;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
@@ -1,123 +1,123 @@
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
// -----------------------------------------------------------------------------------
|
||||
// PaException:
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Wraps a PortAudio error into a PortAudioCpp PaException.
|
||||
//////
|
||||
PaException::PaException(PaError error) : error_(error)
|
||||
{
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Alias for paErrorText(), to have std::exception compliance.
|
||||
//////
|
||||
const char *PaException::what() const throw()
|
||||
{
|
||||
return paErrorText();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Returns the PortAudio error code (PaError).
|
||||
//////
|
||||
PaError PaException::paError() const
|
||||
{
|
||||
return error_;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the error as a (zero-terminated) text string.
|
||||
//////
|
||||
const char *PaException::paErrorText() const
|
||||
{
|
||||
return Pa_GetErrorText(error_);
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns true is the error is a HostApi error.
|
||||
//////
|
||||
bool PaException::isHostApiError() const
|
||||
{
|
||||
return (error_ == paUnanticipatedHostError);
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the last HostApi error (which is the current one if
|
||||
/// isHostApiError() returns true) as an error code.
|
||||
//////
|
||||
long PaException::lastHostApiError() const
|
||||
{
|
||||
return Pa_GetLastHostErrorInfo()->errorCode;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the last HostApi error (which is the current one if
|
||||
/// isHostApiError() returns true) as a (zero-terminated) text
|
||||
/// string, if it's available.
|
||||
//////
|
||||
const char *PaException::lastHostApiErrorText() const
|
||||
{
|
||||
return Pa_GetLastHostErrorInfo()->errorText;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
bool PaException::operator==(const PaException &rhs) const
|
||||
{
|
||||
return (error_ == rhs.error_);
|
||||
}
|
||||
|
||||
bool PaException::operator!=(const PaException &rhs) const
|
||||
{
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
// PaCppException:
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
PaCppException::PaCppException(ExceptionSpecifier specifier) : specifier_(specifier)
|
||||
{
|
||||
}
|
||||
|
||||
const char *PaCppException::what() const throw()
|
||||
{
|
||||
switch (specifier_)
|
||||
{
|
||||
case UNABLE_TO_ADAPT_DEVICE:
|
||||
{
|
||||
return "Unable to adapt the given device to the specified host api specific device extension";
|
||||
}
|
||||
}
|
||||
|
||||
return "Unknown exception";
|
||||
}
|
||||
|
||||
PaCppException::ExceptionSpecifier PaCppException::specifier() const
|
||||
{
|
||||
return specifier_;
|
||||
}
|
||||
|
||||
bool PaCppException::operator==(const PaCppException &rhs) const
|
||||
{
|
||||
return (specifier_ == rhs.specifier_);
|
||||
}
|
||||
|
||||
bool PaCppException::operator!=(const PaCppException &rhs) const
|
||||
{
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
// -----------------------------------------------------------------------------------
|
||||
// PaException:
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Wraps a PortAudio error into a PortAudioCpp PaException.
|
||||
//////
|
||||
PaException::PaException(PaError error) : error_(error)
|
||||
{
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Alias for paErrorText(), to have std::exception compliance.
|
||||
//////
|
||||
const char *PaException::what() const throw()
|
||||
{
|
||||
return paErrorText();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Returns the PortAudio error code (PaError).
|
||||
//////
|
||||
PaError PaException::paError() const
|
||||
{
|
||||
return error_;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the error as a (zero-terminated) text string.
|
||||
//////
|
||||
const char *PaException::paErrorText() const
|
||||
{
|
||||
return Pa_GetErrorText(error_);
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns true is the error is a HostApi error.
|
||||
//////
|
||||
bool PaException::isHostApiError() const
|
||||
{
|
||||
return (error_ == paUnanticipatedHostError);
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the last HostApi error (which is the current one if
|
||||
/// isHostApiError() returns true) as an error code.
|
||||
//////
|
||||
long PaException::lastHostApiError() const
|
||||
{
|
||||
return Pa_GetLastHostErrorInfo()->errorCode;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the last HostApi error (which is the current one if
|
||||
/// isHostApiError() returns true) as a (zero-terminated) text
|
||||
/// string, if it's available.
|
||||
//////
|
||||
const char *PaException::lastHostApiErrorText() const
|
||||
{
|
||||
return Pa_GetLastHostErrorInfo()->errorText;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
bool PaException::operator==(const PaException &rhs) const
|
||||
{
|
||||
return (error_ == rhs.error_);
|
||||
}
|
||||
|
||||
bool PaException::operator!=(const PaException &rhs) const
|
||||
{
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
// PaCppException:
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
PaCppException::PaCppException(ExceptionSpecifier specifier) : specifier_(specifier)
|
||||
{
|
||||
}
|
||||
|
||||
const char *PaCppException::what() const throw()
|
||||
{
|
||||
switch (specifier_)
|
||||
{
|
||||
case UNABLE_TO_ADAPT_DEVICE:
|
||||
{
|
||||
return "Unable to adapt the given device to the specified host api specific device extension";
|
||||
}
|
||||
}
|
||||
|
||||
return "Unknown exception";
|
||||
}
|
||||
|
||||
PaCppException::ExceptionSpecifier PaCppException::specifier() const
|
||||
{
|
||||
return specifier_;
|
||||
}
|
||||
|
||||
bool PaCppException::operator==(const PaCppException &rhs) const
|
||||
{
|
||||
return (specifier_ == rhs.specifier_);
|
||||
}
|
||||
|
||||
bool PaCppException::operator!=(const PaCppException &rhs) const
|
||||
{
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
|
||||
@@ -1,121 +1,121 @@
|
||||
#include "portaudiocpp/HostApi.hxx"
|
||||
|
||||
#include "portaudiocpp/System.hxx"
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
#include "portaudiocpp/SystemDeviceIterator.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
HostApi::HostApi(PaHostApiIndex index) : devices_(NULL)
|
||||
{
|
||||
try
|
||||
{
|
||||
info_ = Pa_GetHostApiInfo(index);
|
||||
|
||||
// Create and populate devices array:
|
||||
int numDevices = deviceCount();
|
||||
|
||||
devices_ = new Device*[numDevices];
|
||||
|
||||
for (int i = 0; i < numDevices; ++i)
|
||||
{
|
||||
PaDeviceIndex deviceIndex = Pa_HostApiDeviceIndexToDeviceIndex(index, i);
|
||||
|
||||
if (deviceIndex < 0)
|
||||
{
|
||||
throw PaException(deviceIndex);
|
||||
}
|
||||
|
||||
devices_[i] = &System::instance().deviceByIndex(deviceIndex);
|
||||
}
|
||||
}
|
||||
catch (const std::exception &e)
|
||||
{
|
||||
// Delete any (partially) constructed objects (deconstructor isn't called):
|
||||
delete[] devices_; // devices_ is either NULL or valid
|
||||
|
||||
// Re-throw exception:
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
HostApi::~HostApi()
|
||||
{
|
||||
// Destroy devices array:
|
||||
delete[] devices_;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
PaHostApiTypeId HostApi::typeId() const
|
||||
{
|
||||
return info_->type;
|
||||
}
|
||||
|
||||
PaHostApiIndex HostApi::index() const
|
||||
{
|
||||
PaHostApiIndex index = Pa_HostApiTypeIdToHostApiIndex(typeId());
|
||||
|
||||
if (index < 0)
|
||||
throw PaException(index);
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
const char *HostApi::name() const
|
||||
{
|
||||
return info_->name;
|
||||
}
|
||||
|
||||
int HostApi::deviceCount() const
|
||||
{
|
||||
return info_->deviceCount;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
HostApi::DeviceIterator HostApi::devicesBegin()
|
||||
{
|
||||
DeviceIterator tmp;
|
||||
tmp.ptr_ = &devices_[0]; // begin (first element)
|
||||
return tmp;
|
||||
}
|
||||
|
||||
HostApi::DeviceIterator HostApi::devicesEnd()
|
||||
{
|
||||
DeviceIterator tmp;
|
||||
tmp.ptr_ = &devices_[deviceCount()]; // end (one past last element)
|
||||
return tmp;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
Device &HostApi::defaultInputDevice() const
|
||||
{
|
||||
return System::instance().deviceByIndex(info_->defaultInputDevice);
|
||||
}
|
||||
|
||||
Device &HostApi::defaultOutputDevice() const
|
||||
{
|
||||
return System::instance().deviceByIndex(info_->defaultOutputDevice);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
bool HostApi::operator==(const HostApi &rhs) const
|
||||
{
|
||||
return (typeId() == rhs.typeId());
|
||||
}
|
||||
|
||||
bool HostApi::operator!=(const HostApi &rhs) const
|
||||
{
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
#include "portaudiocpp/HostApi.hxx"
|
||||
|
||||
#include "portaudiocpp/System.hxx"
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
#include "portaudiocpp/SystemDeviceIterator.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
HostApi::HostApi(PaHostApiIndex index) : devices_(NULL)
|
||||
{
|
||||
try
|
||||
{
|
||||
info_ = Pa_GetHostApiInfo(index);
|
||||
|
||||
// Create and populate devices array:
|
||||
int numDevices = deviceCount();
|
||||
|
||||
devices_ = new Device*[numDevices];
|
||||
|
||||
for (int i = 0; i < numDevices; ++i)
|
||||
{
|
||||
PaDeviceIndex deviceIndex = Pa_HostApiDeviceIndexToDeviceIndex(index, i);
|
||||
|
||||
if (deviceIndex < 0)
|
||||
{
|
||||
throw PaException(deviceIndex);
|
||||
}
|
||||
|
||||
devices_[i] = &System::instance().deviceByIndex(deviceIndex);
|
||||
}
|
||||
}
|
||||
catch (const std::exception &e)
|
||||
{
|
||||
// Delete any (partially) constructed objects (deconstructor isn't called):
|
||||
delete[] devices_; // devices_ is either NULL or valid
|
||||
|
||||
// Re-throw exception:
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
HostApi::~HostApi()
|
||||
{
|
||||
// Destroy devices array:
|
||||
delete[] devices_;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
PaHostApiTypeId HostApi::typeId() const
|
||||
{
|
||||
return info_->type;
|
||||
}
|
||||
|
||||
PaHostApiIndex HostApi::index() const
|
||||
{
|
||||
PaHostApiIndex index = Pa_HostApiTypeIdToHostApiIndex(typeId());
|
||||
|
||||
if (index < 0)
|
||||
throw PaException(index);
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
const char *HostApi::name() const
|
||||
{
|
||||
return info_->name;
|
||||
}
|
||||
|
||||
int HostApi::deviceCount() const
|
||||
{
|
||||
return info_->deviceCount;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
HostApi::DeviceIterator HostApi::devicesBegin()
|
||||
{
|
||||
DeviceIterator tmp;
|
||||
tmp.ptr_ = &devices_[0]; // begin (first element)
|
||||
return tmp;
|
||||
}
|
||||
|
||||
HostApi::DeviceIterator HostApi::devicesEnd()
|
||||
{
|
||||
DeviceIterator tmp;
|
||||
tmp.ptr_ = &devices_[deviceCount()]; // end (one past last element)
|
||||
return tmp;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
Device &HostApi::defaultInputDevice() const
|
||||
{
|
||||
return System::instance().deviceByIndex(info_->defaultInputDevice);
|
||||
}
|
||||
|
||||
Device &HostApi::defaultOutputDevice() const
|
||||
{
|
||||
return System::instance().deviceByIndex(info_->defaultOutputDevice);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
bool HostApi::operator==(const HostApi &rhs) const
|
||||
{
|
||||
return (typeId() == rhs.typeId());
|
||||
}
|
||||
|
||||
bool HostApi::operator!=(const HostApi &rhs) const
|
||||
{
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
@@ -1,45 +1,45 @@
|
||||
#include "portaudiocpp/InterfaceCallbackStream.hxx"
|
||||
|
||||
#include "portaudiocpp/StreamParameters.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
#include "portaudiocpp/CallbackInterface.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
// ---------------------------------------------------------------------------------==
|
||||
|
||||
InterfaceCallbackStream::InterfaceCallbackStream()
|
||||
{
|
||||
}
|
||||
|
||||
InterfaceCallbackStream::InterfaceCallbackStream(const StreamParameters ¶meters, CallbackInterface &instance)
|
||||
{
|
||||
open(parameters, instance);
|
||||
}
|
||||
|
||||
InterfaceCallbackStream::~InterfaceCallbackStream()
|
||||
{
|
||||
try
|
||||
{
|
||||
close();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// ignore all errors
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------==
|
||||
|
||||
void InterfaceCallbackStream::open(const StreamParameters ¶meters, CallbackInterface &instance)
|
||||
{
|
||||
PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
|
||||
parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::callbackInterfaceToPaCallbackAdapter, static_cast<void *>(&instance));
|
||||
|
||||
if (err != paNoError)
|
||||
{
|
||||
throw PaException(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "portaudiocpp/InterfaceCallbackStream.hxx"
|
||||
|
||||
#include "portaudiocpp/StreamParameters.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
#include "portaudiocpp/CallbackInterface.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
// ---------------------------------------------------------------------------------==
|
||||
|
||||
InterfaceCallbackStream::InterfaceCallbackStream()
|
||||
{
|
||||
}
|
||||
|
||||
InterfaceCallbackStream::InterfaceCallbackStream(const StreamParameters ¶meters, CallbackInterface &instance)
|
||||
{
|
||||
open(parameters, instance);
|
||||
}
|
||||
|
||||
InterfaceCallbackStream::~InterfaceCallbackStream()
|
||||
{
|
||||
try
|
||||
{
|
||||
close();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// ignore all errors
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------==
|
||||
|
||||
void InterfaceCallbackStream::open(const StreamParameters ¶meters, CallbackInterface &instance)
|
||||
{
|
||||
PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
|
||||
parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::callbackInterfaceToPaCallbackAdapter, static_cast<void *>(&instance));
|
||||
|
||||
if (err != paNoError)
|
||||
{
|
||||
throw PaException(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "portaudiocpp/MemFunCallbackStream.hxx"
|
||||
|
||||
// (... template class ...)
|
||||
|
||||
#include "portaudiocpp/MemFunCallbackStream.hxx"
|
||||
|
||||
// (... template class ...)
|
||||
|
||||
|
||||
@@ -1,195 +1,195 @@
|
||||
#include "portaudiocpp/Stream.hxx"
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
#include "portaudiocpp/System.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
Stream::Stream() : stream_(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
Stream::~Stream()
|
||||
{
|
||||
// (can't call close here,
|
||||
// the derived class should atleast call
|
||||
// close() in it's deconstructor)
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Closes the Stream if it's open, else does nothing.
|
||||
//////
|
||||
void Stream::close()
|
||||
{
|
||||
if (isOpen() && System::exists())
|
||||
{
|
||||
PaError err = Pa_CloseStream(stream_);
|
||||
stream_ = NULL;
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns true if the Stream is open.
|
||||
//////
|
||||
bool Stream::isOpen() const
|
||||
{
|
||||
return (stream_ != NULL);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
void Stream::setStreamFinishedCallback(PaStreamFinishedCallback *callback)
|
||||
{
|
||||
PaError err = Pa_SetStreamFinishedCallback(stream_, callback);
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
void Stream::start()
|
||||
{
|
||||
PaError err = Pa_StartStream(stream_);
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
|
||||
void Stream::stop()
|
||||
{
|
||||
PaError err = Pa_StopStream(stream_);
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
|
||||
void Stream::abort()
|
||||
{
|
||||
PaError err = Pa_AbortStream(stream_);
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
|
||||
bool Stream::isStopped() const
|
||||
{
|
||||
PaError ret = Pa_IsStreamStopped(stream_);
|
||||
|
||||
if (ret < 0)
|
||||
throw PaException(ret);
|
||||
|
||||
return (ret == 1);
|
||||
}
|
||||
|
||||
bool Stream::isActive() const
|
||||
{
|
||||
PaError ret = Pa_IsStreamActive(stream_);
|
||||
|
||||
if (ret < 0)
|
||||
throw PaException(ret);
|
||||
|
||||
return (ret == 1);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Returns the best known input latency for the Stream. This value may differ from the
|
||||
/// suggested input latency set in the StreamParameters. Includes all sources of
|
||||
/// latency known to PortAudio such as internal buffering, and Host API reported latency.
|
||||
/// Doesn't include any estimates of unknown latency.
|
||||
//////
|
||||
PaTime Stream::inputLatency() const
|
||||
{
|
||||
const PaStreamInfo *info = Pa_GetStreamInfo(stream_);
|
||||
if (info == NULL)
|
||||
{
|
||||
throw PaException(paInternalError);
|
||||
return PaTime(0.0);
|
||||
}
|
||||
|
||||
return info->inputLatency;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the best known output latency for the Stream. This value may differ from the
|
||||
/// suggested output latency set in the StreamParameters. Includes all sources of
|
||||
/// latency known to PortAudio such as internal buffering, and Host API reported latency.
|
||||
/// Doesn't include any estimates of unknown latency.
|
||||
//////
|
||||
PaTime Stream::outputLatency() const
|
||||
{
|
||||
const PaStreamInfo *info = Pa_GetStreamInfo(stream_);
|
||||
if (info == NULL)
|
||||
{
|
||||
throw PaException(paInternalError);
|
||||
return PaTime(0.0);
|
||||
}
|
||||
|
||||
return info->outputLatency;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the sample rate of the Stream. Usually this will be the
|
||||
/// best known estimate of the used sample rate. For instance when opening a
|
||||
/// Stream setting 44100.0 Hz in the StreamParameters, the actual sample
|
||||
/// rate might be something like 44103.2 Hz (due to imperfections in the
|
||||
/// sound card hardware).
|
||||
//////
|
||||
double Stream::sampleRate() const
|
||||
{
|
||||
const PaStreamInfo *info = Pa_GetStreamInfo(stream_);
|
||||
if (info == NULL)
|
||||
{
|
||||
throw PaException(paInternalError);
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
return info->sampleRate;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
PaTime Stream::time() const
|
||||
{
|
||||
return Pa_GetStreamTime(stream_);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Accessor (const) for PortAudio PaStream pointer, useful for interfacing with
|
||||
/// PortAudio add-ons such as PortMixer for instance. Normally accessing this
|
||||
/// pointer should not be needed as PortAudioCpp aims to provide all of PortAudio's
|
||||
/// functionality.
|
||||
//////
|
||||
const PaStream *Stream::paStream() const
|
||||
{
|
||||
return stream_;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Accessor (non-const) for PortAudio PaStream pointer, useful for interfacing with
|
||||
/// PortAudio add-ons such as PortMixer for instance. Normally accessing this
|
||||
/// pointer should not be needed as PortAudioCpp aims to provide all of PortAudio's
|
||||
/// functionality.
|
||||
//////
|
||||
PaStream *Stream::paStream()
|
||||
{
|
||||
return stream_;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
#include "portaudiocpp/Stream.hxx"
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
#include "portaudiocpp/System.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
Stream::Stream() : stream_(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
Stream::~Stream()
|
||||
{
|
||||
// (can't call close here,
|
||||
// the derived class should atleast call
|
||||
// close() in it's deconstructor)
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Closes the Stream if it's open, else does nothing.
|
||||
//////
|
||||
void Stream::close()
|
||||
{
|
||||
if (isOpen() && System::exists())
|
||||
{
|
||||
PaError err = Pa_CloseStream(stream_);
|
||||
stream_ = NULL;
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns true if the Stream is open.
|
||||
//////
|
||||
bool Stream::isOpen() const
|
||||
{
|
||||
return (stream_ != NULL);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
void Stream::setStreamFinishedCallback(PaStreamFinishedCallback *callback)
|
||||
{
|
||||
PaError err = Pa_SetStreamFinishedCallback(stream_, callback);
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
void Stream::start()
|
||||
{
|
||||
PaError err = Pa_StartStream(stream_);
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
|
||||
void Stream::stop()
|
||||
{
|
||||
PaError err = Pa_StopStream(stream_);
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
|
||||
void Stream::abort()
|
||||
{
|
||||
PaError err = Pa_AbortStream(stream_);
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
|
||||
bool Stream::isStopped() const
|
||||
{
|
||||
PaError ret = Pa_IsStreamStopped(stream_);
|
||||
|
||||
if (ret < 0)
|
||||
throw PaException(ret);
|
||||
|
||||
return (ret == 1);
|
||||
}
|
||||
|
||||
bool Stream::isActive() const
|
||||
{
|
||||
PaError ret = Pa_IsStreamActive(stream_);
|
||||
|
||||
if (ret < 0)
|
||||
throw PaException(ret);
|
||||
|
||||
return (ret == 1);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Returns the best known input latency for the Stream. This value may differ from the
|
||||
/// suggested input latency set in the StreamParameters. Includes all sources of
|
||||
/// latency known to PortAudio such as internal buffering, and Host API reported latency.
|
||||
/// Doesn't include any estimates of unknown latency.
|
||||
//////
|
||||
PaTime Stream::inputLatency() const
|
||||
{
|
||||
const PaStreamInfo *info = Pa_GetStreamInfo(stream_);
|
||||
if (info == NULL)
|
||||
{
|
||||
throw PaException(paInternalError);
|
||||
return PaTime(0.0);
|
||||
}
|
||||
|
||||
return info->inputLatency;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the best known output latency for the Stream. This value may differ from the
|
||||
/// suggested output latency set in the StreamParameters. Includes all sources of
|
||||
/// latency known to PortAudio such as internal buffering, and Host API reported latency.
|
||||
/// Doesn't include any estimates of unknown latency.
|
||||
//////
|
||||
PaTime Stream::outputLatency() const
|
||||
{
|
||||
const PaStreamInfo *info = Pa_GetStreamInfo(stream_);
|
||||
if (info == NULL)
|
||||
{
|
||||
throw PaException(paInternalError);
|
||||
return PaTime(0.0);
|
||||
}
|
||||
|
||||
return info->outputLatency;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the sample rate of the Stream. Usually this will be the
|
||||
/// best known estimate of the used sample rate. For instance when opening a
|
||||
/// Stream setting 44100.0 Hz in the StreamParameters, the actual sample
|
||||
/// rate might be something like 44103.2 Hz (due to imperfections in the
|
||||
/// sound card hardware).
|
||||
//////
|
||||
double Stream::sampleRate() const
|
||||
{
|
||||
const PaStreamInfo *info = Pa_GetStreamInfo(stream_);
|
||||
if (info == NULL)
|
||||
{
|
||||
throw PaException(paInternalError);
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
return info->sampleRate;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
PaTime Stream::time() const
|
||||
{
|
||||
return Pa_GetStreamTime(stream_);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Accessor (const) for PortAudio PaStream pointer, useful for interfacing with
|
||||
/// PortAudio add-ons such as PortMixer for instance. Normally accessing this
|
||||
/// pointer should not be needed as PortAudioCpp aims to provide all of PortAudio's
|
||||
/// functionality.
|
||||
//////
|
||||
const PaStream *Stream::paStream() const
|
||||
{
|
||||
return stream_;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Accessor (non-const) for PortAudio PaStream pointer, useful for interfacing with
|
||||
/// PortAudio add-ons such as PortMixer for instance. Normally accessing this
|
||||
/// pointer should not be needed as PortAudioCpp aims to provide all of PortAudio's
|
||||
/// functionality.
|
||||
//////
|
||||
PaStream *Stream::paStream()
|
||||
{
|
||||
return stream_;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
@@ -1,165 +1,165 @@
|
||||
#include "portaudiocpp/StreamParameters.hxx"
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Default constructor; does nothing.
|
||||
//////
|
||||
StreamParameters::StreamParameters()
|
||||
{
|
||||
}
|
||||
|
||||
//////
|
||||
/// Sets up the all parameters needed to open either a half-duplex or full-duplex Stream.
|
||||
///
|
||||
/// @param inputParameters The parameters for the input direction of the to-be opened
|
||||
/// Stream or DirectionSpecificStreamParameters::null() for an output-only Stream.
|
||||
/// @param outputParameters The parameters for the output direction of the to-be opened
|
||||
/// Stream or DirectionSpecificStreamParameters::null() for an input-only Stream.
|
||||
/// @param sampleRate The to-be opened Stream's sample rate in Hz.
|
||||
/// @param framesPerBuffer The number of frames per buffer for a CallbackStream, or
|
||||
/// the preferred buffer granularity for a BlockingStream.
|
||||
/// @param flags The flags for the to-be opened Stream; default paNoFlag.
|
||||
//////
|
||||
StreamParameters::StreamParameters(const DirectionSpecificStreamParameters &inputParameters,
|
||||
const DirectionSpecificStreamParameters &outputParameters, double sampleRate, unsigned long framesPerBuffer,
|
||||
PaStreamFlags flags) : inputParameters_(inputParameters), outputParameters_(outputParameters),
|
||||
sampleRate_(sampleRate), framesPerBuffer_(framesPerBuffer), flags_(flags)
|
||||
{
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Sets the requested sample rate. If this sample rate isn't supported by the hardware, the
|
||||
/// Stream will fail to open. The real-life sample rate used might differ slightly due to
|
||||
/// imperfections in the sound card hardware; use Stream::sampleRate() to retreive the
|
||||
/// best known estimate for this value.
|
||||
//////
|
||||
void StreamParameters::setSampleRate(double sampleRate)
|
||||
{
|
||||
sampleRate_ = sampleRate;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Either the number of frames per buffer for a CallbackStream, or
|
||||
/// the preferred buffer granularity for a BlockingStream. See PortAudio
|
||||
/// documentation.
|
||||
//////
|
||||
void StreamParameters::setFramesPerBuffer(unsigned long framesPerBuffer)
|
||||
{
|
||||
framesPerBuffer_ = framesPerBuffer;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Sets the specified flag or does nothing when the flag is already set. Doesn't
|
||||
/// `unset' any previously existing flags (use clearFlags() for that).
|
||||
//////
|
||||
void StreamParameters::setFlag(PaStreamFlags flag)
|
||||
{
|
||||
flags_ |= flag;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Unsets the specified flag or does nothing if the flag isn't set. Doesn't affect
|
||||
/// any other flags.
|
||||
//////
|
||||
void StreamParameters::unsetFlag(PaStreamFlags flag)
|
||||
{
|
||||
flags_ &= ~flag;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Clears or `unsets' all set flags.
|
||||
//////
|
||||
void StreamParameters::clearFlags()
|
||||
{
|
||||
flags_ = paNoFlag;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
void StreamParameters::setInputParameters(const DirectionSpecificStreamParameters ¶meters)
|
||||
{
|
||||
inputParameters_ = parameters;
|
||||
}
|
||||
|
||||
void StreamParameters::setOutputParameters(const DirectionSpecificStreamParameters ¶meters)
|
||||
{
|
||||
outputParameters_ = parameters;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
bool StreamParameters::isSupported() const
|
||||
{
|
||||
return (Pa_IsFormatSupported(inputParameters_.paStreamParameters(),
|
||||
outputParameters_.paStreamParameters(), sampleRate_) == paFormatIsSupported);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
double StreamParameters::sampleRate() const
|
||||
{
|
||||
return sampleRate_;
|
||||
}
|
||||
|
||||
unsigned long StreamParameters::framesPerBuffer() const
|
||||
{
|
||||
return framesPerBuffer_;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns all currently set flags as a binary combined
|
||||
/// integer value (PaStreamFlags). Use isFlagSet() to
|
||||
/// avoid dealing with the bitmasks.
|
||||
//////
|
||||
PaStreamFlags StreamParameters::flags() const
|
||||
{
|
||||
return flags_;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns true if the specified flag is currently set
|
||||
/// or false if it isn't.
|
||||
//////
|
||||
bool StreamParameters::isFlagSet(PaStreamFlags flag) const
|
||||
{
|
||||
return ((flags_ & flag) != 0);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
DirectionSpecificStreamParameters &StreamParameters::inputParameters()
|
||||
{
|
||||
return inputParameters_;
|
||||
}
|
||||
|
||||
const DirectionSpecificStreamParameters &StreamParameters::inputParameters() const
|
||||
{
|
||||
return inputParameters_;
|
||||
}
|
||||
|
||||
DirectionSpecificStreamParameters &StreamParameters::outputParameters()
|
||||
{
|
||||
return outputParameters_;
|
||||
}
|
||||
|
||||
const DirectionSpecificStreamParameters &StreamParameters::outputParameters() const
|
||||
{
|
||||
return outputParameters_;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#include "portaudiocpp/StreamParameters.hxx"
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Default constructor; does nothing.
|
||||
//////
|
||||
StreamParameters::StreamParameters()
|
||||
{
|
||||
}
|
||||
|
||||
//////
|
||||
/// Sets up the all parameters needed to open either a half-duplex or full-duplex Stream.
|
||||
///
|
||||
/// @param inputParameters The parameters for the input direction of the to-be opened
|
||||
/// Stream or DirectionSpecificStreamParameters::null() for an output-only Stream.
|
||||
/// @param outputParameters The parameters for the output direction of the to-be opened
|
||||
/// Stream or DirectionSpecificStreamParameters::null() for an input-only Stream.
|
||||
/// @param sampleRate The to-be opened Stream's sample rate in Hz.
|
||||
/// @param framesPerBuffer The number of frames per buffer for a CallbackStream, or
|
||||
/// the preferred buffer granularity for a BlockingStream.
|
||||
/// @param flags The flags for the to-be opened Stream; default paNoFlag.
|
||||
//////
|
||||
StreamParameters::StreamParameters(const DirectionSpecificStreamParameters &inputParameters,
|
||||
const DirectionSpecificStreamParameters &outputParameters, double sampleRate, unsigned long framesPerBuffer,
|
||||
PaStreamFlags flags) : inputParameters_(inputParameters), outputParameters_(outputParameters),
|
||||
sampleRate_(sampleRate), framesPerBuffer_(framesPerBuffer), flags_(flags)
|
||||
{
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
//////
|
||||
/// Sets the requested sample rate. If this sample rate isn't supported by the hardware, the
|
||||
/// Stream will fail to open. The real-life sample rate used might differ slightly due to
|
||||
/// imperfections in the sound card hardware; use Stream::sampleRate() to retreive the
|
||||
/// best known estimate for this value.
|
||||
//////
|
||||
void StreamParameters::setSampleRate(double sampleRate)
|
||||
{
|
||||
sampleRate_ = sampleRate;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Either the number of frames per buffer for a CallbackStream, or
|
||||
/// the preferred buffer granularity for a BlockingStream. See PortAudio
|
||||
/// documentation.
|
||||
//////
|
||||
void StreamParameters::setFramesPerBuffer(unsigned long framesPerBuffer)
|
||||
{
|
||||
framesPerBuffer_ = framesPerBuffer;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Sets the specified flag or does nothing when the flag is already set. Doesn't
|
||||
/// `unset' any previously existing flags (use clearFlags() for that).
|
||||
//////
|
||||
void StreamParameters::setFlag(PaStreamFlags flag)
|
||||
{
|
||||
flags_ |= flag;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Unsets the specified flag or does nothing if the flag isn't set. Doesn't affect
|
||||
/// any other flags.
|
||||
//////
|
||||
void StreamParameters::unsetFlag(PaStreamFlags flag)
|
||||
{
|
||||
flags_ &= ~flag;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Clears or `unsets' all set flags.
|
||||
//////
|
||||
void StreamParameters::clearFlags()
|
||||
{
|
||||
flags_ = paNoFlag;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
void StreamParameters::setInputParameters(const DirectionSpecificStreamParameters ¶meters)
|
||||
{
|
||||
inputParameters_ = parameters;
|
||||
}
|
||||
|
||||
void StreamParameters::setOutputParameters(const DirectionSpecificStreamParameters ¶meters)
|
||||
{
|
||||
outputParameters_ = parameters;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
bool StreamParameters::isSupported() const
|
||||
{
|
||||
return (Pa_IsFormatSupported(inputParameters_.paStreamParameters(),
|
||||
outputParameters_.paStreamParameters(), sampleRate_) == paFormatIsSupported);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
double StreamParameters::sampleRate() const
|
||||
{
|
||||
return sampleRate_;
|
||||
}
|
||||
|
||||
unsigned long StreamParameters::framesPerBuffer() const
|
||||
{
|
||||
return framesPerBuffer_;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns all currently set flags as a binary combined
|
||||
/// integer value (PaStreamFlags). Use isFlagSet() to
|
||||
/// avoid dealing with the bitmasks.
|
||||
//////
|
||||
PaStreamFlags StreamParameters::flags() const
|
||||
{
|
||||
return flags_;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns true if the specified flag is currently set
|
||||
/// or false if it isn't.
|
||||
//////
|
||||
bool StreamParameters::isFlagSet(PaStreamFlags flag) const
|
||||
{
|
||||
return ((flags_ & flag) != 0);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
DirectionSpecificStreamParameters &StreamParameters::inputParameters()
|
||||
{
|
||||
return inputParameters_;
|
||||
}
|
||||
|
||||
const DirectionSpecificStreamParameters &StreamParameters::inputParameters() const
|
||||
{
|
||||
return inputParameters_;
|
||||
}
|
||||
|
||||
DirectionSpecificStreamParameters &StreamParameters::outputParameters()
|
||||
{
|
||||
return outputParameters_;
|
||||
}
|
||||
|
||||
const DirectionSpecificStreamParameters &StreamParameters::outputParameters() const
|
||||
{
|
||||
return outputParameters_;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,308 +1,308 @@
|
||||
#include "portaudiocpp/System.hxx"
|
||||
|
||||
#include <cstddef>
|
||||
#include <cassert>
|
||||
|
||||
#include "portaudiocpp/HostApi.hxx"
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
#include "portaudiocpp/Stream.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
#include "portaudiocpp/SystemHostApiIterator.hxx"
|
||||
#include "portaudiocpp/SystemDeviceIterator.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
// Static members:
|
||||
System *System::instance_ = NULL;
|
||||
int System::initCount_ = 0;
|
||||
HostApi **System::hostApis_ = NULL;
|
||||
Device **System::devices_ = NULL;
|
||||
Device *System::nullDevice_ = NULL;
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
int System::version()
|
||||
{
|
||||
return Pa_GetVersion();
|
||||
}
|
||||
|
||||
const char *System::versionText()
|
||||
{
|
||||
return Pa_GetVersionText();
|
||||
}
|
||||
|
||||
void System::initialize()
|
||||
{
|
||||
++initCount_;
|
||||
|
||||
if (initCount_ == 1)
|
||||
{
|
||||
// Create singleton:
|
||||
assert(instance_ == NULL);
|
||||
instance_ = new System();
|
||||
|
||||
// Initialize the PortAudio system:
|
||||
{
|
||||
PaError err = Pa_Initialize();
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
|
||||
// Create and populate device array:
|
||||
{
|
||||
int numDevices = instance().deviceCount();
|
||||
|
||||
devices_ = new Device*[numDevices];
|
||||
|
||||
for (int i = 0; i < numDevices; ++i)
|
||||
devices_[i] = new Device(i);
|
||||
}
|
||||
|
||||
// Create and populate host api array:
|
||||
{
|
||||
int numHostApis = instance().hostApiCount();
|
||||
|
||||
hostApis_ = new HostApi*[numHostApis];
|
||||
|
||||
for (int i = 0; i < numHostApis; ++i)
|
||||
hostApis_[i] = new HostApi(i);
|
||||
}
|
||||
|
||||
// Create null device:
|
||||
nullDevice_ = new Device(paNoDevice);
|
||||
}
|
||||
}
|
||||
|
||||
void System::terminate()
|
||||
{
|
||||
PaError err = paNoError;
|
||||
|
||||
if (initCount_ == 1)
|
||||
{
|
||||
// Destroy null device:
|
||||
delete nullDevice_;
|
||||
|
||||
// Destroy host api array:
|
||||
{
|
||||
if (hostApis_ != NULL)
|
||||
{
|
||||
int numHostApis = instance().hostApiCount();
|
||||
|
||||
for (int i = 0; i < numHostApis; ++i)
|
||||
delete hostApis_[i];
|
||||
|
||||
delete[] hostApis_;
|
||||
hostApis_ = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// Destroy device array:
|
||||
{
|
||||
if (devices_ != NULL)
|
||||
{
|
||||
int numDevices = instance().deviceCount();
|
||||
|
||||
for (int i = 0; i < numDevices; ++i)
|
||||
delete devices_[i];
|
||||
|
||||
delete[] devices_;
|
||||
devices_ = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// Terminate the PortAudio system:
|
||||
assert(instance_ != NULL);
|
||||
err = Pa_Terminate();
|
||||
|
||||
// Destroy singleton:
|
||||
delete instance_;
|
||||
instance_ = NULL;
|
||||
}
|
||||
|
||||
if (initCount_ > 0)
|
||||
--initCount_;
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
|
||||
|
||||
System &System::instance()
|
||||
{
|
||||
assert(exists());
|
||||
|
||||
return *instance_;
|
||||
}
|
||||
|
||||
bool System::exists()
|
||||
{
|
||||
return (instance_ != NULL);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
System::HostApiIterator System::hostApisBegin()
|
||||
{
|
||||
System::HostApiIterator tmp;
|
||||
tmp.ptr_ = &hostApis_[0]; // begin (first element)
|
||||
return tmp;
|
||||
}
|
||||
|
||||
System::HostApiIterator System::hostApisEnd()
|
||||
{
|
||||
int count = hostApiCount();
|
||||
|
||||
System::HostApiIterator tmp;
|
||||
tmp.ptr_ = &hostApis_[count]; // end (one past last element)
|
||||
return tmp;
|
||||
}
|
||||
|
||||
HostApi &System::defaultHostApi()
|
||||
{
|
||||
PaHostApiIndex defaultHostApi = Pa_GetDefaultHostApi();
|
||||
|
||||
if (defaultHostApi < 0)
|
||||
throw PaException(defaultHostApi);
|
||||
|
||||
return *hostApis_[defaultHostApi];
|
||||
}
|
||||
|
||||
HostApi &System::hostApiByTypeId(PaHostApiTypeId type)
|
||||
{
|
||||
PaHostApiIndex index = Pa_HostApiTypeIdToHostApiIndex(type);
|
||||
|
||||
if (index < 0)
|
||||
throw PaException(index);
|
||||
|
||||
return *hostApis_[index];
|
||||
}
|
||||
|
||||
HostApi &System::hostApiByIndex(PaHostApiIndex index)
|
||||
{
|
||||
if (index < 0 || index >= hostApiCount())
|
||||
throw PaException(paInternalError);
|
||||
|
||||
return *hostApis_[index];
|
||||
}
|
||||
|
||||
int System::hostApiCount()
|
||||
{
|
||||
PaHostApiIndex count = Pa_GetHostApiCount();
|
||||
|
||||
if (count < 0)
|
||||
throw PaException(count);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
System::DeviceIterator System::devicesBegin()
|
||||
{
|
||||
DeviceIterator tmp;
|
||||
tmp.ptr_ = &devices_[0];
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
System::DeviceIterator System::devicesEnd()
|
||||
{
|
||||
int count = deviceCount();
|
||||
|
||||
DeviceIterator tmp;
|
||||
tmp.ptr_ = &devices_[count];
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the System's default input Device, or the null Device if none
|
||||
/// was available.
|
||||
//////
|
||||
Device &System::defaultInputDevice()
|
||||
{
|
||||
PaDeviceIndex index = Pa_GetDefaultInputDevice();
|
||||
return deviceByIndex(index);
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the System's default output Device, or the null Device if none
|
||||
/// was available.
|
||||
//////
|
||||
Device &System::defaultOutputDevice()
|
||||
{
|
||||
PaDeviceIndex index = Pa_GetDefaultOutputDevice();
|
||||
return deviceByIndex(index);
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the Device for the given index.
|
||||
/// Will throw a paInternalError equivalent PaException if the given index
|
||||
/// is out of range.
|
||||
//////
|
||||
Device &System::deviceByIndex(PaDeviceIndex index)
|
||||
{
|
||||
if (index < -1 || index >= deviceCount())
|
||||
{
|
||||
throw PaException(paInternalError);
|
||||
}
|
||||
|
||||
if (index == -1)
|
||||
return System::instance().nullDevice();
|
||||
|
||||
return *devices_[index];
|
||||
}
|
||||
|
||||
int System::deviceCount()
|
||||
{
|
||||
PaDeviceIndex count = Pa_GetDeviceCount();
|
||||
|
||||
if (count < 0)
|
||||
throw PaException(count);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
Device &System::nullDevice()
|
||||
{
|
||||
return *nullDevice_;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
void System::sleep(long msec)
|
||||
{
|
||||
Pa_Sleep(msec);
|
||||
}
|
||||
|
||||
int System::sizeOfSample(PaSampleFormat format)
|
||||
{
|
||||
PaError err = Pa_GetSampleSize(format);
|
||||
if (err < 0)
|
||||
{
|
||||
throw PaException(err);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
System::System()
|
||||
{
|
||||
// (left blank intentionally)
|
||||
}
|
||||
|
||||
System::~System()
|
||||
{
|
||||
// (left blank intentionally)
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
#include "portaudiocpp/System.hxx"
|
||||
|
||||
#include <cstddef>
|
||||
#include <cassert>
|
||||
|
||||
#include "portaudiocpp/HostApi.hxx"
|
||||
#include "portaudiocpp/Device.hxx"
|
||||
#include "portaudiocpp/Stream.hxx"
|
||||
#include "portaudiocpp/Exception.hxx"
|
||||
#include "portaudiocpp/SystemHostApiIterator.hxx"
|
||||
#include "portaudiocpp/SystemDeviceIterator.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
// Static members:
|
||||
System *System::instance_ = NULL;
|
||||
int System::initCount_ = 0;
|
||||
HostApi **System::hostApis_ = NULL;
|
||||
Device **System::devices_ = NULL;
|
||||
Device *System::nullDevice_ = NULL;
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
int System::version()
|
||||
{
|
||||
return Pa_GetVersion();
|
||||
}
|
||||
|
||||
const char *System::versionText()
|
||||
{
|
||||
return Pa_GetVersionText();
|
||||
}
|
||||
|
||||
void System::initialize()
|
||||
{
|
||||
++initCount_;
|
||||
|
||||
if (initCount_ == 1)
|
||||
{
|
||||
// Create singleton:
|
||||
assert(instance_ == NULL);
|
||||
instance_ = new System();
|
||||
|
||||
// Initialize the PortAudio system:
|
||||
{
|
||||
PaError err = Pa_Initialize();
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
|
||||
// Create and populate device array:
|
||||
{
|
||||
int numDevices = instance().deviceCount();
|
||||
|
||||
devices_ = new Device*[numDevices];
|
||||
|
||||
for (int i = 0; i < numDevices; ++i)
|
||||
devices_[i] = new Device(i);
|
||||
}
|
||||
|
||||
// Create and populate host api array:
|
||||
{
|
||||
int numHostApis = instance().hostApiCount();
|
||||
|
||||
hostApis_ = new HostApi*[numHostApis];
|
||||
|
||||
for (int i = 0; i < numHostApis; ++i)
|
||||
hostApis_[i] = new HostApi(i);
|
||||
}
|
||||
|
||||
// Create null device:
|
||||
nullDevice_ = new Device(paNoDevice);
|
||||
}
|
||||
}
|
||||
|
||||
void System::terminate()
|
||||
{
|
||||
PaError err = paNoError;
|
||||
|
||||
if (initCount_ == 1)
|
||||
{
|
||||
// Destroy null device:
|
||||
delete nullDevice_;
|
||||
|
||||
// Destroy host api array:
|
||||
{
|
||||
if (hostApis_ != NULL)
|
||||
{
|
||||
int numHostApis = instance().hostApiCount();
|
||||
|
||||
for (int i = 0; i < numHostApis; ++i)
|
||||
delete hostApis_[i];
|
||||
|
||||
delete[] hostApis_;
|
||||
hostApis_ = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// Destroy device array:
|
||||
{
|
||||
if (devices_ != NULL)
|
||||
{
|
||||
int numDevices = instance().deviceCount();
|
||||
|
||||
for (int i = 0; i < numDevices; ++i)
|
||||
delete devices_[i];
|
||||
|
||||
delete[] devices_;
|
||||
devices_ = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// Terminate the PortAudio system:
|
||||
assert(instance_ != NULL);
|
||||
err = Pa_Terminate();
|
||||
|
||||
// Destroy singleton:
|
||||
delete instance_;
|
||||
instance_ = NULL;
|
||||
}
|
||||
|
||||
if (initCount_ > 0)
|
||||
--initCount_;
|
||||
|
||||
if (err != paNoError)
|
||||
throw PaException(err);
|
||||
}
|
||||
|
||||
|
||||
System &System::instance()
|
||||
{
|
||||
assert(exists());
|
||||
|
||||
return *instance_;
|
||||
}
|
||||
|
||||
bool System::exists()
|
||||
{
|
||||
return (instance_ != NULL);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
System::HostApiIterator System::hostApisBegin()
|
||||
{
|
||||
System::HostApiIterator tmp;
|
||||
tmp.ptr_ = &hostApis_[0]; // begin (first element)
|
||||
return tmp;
|
||||
}
|
||||
|
||||
System::HostApiIterator System::hostApisEnd()
|
||||
{
|
||||
int count = hostApiCount();
|
||||
|
||||
System::HostApiIterator tmp;
|
||||
tmp.ptr_ = &hostApis_[count]; // end (one past last element)
|
||||
return tmp;
|
||||
}
|
||||
|
||||
HostApi &System::defaultHostApi()
|
||||
{
|
||||
PaHostApiIndex defaultHostApi = Pa_GetDefaultHostApi();
|
||||
|
||||
if (defaultHostApi < 0)
|
||||
throw PaException(defaultHostApi);
|
||||
|
||||
return *hostApis_[defaultHostApi];
|
||||
}
|
||||
|
||||
HostApi &System::hostApiByTypeId(PaHostApiTypeId type)
|
||||
{
|
||||
PaHostApiIndex index = Pa_HostApiTypeIdToHostApiIndex(type);
|
||||
|
||||
if (index < 0)
|
||||
throw PaException(index);
|
||||
|
||||
return *hostApis_[index];
|
||||
}
|
||||
|
||||
HostApi &System::hostApiByIndex(PaHostApiIndex index)
|
||||
{
|
||||
if (index < 0 || index >= hostApiCount())
|
||||
throw PaException(paInternalError);
|
||||
|
||||
return *hostApis_[index];
|
||||
}
|
||||
|
||||
int System::hostApiCount()
|
||||
{
|
||||
PaHostApiIndex count = Pa_GetHostApiCount();
|
||||
|
||||
if (count < 0)
|
||||
throw PaException(count);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
System::DeviceIterator System::devicesBegin()
|
||||
{
|
||||
DeviceIterator tmp;
|
||||
tmp.ptr_ = &devices_[0];
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
System::DeviceIterator System::devicesEnd()
|
||||
{
|
||||
int count = deviceCount();
|
||||
|
||||
DeviceIterator tmp;
|
||||
tmp.ptr_ = &devices_[count];
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the System's default input Device, or the null Device if none
|
||||
/// was available.
|
||||
//////
|
||||
Device &System::defaultInputDevice()
|
||||
{
|
||||
PaDeviceIndex index = Pa_GetDefaultInputDevice();
|
||||
return deviceByIndex(index);
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the System's default output Device, or the null Device if none
|
||||
/// was available.
|
||||
//////
|
||||
Device &System::defaultOutputDevice()
|
||||
{
|
||||
PaDeviceIndex index = Pa_GetDefaultOutputDevice();
|
||||
return deviceByIndex(index);
|
||||
}
|
||||
|
||||
//////
|
||||
/// Returns the Device for the given index.
|
||||
/// Will throw a paInternalError equivalent PaException if the given index
|
||||
/// is out of range.
|
||||
//////
|
||||
Device &System::deviceByIndex(PaDeviceIndex index)
|
||||
{
|
||||
if (index < -1 || index >= deviceCount())
|
||||
{
|
||||
throw PaException(paInternalError);
|
||||
}
|
||||
|
||||
if (index == -1)
|
||||
return System::instance().nullDevice();
|
||||
|
||||
return *devices_[index];
|
||||
}
|
||||
|
||||
int System::deviceCount()
|
||||
{
|
||||
PaDeviceIndex count = Pa_GetDeviceCount();
|
||||
|
||||
if (count < 0)
|
||||
throw PaException(count);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
Device &System::nullDevice()
|
||||
{
|
||||
return *nullDevice_;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
void System::sleep(long msec)
|
||||
{
|
||||
Pa_Sleep(msec);
|
||||
}
|
||||
|
||||
int System::sizeOfSample(PaSampleFormat format)
|
||||
{
|
||||
PaError err = Pa_GetSampleSize(format);
|
||||
if (err < 0)
|
||||
{
|
||||
throw PaException(err);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
System::System()
|
||||
{
|
||||
// (left blank intentionally)
|
||||
}
|
||||
|
||||
System::~System()
|
||||
{
|
||||
// (left blank intentionally)
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
@@ -1,60 +1,60 @@
|
||||
#include "portaudiocpp/SystemDeviceIterator.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
Device &System::DeviceIterator::operator*() const
|
||||
{
|
||||
return **ptr_;
|
||||
}
|
||||
|
||||
Device *System::DeviceIterator::operator->() const
|
||||
{
|
||||
return &**this;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
System::DeviceIterator &System::DeviceIterator::operator++()
|
||||
{
|
||||
++ptr_;
|
||||
return *this;
|
||||
}
|
||||
|
||||
System::DeviceIterator System::DeviceIterator::operator++(int)
|
||||
{
|
||||
System::DeviceIterator prev = *this;
|
||||
++*this;
|
||||
return prev;
|
||||
}
|
||||
|
||||
System::DeviceIterator &System::DeviceIterator::operator--()
|
||||
{
|
||||
--ptr_;
|
||||
return *this;
|
||||
}
|
||||
|
||||
System::DeviceIterator System::DeviceIterator::operator--(int)
|
||||
{
|
||||
System::DeviceIterator prev = *this;
|
||||
--*this;
|
||||
return prev;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
bool System::DeviceIterator::operator==(const System::DeviceIterator &rhs) const
|
||||
{
|
||||
return (ptr_ == rhs.ptr_);
|
||||
}
|
||||
|
||||
bool System::DeviceIterator::operator!=(const System::DeviceIterator &rhs) const
|
||||
{
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
#include "portaudiocpp/SystemDeviceIterator.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
Device &System::DeviceIterator::operator*() const
|
||||
{
|
||||
return **ptr_;
|
||||
}
|
||||
|
||||
Device *System::DeviceIterator::operator->() const
|
||||
{
|
||||
return &**this;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
System::DeviceIterator &System::DeviceIterator::operator++()
|
||||
{
|
||||
++ptr_;
|
||||
return *this;
|
||||
}
|
||||
|
||||
System::DeviceIterator System::DeviceIterator::operator++(int)
|
||||
{
|
||||
System::DeviceIterator prev = *this;
|
||||
++*this;
|
||||
return prev;
|
||||
}
|
||||
|
||||
System::DeviceIterator &System::DeviceIterator::operator--()
|
||||
{
|
||||
--ptr_;
|
||||
return *this;
|
||||
}
|
||||
|
||||
System::DeviceIterator System::DeviceIterator::operator--(int)
|
||||
{
|
||||
System::DeviceIterator prev = *this;
|
||||
--*this;
|
||||
return prev;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
bool System::DeviceIterator::operator==(const System::DeviceIterator &rhs) const
|
||||
{
|
||||
return (ptr_ == rhs.ptr_);
|
||||
}
|
||||
|
||||
bool System::DeviceIterator::operator!=(const System::DeviceIterator &rhs) const
|
||||
{
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
|
||||
@@ -1,59 +1,59 @@
|
||||
#include "portaudiocpp/SystemHostApiIterator.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
HostApi &System::HostApiIterator::operator*() const
|
||||
{
|
||||
return **ptr_;
|
||||
}
|
||||
|
||||
HostApi *System::HostApiIterator::operator->() const
|
||||
{
|
||||
return &**this;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
System::HostApiIterator &System::HostApiIterator::operator++()
|
||||
{
|
||||
++ptr_;
|
||||
return *this;
|
||||
}
|
||||
|
||||
System::HostApiIterator System::HostApiIterator::operator++(int)
|
||||
{
|
||||
System::HostApiIterator prev = *this;
|
||||
++*this;
|
||||
return prev;
|
||||
}
|
||||
|
||||
System::HostApiIterator &System::HostApiIterator::operator--()
|
||||
{
|
||||
--ptr_;
|
||||
return *this;
|
||||
}
|
||||
|
||||
System::HostApiIterator System::HostApiIterator::operator--(int)
|
||||
{
|
||||
System::HostApiIterator prev = *this;
|
||||
--*this;
|
||||
return prev;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
bool System::HostApiIterator::operator==(const System::HostApiIterator &rhs) const
|
||||
{
|
||||
return (ptr_ == rhs.ptr_);
|
||||
}
|
||||
|
||||
bool System::HostApiIterator::operator!=(const System::HostApiIterator &rhs) const
|
||||
{
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
} // namespace portaudio
|
||||
|
||||
#include "portaudiocpp/SystemHostApiIterator.hxx"
|
||||
|
||||
namespace portaudio
|
||||
{
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
HostApi &System::HostApiIterator::operator*() const
|
||||
{
|
||||
return **ptr_;
|
||||
}
|
||||
|
||||
HostApi *System::HostApiIterator::operator->() const
|
||||
{
|
||||
return &**this;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
System::HostApiIterator &System::HostApiIterator::operator++()
|
||||
{
|
||||
++ptr_;
|
||||
return *this;
|
||||
}
|
||||
|
||||
System::HostApiIterator System::HostApiIterator::operator++(int)
|
||||
{
|
||||
System::HostApiIterator prev = *this;
|
||||
++*this;
|
||||
return prev;
|
||||
}
|
||||
|
||||
System::HostApiIterator &System::HostApiIterator::operator--()
|
||||
{
|
||||
--ptr_;
|
||||
return *this;
|
||||
}
|
||||
|
||||
System::HostApiIterator System::HostApiIterator::operator--(int)
|
||||
{
|
||||
System::HostApiIterator prev = *this;
|
||||
--*this;
|
||||
return prev;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
||||
bool System::HostApiIterator::operator==(const System::HostApiIterator &rhs) const
|
||||
{
|
||||
return (ptr_ == rhs.ptr_);
|
||||
}
|
||||
|
||||
bool System::HostApiIterator::operator!=(const System::HostApiIterator &rhs) const
|
||||
{
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
} // namespace portaudio
|
||||
|
||||
|
||||
Reference in New Issue
Block a user