Skip to content

fix(playback): bypass restrictive device profile query for external players#495

Merged
RadicalMuffinMan merged 1 commit into
Moonfin-Client:mainfrom
mattsigal:feature/external-player-4k-direct-stream
Jun 11, 2026
Merged

fix(playback): bypass restrictive device profile query for external players#495
RadicalMuffinMan merged 1 commit into
Moonfin-Client:mainfrom
mattsigal:feature/external-player-4k-direct-stream

Conversation

@mattsigal

Copy link
Copy Markdown
Contributor

Pull Request

Summary

Resolves the issue where 4K HEVC / Dolby Vision video streams fail to launch in external players (e.g., Vimu, MX Player, VLC) and lock up the client app by triggering server-side transcoding. The solution is to bypass the restrictive internal player profile query in ExternalPlayerHostScreen with a permissive profile that advertises comprehensive 4K capabilities.

Related Issues

Link related issues or tickets separated by commas.

Type of Change

  • Bug fix
  • New feature
  • Refactor
  • Performance improvement
  • UI/UX update
  • Documentation update
  • Build/CI change
  • Other (describe):

Changes Made

  • Modified ExternalPlayerHostScreen in external_player_host_screen.dart to build a fully permissive profile via DeviceProfileBuilder.build(...) when launching an external player.
  • Advertised support for all standard 4K formats (HEVC, DV profiles 5/7/8, AV1, DTS, TrueHD) to prevent server transcoding, while still respecting user-defined maximum bitrate and maximum video resolution preferences.
  • Corrected audio_migration_test.dart unit tests to assert against the active pref_audio_preference_split_v2 migration key instead of the stale v1 key, resolving pre-existing test failures.

Platform

  • Android
  • iOS
  • macOS
  • Windows
  • Linux
  • All / Shared code

Testing

Describe how this change was tested.

  • Tested on emulator / simulator
  • Tested on physical device
  • Manual testing completed
  • Not tested (explain why): No external players on my devices

Test Steps

  1. Ran flutter analyze to verify the modified code introduces no lints or warnings.
  2. Ran flutter test to ensure all 42 unit tests pass successfully.
  3. Ask user to test fix (no external players on my devices)

Checklist

  • Code builds successfully
  • Code follows project style and conventions
  • No unnecessary commented-out code
  • No new warnings introduced

@RadicalMuffinMan RadicalMuffinMan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove audio_migration_test.dart, its already covered under #478

…layers

- Replace internal player device profile query in ExternalPlayerHostScreen with a permissive profile representing typical external player codec and resolution capabilities (supporting AV1, HEVC, Dolby Vision, DTS, TrueHD, 4K, etc.).
- Ensure user-defined maximum bitrate and maximum video resolution options are still respected.

Closes Moonfin-Client#444
@mattsigal mattsigal force-pushed the feature/external-player-4k-direct-stream branch from b94c145 to 458eb76 Compare June 11, 2026 16:11
@mattsigal

Copy link
Copy Markdown
Contributor Author

Audio test removed :) Sorry about that

@RadicalMuffinMan RadicalMuffinMan merged commit cade15a into Moonfin-Client:main Jun 11, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fire TV Stick external player not receiving 4K HDR stream

2 participants