node-gpuinfo 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +336 -0
  3. package/binding.gyp +69 -0
  4. package/build/Release/gpu.exp +0 -0
  5. package/build/Release/gpu.lib +0 -0
  6. package/build/Release/gpu.node +0 -0
  7. package/build/Release/gpu.pdb +0 -0
  8. package/build/binding.sln +19 -0
  9. package/build/gpu.vcxproj +175 -0
  10. package/build/gpu.vcxproj.filters +169 -0
  11. package/example.js +69 -0
  12. package/index.js +33 -0
  13. package/package.json +68 -0
  14. package/src/binding.cpp +201 -0
  15. package/src/gpu_info.c +130 -0
  16. package/src/gpu_info.h +86 -0
  17. package/src/includes/adlx/ADLX.h +367 -0
  18. package/src/includes/adlx/ADLXDefines.h +1345 -0
  19. package/src/includes/adlx/ADLXHelper/ADLXHelper.c +175 -0
  20. package/src/includes/adlx/ADLXHelper/ADLXHelper.h +245 -0
  21. package/src/includes/adlx/ADLXHelper/WinAPIS.c +64 -0
  22. package/src/includes/adlx/ADLXStructures.h +206 -0
  23. package/src/includes/adlx/ADLXVersion.h +18 -0
  24. package/src/includes/adlx/I3DSettings.h +3476 -0
  25. package/src/includes/adlx/I3DSettings1.h +292 -0
  26. package/src/includes/adlx/I3DSettings2.h +317 -0
  27. package/src/includes/adlx/IApplications.h +397 -0
  28. package/src/includes/adlx/IChangedEvent.h +71 -0
  29. package/src/includes/adlx/ICollections.h +325 -0
  30. package/src/includes/adlx/IDesktops.h +918 -0
  31. package/src/includes/adlx/IDisplay3DLUT.h +663 -0
  32. package/src/includes/adlx/IDisplayGamma.h +683 -0
  33. package/src/includes/adlx/IDisplayGamut.h +760 -0
  34. package/src/includes/adlx/IDisplaySettings.h +3476 -0
  35. package/src/includes/adlx/IDisplays.h +2676 -0
  36. package/src/includes/adlx/IDisplays1.h +191 -0
  37. package/src/includes/adlx/IDisplays2.h +188 -0
  38. package/src/includes/adlx/IDisplays3.h +256 -0
  39. package/src/includes/adlx/IGPUAutoTuning.h +460 -0
  40. package/src/includes/adlx/IGPUManualFanTuning.h +1007 -0
  41. package/src/includes/adlx/IGPUManualGFXTuning.h +607 -0
  42. package/src/includes/adlx/IGPUManualPowerTuning.h +340 -0
  43. package/src/includes/adlx/IGPUManualVRAMTuning.h +576 -0
  44. package/src/includes/adlx/IGPUPresetTuning.h +469 -0
  45. package/src/includes/adlx/IGPUTuning.h +1239 -0
  46. package/src/includes/adlx/IGPUTuning1.h +197 -0
  47. package/src/includes/adlx/II2C.h +198 -0
  48. package/src/includes/adlx/ILog.h +72 -0
  49. package/src/includes/adlx/IMultiMedia.h +578 -0
  50. package/src/includes/adlx/IPerformanceMonitoring.h +2520 -0
  51. package/src/includes/adlx/IPerformanceMonitoring1.h +134 -0
  52. package/src/includes/adlx/IPerformanceMonitoring2.h +341 -0
  53. package/src/includes/adlx/IPerformanceMonitoring3.h +199 -0
  54. package/src/includes/adlx/IPowerTuning.h +473 -0
  55. package/src/includes/adlx/IPowerTuning1.h +515 -0
  56. package/src/includes/adlx/ISmartAccessMemory.h +114 -0
  57. package/src/includes/adlx/ISystem.h +1557 -0
  58. package/src/includes/adlx/ISystem1.h +237 -0
  59. package/src/includes/adlx/ISystem2.h +643 -0
  60. package/src/linux/amd_linux.c +269 -0
  61. package/src/linux/intel_linux.c +20 -0
  62. package/src/linux/nvidia_linux.c +257 -0
  63. package/src/macos/amd_mac.c +131 -0
  64. package/src/macos/intel_mac.c +131 -0
  65. package/src/macos/nvidia_mac.c +21 -0
  66. package/src/vendor/amd.c +37 -0
  67. package/src/vendor/intel.c +37 -0
  68. package/src/vendor/nvidia.c +37 -0
  69. package/src/windows/amd_windows.c +468 -0
  70. package/src/windows/intel_windows.c +157 -0
  71. package/src/windows/nvidia_windows.c +252 -0
