From 5276f797e5dd7e7c8b93156ff10ddd222263a73a Mon Sep 17 00:00:00 2001 From: sheenachhabra Date: Wed, 23 Aug 2023 19:07:34 +0100 Subject: [PATCH] Add buildUpon() and setMediaItem() method in EditedMediaItem For pause/resume feature we need to build upon original EditedMediaItem and set a modified MediaItem to it. PiperOrigin-RevId: 559484129 --- .../media3/transformer/EditedMediaItem.java | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/EditedMediaItem.java b/libraries/transformer/src/main/java/androidx/media3/transformer/EditedMediaItem.java index 28fcd6808a..23a4e21e31 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/EditedMediaItem.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/EditedMediaItem.java @@ -33,8 +33,7 @@ public final class EditedMediaItem { /** A builder for {@link EditedMediaItem} instances. */ public static final class Builder { - private final MediaItem mediaItem; - + private MediaItem mediaItem; private boolean removeAudio; private boolean removeVideo; private boolean flattenForSlowMotion; @@ -57,6 +56,16 @@ public final class EditedMediaItem { effects = Effects.EMPTY; } + private Builder(EditedMediaItem editedMediaItem) { + this.mediaItem = editedMediaItem.mediaItem; + this.removeAudio = editedMediaItem.removeAudio; + this.removeVideo = editedMediaItem.removeVideo; + this.flattenForSlowMotion = editedMediaItem.flattenForSlowMotion; + this.durationUs = editedMediaItem.durationUs; + this.frameRate = editedMediaItem.frameRate; + this.effects = editedMediaItem.effects; + } + /** * Sets whether to remove the audio from the {@link MediaItem}. * @@ -182,6 +191,18 @@ public final class EditedMediaItem { frameRate, effects); } + + /** + * Sets the {@link MediaItem} on which transformations are applied. + * + * @param mediaItem The {@link MediaItem}. + * @return This builder. + */ + @CanIgnoreReturnValue + /* package */ Builder setMediaItem(MediaItem mediaItem) { + this.mediaItem = mediaItem; + return this; + } } /** The {@link MediaItem} on which transformations are applied. */ @@ -239,4 +260,9 @@ public final class EditedMediaItem { this.frameRate = frameRate; this.effects = effects; } + + /** Returns a {@link Builder} initialized with the values of this instance. */ + /* package */ Builder buildUpon() { + return new Builder(this); + } }