OSDN Git Service

Bug fix: Use getDuration vs. getTimelineDuration in Effect and Overlay limits calcula...
authorGil Dobjanschi <virgild@google.com>
Thu, 28 Oct 2010 23:24:41 +0000 (16:24 -0700)
committerGil Dobjanschi <virgild@google.com>
Thu, 28 Oct 2010 23:24:41 +0000 (16:24 -0700)
Change-Id: I5f619807435dc75c285446bfd60327bc1c1ecacd

media/java/android/media/videoeditor/Effect.java
media/java/android/media/videoeditor/MediaImageItem.java
media/java/android/media/videoeditor/MediaItem.java
media/java/android/media/videoeditor/MediaVideoItem.java
media/java/android/media/videoeditor/Overlay.java

index f5e6a67..8547e13 100755 (executable)
@@ -57,7 +57,7 @@ public abstract class Effect {
             throw new IllegalArgumentException("Media item cannot be null");\r
         }\r
 \r
-        if (startTimeMs + durationMs > mediaItem.getTimelineDuration()) {\r
+        if (startTimeMs + durationMs > mediaItem.getDuration()) {\r
             throw new IllegalArgumentException("Invalid start time and duration");\r
         }\r
 \r
@@ -81,7 +81,7 @@ public abstract class Effect {
      * @param durationMs of the effect in milliseconds\r
      */\r
     public void setDuration(long durationMs) {\r
-        if (mStartTimeMs + durationMs > mMediaItem.getTimelineDuration()) {\r
+        if (mStartTimeMs + durationMs > mMediaItem.getDuration()) {\r
             throw new IllegalArgumentException("Duration is too large");\r
         }\r
 \r
@@ -107,7 +107,7 @@ public abstract class Effect {
      *            of the media item in milliseconds\r
      */\r
     public void setStartTime(long startTimeMs) {\r
-        if (startTimeMs + mDurationMs > mMediaItem.getTimelineDuration()) {\r
+        if (startTimeMs + mDurationMs > mMediaItem.getDuration()) {\r
             throw new IllegalArgumentException("Start time is too large");\r
         }\r
 \r
@@ -130,7 +130,7 @@ public abstract class Effect {
      * @param durationMs The duration in milliseconds\r
      */\r
     public void setStartTimeAndDuration(long startTimeMs, long durationMs) {\r
-        if (startTimeMs + durationMs > mMediaItem.getTimelineDuration()) {\r
+        if (startTimeMs + durationMs > mMediaItem.getDuration()) {\r
             throw new IllegalArgumentException("Invalid start time or duration");\r
         }\r
 \r
index d2f3694..6dc36c2 100755 (executable)
@@ -172,6 +172,14 @@ public class MediaImageItem extends MediaItem {
      * {@inheritDoc}\r
      */\r
     @Override\r
+    public long getDuration() {\r
+        return mDurationMs;\r
+    }\r
+\r
+    /*\r
+     * {@inheritDoc}\r
+     */\r
+    @Override\r
     public long getTimelineDuration() {\r
         return mDurationMs;\r
     }\r
index 40d3619..04878f7 100755 (executable)
@@ -174,6 +174,11 @@ public abstract class MediaItem {
     public abstract long getTimelineDuration();\r
 \r
     /**\r
+     * @return The is the full duration of the media item (not trimmed)\r
+     */\r
+    public abstract long getDuration();\r
+\r
+    /**\r
      * @return The source file type\r
      */\r
     public abstract int getFileType();\r
@@ -223,7 +228,7 @@ public abstract class MediaItem {
             throw new IllegalArgumentException("Effect already exists: " + effect.getId());\r
         }\r
 \r
-        if (effect.getStartTime() + effect.getDuration() > getTimelineDuration()) {\r
+        if (effect.getStartTime() + effect.getDuration() > getDuration()) {\r
             throw new IllegalArgumentException(\r
                     "Effect start time + effect duration > media clip duration");\r
         }\r
@@ -300,7 +305,7 @@ public abstract class MediaItem {
             throw new IllegalArgumentException("Overlay already exists: " + overlay.getId());\r
         }\r
 \r
-        if (overlay.getStartTime() + overlay.getDuration() > getTimelineDuration()) {\r
+        if (overlay.getStartTime() + overlay.getDuration() > getDuration()) {\r
             throw new IllegalArgumentException(\r
                     "Overlay start time + overlay duration > media clip duration");\r
         }\r
@@ -455,7 +460,7 @@ public abstract class MediaItem {
         }\r
 \r
         if (mEndTransition != null) {\r
-            if (effect.getStartTime() + effect.getDuration() > getTimelineDuration()\r
+            if (effect.getStartTime() + effect.getDuration() > getDuration()\r
                     - mEndTransition.getDuration()) {\r
                 mEndTransition.invalidate();\r
             }\r
@@ -476,7 +481,7 @@ public abstract class MediaItem {
         }\r
 \r
         if (mEndTransition != null) {\r
-            if (overlay.getStartTime() + overlay.getDuration() > getTimelineDuration()\r
+            if (overlay.getStartTime() + overlay.getDuration() > getDuration()\r
                     - mEndTransition.getDuration()) {\r
                 mEndTransition.invalidate();\r
             }\r
@@ -511,7 +516,7 @@ public abstract class MediaItem {
         for (Effect effect : effects) {\r
             // Adjust the start time if necessary\r
             final long effectStartTimeMs;\r
-            if (effect.getStartTime() > getTimelineDuration()) {\r
+            if (effect.getStartTime() > getDuration()) {\r
                 effectStartTimeMs = 0;\r
             } else {\r
                 effectStartTimeMs = effect.getStartTime();\r
@@ -519,8 +524,8 @@ public abstract class MediaItem {
 \r
             // Adjust the duration if necessary\r
             final long effectDurationMs;\r
-            if (effectStartTimeMs + effect.getDuration() > getTimelineDuration()) {\r
-                effectDurationMs = getTimelineDuration() - effectStartTimeMs;\r
+            if (effectStartTimeMs + effect.getDuration() > getDuration()) {\r
+                effectDurationMs = getDuration() - effectStartTimeMs;\r
             } else {\r
                 effectDurationMs = effect.getDuration();\r
             }\r
@@ -540,7 +545,7 @@ public abstract class MediaItem {
         for (Overlay overlay : overlays) {\r
             // Adjust the start time if necessary\r
             final long overlayStartTimeMs;\r
-            if (overlay.getStartTime() > getTimelineDuration()) {\r
+            if (overlay.getStartTime() > getDuration()) {\r
                 overlayStartTimeMs = 0;\r
             } else {\r
                 overlayStartTimeMs = overlay.getStartTime();\r
@@ -548,8 +553,8 @@ public abstract class MediaItem {
 \r
             // Adjust the duration if necessary\r
             final long overlayDurationMs;\r
-            if (overlayStartTimeMs + overlay.getDuration() > getTimelineDuration()) {\r
-                overlayDurationMs = getTimelineDuration() - overlayStartTimeMs;\r
+            if (overlayStartTimeMs + overlay.getDuration() > getDuration()) {\r
+                overlayDurationMs = getDuration() - overlayStartTimeMs;\r
             } else {\r
                 overlayDurationMs = overlay.getDuration();\r
             }\r
index f09219d..1fa98e7 100755 (executable)
@@ -243,16 +243,16 @@ public class MediaVideoItem extends MediaItem {
         return mHeight;\r
     }\r
 \r
-    /**\r
-     * @return The duration of the video clip\r
+    /*\r
+     * {@inheritDoc}\r
      */\r
+    @Override\r
     public long getDuration() {\r
         return mDurationMs;\r
     }\r
 \r
-    /**\r
-     * @return The timeline duration. This is the actual duration in the\r
-     *      timeline (trimmed duration)\r
+    /*\r
+     * {@inheritDoc}\r
      */\r
     @Override\r
     public long getTimelineDuration() {\r
index c58b5cb..fff9ca2 100755 (executable)
@@ -60,7 +60,7 @@ public abstract class Overlay {
             throw new IllegalArgumentException("Media item cannot be null");\r
         }\r
 \r
-        if (startTimeMs + durationMs > mediaItem.getTimelineDuration()) {\r
+        if (startTimeMs + durationMs > mediaItem.getDuration()) {\r
             throw new IllegalArgumentException("Invalid start time and duration");\r
         }\r
 \r
@@ -92,7 +92,7 @@ public abstract class Overlay {
      * @param durationMs The duration in milliseconds\r
      */\r
     public void setDuration(long durationMs) {\r
-        if (mStartTimeMs + durationMs > mMediaItem.getTimelineDuration()) {\r
+        if (mStartTimeMs + durationMs > mMediaItem.getDuration()) {\r
             throw new IllegalArgumentException("Duration is too large");\r
         }\r
 \r
@@ -116,7 +116,7 @@ public abstract class Overlay {
      * @param startTimeMs start time in milliseconds\r
      */\r
     public void setStartTime(long startTimeMs) {\r
-        if (startTimeMs + mDurationMs > mMediaItem.getTimelineDuration()) {\r
+        if (startTimeMs + mDurationMs > mMediaItem.getDuration()) {\r
             throw new IllegalArgumentException("Start time is too large");\r
         }\r
 \r
@@ -132,7 +132,7 @@ public abstract class Overlay {
      * @param durationMs The duration in milliseconds\r
      */\r
     public void setStartTimeAndDuration(long startTimeMs, long durationMs) {\r
-        if (startTimeMs + durationMs > mMediaItem.getTimelineDuration()) {\r
+        if (startTimeMs + durationMs > mMediaItem.getDuration()) {\r
             throw new IllegalArgumentException("Invalid start time or duration");\r
         }\r
 \r