@@ -0,0 +1,578 @@
1
+ //
2
+ // Copyright (c) 2023 - 2025 Advanced Micro Devices, Inc. All rights reserved.
3
+ //
4
+ //-------------------------------------------------------------------------------------------------
5
+
6
+ #ifndef ADLX_MULTIMEDIA_H
7
+ #define ADLX_MULTIMEDIA_H
8
+ #pragma once
9
+
10
+ #include "ADLXStructures.h"
11
+ #include "IChangedEvent.h"
12
+
13
+ #pragma region IADLXVideoUpscale
14
+ #if defined (__cplusplus)
15
+ namespace adlx
16
+ {
17
+ class ADLX_NO_VTABLE IADLXVideoUpscale : public IADLXInterface
18
+ {
19
+ public:
20
+ ADLX_DECLARE_IID(L"IADLXVideoUpscale")
21
+
22
+ /**
23
+ *@page DOX_IADLXVideoUpscale_IsSupported IsSupported
24
+ *@ENG_START_DOX @brief Checks if video upscale is supported on a GPU. @ENG_END_DOX
25
+ *
26
+ *@syntax
27
+ *@codeStart
28
+ * @ref ADLX_RESULT IsSupported (adlx_bool* supported)
29
+ *@codeEnd
30
+ *
31
+ *@params
32
+ * @paramrow{1.,[out],supported,adlx_bool*,@ENG_START_DOX The pointer to a variable where the state of video upscale is returned. The variable is __true__ if video upscale is supported. The variable is __false__ if video upscale is not supported. @ENG_END_DOX}
33
+ *
34
+ *@retvalues
35
+ *@ENG_START_DOX If the state of video upscale is successfully returned, __ADLX_OK__ is returned.<br>
36
+ * If the state of video upscale is not successfully returned, an error code is returned.<br>
37
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
38
+ *
39
+ *@addinfo
40
+ *@ENG_START_DOX
41
+ *Video upscale improves video playback quality by applying sharpening on the upscaled video.
42
+ *@ENG_END_DOX
43
+ *
44
+ *@copydoc IADLXVideoUpscale_REQ_TABLE
45
+ *
46
+ */
47
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupported(adlx_bool* supported) = 0;
48
+
49
+ /**
50
+ *@page DOX_IADLXVideoUpscale_IsEnabled IsEnabled
51
+ *@ENG_START_DOX @brief Checks if video upscale is enabled on a GPU. @ENG_END_DOX
52
+ *
53
+ *@syntax
54
+ *@codeStart
55
+ * @ref ADLX_RESULT IsEnabled (adlx_bool* enabled)
56
+ *@codeEnd
57
+ *
58
+ *@params
59
+ * @paramrow{1.,[out],enabled,adlx_bool*,@ENG_START_DOX The pointer to a variable where the state of video upscale is returned. The variable is __true__ if video upscale is enabled. The variable is __false__ if video upscale is not enabled. @ENG_END_DOX}
60
+ *
61
+ *@retvalues
62
+ *@ENG_START_DOX If the state of video upscale is successfully returned, __ADLX_OK__ is returned.<br>
63
+ * If the state of video upscale is not successfully returned, an error code is returned.<br>
64
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
65
+ *
66
+ * @addinfo
67
+ *@ENG_START_DOX
68
+ *Video upscale improves video playback quality by applying sharpening on the upscaled video.
69
+ *@ENG_END_DOX
70
+ *
71
+ *@copydoc IADLXVideoUpscale_REQ_TABLE
72
+ *
73
+ */
74
+ virtual ADLX_RESULT ADLX_STD_CALL IsEnabled (adlx_bool* isEnabled) = 0;
75
+
76
+ /**
77
+ *@page DOX_IADLXVideoUpscale_GetSharpnessRange GetSharpnessRange
78
+ *@ENG_START_DOX @brief Gets the maximum sharpness, minimum sharpness, and step sharpness of video upscale on a GPU. @ENG_END_DOX
79
+ *
80
+ *@syntax
81
+ *@codeStart
82
+ * @ref ADLX_RESULT GetSharpnessRange (@ref ADLX_IntRange* range)
83
+ *@codeEnd
84
+ *
85
+ *@params
86
+ * @paramrow{1.,[out],range,@ref ADLX_IntRange*,@ENG_START_DOX The pointer to a variable where the sharpness range of video upscale is returned. @ENG_END_DOX}
87
+ *
88
+ *@retvalues
89
+ *@ENG_START_DOX If the sharpness range is successfully returned, __ADLX_OK__ is returned.<br>
90
+ * If the sharpness range is not successfully returned, an error code is returned.<br>
91
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
92
+ *
93
+ *@detaileddesc
94
+ *@ENG_START_DOX @details The maximum sharpness, minimum sharpness, and step sharpness of video upscale are read only. @ENG_END_DOX
95
+ *
96
+ * @addinfo
97
+ *@ENG_START_DOX
98
+ *Video upscale improves video playback quality by applying sharpening on the upscaled video.
99
+ *@ENG_END_DOX
100
+ *
101
+ *@copydoc IADLXVideoUpscale_REQ_TABLE
102
+ *
103
+ */
104
+ virtual ADLX_RESULT ADLX_STD_CALL GetSharpnessRange(ADLX_IntRange* range) = 0;
105
+
106
+ /**
107
+ *@page DOX_IADLXVideoUpscale_GetSharpness GetSharpness
108
+ *@ENG_START_DOX @brief Gets the current minimum sharpness of video upscale on a GPU. @ENG_END_DOX
109
+ *
110
+ *@syntax
111
+ *@codeStart
112
+ * @ref ADLX_RESULT GetSharpness (adlx_int* currentMinRes)
113
+ *@codeEnd
114
+ *
115
+ *@params
116
+ * @paramrow{1.,[out],currentMinRes,adlx_int*,@ENG_START_DOX The pointer to a variable where the current minimum sharpness of video upscale is returned. @ENG_END_DOX}
117
+ *
118
+ *@retvalues
119
+ *@ENG_START_DOX If the current minimum sharpness is successfully returned, __ADLX_OK__ is returned.<br>
120
+ * If the current minimum sharpness is not successfully returned, an error code is returned.<br>
121
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
122
+ *
123
+ *@addinfo
124
+ *@ENG_START_DOX
125
+ *Video upscale improves video playback quality by applying sharpening on the upscaled video.
126
+ *@ENG_END_DOX
127
+ *
128
+ *@copydoc IADLXVideoUpscale_REQ_TABLE
129
+ *
130
+ */
131
+ virtual ADLX_RESULT ADLX_STD_CALL GetSharpness(adlx_int* currentMinRes) = 0;
132
+
133
+ /**
134
+ *@page DOX_IADLXVideoUpscale_SetEnabled SetEnabled
135
+ *@ENG_START_DOX @brief Sets video upscale to enabled or disabled on a GPU. @ENG_END_DOX
136
+ *
137
+ *@syntax
138
+ *@codeStart
139
+ * @ref ADLX_RESULT SetEnabled (adlx_bool enable)
140
+ *@codeEnd
141
+ *
142
+ *@params
143
+ * @paramrow{1.,[in],enable,adlx_bool,@ENG_START_DOX The new video upscale state. Set __true__ to enable video upscale. Set __false__ to disable video upscale. @ENG_END_DOX}
144
+ *
145
+ *@retvalues
146
+ *@ENG_START_DOX If the state of video upscale is successfully set, __ADLX_OK__ is returned.<br>
147
+ * If the state of video upscale is not successfully set, an error code is returned.<br>
148
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
149
+ *
150
+ * @addinfo
151
+ *@ENG_START_DOX
152
+ *Video upscale improves video playback quality by applying sharpening on the upscaled video.
153
+ *@ENG_END_DOX
154
+ *
155
+ *@copydoc IADLXVideoUpscale_REQ_TABLE
156
+ *
157
+ */
158
+ virtual ADLX_RESULT ADLX_STD_CALL SetEnabled(adlx_bool enable) = 0;
159
+
160
+ /**
161
+ *@page DOX_IADLXVideoUpscale_SetSharpness SetSharpness
162
+ *@ENG_START_DOX @brief Sets the minimum sharpness of video upscale on a GPU. @ENG_END_DOX
163
+ *
164
+ *@syntax
165
+ *@codeStart
166
+ * @ref ADLX_RESULT SetSharpness (adlx_int minRes)
167
+ *@codeEnd
168
+ *
169
+ *@params
170
+ * @paramrow{1.,[in],minRes,adlx_int,@ENG_START_DOX The new minimum sharpness of video upscale. @ENG_END_DOX}
171
+ *
172
+ *@retvalues
173
+ *@ENG_START_DOX If the minimum sharpness is successfully set, __ADLX_OK__ is returned.<br>
174
+ * If the minimum sharpness is not successfully set, an error code is returned.<br>
175
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
176
+ *
177
+ * @addinfo
178
+ *@ENG_START_DOX
179
+ *Video upscale improves video playback quality by applying sharpening on the upscaled video.
180
+ *@ENG_END_DOX
181
+ *
182
+ *@copydoc IADLXVideoUpscale_REQ_TABLE
183
+ *
184
+ */
185
+ virtual ADLX_RESULT ADLX_STD_CALL SetSharpness(adlx_int minSharp) = 0;
186
+
187
+ }; //IADLXVideoUpscale
188
+ //----------------------------------------------------------------------------------------------
189
+ typedef IADLXInterfacePtr_T<IADLXVideoUpscale> IADLXVideoUpscalePtr;
190
+ } //namespace adlx
191
+ #else //__cplusplus
192
+ ADLX_DECLARE_IID(IADLXVideoUpscale, L"IADLXVideoUpscale")
193
+ typedef struct IADLXVideoUpscale IADLXVideoUpscale;
194
+ typedef struct IADLXVideoUpscaleVtbl
195
+ {
196
+ //IADLXInterface
197
+ adlx_long(ADLX_STD_CALL* Acquire)(IADLXVideoUpscale* pThis);
198
+ adlx_long(ADLX_STD_CALL* Release)(IADLXVideoUpscale* pThis);
199
+ ADLX_RESULT(ADLX_STD_CALL* QueryInterface)(IADLXVideoUpscale* pThis, const wchar_t* interfaceId, void** ppInterface);
200
+
201
+ //IADLXVideoUpscale
202
+ ADLX_RESULT(ADLX_STD_CALL* IsSupported) (IADLXVideoUpscale* pThis, adlx_bool* supported);
203
+ ADLX_RESULT(ADLX_STD_CALL* IsEnabled) (IADLXVideoUpscale* pThis, adlx_bool* isEnabled);
204
+ ADLX_RESULT(ADLX_STD_CALL* GetSharpnessRange) (IADLXVideoUpscale* pThis, ADLX_IntRange* range);
205
+ ADLX_RESULT(ADLX_STD_CALL* GetSharpness) (IADLXVideoUpscale* pThis, adlx_int* currentMinRes);
206
+ ADLX_RESULT(ADLX_STD_CALL* SetEnabled) (IADLXVideoUpscale* pThis, adlx_bool enable);
207
+ ADLX_RESULT(ADLX_STD_CALL* SetSharpness) (IADLXVideoUpscale* pThis, adlx_int minSharp);
208
+
209
+ }IADLXVideoUpscaleVtbl;
210
+
211
+ struct IADLXVideoUpscale { const IADLXVideoUpscaleVtbl* pVtbl; };
212
+ #endif //__cplusplus
213
+ #pragma endregion IADLXVideoUpscale
214
+
215
+ #pragma region IADLXVideoSuperResolution
216
+ #if defined (__cplusplus)
217
+ namespace adlx
218
+ {
219
+ class ADLX_NO_VTABLE IADLXVideoSuperResolution : public IADLXInterface
220
+ {
221
+ public:
222
+ ADLX_DECLARE_IID(L"IADLXVideoSuperResolution")
223
+
224
+
225
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupported(adlx_bool* supported) = 0;
226
+ virtual ADLX_RESULT ADLX_STD_CALL IsEnabled(adlx_bool* isEnabled) = 0;
227
+ virtual ADLX_RESULT ADLX_STD_CALL SetEnabled(adlx_bool enable) = 0;
228
+
229
+ }; //IADLXVideoSuperResolution
230
+ //----------------------------------------------------------------------------------------------
231
+ typedef IADLXInterfacePtr_T<IADLXVideoSuperResolution> IADLXVideoSuperResolutionPtr;
232
+ } //namespace adlx
233
+ #else //__cplusplus
234
+ ADLX_DECLARE_IID(IADLXVideoSuperResolution, L"IADLXVideoSuperResolution")
235
+ typedef struct IADLXVideoSuperResolution IADLXVideoSuperResolution;
236
+ typedef struct IADLXVideoSuperResolutionVtbl
237
+ {
238
+ //IADLXInterface
239
+ adlx_long(ADLX_STD_CALL* Acquire)(IADLXVideoSuperResolution* pThis);
240
+ adlx_long(ADLX_STD_CALL* Release)(IADLXVideoSuperResolution* pThis);
241
+ ADLX_RESULT(ADLX_STD_CALL* QueryInterface)(IADLXVideoSuperResolution* pThis, const wchar_t* interfaceId, void** ppInterface);
242
+
243
+ //IADLXVideoSuperResolution
244
+ ADLX_RESULT(ADLX_STD_CALL* IsSupported) (IADLXVideoSuperResolution* pThis, adlx_bool* supported);
245
+ ADLX_RESULT(ADLX_STD_CALL* IsEnabled) (IADLXVideoSuperResolution* pThis, adlx_bool* isEnabled);
246
+ ADLX_RESULT(ADLX_STD_CALL* SetEnabled) (IADLXVideoSuperResolution* pThis, adlx_bool enable);
247
+
248
+ }IADLXVideoSuperResolutionVtbl;
249
+
250
+ struct IADLXVideoSuperResolution { const IADLXVideoSuperResolutionVtbl* pVtbl; };
251
+ #endif //__cplusplus
252
+ #pragma endregion IADLXVideoSuperResolution
253
+
254
+
255
+ #pragma region IADLXMultimediaChangedEvent
256
+ #if defined (__cplusplus)
257
+ namespace adlx
258
+ {
259
+ class ADLX_NO_VTABLE IADLXGPU;
260
+
261
+ class ADLX_NO_VTABLE IADLXMultimediaChangedEvent : public IADLXChangedEvent
262
+ {
263
+ public:
264
+ ADLX_DECLARE_IID(L"IADLXMultimediaChangedEvent")
265
+
266
+ /**
267
+ *@page DOX_IADLXMultimediaChangedEvent_GetGPU GetGPU
268
+ *@ENG_START_DOX @brief Gets the reference-counted GPU interface on which multimedia settings are changed. @ENG_END_DOX
269
+ *
270
+ *@syntax
271
+ *@codeStart
272
+ * @ref ADLX_RESULT GetGPU (@ref DOX_IADLXGPU **ppGPU)
273
+ *@codeEnd
274
+ *
275
+ *@params
276
+ *@paramrow{1.,[out] ,ppGPU,@ref DOX_IADLXGPU** ,@ENG_START_DOX The address of a pointer to the returned interface. If the interface is not successfully returned\, the method sets the dereferenced address __*ppGPU__ to __nullptr__. @ENG_END_DOX}
277
+ *
278
+ *
279
+ *@retvalues
280
+ *@ENG_START_DOX If the GPU interface is successfully returned, __ADLX_OK__ is returned.<br>
281
+ * If the GPU interface is not successfully returned, an error code is returned.<br>
282
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
283
+ *
284
+ *@detaileddesc
285
+ *@ENG_START_DOX @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed. @ENG_END_DOX
286
+ *
287
+ *@addinfo
288
+ *@ENG_START_DOX In C++, when using ADLX interfaces as smart pointers, there is no need to call @ref DOX_IADLXInterface_Release because smart pointers call it in their internal implementation. <br>
289
+ * __Note:__ @ref DOX_IADLXMultimediaChangedEvent_GetGPU returns the reference counted GPU used by all the methods in this interface to check if there are any changes in multimedia settings.
290
+ @ENG_END_DOX
291
+ *
292
+ *
293
+ *@copydoc IADLXMultimediaChangedEvent_REQ_TABLE
294
+ *
295
+ */
296
+ virtual ADLX_RESULT ADLX_STD_CALL GetGPU(IADLXGPU** ppGPU) = 0;
297
+
298
+ /**
299
+ *@page DOX_IADLXMultimediaChangedEvent_IsVideoUpscaleChanged IsVideoUpscaleChanged
300
+ *@ENG_START_DOX @brief Checks for changes to the video upscale settings. @ENG_END_DOX
301
+ *
302
+ *@syntax
303
+ *@codeStart
304
+ * adlx_bool IsVideoUpscaleChanged ()
305
+ *@codeEnd
306
+ *
307
+ *@params
308
+ *N/A
309
+ *
310
+ *@retvalues
311
+ *@ENG_START_DOX If there are any changes to the video upscale settings, __true__ is returned.<br>
312
+ * If there are no changes to the video upscale settings, __false__ is returned.<br> @ENG_END_DOX
313
+ *
314
+ *@addinfo
315
+ *@ENG_START_DOX
316
+ * __Note:__ To obtain the GPU, use @ref DOX_IADLXMultimediaChangedEvent_GetGPU.
317
+ * @ENG_END_DOX
318
+ *
319
+ *@copydoc IADLXMultimediaChangedEvent_REQ_TABLE
320
+ *
321
+ */
322
+ virtual adlx_bool ADLX_STD_CALL IsVideoUpscaleChanged() = 0;
323
+
324
+
325
+ virtual adlx_bool ADLX_STD_CALL IsVideoSuperResolutionChanged() = 0;
326
+
327
+ }; //IADLXMultimediaChangedEvent
328
+ //----------------------------------------------------------------------------------------------
329
+ typedef IADLXInterfacePtr_T<IADLXMultimediaChangedEvent> IADLXMultimediaChangedEventPtr;
330
+ } //namespace adlx
331
+ #else //__cplusplus
332
+ ADLX_DECLARE_IID(IADLXMultimediaChangedEvent, L"IADLXMultimediaChangedEvent")
333
+ typedef struct IADLXMultimediaChangedEvent IADLXMultimediaChangedEvent;
334
+ typedef struct IADLXMultimediaChangedEventVtbl
335
+ {
336
+ //IADLXInterface
337
+ adlx_long(ADLX_STD_CALL* Acquire)(IADLXMultimediaChangedEvent* pThis);
338
+ adlx_long(ADLX_STD_CALL* Release)(IADLXMultimediaChangedEvent* pThis);
339
+ ADLX_RESULT(ADLX_STD_CALL* QueryInterface)(IADLXMultimediaChangedEvent* pThis, const wchar_t* interfaceId, void** ppInterface);
340
+
341
+ //IADLXChangedEvent
342
+ ADLX_SYNC_ORIGIN(ADLX_STD_CALL* GetOrigin)(IADLXMultimediaChangedEvent* pThis);
343
+
344
+ //IADLXMultimediaChangedEvent interface
345
+ ADLX_RESULT(ADLX_STD_CALL* GetGPU)(IADLXMultimediaChangedEvent* pThis, IADLXGPU** ppGPU);
346
+ adlx_bool (ADLX_STD_CALL* IsVideoUpscaleChanged)(IADLXMultimediaChangedEvent* pThis);
347
+ adlx_bool (ADLX_STD_CALL* IsVideoSuperResolutionChanged)(IADLXMultimediaChangedEvent* pThis);
348
+
349
+ }IADLXMultimediaChangedEventVtbl;
350
+ struct IADLXMultimediaChangedEvent { const IADLXMultimediaChangedEventVtbl* pVtbl; };
351
+ #endif //__cplusplus
352
+ #pragma endregion IADLXMultimediaChangedEvent
353
+
354
+ #pragma region IADLXMultimediaChangedEventListener
355
+ #if defined (__cplusplus)
356
+ namespace adlx
357
+ {
358
+ class ADLX_NO_VTABLE IADLXMultimediaChangedEventListener
359
+ {
360
+ public:
361
+ /**
362
+ *@page DOX_IADLXMultimediaChangedEventListener_OnMultimediaChanged OnMultimediaChanged
363
+ *@ENG_START_DOX @brief __OnMultimediaChanged__ is called by ADLX when multimedia settings change. @ENG_END_DOX
364
+ *
365
+ *@syntax
366
+ *@codeStart
367
+ * adlx_bool OnMultimediaChanged (@ref DOX_IADLXMultimediaChangedEvent* pMultimediaChangedEvent)
368
+ *@codeEnd
369
+ *
370
+ *@params
371
+ *@paramrow{1.,[in] ,pMultimediaChangedEvent,@ref DOX_IADLXMultimediaChangedEvent* ,@ENG_START_DOX The pointer to a multimedia settings change event. @ENG_END_DOX}
372
+ *
373
+ *@retvalues
374
+ *@ENG_START_DOX If the application requires ADLX to continue notifying the next listener, __true__ must be returned.<br>
375
+ * If the application requires ADLX to stop notifying the next listener, __false__ must be returned.<br> @ENG_END_DOX
376
+ *
377
+ *@detaileddesc
378
+ *@ENG_START_DOX Once the application registers to the notifications with @ref DOX_IADLXMultimediaChangedHandling_AddMultimediaEventListener, ADLX will call this method until the application unregisters from the notifications with @ref DOX_IADLXMultimediaChangedHandling_RemoveMultimediaEventListener.
379
+ * The method should return quickly to not block the execution path in ADLX. If the method requires a long processing of the event notification, the application must hold onto a reference to the multimedia settings change event with @ref DOX_IADLXInterface_Acquire and make it available on an asynchronous thread and return immediately. When the asynchronous thread is done processing it must discard the multimedia settings change event with @ref DOX_IADLXInterface_Release. @ENG_END_DOX
380
+ *
381
+ *@copydoc IADLXMultimediaChangedEventListener_REQ_TABLE
382
+ *
383
+ */
384
+ virtual adlx_bool ADLX_STD_CALL OnMultimediaChanged(IADLXMultimediaChangedEvent* pMultimediaChangedEvent) = 0;
385
+ }; //IADLXMultimediaChangedEventListener
386
+ } //namespace adlx
387
+ #else //__cplusplus
388
+ typedef struct IADLXMultimediaChangedEventListener IADLXMultimediaChangedEventListener;
389
+ typedef struct IADLXMultimediaChangedEventListenerVtbl
390
+ {
391
+ adlx_bool(ADLX_STD_CALL* OnMultimediaChanged)(IADLXMultimediaChangedEventListener* pThis, IADLXMultimediaChangedEvent* pMultimediaChangedEvent);
392
+ } IADLXMultimediaChangedEventListenerVtbl;
393
+ struct IADLXMultimediaChangedEventListener { const IADLXMultimediaChangedEventListenerVtbl* pVtbl; };
394
+ #endif //__cplusplus
395
+ #pragma endregion IADLXMultimediaChangedEventListener
396
+
397
+ #pragma region IADLXMultimediaChangedHandling
398
+ #if defined (__cplusplus)
399
+ namespace adlx
400
+ {
401
+ class ADLX_NO_VTABLE IADLXMultimediaChangedHandling : public IADLXInterface
402
+ {
403
+ public:
404
+ ADLX_DECLARE_IID(L"IADLXMultimediaChangedHandling")
405
+
406
+ /**
407
+ *@page DOX_IADLXMultimediaChangedHandling_AddMultimediaEventListener AddMultimediaEventListener
408
+ *@ENG_START_DOX @brief Registers an event listener for notifications whenever multimedia settings are changed. @ENG_END_DOX
409
+ *
410
+ *@syntax
411
+ *@codeStart
412
+ * @ref ADLX_RESULT AddMultimediaEventListener (@ref DOX_IADLXMultimediaChangedEventListener* pMultimediaChangedEventListener)
413
+ *@codeEnd
414
+ *
415
+ *@params
416
+ *@paramrow{1.,[in] ,pMultimediaChangedEventListener,@ref DOX_IADLXMultimediaChangedEventListener* ,@ENG_START_DOX The pointer to the event listener interface to register for receiving multimedia settings change notifications. @ENG_END_DOX}
417
+ *
418
+ *@retvalues
419
+ *@ENG_START_DOX If the event listener is successfully registered, __ADLX_OK__ is returned.<br>
420
+ * If the event listener is not successfully registered, an error code is returned.<br>
421
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
422
+ *
423
+ *@detaileddesc
424
+ *@ENG_START_DOX Once the event listener is successfully registered, ADLX calls the @ref DOX_IADLXMultimediaChangedEventListener_OnMultimediaChanged listener method whenever multimedia settings are changed.<br>
425
+ * The event listener instance must exist until the application unregisters the event listener with @ref DOX_IADLXMultimediaChangedHandling_RemoveMultimediaEventListener.<br> @ENG_END_DOX
426
+ *
427
+ *@copydoc IADLXMultimediaChangedHandling_REQ_TABLE
428
+ *
429
+ */
430
+ virtual ADLX_RESULT ADLX_STD_CALL AddMultimediaEventListener(IADLXMultimediaChangedEventListener* pMultimediaChangedEventListener) = 0;
431
+
432
+ /**
433
+ *@page DOX_IADLXMultimediaChangedHandling_RemoveMultimediaEventListener RemoveMultimediaEventListener
434
+ *@ENG_START_DOX @brief Unregisters an event listener from the multimedia settings event list. @ENG_END_DOX
435
+ *
436
+ *@syntax
437
+ *@codeStart
438
+ * @ref ADLX_RESULT RemoveMultimediaEventListener (@ref DOX_IADLXMultimediaChangedEventListener* pMultimediaChangedEventListener)
439
+ *@codeEnd
440
+ *
441
+ *@params
442
+ *@paramrow{1.,[in] ,pMultimediaChangedEventListener,@ref DOX_IADLXMultimediaChangedEventListener* ,@ENG_START_DOX The pointer to the event listener interface to unregister from receiving multimedia settings change notifications. @ENG_END_DOX}
443
+ *
444
+ *@retvalues
445
+ *@ENG_START_DOX If the event listener is successfully unregistered, __ADLX_OK__ is returned.<br>
446
+ * If the event listener is not successfully unregistered, an error code is returned.<br>
447
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
448
+ *
449
+ *@detaileddesc
450
+ *@ENG_START_DOX Once the event listener is successfully unregistered, ADLX will no longer call the @ref DOX_IADLXMultimediaChangedEventListener_OnMultimediaChanged listener method when multimedia settings are changed.
451
+ * The application can discard the event listener instance. @ENG_END_DOX
452
+ *
453
+ *@copydoc IADLXMultimediaChangedHandling_REQ_TABLE
454
+ *
455
+ */
456
+ virtual ADLX_RESULT ADLX_STD_CALL RemoveMultimediaEventListener(IADLXMultimediaChangedEventListener* pMultimediaChangedEventListener) = 0;
457
+ }; //IADLXMultimediaChangedHandling
458
+ //----------------------------------------------------------------------------------------------
459
+ typedef IADLXInterfacePtr_T<IADLXMultimediaChangedHandling> IADLXMultimediaChangedHandlingPtr;
460
+ } //namespace adlx
461
+ #else //__cplusplus
462
+ ADLX_DECLARE_IID(IADLXMultimediaChangedHandling, L"IADLXMultimediaChangedHandling")
463
+ typedef struct IADLXMultimediaChangedHandling IADLXMultimediaChangedHandling;
464
+ typedef struct IADLXMultimediaChangedHandlingVtbl
465
+ {
466
+ //IADLXInterface
467
+ adlx_long(ADLX_STD_CALL* Acquire)(IADLXMultimediaChangedHandling* pThis);
468
+ adlx_long(ADLX_STD_CALL* Release)(IADLXMultimediaChangedHandling* pThis);
469
+ ADLX_RESULT(ADLX_STD_CALL* QueryInterface)(IADLXMultimediaChangedHandling* pThis, const wchar_t* interfaceId, void** ppInterface);
470
+
471
+ //IADLXMultimediaChangedHandling
472
+ ADLX_RESULT(ADLX_STD_CALL* AddMultimediaEventListener)(IADLXMultimediaChangedHandling* pThis, IADLXMultimediaChangedEventListener* pMultimediaChangedEventListener);
473
+ ADLX_RESULT(ADLX_STD_CALL* RemoveMultimediaEventListener)(IADLXMultimediaChangedHandling* pThis, IADLXMultimediaChangedEventListener* pMultimediaChangedEventListener);
474
+ } IADLXMultimediaChangedHandlingVtbl;
475
+ struct IADLXMultimediaChangedHandling { const IADLXMultimediaChangedHandlingVtbl* pVtbl; };
476
+ #endif //__cplusplus
477
+ #pragma endregion IADLXMultimediaChangedHandling
478
+
479
+ #pragma region IADLXMultimediaServices
480
+ #if defined (__cplusplus)
481
+ namespace adlx
482
+ {
483
+ class ADLX_NO_VTABLE IADLXGPU;
484
+
485
+ class ADLX_NO_VTABLE IADLXMultimediaServices : public IADLXInterface
486
+ {
487
+ public:
488
+ ADLX_DECLARE_IID(L"IADLXMultimediaServices")
489
+
490
+ /**
491
+ *@page DOX_IADLXMultimediaServices_GetMultimediaChangedHandling GetMultimediaChangedHandling
492
+ *@ENG_START_DOX @brief Gets the reference counted interface that allows registering and unregistering for notifications when multimedia settings change. @ENG_END_DOX
493
+ *
494
+ *@syntax
495
+ *@codeStart
496
+ * @ref ADLX_RESULT GetMultimediaChangedHandling (@ref DOX_IADLXMultimediaChangedHandling** ppMultimediaChangedHandling)
497
+ *@codeEnd
498
+ *
499
+ *@params
500
+ *@paramrow{1.,[out] ,ppMultimediaChangedHandling,@ref DOX_IADLXMultimediaChangedHandling** ,@ENG_START_DOX The address of a pointer to the returned interface. If the interface is not successfully returned\, the method sets the dereferenced address __*ppMultimediaChangedHandling__ to __nullptr__. @ENG_END_DOX}
501
+ *
502
+ *@retvalues
503
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned.<br>
504
+ * If the interface is not successfully returned, an error code is returned.<br>
505
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
506
+ *
507
+ *@detaileddesc
508
+ *@ENG_START_DOX @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed. @ENG_END_DOX
509
+ *
510
+ *@addinfo
511
+ *@ENG_START_DOX In C++, when using ADLX interfaces as smart pointers, there is no need to call @ref DOX_IADLXInterface_Release because smart pointers call it in their internal implementation. @ENG_END_DOX
512
+ *
513
+ *@copydoc IADLXMultimediaServices_REQ_TABLE
514
+ *
515
+ */
516
+ virtual ADLX_RESULT ADLX_STD_CALL GetMultimediaChangedHandling(IADLXMultimediaChangedHandling** ppMultimediaChangedHandling) = 0;
517
+
518
+ /**
519
+ *@page DOX_IADLXMultimediaServices_GetVideoUpscale GetVideoUpscale
520
+ *@ENG_START_DOX @brief Gets the reference-counted video upscale interface of a GPU. @ENG_END_DOX
521
+ *
522
+ *@syntax
523
+ *@codeStart
524
+ * @ref ADLX_RESULT GetVideoUpscale (@ref DOX_IADLXGPU* pGPU, @ref DOX_IADLXVideoUpscale** ppVideoupscale)
525
+ *@codeEnd
526
+ *
527
+ *@params
528
+ *@paramrow{1.,[in] ,pGPU,@ref DOX_IADLXGPU* ,@ENG_START_DOX The pointer to the GPU interface. @ENG_END_DOX}
529
+ *@paramrow{2.,[out] ,ppVideoupscale,@ref DOX_IADLXVideoUpscale** ,@ENG_START_DOX The address of a pointer to the returned interface. If the interface is not successfully returned\, the method sets the dereferenced address __*ppVideoupscale__ to __nullptr__. @ENG_END_DOX}
530
+ *
531
+ *@retvalues
532
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned.<br>
533
+ * If the interface is not successfully returned, an error code is returned.<br>
534
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
535
+ *
536
+ *@detaileddesc
537
+ *@ENG_START_DOX @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed. @ENG_END_DOX
538
+ *
539
+ *@addinfo
540
+ *@ENG_START_DOX In C++, when using ADLX interfaces as smart pointers, there is no need to call @ref DOX_IADLXInterface_Release because smart pointers call it in their internal implementation. @ENG_END_DOX
541
+ *
542
+ *@copydoc IADLXMultimediaServices_REQ_TABLE
543
+ *
544
+ */
545
+ virtual ADLX_RESULT ADLX_STD_CALL GetVideoUpscale(IADLXGPU* pGPU, IADLXVideoUpscale** ppVideoupscale) = 0;
546
+
547
+
548
+ virtual ADLX_RESULT ADLX_STD_CALL GetVideoSuperResolution(IADLXGPU* pGPU, IADLXVideoSuperResolution** ppVideoSuperResolution) = 0;
549
+
550
+ }; //IADLXPowerTuningServices
551
+ //----------------------------------------------------------------------------------------------
552
+ typedef IADLXInterfacePtr_T<IADLXMultimediaServices> IADLXMultimediaServicesPtr;
553
+ } //namespace adlx
554
+ #else //__cplusplus
555
+ ADLX_DECLARE_IID (IADLXMultimediaServices, L"IADLXMultimediaServices")
556
+ typedef struct IADLXMultimediaServices IADLXMultimediaServices;
557
+
558
+ typedef struct IADLXMultimediaServicesVtbl
559
+ {
560
+ //IADLXInterface
561
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXMultimediaServices* pThis);
562
+ adlx_long (ADLX_STD_CALL *Release)(IADLXMultimediaServices* pThis);
563
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXMultimediaServices* pThis, const wchar_t* interfaceId, void** ppInterface);
564
+
565
+ //IADLXMultimediaServices
566
+ ADLX_RESULT(ADLX_STD_CALL* GetMultimediaChangedHandling)(IADLXMultimediaServices* pThis, IADLXMultimediaChangedHandling** ppMultimediaChangedHandling);
567
+ ADLX_RESULT(ADLX_STD_CALL* GetVideoUpscale)(IADLXMultimediaServices* pThis, IADLXGPU* pGPU, IADLXVideoUpscale** ppVideoUpscale);
568
+ ADLX_RESULT(ADLX_STD_CALL* GetVideoSuperResolution)(IADLXMultimediaServices* pThis, IADLXGPU* pGPU, IADLXVideoSuperResolution** ppVideoSuperResolution);
569
+
570
+ }IADLXMultimediaServicesVtbl;
571
+
572
+ struct IADLXMultimediaServices { const IADLXMultimediaServicesVtbl *pVtbl; };
573
+
574
+ #endif //__cplusplus
575
+ #pragma endregion IADLXMultimediaServices
576
+
577
+
578
+ #endif //ADLX_MULTIMEDIA_H