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