diff options
| author | Daniel Rugerio <[email protected]> | 2025-11-25 11:00:04 -0800 |
|---|---|---|
| committer | Daniel Rugerio <[email protected]> | 2025-12-15 14:00:37 -0800 |
| commit | 6fa87d3bef7972f7fac034adb68cd856f69c8607 (patch) | |
| tree | 90ddf9e506b651c81dd803e0a9cc04af5db24a79 /audio/SoundWire/Samples/SdcaVad/SdcaVDsp/PositionSimClock.h | |
| parent | 1d89a1513f519f62226f84a3131916ab2fd0c3ef (diff) | |
New SDCAVAD sample.
Diffstat (limited to 'audio/SoundWire/Samples/SdcaVad/SdcaVDsp/PositionSimClock.h')
| -rw-r--r-- | audio/SoundWire/Samples/SdcaVad/SdcaVDsp/PositionSimClock.h | 76 |
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(); +}; + |
