flutter_ppg 0.2.0
flutter_ppg: ^0.2.0 copied to clipboard
A Flutter package for camera-based PPG (Photoplethysmography) signal processing. Extracts RR intervals from camera frames for heart rate and HRV analysis.
Changelog #
All notable changes to this project will be documented in this file.
0.2.0 - 2026-01-14 #
Added #
FrameRateDetectorfor automatic FPS detection (24/25/30/60 FPS snapping).FrameRateDetector.recordFrameMicrosfor monotonic timestamp input and stability gating on low FPS streaks.RRIntervalAnalyzerfor SDRR and mean BPM analysis.FilterResultfor outlier filtering statistics.PPGSignalfields:frameRate,isFPSStable,sdrr,isSDRRAcceptable,driftRate,rejectionRatio,rejectedIntervalCount.
Changed #
- RR interval calculation now uses detected FPS instead of fixed 30 FPS.
- Outlier filtering includes adjacent interval validation and rejection statistics.
- Signal quality assessment can degrade on excessive baseline drift.
- Threshold values are centralized in
PPGConfig. - Peak detection uses adaptive prominence based on recent filtered signal variability.
- Quality assessment window size now scales with frame rate.
- RR generation is skipped while
isFPSStableis false.
Fixed #
- RR intervals were incorrect on non-30 FPS devices (e.g., 60 FPS).
0.1.1 - 2026-01-12 #
Changed #
- Consolidated example app into single file for better pub.dev visibility.
0.1.0 - 2026-01-12 #
Added #
- Initial release of
flutter_ppgpackage FlutterPPGService- Main orchestrator for PPG signal processingSignalProcessor- Red channel extraction and bandpass filteringPeakDetector- Heartbeat detection with minimum distance enforcementSignalQualityAssessor- Real-time signal quality assessment (Good/Fair/Poor)OutlierFilter- IQR-based outlier removal for RR intervalsRingBuffer- Efficient sliding window utility- Example app with:
- Dual waveform visualization (Raw vs Filtered)
- Peak markers on filtered signal
- RR interval history display
- Real-time SNR and quality stats
- Start/Stop control with 30-second auto-timeout