From b280ff74954ff58519a12998a929c6f7d24dad93 Mon Sep 17 00:00:00 2001 From: Nicholas Tinsley Date: Thu, 21 Dec 2023 16:45:29 -0500 Subject: [PATCH] Instant video processing metadata. --- .../jobs/AttachmentCompressionJob.java | 2 +- .../securesms/mms/MediaStream.java | 22 +++++++++++++++---- .../securesms/video/InMemoryTranscoder.java | 2 +- 3 files changed, 20 insertions(+), 6 deletions(-) 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 e53275ced4..e5ff3861d0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java @@ -279,9 +279,9 @@ public final class AttachmentCompressionJob extends BaseJob { percent)); }, cancelationSignal)) { attachmentDatabase.updateAttachmentData(attachment, mediaStream, true); + attachmentDatabase.markAttachmentAsTransformed(attachment.getAttachmentId(), mediaStream.getFaststart()); } - attachmentDatabase.markAttachmentAsTransformed(attachment.getAttachmentId(), true); eventBus.postSticky(new PartProgressEvent(attachment, PartProgressEvent.Type.COMPRESSION, 100, diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/MediaStream.java b/app/src/main/java/org/thoughtcrime/securesms/mms/MediaStream.java index 00db66b738..35c8efe04b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/MediaStream.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/MediaStream.java @@ -25,12 +25,22 @@ public class MediaStream implements Closeable { private final String mimeType; private final int width; private final int height; + private final boolean faststart; public MediaStream(InputStream stream, String mimeType, int width, int height) { - this.stream = stream; - this.mimeType = mimeType; - this.width = width; - this.height = height; + this.stream = stream; + this.mimeType = mimeType; + this.width = width; + this.height = height; + this.faststart = false; + } + + public MediaStream(InputStream stream, String mimeType, int width, int height, boolean faststart) { + this.stream = stream; + this.mimeType = mimeType; + this.width = width; + this.height = height; + this.faststart = faststart; } public InputStream getStream() { @@ -49,6 +59,10 @@ public class MediaStream implements Closeable { return height; } + public boolean getFaststart() { + return faststart; + } + @Override public void close() throws IOException { stream.close(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/video/InMemoryTranscoder.java b/app/src/main/java/org/thoughtcrime/securesms/video/InMemoryTranscoder.java index 27cac1570b..6ebc7c2add 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/video/InMemoryTranscoder.java +++ b/app/src/main/java/org/thoughtcrime/securesms/video/InMemoryTranscoder.java @@ -180,7 +180,7 @@ public final class InMemoryTranscoder implements Closeable { if (metadata != null && metadata.getSanitizedMetadata() != null) { memoryFile.seek(metadata.getDataOffset()); - return new MediaStream(new SequenceInputStream(new ByteArrayInputStream(metadata.getSanitizedMetadata()), ByteStreams.limit(new FileInputStream(memoryFileFileDescriptor), metadata.getDataLength())), MimeTypes.VIDEO_MP4, 0, 0); + return new MediaStream(new SequenceInputStream(new ByteArrayInputStream(metadata.getSanitizedMetadata()), ByteStreams.limit(new FileInputStream(memoryFileFileDescriptor), metadata.getDataLength())), MimeTypes.VIDEO_MP4, 0, 0, true); } else { memoryFile.seek(0); return new MediaStream(new FileInputStream(memoryFileFileDescriptor), MimeTypes.VIDEO_MP4, 0, 0);