/[pcsx2_0.9.7]/trunk/3rdparty/portaudio/include/pa_win_wasapi.h
ViewVC logotype

Diff of /trunk/3rdparty/portaudio/include/pa_win_wasapi.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

--- trunk/3rdparty/portaudio/include/pa_win_wasapi.h	2010/11/12 00:35:47	272
+++ trunk/3rdparty/portaudio/include/pa_win_wasapi.h	2010/11/12 01:10:22	273
@@ -28,13 +28,13 @@
  */
 
 /*
- * The text above constitutes the entire PortAudio license; however,
+ * The text above constitutes the entire PortAudio license; however, 
  * the PortAudio community also makes the following non-binding requests:
  *
  * Any person wishing to distribute modifications to the Software is
  * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also
- * requested that these non-binding requests be included along with the
+ * they can be incorporated into the canonical version. It is also 
+ * requested that these non-binding requests be included along with the 
  * license above.
  */
 
@@ -69,7 +69,7 @@
              method can only provide 15-20ms latency. */
     paWinWasapiPolling                  = (1 << 3),
 
-    /* forces custom thread priority setting. must be used if PaWasapiStreamInfo::threadPriority
+    /* forces custom thread priority setting. must be used if PaWasapiStreamInfo::threadPriority 
        is set to custom value. */
     paWinWasapiThreadPriority           = (1 << 4)
 }
@@ -81,7 +81,7 @@
 #define paWinWasapiThreadPriority        (paWinWasapiThreadPriority)
 
 
-/* Host processor. Allows to skip internal PA processing completely.
+/* Host processor. Allows to skip internal PA processing completely. 
    You must set paWinWasapiRedirectHostProcessor flag to PaWasapiStreamInfo::flags member
    in order to have host processor redirected to your callback.
    Use with caution! inputFrames and outputFrames depend solely on final device setup.
@@ -109,6 +109,70 @@
 PaWasapiDeviceRole;
 
 
+/* Jack connection type */
+typedef enum PaWasapiJackConnectionType
+{
+    eJackConnTypeUnknown,
+    eJackConnType3Point5mm,
+    eJackConnTypeQuarter,
+    eJackConnTypeAtapiInternal,
+    eJackConnTypeRCA,
+    eJackConnTypeOptical,
+    eJackConnTypeOtherDigital,
+    eJackConnTypeOtherAnalog,
+    eJackConnTypeMultichannelAnalogDIN,
+    eJackConnTypeXlrProfessional,
+    eJackConnTypeRJ11Modem,
+    eJackConnTypeCombination
+} 
+PaWasapiJackConnectionType;
+
+
+/* Jack geometric location */
+typedef enum PaWasapiJackGeoLocation
+{
+	eJackGeoLocUnk = 0,
+    eJackGeoLocRear = 0x1, /* matches EPcxGeoLocation::eGeoLocRear */
+    eJackGeoLocFront,
+    eJackGeoLocLeft,
+    eJackGeoLocRight,
+    eJackGeoLocTop,
+    eJackGeoLocBottom,
+    eJackGeoLocRearPanel,
+    eJackGeoLocRiser,
+    eJackGeoLocInsideMobileLid,
+    eJackGeoLocDrivebay,
+    eJackGeoLocHDMI,
+    eJackGeoLocOutsideMobileLid,
+    eJackGeoLocATAPI,
+    eJackGeoLocReserved5,
+    eJackGeoLocReserved6,
+} 
+PaWasapiJackGeoLocation;
+
+
+/* Jack general location */
+typedef enum PaWasapiJackGenLocation
+{
+    eJackGenLocPrimaryBox = 0,
+    eJackGenLocInternal,
+    eJackGenLocSeparate,
+    eJackGenLocOther
+} 
+PaWasapiJackGenLocation;
+
+
+/* Jack's type of port */
+typedef enum PaWasapiJackPortConnection
+{
+    eJackPortConnJack = 0,
+    eJackPortConnIntegratedDevice,
+    eJackPortConnBothIntegratedAndJack,
+    eJackPortConnUnknown
+} 
+PaWasapiJackPortConnection;
+
+
 /* Thread priority */
 typedef enum PaWasapiThreadPriority
 {
@@ -125,7 +189,21 @@
 
 
 /* Stream descriptor. */
-typedef struct PaWasapiStreamInfo
+typedef struct PaWasapiJackDescription 
+{
+    unsigned long              channelMapping;
+    unsigned long              color; /* derived from macro: #define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16))) */
+    PaWasapiJackConnectionType connectionType;
+    PaWasapiJackGeoLocation    geoLocation;
+    PaWasapiJackGenLocation    genLocation;
+    PaWasapiJackPortConnection portConnection;
+    unsigned int               isConnected;
+}
+PaWasapiJackDescription;
+
+
+/* Stream descriptor. */
+typedef struct PaWasapiStreamInfo 
 {
     unsigned long size;             /**< sizeof(PaWasapiStreamInfo) */
     PaHostApiTypeId hostApiType;    /**< paWASAPI */
@@ -134,16 +212,16 @@
     unsigned long flags;            /**< collection of PaWasapiFlags */
 
     /* Support for WAVEFORMATEXTENSIBLE channel masks. If flags contains
-       paWinWasapiUseChannelMask this allows you to specify which speakers
+       paWinWasapiUseChannelMask this allows you to specify which speakers 
        to address in a multichannel stream. Constants for channelMask
-       are specified in pa_win_waveformat.h. Will be used only if
+       are specified in pa_win_waveformat.h. Will be used only if 
        paWinWasapiUseChannelMask flag is specified.
     */
     PaWinWaveFormatChannelMask channelMask;
 
-    /* Delivers raw data to callback obtained from GetBuffer() methods skipping
-       internal PortAudio processing inventory completely. userData parameter will
-       be the same that was passed to Pa_OpenStream method. Will be used only if
+    /* Delivers raw data to callback obtained from GetBuffer() methods skipping 
+       internal PortAudio processing inventory completely. userData parameter will 
+       be the same that was passed to Pa_OpenStream method. Will be used only if 
        paWinWasapiRedirectHostProcessor flag is specified.
     */
     PaWasapiHostProcessorCallback hostProcessorOutput;
@@ -157,11 +235,11 @@
        to setup thread priority.
     */
     PaWasapiThreadPriority threadPriority;
-}
+} 
 PaWasapiStreamInfo;
 
 
