Update supported image formats in line with platform standards

This treats heic as a separate mimetype to heif (even though heic files are a subset of heif files). This is in line with other platform classes like android.content.ContentResolver

https://developer.android.com/media/platform/supported-formats#image-formats was updated to include avif support or API level 34, so added this MimeType as well and updated our associated util.

solves Issue: androidx/media#1373

PiperOrigin-RevId: 633616214
This commit is contained in:
tofunmi 2024-05-14 09:47:13 -07:00 committed by Copybara-Service
parent 84c0b6bcb1
commit f7390faeb0
5 changed files with 13 additions and 2 deletions

View File

@ -38,6 +38,8 @@
* Replace `androidx.media3.transformer.Muxer` interface with
`androidx.media3.muxer.Muxer` and remove
`androidx.media3.transformer.Muxer`.
* Fix HEIC image loading from content URI schemes.
([#1373](https://github.com/androidx/media/issues/1373)).
* Track Selection:
* Extractors:
* MPEG-TS: Roll forward the change ensuring the last frame is rendered by
@ -74,6 +76,7 @@
* Image:
* Add support for non-square DASH thumbnail grids
([#1300](https://github.com/androidx/media/pull/1300)).
* Add AVIF decoding support for API 34+.
* DRM:
* Allow setting a `LoadErrorHandlingPolicy` on
`DefaultDrmSessionManagerProvider`

View File

@ -164,6 +164,8 @@ public final class MimeTypes {
@UnstableApi public static final String IMAGE_JPEG_R = BASE_TYPE_IMAGE + "/jpeg_r";
@UnstableApi public static final String IMAGE_PNG = BASE_TYPE_IMAGE + "/png";
@UnstableApi public static final String IMAGE_HEIF = BASE_TYPE_IMAGE + "/heif";
@UnstableApi public static final String IMAGE_HEIC = BASE_TYPE_IMAGE + "/heic";
@UnstableApi public static final String IMAGE_AVIF = BASE_TYPE_IMAGE + "/avif";
@UnstableApi public static final String IMAGE_BMP = BASE_TYPE_IMAGE + "/bmp";
@UnstableApi public static final String IMAGE_WEBP = BASE_TYPE_IMAGE + "/webp";
@UnstableApi public static final String IMAGE_RAW = BASE_TYPE_IMAGE + "/raw";

View File

@ -3230,7 +3230,10 @@ public final class Util {
case MimeTypes.IMAGE_WEBP:
return true;
case MimeTypes.IMAGE_HEIF:
case MimeTypes.IMAGE_HEIC:
return Util.SDK_INT >= 26;
case MimeTypes.IMAGE_AVIF:
return Util.SDK_INT >= 34;
default:
return false;
}

View File

@ -120,6 +120,8 @@ public final class MimeTypesTest {
assertThat(MimeTypes.isImage(MimeTypes.IMAGE_JPEG)).isTrue();
assertThat(MimeTypes.isImage(MimeTypes.IMAGE_PNG)).isTrue();
assertThat(MimeTypes.isImage(MimeTypes.IMAGE_HEIF)).isTrue();
assertThat(MimeTypes.isImage(MimeTypes.IMAGE_HEIC)).isTrue();
assertThat(MimeTypes.isImage(MimeTypes.IMAGE_AVIF)).isTrue();
assertThat(MimeTypes.isImage(MimeTypes.IMAGE_BMP)).isTrue();
assertThat(MimeTypes.isImage(MimeTypes.IMAGE_WEBP)).isTrue();
assertThat(MimeTypes.isImage("image/custom")).isTrue();

View File

@ -47,8 +47,9 @@ public final class ImageUtil {
case "dib":
return MimeTypes.IMAGE_BMP;
case "heif":
case "heic":
return MimeTypes.IMAGE_HEIF;
case "heic":
return MimeTypes.IMAGE_HEIC;
case "jpg":
case "jpeg":
case "jpe":
@ -76,7 +77,7 @@ public final class ImageUtil {
case "ico":
return "image/x-icon";
case "avif":
return "image/avif";
return MimeTypes.IMAGE_AVIF;
default:
return null;
}