cannam@124: #ifndef PA_WIN_WDMKS_H cannam@124: #define PA_WIN_WDMKS_H cannam@124: /* cannam@124: * $Id: pa_win_wdmks.h 1812 2012-02-14 09:32:57Z robiwan $ cannam@124: * PortAudio Portable Real-Time Audio Library cannam@124: * WDM/KS specific extensions cannam@124: * cannam@124: * Copyright (c) 1999-2007 Ross Bencina and Phil Burk cannam@124: * cannam@124: * Permission is hereby granted, free of charge, to any person obtaining cannam@124: * a copy of this software and associated documentation files cannam@124: * (the "Software"), to deal in the Software without restriction, cannam@124: * including without limitation the rights to use, copy, modify, merge, cannam@124: * publish, distribute, sublicense, and/or sell copies of the Software, cannam@124: * and to permit persons to whom the Software is furnished to do so, cannam@124: * subject to the following conditions: cannam@124: * cannam@124: * The above copyright notice and this permission notice shall be cannam@124: * included in all copies or substantial portions of the Software. cannam@124: * cannam@124: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, cannam@124: * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF cannam@124: * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. cannam@124: * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR cannam@124: * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF cannam@124: * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION cannam@124: * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. cannam@124: */ cannam@124: cannam@124: /* cannam@124: * The text above constitutes the entire PortAudio license; however, cannam@124: * the PortAudio community also makes the following non-binding requests: cannam@124: * cannam@124: * Any person wishing to distribute modifications to the Software is cannam@124: * requested to send the modifications to the original developer so that cannam@124: * they can be incorporated into the canonical version. It is also cannam@124: * requested that these non-binding requests be included along with the cannam@124: * license above. cannam@124: */ cannam@124: cannam@124: /** @file cannam@124: @ingroup public_header cannam@124: @brief WDM Kernel Streaming-specific PortAudio API extension header file. cannam@124: */ cannam@124: cannam@124: cannam@124: #include "portaudio.h" cannam@124: cannam@124: #include cannam@124: cannam@124: #ifdef __cplusplus cannam@124: extern "C" cannam@124: { cannam@124: #endif /* __cplusplus */ cannam@124: typedef struct PaWinWDMKSInfo{ cannam@124: unsigned long size; /**< sizeof(PaWinWDMKSInfo) */ cannam@124: PaHostApiTypeId hostApiType; /**< paWDMKS */ cannam@124: unsigned long version; /**< 1 */ cannam@124: cannam@124: /* The number of packets to use for WaveCyclic devices, range is [2, 8]. Set to zero for default value of 2. */ cannam@124: unsigned noOfPackets; cannam@124: } PaWinWDMKSInfo; cannam@124: cannam@124: typedef enum PaWDMKSType cannam@124: { cannam@124: Type_kNotUsed, cannam@124: Type_kWaveCyclic, cannam@124: Type_kWaveRT, cannam@124: Type_kCnt, cannam@124: } PaWDMKSType; cannam@124: cannam@124: typedef enum PaWDMKSSubType cannam@124: { cannam@124: SubType_kUnknown, cannam@124: SubType_kNotification, cannam@124: SubType_kPolled, cannam@124: SubType_kCnt, cannam@124: } PaWDMKSSubType; cannam@124: cannam@124: typedef struct PaWinWDMKSDeviceInfo { cannam@124: wchar_t filterPath[MAX_PATH]; /**< KS filter path in Unicode! */ cannam@124: wchar_t topologyPath[MAX_PATH]; /**< Topology filter path in Unicode! */ cannam@124: PaWDMKSType streamingType; cannam@124: GUID deviceProductGuid; /**< The product GUID of the device (if supported) */ cannam@124: } PaWinWDMKSDeviceInfo; cannam@124: cannam@124: typedef struct PaWDMKSDirectionSpecificStreamInfo cannam@124: { cannam@124: PaDeviceIndex device; cannam@124: unsigned channels; /**< No of channels the device is opened with */ cannam@124: unsigned framesPerHostBuffer; /**< No of frames of the device buffer */ cannam@124: int endpointPinId; /**< Endpoint pin ID (on topology filter if topologyName is not empty) */ cannam@124: int muxNodeId; /**< Only valid for input */ cannam@124: PaWDMKSSubType streamingSubType; /**< Not known until device is opened for streaming */ cannam@124: } PaWDMKSDirectionSpecificStreamInfo; cannam@124: cannam@124: typedef struct PaWDMKSSpecificStreamInfo { cannam@124: PaWDMKSDirectionSpecificStreamInfo input; cannam@124: PaWDMKSDirectionSpecificStreamInfo output; cannam@124: } PaWDMKSSpecificStreamInfo; cannam@124: cannam@124: #ifdef __cplusplus cannam@124: } cannam@124: #endif /* __cplusplus */ cannam@124: cannam@124: #endif /* PA_WIN_DS_H */