summaryrefslogtreecommitdiff
path: root/audio/Acx/Samples/Common/CircuitHelper.h
blob: 589381534baf7d34cd587a202b12d4de278a22b7 (plain)
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
/*++

Copyright (c) Microsoft Corporation.  All rights reserved.

    THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
    KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
    IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
    PURPOSE.

Module Name:

    CircuitHelper.h

Abstract:

   This module contains helper functions for endpoints.

Environment:

    Kernel mode

--*/

// size_t
// __inline
// CODEC_ALIGN_SIZE_DOWN_CONSTANT(
//     IN size_t Length,
//     IN size_t AlignTo
//     )
#define CODEC_ALIGN_SIZE_DOWN_CONSTANT(Length, AlignTo) ((Length) & ~((AlignTo)-1))

#define CODEC_ALIGN_SIZE_DOWN CODEC_ALIGN_SIZE_DOWN_CONSTANT

// size_t
// __inline
// CODEC_ALIGN_SIZE_UP_CONSTANT(
//     IN size_t Length,
//     IN size_t AlignTo
//     )
#define CODEC_ALIGN_SIZE_UP_CONSTANT(Length, AlignTo) CODEC_ALIGN_SIZE_DOWN_CONSTANT((Length) + (AlignTo)-1, (AlignTo))

#define CODEC_ALIGN_SIZE_UP CODEC_ALIGN_SIZE_UP_CONSTANT

PAGED_CODE_SEG
NTSTATUS
Codec_GetModeFromAttributeList(
    _In_    const PKSMULTIPLE_ITEM  Attributes,
    _In_    ULONG                   AttributesSize,
    _Out_   GUID                  * SignalProcessingMode
    );

//
// Enumeration visitor callback.
//
typedef
NTSTATUS
(EVT_KSATTRIBUTES_VISITOR)(
    _In_  PKSATTRIBUTE  AttributeHeader,
    _In_  PVOID         Context,
    _Out_ BOOLEAN     * bContinue
    );

typedef EVT_KSATTRIBUTES_VISITOR *PFN_KSATTRIBUTES_VISITOR;

static
PAGED_CODE_SEG
EVT_KSATTRIBUTES_VISITOR FindKsAttributeByIdVisitor;

PAGED_CODE_SEG
NTSTATUS
FindKsAttributeById(
    _In_  const PKSMULTIPLE_ITEM Attributes,
    _In_  ULONG                  AttributesSize,
    _In_  const _GUID *          AttributeId,
    _In_  ULONG                  AttributeSize,
    _Out_ PKSATTRIBUTE         * AttributeHeader
    );

PAGED_CODE_SEG
NTSTATUS
TraverseKsAttributeList(
    _In_ const PKSMULTIPLE_ITEM         Attributes,
    _In_ ULONG                          AttributesSize,
    _In_ PFN_KSATTRIBUTES_VISITOR       Visitor,
    _In_ PVOID                          Context
    );

PAGED_CODE_SEG
NTSTATUS AllocateFormat(
    _In_ KSDATAFORMAT_WAVEFORMATEXTENSIBLE      WaveFormat,
    _In_ ACXCIRCUIT                             Circuit,
    _In_ WDFDEVICE                              Device,
    _Out_ ACXDATAFORMAT*                        Format
);

PAGED_CODE_SEG
NTSTATUS CreateStreamBridge(
    _In_ ACX_STREAM_BRIDGE_CONFIG                   StreamCfg,
    _In_ ACXCIRCUIT                                 Circuit,
    _In_ ACXPIN                                     Pin,
    _In_ DSP_PIN_CONTEXT*                           PinCtx,
    _In_ BOOL                                       Render
);

PAGED_CODE_SEG
NTSTATUS ConnectRenderCircuitElements(
    _In_ ACXAUDIOENGINE                          AudioEngineElement,
    _In_ ACXCIRCUIT                              Circuit
);

PAGED_CODE_SEG
NTSTATUS CreateAudioJack(
    _In_ ULONG                          ChannelMapping,
    _In_ ULONG                          Color,
    _In_ ACX_JACK_CONNECTION_TYPE       ConnectionType,
    _In_ ACX_JACK_GEO_LOCATION          GeoLocation,
    _In_ ACX_JACK_GEN_LOCATION          GenLocation,
    _In_ ACX_JACK_PORT_CONNECTION       PortConnection,
    _In_ ULONG                          Flags,
    _In_ ACXPIN                         BridgePin
);

PAGED_CODE_SEG
NTSTATUS EvtJackRetrievePresence(
    _In_    ACXJACK     Jack,
    _In_    PBOOLEAN    IsConnected
);

PAGED_CODE_SEG
VOID CpuResourcesCallbackHelper( 
    _In_    WDFOBJECT    Object,
    _In_    WDFREQUEST   Request,
    _In_    ACXELEMENT   Element
);