diff --git a/app/src/main/java/org/thoughtcrime/securesms/video/DecryptableUriVideoInput.java b/app/src/main/java/org/thoughtcrime/securesms/media/DecryptableUriMediaInput.java similarity index 65% rename from app/src/main/java/org/thoughtcrime/securesms/video/DecryptableUriVideoInput.java rename to app/src/main/java/org/thoughtcrime/securesms/media/DecryptableUriMediaInput.java index 92a33a80d4..8a52aea056 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/video/DecryptableUriVideoInput.java +++ b/app/src/main/java/org/thoughtcrime/securesms/media/DecryptableUriMediaInput.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.video; +package org.thoughtcrime.securesms.media; import android.content.Context; import android.media.MediaDataSource; @@ -12,30 +12,30 @@ import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.mms.PartAuthority; import org.thoughtcrime.securesms.mms.PartUriParser; import org.thoughtcrime.securesms.providers.BlobProvider; -import org.thoughtcrime.securesms.video.videoconverter.VideoInput; +import org.thoughtcrime.securesms.media.MediaInput; import java.io.IOException; @RequiresApi(api = 23) -public final class DecryptableUriVideoInput { +public final class DecryptableUriMediaInput { - private DecryptableUriVideoInput() { + private DecryptableUriMediaInput() { } - public static VideoInput createForUri(@NonNull Context context, @NonNull Uri uri) throws IOException { + public static @NonNull MediaInput createForUri(@NonNull Context context, @NonNull Uri uri) throws IOException { if (BlobProvider.isAuthority(uri)) { - return new VideoInput.MediaDataSourceVideoInput(BlobProvider.getInstance().getMediaDataSource(context, uri)); + return new MediaInput.MediaDataSourceMediaInput(BlobProvider.getInstance().getMediaDataSource(context, uri)); } if (PartAuthority.isLocalUri(uri)) { return createForAttachmentUri(context, uri); } - return new VideoInput.UriVideoInput(context, uri); + return new MediaInput.UriMediaInput(context, uri); } - private static VideoInput createForAttachmentUri(@NonNull Context context, @NonNull Uri uri) { + private static @NonNull MediaInput createForAttachmentUri(@NonNull Context context, @NonNull Uri uri) { AttachmentId partId = new PartUriParser(uri).getPartId(); if (!partId.isValid()) { @@ -49,6 +49,6 @@ public final class DecryptableUriVideoInput { throw new AssertionError(); } - return new VideoInput.MediaDataSourceVideoInput(mediaDataSource); + return new MediaInput.MediaDataSourceMediaInput(mediaDataSource); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/VideoInput.java b/app/src/main/java/org/thoughtcrime/securesms/media/MediaInput.java similarity index 67% rename from app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/VideoInput.java rename to app/src/main/java/org/thoughtcrime/securesms/media/MediaInput.java index a63b6ac7b1..d82b80b374 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/VideoInput.java +++ b/app/src/main/java/org/thoughtcrime/securesms/media/MediaInput.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.video.videoconverter; +package org.thoughtcrime.securesms.media; import android.content.Context; import android.media.MediaDataSource; @@ -12,16 +12,16 @@ import java.io.Closeable; import java.io.File; import java.io.IOException; -public abstract class VideoInput implements Closeable { +public abstract class MediaInput implements Closeable { @NonNull - abstract MediaExtractor createExtractor() throws IOException; + public abstract MediaExtractor createExtractor() throws IOException; - public static class FileVideoInput extends VideoInput { + public static class FileMediaInput extends MediaInput { - final File file; + private final File file; - public FileVideoInput(final @NonNull File file) { + public FileMediaInput(@NonNull File file) { this.file = file; } @@ -37,13 +37,13 @@ public abstract class VideoInput implements Closeable { } } - public static class UriVideoInput extends VideoInput { + public static class UriMediaInput extends MediaInput { - final Uri uri; - final Context context; + private final Uri uri; + private final Context context; - public UriVideoInput(final @NonNull Context context, final @NonNull Uri uri) { - this.uri = uri; + public UriMediaInput(@NonNull Context context, @NonNull Uri uri) { + this.uri = uri; this.context = context; } @@ -60,11 +60,11 @@ public abstract class VideoInput implements Closeable { } @RequiresApi(23) - public static class MediaDataSourceVideoInput extends VideoInput { + public static class MediaDataSourceMediaInput extends MediaInput { private final MediaDataSource mediaDataSource; - public MediaDataSourceVideoInput(final @NonNull MediaDataSource mediaDataSource) { + public MediaDataSourceMediaInput(@NonNull MediaDataSource mediaDataSource) { this.mediaDataSource = mediaDataSource; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/scribbles/VideoEditorHud.java b/app/src/main/java/org/thoughtcrime/securesms/scribbles/VideoEditorHud.java index ef5b9a72c7..5c1c732de1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/scribbles/VideoEditorHud.java +++ b/app/src/main/java/org/thoughtcrime/securesms/scribbles/VideoEditorHud.java @@ -15,7 +15,7 @@ import androidx.annotation.RequiresApi; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.mms.VideoSlide; -import org.thoughtcrime.securesms.video.DecryptableUriVideoInput; +import org.thoughtcrime.securesms.media.DecryptableUriMediaInput; import org.thoughtcrime.securesms.video.videoconverter.VideoThumbnailsRangeSelectorView; import java.io.IOException; @@ -69,7 +69,7 @@ public final class VideoEditorHud extends LinearLayout { return; } - videoTimeLine.setInput(DecryptableUriVideoInput.createForUri(getContext(), uri)); + videoTimeLine.setInput(DecryptableUriMediaInput.createForUri(getContext(), uri)); videoTimeLine.setOnRangeChangeListener(new VideoThumbnailsRangeSelectorView.OnRangeChangeListener() { 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 62ea89230a..2aeacac323 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/video/InMemoryTranscoder.java +++ b/app/src/main/java/org/thoughtcrime/securesms/video/InMemoryTranscoder.java @@ -15,7 +15,7 @@ import org.thoughtcrime.securesms.mms.MediaStream; import org.thoughtcrime.securesms.util.MemoryFileDescriptor; import org.thoughtcrime.securesms.video.videoconverter.EncodingException; import org.thoughtcrime.securesms.video.videoconverter.MediaConverter; -import org.thoughtcrime.securesms.video.videoconverter.VideoInput; +import org.thoughtcrime.securesms.media.MediaInput; import java.io.Closeable; import java.io.FileDescriptor; @@ -129,7 +129,7 @@ public final class InMemoryTranscoder implements Closeable { final MediaConverter converter = new MediaConverter(); - converter.setInput(new VideoInput.MediaDataSourceVideoInput(dataSource)); + converter.setInput(new MediaInput.MediaDataSourceMediaInput(dataSource)); converter.setOutput(memoryFileFileDescriptor); converter.setVideoResolution(outputFormat); converter.setVideoBitrate(targetVideoBitRate); diff --git a/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/AudioTrackConverter.java b/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/AudioTrackConverter.java index 1f49c10c93..b7552a242e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/AudioTrackConverter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/AudioTrackConverter.java @@ -9,6 +9,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import org.thoughtcrime.securesms.logging.Log; +import org.thoughtcrime.securesms.media.MediaInput; import org.thoughtcrime.securesms.video.VideoUtil; import java.io.FileNotFoundException; @@ -62,7 +63,7 @@ final class AudioTrackConverter { static @Nullable AudioTrackConverter create( - final @NonNull VideoInput input, + final @NonNull MediaInput input, final long timeFrom, final long timeTo, final int audioBitrate) throws IOException { diff --git a/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/MediaConverter.java b/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/MediaConverter.java index aeacf8dbf0..e2e1e4065d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/MediaConverter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/MediaConverter.java @@ -29,6 +29,7 @@ import androidx.annotation.StringDef; import androidx.annotation.WorkerThread; import org.thoughtcrime.securesms.logging.Log; +import org.thoughtcrime.securesms.media.MediaInput; import java.io.File; import java.io.FileDescriptor; @@ -49,7 +50,7 @@ public final class MediaConverter { public static final String VIDEO_CODEC_H264 = "video/avc"; public static final String VIDEO_CODEC_H265 = "video/hevc"; - private VideoInput mInput; + private MediaInput mInput; private Output mOutput; private long mTimeFrom; @@ -69,7 +70,7 @@ public final class MediaConverter { public MediaConverter() { } - public void setInput(final @NonNull VideoInput videoInput) { + public void setInput(final @NonNull MediaInput videoInput) { mInput = videoInput; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/VideoThumbnailsExtractor.java b/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/VideoThumbnailsExtractor.java index 6641dd501d..29f3effaa5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/VideoThumbnailsExtractor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/VideoThumbnailsExtractor.java @@ -10,6 +10,7 @@ import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import org.thoughtcrime.securesms.logging.Log; +import org.thoughtcrime.securesms.media.MediaInput; import java.io.IOException; import java.nio.ByteBuffer; @@ -28,7 +29,7 @@ final class VideoThumbnailsExtractor { void failed(); } - static void extractThumbnails(final @NonNull VideoInput input, + static void extractThumbnails(final @NonNull MediaInput input, final int thumbnailCount, final int thumbnailResolution, final @NonNull Callback callback) diff --git a/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/VideoThumbnailsView.java b/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/VideoThumbnailsView.java index 5ae54266ee..e2ec43f8ac 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/VideoThumbnailsView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/VideoThumbnailsView.java @@ -15,6 +15,7 @@ import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import org.thoughtcrime.securesms.logging.Log; +import org.thoughtcrime.securesms.media.MediaInput; import java.io.IOException; import java.lang.ref.WeakReference; @@ -26,7 +27,7 @@ public class VideoThumbnailsView extends View { private static final String TAG = Log.tag(VideoThumbnailsView.class); - private VideoInput input; + private MediaInput input; private ArrayList thumbnails; private AsyncTask thumbnailsTask; private OnDurationListener durationListener; @@ -49,9 +50,9 @@ public class VideoThumbnailsView extends View { super(context, attrs, defStyleAttr); } - public void setInput(VideoInput input) { - this.input = input; - thumbnails = null; + public void setInput(@NonNull MediaInput input) { + this.input = input; + this.thumbnails = null; if (thumbnailsTask != null) { thumbnailsTask.cancel(true); thumbnailsTask = null; @@ -164,14 +165,14 @@ public class VideoThumbnailsView extends View { private static class ThumbnailsTask extends AsyncTask { final WeakReference viewReference; - final VideoInput input; + final MediaInput input; final float thumbnailWidth; final float thumbnailHeight; final int thumbnailCount; long duration; - ThumbnailsTask(final @NonNull VideoThumbnailsView view, final @NonNull VideoInput input, final float thumbnailWidth, final float thumbnailHeight, final int thumbnailCount) { - viewReference = new WeakReference<>(view); + ThumbnailsTask(final @NonNull VideoThumbnailsView view, final @NonNull MediaInput input, final float thumbnailWidth, final float thumbnailHeight, final int thumbnailCount) { + this.viewReference = new WeakReference<>(view); this.input = input; this.thumbnailWidth = thumbnailWidth; this.thumbnailHeight = thumbnailHeight; diff --git a/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/VideoTrackConverter.java b/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/VideoTrackConverter.java index 8b09b9a17a..aa3382322d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/VideoTrackConverter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/video/videoconverter/VideoTrackConverter.java @@ -11,6 +11,7 @@ import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import org.thoughtcrime.securesms.logging.Log; +import org.thoughtcrime.securesms.media.MediaInput; import java.io.FileNotFoundException; import java.io.IOException; @@ -66,7 +67,7 @@ final class VideoTrackConverter { @RequiresApi(23) static @Nullable VideoTrackConverter create( - final @NonNull VideoInput input, + final @NonNull MediaInput input, final long timeFrom, final long timeTo, final int videoResolution,