From d5126e895eba5e73a2ddc918124ea2a6b2c78883 Mon Sep 17 00:00:00 2001 From: ybai001 Date: Tue, 16 Dec 2025 13:54:34 +0800 Subject: [PATCH 1/2] Treat hev2/hvc2 as a valid HEVC base for Dolby Vision Profile 20 --- .../src/main/java/androidx/media3/common/MimeTypes.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libraries/common/src/main/java/androidx/media3/common/MimeTypes.java b/libraries/common/src/main/java/androidx/media3/common/MimeTypes.java index 6bf951e2e6..5e689a51e9 100644 --- a/libraries/common/src/main/java/androidx/media3/common/MimeTypes.java +++ b/libraries/common/src/main/java/androidx/media3/common/MimeTypes.java @@ -450,7 +450,8 @@ public static String getMediaMimeType(@Nullable String codec) { codec = Ascii.toLowerCase(codec.trim()); if (codec.startsWith("avc1") || codec.startsWith("avc3")) { return MimeTypes.VIDEO_H264; - } else if (codec.startsWith("hev1") || codec.startsWith("hvc1")) { + } else if (codec.startsWith("hev1") || codec.startsWith("hvc1") + || codec.startsWith("hev2") || codec.startsWith("hvc2")) { return MimeTypes.VIDEO_H265; } else if (codec.startsWith("dvav") || codec.startsWith("dva1") @@ -617,9 +618,11 @@ public static boolean isDolbyVisionCodec( if (supplementalCodecs == null) { return false; } - // profiles 8, 9 and 10 + // profiles 8, 9, 10 and 20 return (supplementalCodecs.startsWith("dvhe") && codecs.startsWith("hev1")) || (supplementalCodecs.startsWith("dvh1") && codecs.startsWith("hvc1")) + || (supplementalCodecs.startsWith("dvhe") && codecs.startsWith("hev2")) + || (supplementalCodecs.startsWith("dvh1") && codecs.startsWith("hvc2")) || (supplementalCodecs.startsWith("dvav") && codecs.startsWith("avc3")) || (supplementalCodecs.startsWith("dva1") && codecs.startsWith("avc1")) || (supplementalCodecs.startsWith("dav1") && codecs.startsWith("av01")); From 532a09104b5acb2d587e956625d20b833931bbf7 Mon Sep 17 00:00:00 2001 From: ybai001 Date: Tue, 16 Dec 2025 15:55:03 +0800 Subject: [PATCH 2/2] Optimize the judgement --- .../src/main/java/androidx/media3/common/MimeTypes.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/common/src/main/java/androidx/media3/common/MimeTypes.java b/libraries/common/src/main/java/androidx/media3/common/MimeTypes.java index 5e689a51e9..33c193a831 100644 --- a/libraries/common/src/main/java/androidx/media3/common/MimeTypes.java +++ b/libraries/common/src/main/java/androidx/media3/common/MimeTypes.java @@ -619,10 +619,10 @@ public static boolean isDolbyVisionCodec( return false; } // profiles 8, 9, 10 and 20 - return (supplementalCodecs.startsWith("dvhe") && codecs.startsWith("hev1")) - || (supplementalCodecs.startsWith("dvh1") && codecs.startsWith("hvc1")) - || (supplementalCodecs.startsWith("dvhe") && codecs.startsWith("hev2")) - || (supplementalCodecs.startsWith("dvh1") && codecs.startsWith("hvc2")) + return (supplementalCodecs.startsWith("dvhe") + && (codecs.startsWith("hev1") || codecs.startsWith("hev2"))) + || (supplementalCodecs.startsWith("dvh1") + && (codecs.startsWith("hvc1") || codecs.startsWith("hvc2"))) || (supplementalCodecs.startsWith("dvav") && codecs.startsWith("avc3")) || (supplementalCodecs.startsWith("dva1") && codecs.startsWith("avc1")) || (supplementalCodecs.startsWith("dav1") && codecs.startsWith("av01"));