Audio & Video Filters
Audio equalizer, video filters configuration
CineWindows provides real-time control over audio and video processing through its integration with libmpv’s filter pipeline. Audio adjustments run through the AdvancedPlaybackController and video adjustments through the VideoOptionsController, both accessible from the player controls and the right-click context menu.
Volume & Mute
Volume ranges from 0 to 200 and is adjustable with the 0/9 and *// shortcuts. Mute toggles with M. The VolumeOsd overlay provides visual feedback on every change.
Volume preferences persist across sessions through QSettings.
Track Cycling
Use # for the next audio track and Ctrl+Shift+A for the previous one. When a file contains multiple audio streams (e.g. director commentary, alternate language dubs), CineWindows lists them in the Audio Menu (Ctrl+A).
Audio Delay
Compensate for desynchronized audio with Ctrl+- (decrease) and Ctrl++ (increase). Delay values are applied via mpv’s audio-delay property and persist for the current session.
10-Band Equalizer
The equalizer operates on ten ISO-standard frequency bands:
| Band | Frequency | Range |
|---|---|---|
| 1 | 31 Hz | ±12 dB |
| 2 | 62 Hz | ±12 dB |
| 3 | 125 Hz | ±12 dB |
| 4 | 250 Hz | ±12 dB |
| 5 | 500 Hz | ±12 dB |
| 6 | 1 kHz | ±12 dB |
| 7 | 2 kHz | ±12 dB |
| 8 | 4 kHz | ±12 dB |
| 9 | 8 kHz | ±12 dB |
| 10 | 16 kHz | ±12 dB |
Each band uses a Q-factor of 1.0 (wide bell curve) and is chained into a single lavfi filter graph with a alimiter=limit=0.95 stage to prevent clipping.
Presets
Bass Boosts low-end (+6 dB through 250 Hz) with a gentle roll-off above. Treble Brightens high-end (+6 dB from 4 kHz upward) while attenuating sub-bass. Voice Enhances vocal clarity with a mid-range bump centered around 1-2 kHz. Flat Resets all bands to 0 dB and disables the equalizer.
Presets are applied via applyEqualizerPreset() and saved to QSettings so the last-used configuration is restored on next launch.
Loudnorm (LUFS Normalization)
CineWindows integrates EBU R128 loudness normalization through mpv’s loudnorm lavfi filter, targeting an integrated loudness of -20 LUFS. Toggle it from the Audio menu or the equalizer panel — the filter is applied and removed dynamically via af add / af remove commands with the @cine_loudnorm label.
Audio Visualization
When playing audio-only content (no video track), CineWindows can render real-time visualizations:
Waves showwaves with cline mode, 1280x720 resolution, color #10c7d1.
Spectrum showspectrum with scroll slide, combined mode, log scale, intensity color.
Visualization is selected through setVisualization() and rendered via mpv’s lavfi-complex option, which splits the audio signal into an output channel and the visualization overlay.
Image Adjustments
All adjustments use mpv’s built-in video equalizer properties with integer ranges:
| Property | Range | Shortcuts |
|---|---|---|
| Contrast | -100 to 100 | 1 / 2 |
| Brightness | -100 to 100 | 3 / 4 |
| Gamma | -100 to 100 | 5 / 6 |
| Saturation | -100 to 100 | 7 / 8 |
| Hue | -100 to 100 | via menu |
Values persist for the current playback session. Reset all adjustments from the Video menu or via the resetAll() method on VideoOptionsController.
Deinterlacing
Toggle with D. Uses mpv’s deinterlace property which applies yadif (yet another deinterlacing filter) with the default algorithm. Automatically detects interlaced content where possible.
Debanding
Toggle with B. Applies mpv’s deband filter to smooth out banding artifacts common in low-bitrate video. The filter uses default parameters (threshold, range, grain) which work well for most content.
Aspect Ratio & Crop
Cycle between aspect ratios with Shift+A. Available ratios include original, 4, 16, 16, 21, 32, and 1. The crop feature parses the target ratio and calculates pixel-exact crop dimensions from the video’s native resolution.
For manual crop ratios, VideoOptionsController::setCropRatio() accepts both colon-separated ("16:9") and decimal ("1.777") formats.
Zoom & Pan
| Action | Shortcut |
|---|---|
| Zoom In | Alt++ |
| Zoom Out | Alt+- |
| Reset Zoom & Pan | Alt+Backspace |
| Decrease Panscan | W |
| Increase Panscan | Shift+W |
The zoom property (video-zoom) is a floating-point value — positive numbers zoom in, negatives zoom out. The panscan value controls how much of the video is visible when the aspect ratio does not match the window.
Rotation
Rotate the video in 90-degree increments:
| Action | Method |
|---|---|
| Rotate Left | rotateLeft() — adds 270° (equivalent to -90°) |
| Rotate Right | rotateRight() — adds 90° |
| Reset Rotation | resetRotation() — sets to 0° |
Rotation uses mpv’s video-rotate property which stores the cumulative angle modulo 360.
Horizontal & Vertical Flip
Toggled through mpv’s hflip and vflip video filters with labeled filter entries (@hflip, @vflip). Multiple toggles are cumulative — the same shortcut alternately applies and removes each flip. Reset both with a single action from the Video menu.
HDR Tone Mapping
For HDR content on SDR displays, CineWindows provides configurable tone mapping:
| Setting | Options | Default |
|---|---|---|
| Tone Mapping | hable, mobius, bt.2390, bt.2446a, reinhard, gamma, linear, clip |
hable |
| Target Peak | 100–1000 nits | 100 |
| Compute Peak | auto | yes |
HDR parameters are managed by AdvancedPlaybackController::applyHdr() and persist across sessions via QSettings.
Stereo 3D Conversion
Convert between stereoscopic 3D formats:
- Input formats:
off,sbs2l,sbs2r,ab2l,ab2r,abl,abr,sbsl,sbsr - Output formats:
arcd,aybd,ml,mr,sbsl,sbsr,abl,abr
Applied as a lavfi stereo3d filter (@cine_stereo) on the video filter chain.
Under the Hood — Filter Architecture
Audio and video filters in CineWindows are managed through label-based mpv filter commands. Each filter is assigned a unique label (e.g. @cine_eq, @cine_loudnorm, @cine_stereo, @hflip) which allows individual removal and replacement without disturbing other active filters.
The AdvancedPlaybackController applies all audio filters on fileLoaded, ensuring every new file starts with the correct filter state. Video filters are applied on-demand through VideoOptionsController and reset when resetAll() is called.
Filter state — including equalizer band gains, enabled state, tone mapping mode, and stereo 3D configuration — is persisted to QSettings and restored at startup.