summaryrefslogtreecommitdiff
path: root/audio/SoundWire/Samples/SdcaVad/SdcaVDsp/PositionSimClock.h
diff options
context:
space:
mode:
authorDaniel Rugerio <[email protected]>2025-11-25 11:00:04 -0800
committerDaniel Rugerio <[email protected]>2025-12-15 14:00:37 -0800
commit6fa87d3bef7972f7fac034adb68cd856f69c8607 (patch)
tree90ddf9e506b651c81dd803e0a9cc04af5db24a79 /audio/SoundWire/Samples/SdcaVad/SdcaVDsp/PositionSimClock.h
parent1d89a1513f519f62226f84a3131916ab2fd0c3ef (diff)
New SDCAVAD sample.
Diffstat (limited to 'audio/SoundWire/Samples/SdcaVad/SdcaVDsp/PositionSimClock.h')
-rw-r--r--audio/SoundWire/Samples/SdcaVad/SdcaVDsp/PositionSimClock.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/audio/SoundWire/Samples/SdcaVad/SdcaVDsp/PositionSimClock.h b/audio/SoundWire/Samples/SdcaVad/SdcaVDsp/PositionSimClock.h
new file mode 100644
index 00000000..2d1844fa
--- /dev/null
+++ b/audio/SoundWire/Samples/SdcaVad/SdcaVDsp/PositionSimClock.h
@@ -0,0 +1,76 @@
+/*++
+
+ 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:
+
+ PositionSimClock.h
+
+Abstract:
+
+ Simulated clock for keeping track of stream position.
+
+Environment:
+
+ Kernel mode
+
+--*/
+
+#pragma once
+
+#include "PositionClock.h"
+
+#define HNSTIME_PER_MILLISECOND 10000
+
+class CPositionSimClock : public IPositionClock
+{
+public:
+ __drv_maxIRQL(PASSIVE_LEVEL)
+ PAGED_CODE_SEG
+ CPositionSimClock();
+
+ virtual
+ __drv_maxIRQL(PASSIVE_LEVEL)
+ ~CPositionSimClock();
+
+ virtual
+ __drv_maxIRQL(PASSIVE_LEVEL)
+ void Pause();
+
+ virtual
+ __drv_maxIRQL(PASSIVE_LEVEL)
+ void Run();
+
+ virtual
+ __drv_maxIRQL(PASSIVE_LEVEL)
+ void Stop();
+
+ virtual
+ __drv_maxIRQL(PASSIVE_LEVEL)
+ ULONGLONG GetElapsedTime(_Out_ PULONGLONG pQpcTimeStamp);
+
+protected:
+ ULONGLONG m_StartTime;
+ ULONGLONG m_ElapsedTimeWhenPaused;
+ ULONGLONG m_QpcTimeStamp;
+
+ KSPIN_LOCK m_Lock;
+
+ typedef enum _SimClockState_t
+ {
+ SIM_CLOCK_STATE_STOP,
+ SIM_CLOCK_STATE_PAUSE,
+ SIM_CLOCK_STATE_RUN,
+
+ SIM_CLOCK_STATE_Count
+ }SimClockState;
+
+ SimClockState m_State;
+
+ __drv_maxIRQL(DISPATCH_LEVEL)
+ ULONGLONG GetElapsedTimeUnlocked();
+};
+