annotate src/portaudio_20161030_catalina_patch/include/pa_win_wdmks.h @ 81:7029a4916348

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