Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 393b2f9b authored by Gil Dobjanschi's avatar Gil Dobjanschi Committed by Android (Google) Code Review
Browse files

Merge "Bug fix: Use getDuration vs. getTimelineDuration in Effect and Overlay limits calculations."

parents d6d86efe 6ea92eca
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ public abstract class Effect {
            throw new IllegalArgumentException("Media item cannot be null");
        }

        if (startTimeMs + durationMs > mediaItem.getTimelineDuration()) {
        if (startTimeMs + durationMs > mediaItem.getDuration()) {
            throw new IllegalArgumentException("Invalid start time and duration");
        }

@@ -81,7 +81,7 @@ public abstract class Effect {
     * @param durationMs of the effect in milliseconds
     */
    public void setDuration(long durationMs) {
        if (mStartTimeMs + durationMs > mMediaItem.getTimelineDuration()) {
        if (mStartTimeMs + durationMs > mMediaItem.getDuration()) {
            throw new IllegalArgumentException("Duration is too large");
        }

@@ -107,7 +107,7 @@ public abstract class Effect {
     *            of the media item in milliseconds
     */
    public void setStartTime(long startTimeMs) {
        if (startTimeMs + mDurationMs > mMediaItem.getTimelineDuration()) {
        if (startTimeMs + mDurationMs > mMediaItem.getDuration()) {
            throw new IllegalArgumentException("Start time is too large");
        }

@@ -130,7 +130,7 @@ public abstract class Effect {
     * @param durationMs The duration in milliseconds
     */
    public void setStartTimeAndDuration(long startTimeMs, long durationMs) {
        if (startTimeMs + durationMs > mMediaItem.getTimelineDuration()) {
        if (startTimeMs + durationMs > mMediaItem.getDuration()) {
            throw new IllegalArgumentException("Invalid start time or duration");
        }

+8 −0
Original line number Diff line number Diff line
@@ -168,6 +168,14 @@ public class MediaImageItem extends MediaItem {
        adjustEffects();
    }

    /*
     * {@inheritDoc}
     */
    @Override
    public long getDuration() {
        return mDurationMs;
    }

    /*
     * {@inheritDoc}
     */
+15 −10
Original line number Diff line number Diff line
@@ -173,6 +173,11 @@ public abstract class MediaItem {
     */
    public abstract long getTimelineDuration();

    /**
     * @return The is the full duration of the media item (not trimmed)
     */
    public abstract long getDuration();

    /**
     * @return The source file type
     */
@@ -223,7 +228,7 @@ public abstract class MediaItem {
            throw new IllegalArgumentException("Effect already exists: " + effect.getId());
        }

        if (effect.getStartTime() + effect.getDuration() > getTimelineDuration()) {
        if (effect.getStartTime() + effect.getDuration() > getDuration()) {
            throw new IllegalArgumentException(
                    "Effect start time + effect duration > media clip duration");
        }
@@ -300,7 +305,7 @@ public abstract class MediaItem {
            throw new IllegalArgumentException("Overlay already exists: " + overlay.getId());
        }

        if (overlay.getStartTime() + overlay.getDuration() > getTimelineDuration()) {
        if (overlay.getStartTime() + overlay.getDuration() > getDuration()) {
            throw new IllegalArgumentException(
                    "Overlay start time + overlay duration > media clip duration");
        }
@@ -455,7 +460,7 @@ public abstract class MediaItem {
        }

        if (mEndTransition != null) {
            if (effect.getStartTime() + effect.getDuration() > getTimelineDuration()
            if (effect.getStartTime() + effect.getDuration() > getDuration()
                    - mEndTransition.getDuration()) {
                mEndTransition.invalidate();
            }
@@ -476,7 +481,7 @@ public abstract class MediaItem {
        }

        if (mEndTransition != null) {
            if (overlay.getStartTime() + overlay.getDuration() > getTimelineDuration()
            if (overlay.getStartTime() + overlay.getDuration() > getDuration()
                    - mEndTransition.getDuration()) {
                mEndTransition.invalidate();
            }
@@ -511,7 +516,7 @@ public abstract class MediaItem {
        for (Effect effect : effects) {
            // Adjust the start time if necessary
            final long effectStartTimeMs;
            if (effect.getStartTime() > getTimelineDuration()) {
            if (effect.getStartTime() > getDuration()) {
                effectStartTimeMs = 0;
            } else {
                effectStartTimeMs = effect.getStartTime();
@@ -519,8 +524,8 @@ public abstract class MediaItem {

            // Adjust the duration if necessary
            final long effectDurationMs;
            if (effectStartTimeMs + effect.getDuration() > getTimelineDuration()) {
                effectDurationMs = getTimelineDuration() - effectStartTimeMs;
            if (effectStartTimeMs + effect.getDuration() > getDuration()) {
                effectDurationMs = getDuration() - effectStartTimeMs;
            } else {
                effectDurationMs = effect.getDuration();
            }
@@ -540,7 +545,7 @@ public abstract class MediaItem {
        for (Overlay overlay : overlays) {
            // Adjust the start time if necessary
            final long overlayStartTimeMs;
            if (overlay.getStartTime() > getTimelineDuration()) {
            if (overlay.getStartTime() > getDuration()) {
                overlayStartTimeMs = 0;
            } else {
                overlayStartTimeMs = overlay.getStartTime();
@@ -548,8 +553,8 @@ public abstract class MediaItem {

            // Adjust the duration if necessary
            final long overlayDurationMs;
            if (overlayStartTimeMs + overlay.getDuration() > getTimelineDuration()) {
                overlayDurationMs = getTimelineDuration() - overlayStartTimeMs;
            if (overlayStartTimeMs + overlay.getDuration() > getDuration()) {
                overlayDurationMs = getDuration() - overlayStartTimeMs;
            } else {
                overlayDurationMs = overlay.getDuration();
            }
+5 −5
Original line number Diff line number Diff line
@@ -243,16 +243,16 @@ public class MediaVideoItem extends MediaItem {
        return mHeight;
    }

    /**
     * @return The duration of the video clip
    /*
     * {@inheritDoc}
     */
    @Override
    public long getDuration() {
        return mDurationMs;
    }

    /**
     * @return The timeline duration. This is the actual duration in the
     *      timeline (trimmed duration)
    /*
     * {@inheritDoc}
     */
    @Override
    public long getTimelineDuration() {
+4 −4
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ public abstract class Overlay {
            throw new IllegalArgumentException("Media item cannot be null");
        }

        if (startTimeMs + durationMs > mediaItem.getTimelineDuration()) {
        if (startTimeMs + durationMs > mediaItem.getDuration()) {
            throw new IllegalArgumentException("Invalid start time and duration");
        }

@@ -92,7 +92,7 @@ public abstract class Overlay {
     * @param durationMs The duration in milliseconds
     */
    public void setDuration(long durationMs) {
        if (mStartTimeMs + durationMs > mMediaItem.getTimelineDuration()) {
        if (mStartTimeMs + durationMs > mMediaItem.getDuration()) {
            throw new IllegalArgumentException("Duration is too large");
        }

@@ -116,7 +116,7 @@ public abstract class Overlay {
     * @param startTimeMs start time in milliseconds
     */
    public void setStartTime(long startTimeMs) {
        if (startTimeMs + mDurationMs > mMediaItem.getTimelineDuration()) {
        if (startTimeMs + mDurationMs > mMediaItem.getDuration()) {
            throw new IllegalArgumentException("Start time is too large");
        }

@@ -132,7 +132,7 @@ public abstract class Overlay {
     * @param durationMs The duration in milliseconds
     */
    public void setStartTimeAndDuration(long startTimeMs, long durationMs) {
        if (startTimeMs + durationMs > mMediaItem.getTimelineDuration()) {
        if (startTimeMs + durationMs > mMediaItem.getDuration()) {
            throw new IllegalArgumentException("Invalid start time or duration");
        }