diff --git a/android/app/src/main/kotlin/com/edde746/plezy/exoplayer/ExoPlayerPlugin.kt b/android/app/src/main/kotlin/com/edde746/plezy/exoplayer/ExoPlayerPlugin.kt index 4bdb1165..7d82d0cb 100644 --- a/android/app/src/main/kotlin/com/edde746/plezy/exoplayer/ExoPlayerPlugin.kt +++ b/android/app/src/main/kotlin/com/edde746/plezy/exoplayer/ExoPlayerPlugin.kt @@ -605,7 +605,7 @@ class ExoPlayerPlugin : FlutterPlugin, MethodChannel.MethodCallHandler, fallbackInProgress = false // Configure basic MPV properties for Plex playback - mpvCore?.setProperty("hwdec", "auto") + mpvCore?.setProperty("hwdec", "mediacodec,mediacodec-copy") mpvCore?.setProperty("vo", "gpu") mpvCore?.setProperty("ao", "audiotrack") diff --git a/android/app/src/main/kotlin/com/edde746/plezy/mpv/MpvPlayerCore.kt b/android/app/src/main/kotlin/com/edde746/plezy/mpv/MpvPlayerCore.kt index 0e894414..cacd17c5 100644 --- a/android/app/src/main/kotlin/com/edde746/plezy/mpv/MpvPlayerCore.kt +++ b/android/app/src/main/kotlin/com/edde746/plezy/mpv/MpvPlayerCore.kt @@ -322,6 +322,9 @@ class MpvPlayerCore(private val activity: Activity) : MPVLib.setOptionString("opengl-es", "yes") // hwdec is set from Flutter via setProperty based on user preference + // Prevent crashes/artifacts from hardware film grain synthesis (mpv #14651) + MPVLib.setOptionString("vd-lavc-film-grain", "cpu") + // Audio configuration MPVLib.setOptionString("ao", "audiotrack") } diff --git a/lib/screens/video_player_screen.dart b/lib/screens/video_player_screen.dart index 6d2c0e90..65a714f8 100644 --- a/lib/screens/video_player_screen.dart +++ b/lib/screens/video_player_screen.dart @@ -2927,7 +2927,7 @@ String _getHwdecValue(bool enabled) { if (Platform.isMacOS || Platform.isIOS) { return 'videotoolbox'; } else if (Platform.isAndroid) { - return 'auto-safe'; + return 'mediacodec,mediacodec-copy'; } else { return 'auto'; // Windows, Linux }