pa_mac_core.h

Go to the documentation of this file.
00001 #ifndef PA_MAC_CORE_H
00002 #define PA_MAC_CORE_H
00003 /*
00004  * PortAudio Portable Real-Time Audio Library
00005  * Macintosh Core Audio specific extensions
00006  * portaudio.h should be included before this file.
00007  *
00008  * Copyright (c) 2005-2006 Bjorn Roche
00009  *
00010  * Permission is hereby granted, free of charge, to any person obtaining
00011  * a copy of this software and associated documentation files
00012  * (the "Software"), to deal in the Software without restriction,
00013  * including without limitation the rights to use, copy, modify, merge,
00014  * publish, distribute, sublicense, and/or sell copies of the Software,
00015  * and to permit persons to whom the Software is furnished to do so,
00016  * subject to the following conditions:
00017  *
00018  * The above copyright notice and this permission notice shall be
00019  * included in all copies or substantial portions of the Software.
00020  *
00021  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
00022  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00023  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
00024  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
00025  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
00026  * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
00027  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00028  */
00029 
00030 /*
00031  * The text above constitutes the entire PortAudio license; however, 
00032  * the PortAudio community also makes the following non-binding requests:
00033  *
00034  * Any person wishing to distribute modifications to the Software is
00035  * requested to send the modifications to the original developer so that
00036  * they can be incorporated into the canonical version. It is also 
00037  * requested that these non-binding requests be included along with the 
00038  * license above.
00039  */
00040 
00041 #ifdef __cplusplus
00042 extern "C" {
00043 #endif
00044 
00045 
00046 /*
00047  * A pointer to a paMacCoreStreamInfo may be passed as
00048  * the hostApiSpecificStreamInfo in the PaStreamParameters struct
00049  * when opening a stream or querying the format. Use NULL, for the
00050  * defaults. Note that for duplex streams, both infos should be the
00051  * same or behaviour is undefined.
00052  */
00053 typedef struct
00054 {
00055     unsigned long size;         
00056     PaHostApiTypeId hostApiType;
00057     unsigned long version;      
00058     unsigned long flags;        /* flags to modify behaviour */
00059 } PaMacCoreStreamInfo;
00060 
00061 /*
00062  * Functions
00063  */
00064 
00065 
00066 /* Use this function to initialize a paMacCoreStreamInfo struct
00067    using the requested flags. */
00068 void paSetupMacCoreStreamInfo( PaMacCoreStreamInfo *data, unsigned long flags ) ;
00069 
00070 
00071 /*
00072  * Retrieve the AudioDeviceID of the input device assigned to an open stream
00073  *
00074  * @param s The stream to query.
00075  *`
00076  * @return A valid AudioDeviceID, or NULL if an error occurred.
00077  */
00078 AudioDeviceID PaMacCore_GetStreamInputDevice( PaStream* s );
00079  
00080 /*
00081  * Retrieve the AudioDeviceID of the output device assigned to an open stream
00082  *
00083  * @param s The stream to query.
00084  *
00085  * @return A valid AudioDeviceID, or NULL if an error occurred.
00086  */
00087 AudioDeviceID PaMacCore_GetStreamOutputDevice( PaStream* s );
00088 
00089 
00090 /*
00091  * Flags
00092  */
00093 
00094 /*
00095  * The following flags alter the behaviour of PA on the mac platform.
00096  * they can be ORed together. These should work both for opening and
00097  * checking a device.
00098  */
00099 
00100 /* Allows PortAudio to change things like the device's frame size,
00101  * which allows for much lower latency, but might disrupt the device
00102  * if other programs are using it, even when you are just Querying
00103  * the device. */
00104 #define paMacCoreChangeDeviceParameters (0x01)
00105 
00106 /* In combination with the above flag,
00107  * causes the stream opening to fail, unless the exact sample rates
00108  * are supported by the device. */
00109 #define paMacCoreFailIfConversionRequired (0x02)
00110 
00111 /* These flags set the SR conversion quality, if required. The wierd ordering
00112  * allows Maximum Quality to be the default.*/
00113 #define paMacCoreConversionQualityMin    (0x0100)
00114 #define paMacCoreConversionQualityMedium (0x0200)
00115 #define paMacCoreConversionQualityLow    (0x0300)
00116 #define paMacCoreConversionQualityHigh   (0x0400)
00117 #define paMacCoreConversionQualityMax    (0x0000)
00118 
00119 /*
00120  * Here are some "preset" combinations of flags (above) to get to some
00121  * common configurations. THIS IS OVERKILL, but if more flags are added
00122  * it won't be.
00123  */
00124 
00125 /*This is the default setting: do as much sample rate conversion as possible
00126  * and as little mucking with the device as possible. */
00127 #define paMacCorePlayNice                    (0x00)
00128 /*This setting is tuned for pro audio apps. It allows SR conversion on input
00129   and output, but it tries to set the appropriate SR on the device.*/
00130 #define paMacCorePro                         (0x01)
00131 /*This is a setting to minimize CPU usage and still play nice.*/
00132 #define paMacCoreMinimizeCPUButPlayNice      (0x0100)
00133 /*This is a setting to minimize CPU usage, even if that means interrupting the device. */
00134 #define paMacCoreMinimizeCPU                 (0x0101)
00135 
00136 
00137 #ifdef __cplusplus
00138 }
00139 #endif /* __cplusplus */
00140 
00141 #endif /* PA_MAC_CORE_H */

Generated on Fri Aug 10 19:10:47 2007 for PortAudio by  doxygen 1.5.3