diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java index 1b9a865692..74cbdddd24 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java @@ -145,6 +145,10 @@ public final class AttachmentCompressionJob extends BaseJob { if (!constraints.isSatisfied(context, attachment)) { throw new UndeliverableMessageException("Size constraints could not be met on video!"); } + } else if (MediaUtil.isHeic(attachment)) { + MediaStream converted = getResizedMedia(context, attachment, constraints); + attachmentDatabase.updateAttachmentData(attachment, converted, false); + attachmentDatabase.markAttachmentAsTransformed(attachmentId); } else if (constraints.isSatisfied(context, attachment)) { if (MediaUtil.isJpeg(attachment)) { MediaStream stripped = getResizedMedia(context, attachment, constraints); diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/MediaUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/MediaUtil.java index 49562ccf01..1cb1b46acd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/MediaUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/MediaUtil.java @@ -49,6 +49,7 @@ public class MediaUtil { public static final String IMAGE_PNG = "image/png"; public static final String IMAGE_JPEG = "image/jpeg"; + public static final String IMAGE_HEIC = "image/heic"; public static final String IMAGE_WEBP = "image/webp"; public static final String IMAGE_GIF = "image/gif"; public static final String AUDIO_AAC = "audio/aac"; @@ -219,6 +220,10 @@ public class MediaUtil { return isJpegType(attachment.getContentType()); } + public static boolean isHeic(Attachment attachment) { + return isHeicType(attachment.getContentType()); + } + public static boolean isImage(Attachment attachment) { return isImageType(attachment.getContentType()); } @@ -247,6 +252,10 @@ public class MediaUtil { return !TextUtils.isEmpty(contentType) && contentType.trim().equals(IMAGE_JPEG); } + public static boolean isHeicType(String contentType) { + return !TextUtils.isEmpty(contentType) && contentType.trim().equals(IMAGE_HEIC); + } + public static boolean isFile(Attachment attachment) { return !isGif(attachment) && !isImage(attachment) && !isAudio(attachment) && !isVideo(attachment); }