From 5becfd062fb17a6b25faa6d3ddb5ca203a03e2fc Mon Sep 17 00:00:00 2001 From: AE <98699388+A-EDev@users.noreply.github.com> Date: Sat, 24 Oct 2026 16:12:00 +0300 Subject: [PATCH 1/4] feat(player): apply the equalizer to videos once WebAudio proves it plays --- src/components/player/Player.tsx | 6 ++ src/lib/audio/mediaEqEngine.test.ts | 159 ++++++++++++++++++++++++++++ src/lib/audio/mediaEqEngine.ts | 129 ++++++++++++++++++++++ src/lib/audio/useVideoEq.ts | 46 ++++++++ src/lib/audio/webAudioProbe.ts | 85 +++++++++++++++ src/store/useEqStore.ts | 9 +- 6 files changed, 433 insertions(+), 1 deletion(-) create mode 100644 src/lib/audio/mediaEqEngine.test.ts create mode 100644 src/lib/audio/mediaEqEngine.ts create mode 100644 src/lib/audio/useVideoEq.ts create mode 100644 src/lib/audio/webAudioProbe.ts diff --git a/src/components/player/Player.tsx b/src/components/player/Player.tsx index 2f44983c..be879332 100644 --- a/src/components/player/Player.tsx +++ b/src/components/player/Player.tsx @@ -28,6 +28,7 @@ import { import { SubtitleOverlay } from "./SubtitleOverlay"; import { SETTINGS } from "../../lib/settings/schema"; import { loudnessFactor } from "../../lib/loudness"; +import { useVideoEq } from "../../lib/audio/useVideoEq"; import { IS_LINUX_RUNTIME } from "../../lib/platform"; import { AUDIO_DRIFT_TOLERANCE_SECONDS, @@ -595,6 +596,8 @@ export const Player: React.FC = ({ !isHlsPlayback && (hasSelectedAlternateAudio || (!!selectedQuality && !selectedQuality.hasAudio)); + useVideoEq(videoRef, audioRef, usesExternalAudio ? selectedAudioTrack?.localUrl ?? null : null); + const isPipMode = videoPlayerMode === "pip"; const isTheaterSurface = isTheaterMode && !isPipMode; const shouldShowControls = controlsVisible || !isPlaying || settingsOpen || isScrubbing; @@ -2510,6 +2513,8 @@ export const Player: React.FC = ({