-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathrtsdaudio.h
151 lines (123 loc) · 4.82 KB
/
rtsdaudio.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/*
Module Name:
rtsdaudio.h
Abstract:
Header file for common stuff.
*/
#ifndef __RTSDAUDIO_H_
#define __RTSDAUDIO_H_
#include <portcls.h>
#include <stdunk.h>
#include <ksdebug.h>
#include "kshelper.h"
//=============================================================================
// Defines
//=============================================================================
// Version number. Revision numbers are specified for each sample.
#define RTSDAUDIO_VERSION 1
#define RTSDAUDIO_REVISION 0
// Product Id
// {5B722BF8-F0AB-47ee-B9C8-8D61D31375A1}
#define STATIC_PID_RTSDAUDIO 0x5b722bf8, 0xf0ab, 0x47ee, 0xb9, 0xc8, 0x8d, 0x61, 0xd3, 0x13, 0x75, 0xa1
DEFINE_GUIDSTRUCT("5B722BF8-F0AB-47ee-B9C8-8D61D31375A1", PID_RTSDAUDIO);
#define PID_RTSDAUDIO DEFINE_GUIDNAMED(PID_RTSDAUDIO)
// Name Guid
// {946A7B1A-EBBC-422a-A81F-F07C8D40D3B4}
#define STATIC_NAME_RTSDAUDIO 0x946a7b1a, 0xebbc, 0x422a, 0xa8, 0x1f, 0xf0, 0x7c, 0x8d, 0x40, 0xd3, 0xb4
DEFINE_GUIDSTRUCT("946A7B1A-EBBC-422a-A81F-F07C8D40D3B4", NAME_RTSDAUDIO);
#define NAME_RTSDAUDIO DEFINE_GUIDNAMED(NAME_RTSDAUDIO)
// Pool tag used for MSVAD allocations
#define RTSDAUDIO_POOLTAG 'RTSD'
// Debug module name
#define STR_MODULENAME "RTSDAudio: "
// Debug utility macros
#define D_FUNC 4
#define D_BLAB DEBUGLVL_BLAB
#define D_VERBOSE DEBUGLVL_VERBOSE
#define D_TERSE DEBUGLVL_TERSE
#define D_ERROR DEBUGLVL_ERROR
#define DPF _DbgPrintF
#define DPF_ENTER(x) DPF(D_BLAB, x)
// Channel orientation
#define CHAN_LEFT 0
#define CHAN_RIGHT 1
#define CHAN_MASTER (-1)
// Pin properties.
#define MAX_OUTPUT_STREAMS 1 // Number of capture streams.
#define MAX_INPUT_STREAMS 1 // Number of render streams.
#define MAX_TOTAL_STREAMS MAX_OUTPUT_STREAMS + MAX_INPUT_STREAMS
// PCM Info
#define MIN_CHANNELS 2 // Min Channels.
#define MAX_CHANNELS_PCM 2 // Max Channels.
#define MIN_BITS_PER_SAMPLE_PCM 16 // Min Bits Per Sample
#define MAX_BITS_PER_SAMPLE_PCM 16 // Max Bits Per Sample
#define MIN_SAMPLE_RATE 44100 // Min Sample Rate
#define MAX_SAMPLE_RATE 44100 // Max Sample Rate
// Dma Settings.
#define DMA_BUFFER_SIZE 0x16000
#define KSPROPERTY_TYPE_ALL KSPROPERTY_TYPE_BASICSUPPORT | \
KSPROPERTY_TYPE_GET | \
KSPROPERTY_TYPE_SET
//=============================================================================
// Enumerations
//=============================================================================
// Wave pins
enum
{
KSPIN_WAVE_CAPTURE_SINK = 0,
KSPIN_WAVE_CAPTURE_SOURCE,
KSPIN_WAVE_RENDER_SINK,
KSPIN_WAVE_RENDER_SOURCE
};
// Wave Topology nodes.
enum
{
KSNODE_WAVE_ADC = 0,
KSNODE_WAVE_DAC
};
// topology pins.
enum
{
KSPIN_TOPO_WAVEOUT_SOURCE = 0,
KSPIN_TOPO_SYNTHOUT_SOURCE,
KSPIN_TOPO_SYNTHIN_SOURCE,
KSPIN_TOPO_MIC_SOURCE,
KSPIN_TOPO_LINEOUT_DEST,
KSPIN_TOPO_WAVEIN_DEST
};
// topology nodes.
enum
{
KSNODE_TOPO_WAVEOUT_VOLUME = 0,
KSNODE_TOPO_WAVEOUT_MUTE,
KSNODE_TOPO_SYNTHOUT_VOLUME,
KSNODE_TOPO_SYNTHOUT_MUTE,
KSNODE_TOPO_MIC_VOLUME,
KSNODE_TOPO_SYNTHIN_VOLUME,
KSNODE_TOPO_LINEOUT_MIX,
KSNODE_TOPO_LINEOUT_VOLUME,
KSNODE_TOPO_WAVEIN_MUX
};
//=============================================================================
// Typedefs
//=============================================================================
// Connection table for registering topology/wave bridge connection
typedef struct _PHYSICALCONNECTIONTABLE {
ULONG ulTopologyIn;
ULONG ulTopologyOut;
ULONG ulWaveIn;
ULONG ulWaveOut;
} PHYSICALCONNECTIONTABLE, *PPHYSICALCONNECTIONTABLE;
//=============================================================================
// Externs
//=============================================================================
// Physical connection table. Defined in mintopo.cpp for each sample
extern PHYSICALCONNECTIONTABLE TopologyPhysicalConnections;
// Generic topology handler
extern NTSTATUS PropertyHandler_Topology(IN PPCPROPERTY_REQUEST PropertyRequest);
// Generic wave port handler
extern NTSTATUS PropertyHandler_Wave(IN PPCPROPERTY_REQUEST PropertyRequest);
// Default WaveFilter automation table.
// Handles the GeneralComponentId request.
extern NTSTATUS PropertyHandler_WaveFilter(IN PPCPROPERTY_REQUEST PropertyRequest);
#endif