Skip to content

Add software decoder fallback to fix H.265/HDR green screen on Android TV#195

Draft
Copilot wants to merge 2 commits intomainfrom
copilot/bugfix-hdr-video-issues
Draft

Add software decoder fallback to fix H.265/HDR green screen on Android TV#195
Copilot wants to merge 2 commits intomainfrom
copilot/bugfix-hdr-video-issues

Conversation

Copy link
Copy Markdown

Copilot AI commented Mar 27, 2026

H.265/HDR videos render as green corrupted frames on some Android TV devices. The hardware H.265 decoder outputs 10-bit HDR color data that SurfaceView can't correctly composite, causing the artifacts shown above. Since this is a silent failure (no PlaybackException is thrown), the existing SurfaceView→TextureView error retry path never triggers.

Changes

  • New preference (VIDEO_DISABLE_HARDWARE_DECODER, default false) added to Settings → Slideshow. When enabled, NextRenderersFactory is configured with EXTENSION_RENDERER_MODE_PREFER, forcing ExoPlayer to prefer the FFmpeg-based software decoders over hardware codecs.

    NextRenderersFactory(context).apply {
        if (config.disableHardwareDecoder) {
            setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER)
        }
    }
  • MediaSliderConfiguration gains a disableHardwareDecoder: Boolean field (default false) with full Parcelable serialization.

  • All three MediaSliderConfiguration construction sites (GenericAssetFragment, FolderFragment, ScreenSaverService) pass PreferenceManager.get(VIDEO_DISABLE_HARDWARE_DECODER).

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • dl.google.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED -Xmx2048m -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant -cp /home/REDACTED/.gradle/wrapper/dists/gradle-8.9-bin/90cnw93cvbtalezasaz0blq0a/gradle-8.9/lib/gradle-daemon-main-8.9.jar -javaagent:/home/REDACTED/.gradle/wrapper/dists/gradle-8.9-bin/90cnw93cvbtalezasaz0blq0a/gradle-8.9/lib/agents/gradle-instrumentation-agent-8.9.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 8.9 (dns block)

If you need me to access, download, or install something from one of these locations, you can either:


📍 Connect Copilot coding agent with Jira, Azure Boards or Linear to delegate work to Copilot in one click without leaving your project management tool.

Copilot AI linked an issue Mar 27, 2026 that may be closed by this pull request
Copilot AI changed the title [WIP] Fix HDR video playback issues with h265 codec Add software decoder fallback to fix H.265/HDR green screen on Android TV Mar 27, 2026
Copilot AI requested a review from giejay March 27, 2026 16:27
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.

[BUG] HDR

2 participants