cannam@130
|
1 #ifndef PA_WIN_WDMKS_H
|
cannam@130
|
2 #define PA_WIN_WDMKS_H
|
cannam@130
|
3 /*
|
cannam@145
|
4 * $Id$
|
cannam@130
|
5 * PortAudio Portable Real-Time Audio Library
|
cannam@130
|
6 * WDM/KS specific extensions
|
cannam@130
|
7 *
|
cannam@130
|
8 * Copyright (c) 1999-2007 Ross Bencina and Phil Burk
|
cannam@130
|
9 *
|
cannam@130
|
10 * Permission is hereby granted, free of charge, to any person obtaining
|
cannam@130
|
11 * a copy of this software and associated documentation files
|
cannam@130
|
12 * (the "Software"), to deal in the Software without restriction,
|
cannam@130
|
13 * including without limitation the rights to use, copy, modify, merge,
|
cannam@130
|
14 * publish, distribute, sublicense, and/or sell copies of the Software,
|
cannam@130
|
15 * and to permit persons to whom the Software is furnished to do so,
|
cannam@130
|
16 * subject to the following conditions:
|
cannam@130
|
17 *
|
cannam@130
|
18 * The above copyright notice and this permission notice shall be
|
cannam@130
|
19 * included in all copies or substantial portions of the Software.
|
cannam@130
|
20 *
|
cannam@130
|
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
cannam@130
|
22 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
cannam@130
|
23 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
cannam@130
|
24 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
|
cannam@130
|
25 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
cannam@130
|
26 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
cannam@130
|
27 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
cannam@130
|
28 */
|
cannam@130
|
29
|
cannam@130
|
30 /*
|
cannam@130
|
31 * The text above constitutes the entire PortAudio license; however,
|
cannam@130
|
32 * the PortAudio community also makes the following non-binding requests:
|
cannam@130
|
33 *
|
cannam@130
|
34 * Any person wishing to distribute modifications to the Software is
|
cannam@130
|
35 * requested to send the modifications to the original developer so that
|
cannam@130
|
36 * they can be incorporated into the canonical version. It is also
|
cannam@130
|
37 * requested that these non-binding requests be included along with the
|
cannam@130
|
38 * license above.
|
cannam@130
|
39 */
|
cannam@130
|
40
|
cannam@130
|
41 /** @file
|
cannam@130
|
42 @ingroup public_header
|
cannam@130
|
43 @brief WDM Kernel Streaming-specific PortAudio API extension header file.
|
cannam@130
|
44 */
|
cannam@130
|
45
|
cannam@130
|
46
|
cannam@130
|
47 #include "portaudio.h"
|
cannam@130
|
48
|
cannam@130
|
49 #include <windows.h>
|
cannam@130
|
50
|
cannam@130
|
51 #ifdef __cplusplus
|
cannam@130
|
52 extern "C"
|
cannam@130
|
53 {
|
cannam@130
|
54 #endif /* __cplusplus */
|
cannam@145
|
55
|
cannam@145
|
56 /** Flags to indicate valid fields in PaWinWDMKSInfo.
|
cannam@145
|
57 @see PaWinWDMKSInfo
|
cannam@145
|
58 @version Available as of 19.5.0.
|
cannam@145
|
59 */
|
cannam@145
|
60 typedef enum PaWinWDMKSFlags
|
cannam@145
|
61 {
|
cannam@145
|
62 /** Makes WDMKS use the supplied latency figures instead of relying on the frame size reported
|
cannam@145
|
63 by the WaveCyclic device. Use at own risk!
|
cannam@145
|
64 */
|
cannam@145
|
65 paWinWDMKSOverrideFramesize = (1 << 0),
|
cannam@145
|
66
|
cannam@145
|
67 /** Makes WDMKS (output stream) use the given channelMask instead of the default.
|
cannam@145
|
68 @version Available as of 19.5.0.
|
cannam@145
|
69 */
|
cannam@145
|
70 paWinWDMKSUseGivenChannelMask = (1 << 1),
|
cannam@145
|
71
|
cannam@145
|
72 } PaWinWDMKSFlags;
|
cannam@145
|
73
|
cannam@130
|
74 typedef struct PaWinWDMKSInfo{
|
cannam@130
|
75 unsigned long size; /**< sizeof(PaWinWDMKSInfo) */
|
cannam@130
|
76 PaHostApiTypeId hostApiType; /**< paWDMKS */
|
cannam@130
|
77 unsigned long version; /**< 1 */
|
cannam@130
|
78
|
cannam@145
|
79 /** Flags indicate which fields are valid.
|
cannam@145
|
80 @see PaWinWDMKSFlags
|
cannam@145
|
81 @version Available as of 19.5.0.
|
cannam@145
|
82 */
|
cannam@145
|
83 unsigned long flags;
|
cannam@145
|
84
|
cannam@145
|
85 /** The number of packets to use for WaveCyclic devices, range is [2, 8]. Set to zero for default value of 2. */
|
cannam@130
|
86 unsigned noOfPackets;
|
cannam@145
|
87
|
cannam@145
|
88 /** If paWinWDMKSUseGivenChannelMask bit is set in flags, use this as channelMask instead of default.
|
cannam@145
|
89 @see PaWinWDMKSFlags
|
cannam@145
|
90 @version Available as of 19.5.0.
|
cannam@145
|
91 */
|
cannam@145
|
92 unsigned channelMask;
|
cannam@130
|
93 } PaWinWDMKSInfo;
|
cannam@130
|
94
|
cannam@130
|
95 typedef enum PaWDMKSType
|
cannam@130
|
96 {
|
cannam@130
|
97 Type_kNotUsed,
|
cannam@130
|
98 Type_kWaveCyclic,
|
cannam@130
|
99 Type_kWaveRT,
|
cannam@130
|
100 Type_kCnt,
|
cannam@130
|
101 } PaWDMKSType;
|
cannam@130
|
102
|
cannam@130
|
103 typedef enum PaWDMKSSubType
|
cannam@130
|
104 {
|
cannam@130
|
105 SubType_kUnknown,
|
cannam@130
|
106 SubType_kNotification,
|
cannam@130
|
107 SubType_kPolled,
|
cannam@130
|
108 SubType_kCnt,
|
cannam@130
|
109 } PaWDMKSSubType;
|
cannam@130
|
110
|
cannam@130
|
111 typedef struct PaWinWDMKSDeviceInfo {
|
cannam@130
|
112 wchar_t filterPath[MAX_PATH]; /**< KS filter path in Unicode! */
|
cannam@130
|
113 wchar_t topologyPath[MAX_PATH]; /**< Topology filter path in Unicode! */
|
cannam@130
|
114 PaWDMKSType streamingType;
|
cannam@130
|
115 GUID deviceProductGuid; /**< The product GUID of the device (if supported) */
|
cannam@130
|
116 } PaWinWDMKSDeviceInfo;
|
cannam@130
|
117
|
cannam@130
|
118 typedef struct PaWDMKSDirectionSpecificStreamInfo
|
cannam@130
|
119 {
|
cannam@130
|
120 PaDeviceIndex device;
|
cannam@130
|
121 unsigned channels; /**< No of channels the device is opened with */
|
cannam@130
|
122 unsigned framesPerHostBuffer; /**< No of frames of the device buffer */
|
cannam@130
|
123 int endpointPinId; /**< Endpoint pin ID (on topology filter if topologyName is not empty) */
|
cannam@130
|
124 int muxNodeId; /**< Only valid for input */
|
cannam@130
|
125 PaWDMKSSubType streamingSubType; /**< Not known until device is opened for streaming */
|
cannam@130
|
126 } PaWDMKSDirectionSpecificStreamInfo;
|
cannam@130
|
127
|
cannam@130
|
128 typedef struct PaWDMKSSpecificStreamInfo {
|
cannam@130
|
129 PaWDMKSDirectionSpecificStreamInfo input;
|
cannam@130
|
130 PaWDMKSDirectionSpecificStreamInfo output;
|
cannam@130
|
131 } PaWDMKSSpecificStreamInfo;
|
cannam@130
|
132
|
cannam@130
|
133 #ifdef __cplusplus
|
cannam@130
|
134 }
|
cannam@130
|
135 #endif /* __cplusplus */
|
cannam@130
|
136
|
cannam@130
|
137 #endif /* PA_WIN_DS_H */
|