-/** Returns default sound format for device. Format is represented by PaWinWaveFormat or
+/** Returns default sound format for device. Format is represented by PaWinWaveFormat or 
     WAVEFORMATEXTENSIBLE structure.
 
  @param pFormat Pointer to PaWinWaveFormat or WAVEFORMATEXTENSIBLE structure.
@@ -191,7 +269,7 @@
  @param hTask Handle to pointer to priority task. Must be used with PaWasapi_RevertThreadPriority
               method to revert thread priority to initial state.
 
- @param nPriorityClass Id of thread priority of PaWasapiThreadPriority type. Specifying
+ @param nPriorityClass Id of thread priority of PaWasapiThreadPriority type. Specifying 
                        eThreadPriorityNone does nothing.
 
  @return Error code indicating success or failure.
@@ -210,8 +288,8 @@
 PaError PaWasapi_ThreadPriorityRevert( void *hTask );
 
 
-/** Get number of frames per host buffer. This is maximal value of frames of WASAPI buffer which
-    can be locked for operations. Use this method as helper to findout maximal values of
+/** Get number of frames per host buffer. This is maximal value of frames of WASAPI buffer which 
+    can be locked for operations. Use this method as helper to findout maximal values of 
     inputFrames/outputFrames of PaWasapiHostProcessorCallback.
 
  @param  pStream Pointer to PaStream to query.
@@ -223,12 +301,37 @@
 PaError PaWasapi_GetFramesPerHostBuffer( PaStream *pStream, unsigned int *nInput, unsigned int *nOutput );
 
 
+/** Get number of jacks associated with a WASAPI device.  Use this method to determine if
+    there are any jacks associated with the provided WASAPI device.  Not all audio devices
+	will support this capability.  This is valid for both input and output devices.
+ @param  nDevice  device index.
+ @param  jcount   Number of jacks is returned in this variable
+ @return Error code indicating success or failure
+ @see PaWasapi_GetJackDescription
+ */
+PaError PaWasapi_GetJackCount(PaDeviceIndex nDevice, int *jcount);
+
+
+/** Get the jack description associated with a WASAPI device and jack number
+    Before this function is called, use PaWasapi_GetJackCount to determine the
+	number of jacks associated with device.  If jcount is greater than zero, then
+	each jack from 0 to jcount can be queried with this function to get the jack
+	description.
+ @param  nDevice  device index.
+ @param  jindex   Which jack to return information
+ @param  KSJACK_DESCRIPTION This structure filled in on success.
+ @return Error code indicating success or failure
+ @see PaWasapi_GetJackCount
+ */
+PaError PaWasapi_GetJackDescription(PaDeviceIndex nDevice, int jindex, PaWasapiJackDescription *pJackDescription);
+
+
 /*
     IMPORTANT:
 
     WASAPI is implemented for Callback and Blocking interfaces. It supports Shared and Exclusive
-    share modes.
-
+    share modes. 
+    
     Exclusive Mode:
 
         Exclusive mode allows to deliver audio data directly to hardware bypassing
@@ -237,20 +340,20 @@
 
     Callback Interface:
 
-        Provides best audio quality with low latency. Callback interface is implemented in
+        Provides best audio quality with low latency. Callback interface is implemented in 
         two versions:
 
         1) Event-Driven:
         This is the most powerful WASAPI implementation which provides glitch-free
-        audio at around 3ms latency in Exclusive mode. Lowest possible latency for this mode is
-        usually - 1.4(Vista only)-3ms(Windows 7+) for HD Audio class audio chips. For the
-        Shared mode latency can not be lower than 20ms.
+        audio at around 3ms latency in Exclusive mode. Lowest possible latency for this mode is 
+        3 ms for HD Audio class audio chips. For the Shared mode latency can not be 
+		lower than 20 ms.
 
         2) Poll-Driven:
         Polling is another 2-nd method to operate with WASAPI. It is less efficient than Event-Driven
         and provides latency at around 10-13ms. Polling must be used to overcome a system bug
-        under Windows Vista x64 when application is WOW64(32-bit) and Event-Driven method simply
-        times out (event handle is never signalled on buffer completion). Please note, such WOW64 bug
+        under Windows Vista x64 when application is WOW64(32-bit) and Event-Driven method simply 
+        times out (event handle is never signalled on buffer completion). Please note, such WOW64 bug 
         does not exist in Vista x86 or Windows 7.
         Polling can be setup by speciying 'paWinWasapiPolling' flag. Our WASAPI implementation detects
         WOW64 bug and sets 'paWinWasapiPolling' automatically.
@@ -259,25 +362,25 @@
 
         Normally thread priority is set automatically and does not require modification. Although
         if user wants some tweaking thread priority can be modified by setting 'paWinWasapiThreadPriority'
-        flag and specifying 'PaWasapiStreamInfo::threadPriority' with value from PaWasapiThreadPriority
+        flag and specifying 'PaWasapiStreamInfo::threadPriority' with value from PaWasapiThreadPriority 
         enum.
 
     Blocking Interface:
 
         Blocking interface is implemented but due to above described Poll-Driven method can not
-        deliver lowest possible latency. Specifying too low latency in Shared mode will result in
+        deliver lowest possible latency. Specifying too low latency in Shared mode will result in 
         distorted audio although Exclusive mode adds stability.
 
     Pa_IsFormatSupported:
 
         To check format with correct Share Mode (Exclusive/Shared) you must supply
-        PaWasapiStreamInfo with flags paWinWasapiExclusive set through member of
+        PaWasapiStreamInfo with flags paWinWasapiExclusive set through member of 
         PaStreamParameters::hostApiSpecificStreamInfo structure.
 
     Pa_OpenStream:
 
         To set desired Share Mode (Exclusive/Shared) you must supply
-        PaWasapiStreamInfo with flags paWinWasapiExclusive set through member of
+        PaWasapiStreamInfo with flags paWinWasapiExclusive set through member of 
         PaStreamParameters::hostApiSpecificStreamInfo structure.
 */
 
@@ -285,4 +388,4 @@
 }
 #endif /* __cplusplus */
 
-#endif /* PA_WIN_WASAPI_H */
+#endif /* PA_WIN_WASAPI_H */                                  

 

  ViewVC Help
Powered by ViewVC 1.1.22