Skip to content

[Feature Request] Smart player backend switching based on HDR compatibility #216

Description

@shadypt

Problem description

Currently, users have to manually switch between LibMPV and ExoPlayer to play HDR
-LibMPV does a great job with complex files but tone-maps HDR to SDR since it doesn't support HDR on Android.
-ExoPlayer plays native HDR perfectly on compatible devices, but it often fails entirely (black screen/no video) with heavy HDR files like high-bitrate files.

Proposed solution

I would like to request an automated "Smart Player Selection" logic inside AFinity that handles HDR playback dynamically based on success/compatibility.

The fallback logic should work as follows:

  1. Detect HDR content: When a video contains HDR metadata.
  2. First Choice (ExoPlayer): Try to open the file with the internal ExoPlayer to achieve native HDR playback.
  3. Fallback Condition: If ExoPlayer cannot render the video stream (fails or results in a black screen), immediately fallback to LibMPV.
  4. Fallback Condition (Non-HDR devices): If the device does not support native HDR, or if ExoPlayer fails, use LibMPV with its built-in HDR-to-SDR tone mapping.

Alternatives considered

The current alternative is manually changing the default player backend in the app settings every time.

Feature area

Player/Playback

Priority

High - Significantly impacts my usage

Mockups or examples

No response

Use case

No response

Additional context

No response

Device

No response

Android version

No response

Afinity version

No response

Checklist

  • I have searched for similar feature requests before creating this one
  • This feature would benefit multiple users, not just myself
  • I am willing to help test this feature if implemented

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions