Skip to content

fix(tizen): drop the mpv-only playback settings from the TV - #3

Merged
balcsida merged 1 commit into
feat/tizen-6-tvfrom
fix/tizen-drop-mpv-settings
Sep 22, 2026
Merged

balcsida merged 1 commit into
feat/tizen-6-tvfrom
fix/tizen-drop-mpv-settings

Conversation

@balcsida

Copy link
Copy Markdown
Owner

Tizen plays through the native Capi backend — Player() returns PlayerTizen, and libmpv does not exist on the platform. But the settings UI still offered the tuning controls that exist only to reach mpv.

Why each one is dead there

PlayerTizen.setProperty accepts pause and sub-visibility and throws UnsupportedError for everything else, and VideoPlayerScreen already wraps its whole property-writing block in if (!PlatformDetector.isTizen()) (lines 1719-2016). So:

Setting Why it cannot work on Tizen
mpv.conf editor Parsed at :1981, inside the skipped block. mpv is never constructed.
Hardware decoding Player() discards the hardwareDecoding argument for PlayerTizen; the hwdec write at :1747 is inside the skipped block.
Deinterlace Write at :1753, inside the skipped block. Capi has no filter chain — the same reason the tile already hides under ExoPlayer.
Downmix (+ center boost, normalize) setAudioDownmix writes audio-swresample-o / audio-channels. The Tizen device profile already pins MaxAudioChannels: 2, so the server downmixes regardless.
Max volume Clamped to 100-300, i.e. purely mpv's volume-max amplification — and :2017 pins that to 100 on Tizen.

The two in-player toggles were worse than inert. setAudioNormalization and setAudioDownmix both route through setProperty, so on Tizen the write throws, gets logged by _commitWrite, and the switch snaps back — a control that visibly refuses to hold its value.

The change

One capability gate, matching the existing supportsDownloads() / supportsGamepads() / supportsSystemMediaControls() idiom on this branch:

static bool supportsMpvTuning() => !_tizen;

Six tiles in Playback settings and the two toggles in the in-player sheet ask it. Shader presets already gate correctly on playerType == 'mpv', so they needed nothing.

Behaviour off Tizen is unchanged: supportsMpvTuning() is a compile-time true everywhere else, and _hardwareDecodingTile still shows for the Android/ExoPlayer path that genuinely reads the preference.

Verification

  • flutter analyze on the three changed files — clean.
  • test/tizen/platform_test.dart extended, and it passes in both modes: the default pass asserts mpv tuning stays available, the --dart-define=TIZEN_BUILD=true pass asserts it is gone. That matches how scripts/tizen/check.sh already runs that directory twice.
  • video_settings_sheet, playback_settings_screen, settings_screen and platform_detector suites: 66 tests, all passing.

Not verified on hardware: these tiles are removed, so there is nothing new to exercise on the TV beyond confirming they are absent.

AI assistance

Written with Claude Opus 5 via Claude Code, per CONTRIBUTING.md.

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@balcsida
balcsida merged commit 17cb52e into feat/tizen-6-tv Sep 22, 2026
4 checks passed
@balcsida
balcsida deleted the fix/tizen-drop-mpv-settings branch September 22, 2026 11:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant