diff options
| author | 2011-02-02 22:06:33 -0800 | |
|---|---|---|
| committer | 2011-02-02 22:06:33 -0800 | |
| commit | 3f9a851e07f0fbe0f5440afd82f26b52ca79428e (patch) | |
| tree | cf6f23bc3bec496f39bd9746ab4eaebb458d719d | |
| parent | 020c021c62f804ed08d89a3a38457a002184158e (diff) | |
| parent | ed2c513337ae7581ef73b88424da91ef2d862a78 (diff) | |
am ed2c5133: Merge "Bug fix: 3419287 Deleted images and video clips invalidate the entire project" into honeycomb
* commit 'ed2c513337ae7581ef73b88424da91ef2d862a78':
Bug fix: 3419287 Deleted images and video clips invalidate the entire project
| -rwxr-xr-x | media/java/android/media/videoeditor/VideoEditorImpl.java | 395 |
1 files changed, 188 insertions, 207 deletions
diff --git a/media/java/android/media/videoeditor/VideoEditorImpl.java b/media/java/android/media/videoeditor/VideoEditorImpl.java index 27ab799416bd..2a9a5395415e 100755 --- a/media/java/android/media/videoeditor/VideoEditorImpl.java +++ b/media/java/android/media/videoeditor/VideoEditorImpl.java @@ -33,6 +33,8 @@ import org.xmlpull.v1.XmlSerializer; import android.graphics.Bitmap; import android.graphics.Rect; +import android.media.videoeditor.MediaImageItem; +import android.media.videoeditor.MediaItem; import android.util.Log; import android.util.Xml; import android.view.Surface; @@ -772,8 +774,7 @@ public class VideoEditorImpl implements VideoEditor { return mediaItem; } - private synchronized MediaItem removeMediaItem(String mediaItemId, - boolean flag) { + private synchronized MediaItem removeMediaItem(String mediaItemId, boolean flag) { final String firstItemString = mMediaItems.get(0).getId(); final MediaItem mediaItem = getMediaItem(mediaItemId); @@ -879,14 +880,15 @@ public class VideoEditorImpl implements VideoEditor { /** * the project form XML */ - private void load() throws FileNotFoundException, XmlPullParserException, - IOException { + private void load() throws FileNotFoundException, XmlPullParserException, IOException { final File file = new File(mProjectPath, PROJECT_FILENAME); /** * Load the metadata */ final FileInputStream fis = new FileInputStream(file); try { + final List<String> ignoredMediaItems = new ArrayList<String>(); + final XmlPullParser parser = Xml.newPullParser(); parser.setInput(fis, "UTF-8"); int eventType = parser.getEventType(); @@ -898,74 +900,43 @@ public class VideoEditorImpl implements VideoEditor { case XmlPullParser.START_TAG: { name = parser.getName(); if (TAG_PROJECT.equals(name)) { - mAspectRatio = - Integer.parseInt(parser.getAttributeValue("", + mAspectRatio = Integer.parseInt(parser.getAttributeValue("", ATTR_ASPECT_RATIO)); final boolean mRegenPCM = - Boolean.parseBoolean(parser.getAttributeValue("", + Boolean.parseBoolean(parser.getAttributeValue("", ATTR_REGENERATE_PCM)); mMANativeHelper.setAudioflag(mRegenPCM); - } else if (TAG_MEDIA_ITEM.equals(name)) { - final String mediaItemId = - parser.getAttributeValue("", ATTR_ID); - final String type = - parser.getAttributeValue("", ATTR_TYPE); - final String filename = - parser.getAttributeValue("", ATTR_FILENAME); - final int renderingMode = - Integer.parseInt(parser.getAttributeValue("", - ATTR_RENDERING_MODE)); - - if (MediaImageItem.class.getSimpleName().equals(type)) { - final long durationMs = Long.parseLong(parser.getAttributeValue("", - ATTR_DURATION)); - currentMediaItem = new MediaImageItem(this, mediaItemId, filename, - durationMs, renderingMode); - } else if (MediaVideoItem.class.getSimpleName().equals(type)) { - final long beginMs = Long.parseLong(parser.getAttributeValue("", - ATTR_BEGIN_TIME)); - final long endMs = Long.parseLong(parser.getAttributeValue("", - ATTR_END_TIME)); - final int volume = Integer.parseInt(parser.getAttributeValue("", - ATTR_VOLUME)); - final boolean muted = Boolean.parseBoolean(parser.getAttributeValue("", - ATTR_MUTED)); - final String audioWaveformFilename = parser.getAttributeValue("", - ATTR_AUDIO_WAVEFORM_FILENAME); - currentMediaItem = new MediaVideoItem(this, mediaItemId, filename, - renderingMode, beginMs, endMs, volume, muted, - audioWaveformFilename); - - final long beginTimeMs = Long.parseLong(parser.getAttributeValue("", - ATTR_BEGIN_TIME)); - final long endTimeMs = Long.parseLong(parser.getAttributeValue("", - ATTR_END_TIME)); - ((MediaVideoItem)currentMediaItem).setExtractBoundaries(beginTimeMs, - endTimeMs); - - final int volumePercent = Integer.parseInt(parser.getAttributeValue("", - ATTR_VOLUME)); - ((MediaVideoItem)currentMediaItem).setVolume(volumePercent); - } else { - Log.e(TAG, "Unknown media item type: " + type); - currentMediaItem = null; - } - - if (currentMediaItem != null) { + final String mediaItemId = parser.getAttributeValue("", ATTR_ID); + try { + currentMediaItem = parseMediaItem(parser); mMediaItems.add(currentMediaItem); + } catch (Exception ex) { + Log.w(TAG, "Cannot load media item: " + mediaItemId, ex); + currentMediaItem = null; + // Ignore the media item + ignoredMediaItems.add(mediaItemId); } } else if (TAG_TRANSITION.equals(name)) { - final Transition transition = parseTransition(parser); - if (transition != null) { - mTransitions.add(transition); + try { + final Transition transition = parseTransition(parser, + ignoredMediaItems); + // The transition will be null if the bounding + // media items are ignored + if (transition != null) { + mTransitions.add(transition); + } + } catch (Exception ex) { + Log.w(TAG, "Cannot load transition", ex); } } else if (TAG_OVERLAY.equals(name)) { if (currentMediaItem != null) { - currentOverlay = parseOverlay(parser, currentMediaItem); - if (currentOverlay != null) { + try { + currentOverlay = parseOverlay(parser, currentMediaItem); currentMediaItem.addOverlay(currentOverlay); + } catch (Exception ex) { + Log.w(TAG, "Cannot load overlay", ex); } } } else if (TAG_OVERLAY_USER_ATTRIBUTES.equals(name)) { @@ -978,40 +949,45 @@ public class VideoEditorImpl implements VideoEditor { } } else if (TAG_EFFECT.equals(name)) { if (currentMediaItem != null) { - final Effect effect = parseEffect(parser, currentMediaItem); - if (effect != null) { + try { + final Effect effect = parseEffect(parser, currentMediaItem); currentMediaItem.addEffect(effect); - } - if (effect instanceof EffectKenBurns) { - final boolean isImageClipGenerated = - Boolean.parseBoolean(parser.getAttributeValue("", - ATTR_IS_IMAGE_CLIP_GENERATED)); - if(isImageClipGenerated) { - String filename = parser.getAttributeValue("", - ATTR_GENERATED_IMAGE_CLIP); - if (new File(filename).exists() == true) { + + if (effect instanceof EffectKenBurns) { + final boolean isImageClipGenerated = + Boolean.parseBoolean(parser.getAttributeValue("", + ATTR_IS_IMAGE_CLIP_GENERATED)); + if(isImageClipGenerated) { + final String filename = parser.getAttributeValue("", + ATTR_GENERATED_IMAGE_CLIP); + if (new File(filename).exists() == true) { + ((MediaImageItem)currentMediaItem). + setGeneratedImageClip(filename); + ((MediaImageItem)currentMediaItem). + setRegenerateClip(false); + } else { + ((MediaImageItem)currentMediaItem). + setGeneratedImageClip(null); + ((MediaImageItem)currentMediaItem). + setRegenerateClip(true); + } + } else { ((MediaImageItem)currentMediaItem). - setGeneratedImageClip(filename); + setGeneratedImageClip(null); ((MediaImageItem)currentMediaItem). - setRegenerateClip(false); - } else { - ((MediaImageItem)currentMediaItem). - setGeneratedImageClip(null); - ((MediaImageItem)currentMediaItem). - setRegenerateClip(true); - } - } else { - ((MediaImageItem)currentMediaItem). - setGeneratedImageClip(null); - ((MediaImageItem)currentMediaItem). - setRegenerateClip(true); + setRegenerateClip(true); + } } + } catch (Exception ex) { + Log.w(TAG, "Cannot load effect", ex); } } } else if (TAG_AUDIO_TRACK.equals(name)) { - final AudioTrack audioTrack = parseAudioTrack(parser); - if (audioTrack != null) { + try { + final AudioTrack audioTrack = parseAudioTrack(parser); addAudioTrack(audioTrack); + } catch (Exception ex) { + Log.w(TAG, "Cannot load audio track", ex); } } break; @@ -1042,34 +1018,81 @@ public class VideoEditorImpl implements VideoEditor { } /** + * Parse the media item + * + * @param parser The parser + * @return The media item + */ + private MediaItem parseMediaItem(XmlPullParser parser) throws IOException { + final String mediaItemId = parser.getAttributeValue("", ATTR_ID); + final String type = parser.getAttributeValue("", ATTR_TYPE); + final String filename = parser.getAttributeValue("", ATTR_FILENAME); + final int renderingMode = Integer.parseInt(parser.getAttributeValue("", + ATTR_RENDERING_MODE)); + + final MediaItem currentMediaItem; + if (MediaImageItem.class.getSimpleName().equals(type)) { + final long durationMs = Long.parseLong(parser.getAttributeValue("", ATTR_DURATION)); + currentMediaItem = new MediaImageItem(this, mediaItemId, filename, + durationMs, renderingMode); + } else if (MediaVideoItem.class.getSimpleName().equals(type)) { + final long beginMs = Long.parseLong(parser.getAttributeValue("", ATTR_BEGIN_TIME)); + final long endMs = Long.parseLong(parser.getAttributeValue("", ATTR_END_TIME)); + final int volume = Integer.parseInt(parser.getAttributeValue("", ATTR_VOLUME)); + final boolean muted = Boolean.parseBoolean(parser.getAttributeValue("", ATTR_MUTED)); + final String audioWaveformFilename = parser.getAttributeValue("", + ATTR_AUDIO_WAVEFORM_FILENAME); + currentMediaItem = new MediaVideoItem(this, mediaItemId, filename, + renderingMode, beginMs, endMs, volume, muted, audioWaveformFilename); + + final long beginTimeMs = Long.parseLong(parser.getAttributeValue("", ATTR_BEGIN_TIME)); + final long endTimeMs = Long.parseLong(parser.getAttributeValue("", ATTR_END_TIME)); + ((MediaVideoItem)currentMediaItem).setExtractBoundaries(beginTimeMs, endTimeMs); + + final int volumePercent = Integer.parseInt(parser.getAttributeValue("", ATTR_VOLUME)); + ((MediaVideoItem)currentMediaItem).setVolume(volumePercent); + } else { + throw new IllegalArgumentException("Unknown media item type: " + type); + } + + return currentMediaItem; + } + + /** * Parse the transition * * @param parser The parser + * @param ignoredMediaItems The list of ignored media items + * * @return The transition */ - private Transition parseTransition(XmlPullParser parser) { + private Transition parseTransition(XmlPullParser parser, List<String> ignoredMediaItems) { final String transitionId = parser.getAttributeValue("", ATTR_ID); final String type = parser.getAttributeValue("", ATTR_TYPE); - final long durationMs = Long.parseLong(parser.getAttributeValue("", - ATTR_DURATION)); - final int behavior = Integer.parseInt(parser.getAttributeValue("", - ATTR_BEHAVIOR)); - final boolean isTransitionGenerated; + final long durationMs = Long.parseLong(parser.getAttributeValue("", ATTR_DURATION)); + final int behavior = Integer.parseInt(parser.getAttributeValue("", ATTR_BEHAVIOR)); - - final String beforeMediaItemId = parser.getAttributeValue("", - ATTR_BEFORE_MEDIA_ITEM_ID); + final String beforeMediaItemId = parser.getAttributeValue("", ATTR_BEFORE_MEDIA_ITEM_ID); final MediaItem beforeMediaItem; if (beforeMediaItemId != null) { + if (ignoredMediaItems.contains(beforeMediaItemId)) { + // This transition is ignored + return null; + } + beforeMediaItem = getMediaItem(beforeMediaItemId); } else { beforeMediaItem = null; } - final String afterMediaItemId = parser.getAttributeValue("", - ATTR_AFTER_MEDIA_ITEM_ID); + final String afterMediaItemId = parser.getAttributeValue("", ATTR_AFTER_MEDIA_ITEM_ID); final MediaItem afterMediaItem; if (afterMediaItemId != null) { + if (ignoredMediaItems.contains(afterMediaItemId)) { + // This transition is ignored + return null; + } + afterMediaItem = getMediaItem(afterMediaItemId); } else { afterMediaItem = null; @@ -1093,18 +1116,10 @@ public class VideoEditorImpl implements VideoEditor { transition = new TransitionFadeBlack(transitionId, afterMediaItem, beforeMediaItem, durationMs, behavior); } else { - transition = null; + throw new IllegalArgumentException("Invalid transition type: " + type); } - if (beforeMediaItem != null) { - beforeMediaItem.setBeginTransition(transition); - } - - if (afterMediaItem != null) { - afterMediaItem.setEndTransition(transition); - } - - isTransitionGenerated = Boolean.parseBoolean(parser.getAttributeValue("", + final boolean isTransitionGenerated = Boolean.parseBoolean(parser.getAttributeValue("", ATTR_IS_TRANSITION_GENERATED)); if (isTransitionGenerated == true) { final String transitionFile = parser.getAttributeValue("", @@ -1116,10 +1131,19 @@ public class VideoEditorImpl implements VideoEditor { transition.setFilename(null); } } + + // Use the transition + if (beforeMediaItem != null) { + beforeMediaItem.setBeginTransition(transition); + } + + if (afterMediaItem != null) { + afterMediaItem.setEndTransition(transition); + } + return transition; } - /** * Parse the overlay * @@ -1131,40 +1155,32 @@ public class VideoEditorImpl implements VideoEditor { private Overlay parseOverlay(XmlPullParser parser, MediaItem mediaItem) { final String overlayId = parser.getAttributeValue("", ATTR_ID); final String type = parser.getAttributeValue("", ATTR_TYPE); - final long durationMs = Long.parseLong(parser.getAttributeValue("", - ATTR_DURATION)); - final long startTimeMs = Long.parseLong(parser.getAttributeValue("", - ATTR_BEGIN_TIME)); + final long durationMs = Long.parseLong(parser.getAttributeValue("", ATTR_DURATION)); + final long startTimeMs = Long.parseLong(parser.getAttributeValue("", ATTR_BEGIN_TIME)); final Overlay overlay; if (OverlayFrame.class.getSimpleName().equals(type)) { final String filename = parser.getAttributeValue("", ATTR_FILENAME); - overlay = new OverlayFrame(mediaItem, overlayId, filename, - startTimeMs, durationMs); + overlay = new OverlayFrame(mediaItem, overlayId, filename, startTimeMs, durationMs); } else { - overlay = null; + throw new IllegalArgumentException("Invalid overlay type: " + type); } - final String overlayRgbFileName = parser.getAttributeValue("", - ATTR_OVERLAY_RGB_FILENAME); + final String overlayRgbFileName = parser.getAttributeValue("", ATTR_OVERLAY_RGB_FILENAME); if (overlayRgbFileName != null) { ((OverlayFrame)overlay).setFilename(overlayRgbFileName); - final int overlayFrameWidth = - Integer.parseInt(parser.getAttributeValue("", + final int overlayFrameWidth = Integer.parseInt(parser.getAttributeValue("", ATTR_OVERLAY_FRAME_WIDTH)); - final int overlayFrameHeight = - Integer.parseInt(parser.getAttributeValue("", + final int overlayFrameHeight = Integer.parseInt(parser.getAttributeValue("", ATTR_OVERLAY_FRAME_HEIGHT)); ((OverlayFrame)overlay).setOverlayFrameWidth(overlayFrameWidth); ((OverlayFrame)overlay).setOverlayFrameHeight(overlayFrameHeight); - final int resizedRGBFrameWidth = - Integer.parseInt(parser.getAttributeValue("", + final int resizedRGBFrameWidth = Integer.parseInt(parser.getAttributeValue("", ATTR_OVERLAY_RESIZED_RGB_FRAME_WIDTH)); - final int resizedRGBFrameHeight = - Integer.parseInt(parser.getAttributeValue("", + final int resizedRGBFrameHeight = Integer.parseInt(parser.getAttributeValue("", ATTR_OVERLAY_RESIZED_RGB_FRAME_HEIGHT)); ((OverlayFrame)overlay).setResizedRGBSize(resizedRGBFrameWidth, resizedRGBFrameHeight); @@ -1184,21 +1200,17 @@ public class VideoEditorImpl implements VideoEditor { private Effect parseEffect(XmlPullParser parser, MediaItem mediaItem) { final String effectId = parser.getAttributeValue("", ATTR_ID); final String type = parser.getAttributeValue("", ATTR_TYPE); - final long durationMs = Long.parseLong(parser.getAttributeValue("", - ATTR_DURATION)); - final long startTimeMs = Long.parseLong(parser.getAttributeValue("", - ATTR_BEGIN_TIME)); + final long durationMs = Long.parseLong(parser.getAttributeValue("", ATTR_DURATION)); + final long startTimeMs = Long.parseLong(parser.getAttributeValue("", ATTR_BEGIN_TIME)); final Effect effect; if (EffectColor.class.getSimpleName().equals(type)) { - final int colorEffectType = - Integer.parseInt(parser.getAttributeValue("", + final int colorEffectType = Integer.parseInt(parser.getAttributeValue("", ATTR_COLOR_EFFECT_TYPE)); final int color; if (colorEffectType == EffectColor.TYPE_COLOR || colorEffectType == EffectColor.TYPE_GRADIENT) { - color = Integer.parseInt(parser.getAttributeValue("", - ATTR_COLOR_EFFECT_VALUE)); + color = Integer.parseInt(parser.getAttributeValue("", ATTR_COLOR_EFFECT_VALUE)); } else { color = 0; } @@ -1206,27 +1218,19 @@ public class VideoEditorImpl implements VideoEditor { durationMs, colorEffectType, color); } else if (EffectKenBurns.class.getSimpleName().equals(type)) { final Rect startRect = new Rect( - Integer.parseInt(parser.getAttributeValue("", - ATTR_START_RECT_LEFT)), - Integer.parseInt(parser.getAttributeValue("", - ATTR_START_RECT_TOP)), - Integer.parseInt(parser.getAttributeValue("", - ATTR_START_RECT_RIGHT)), - Integer.parseInt(parser.getAttributeValue("", - ATTR_START_RECT_BOTTOM))); + Integer.parseInt(parser.getAttributeValue("", ATTR_START_RECT_LEFT)), + Integer.parseInt(parser.getAttributeValue("", ATTR_START_RECT_TOP)), + Integer.parseInt(parser.getAttributeValue("", ATTR_START_RECT_RIGHT)), + Integer.parseInt(parser.getAttributeValue("", ATTR_START_RECT_BOTTOM))); final Rect endRect = new Rect( - Integer.parseInt(parser.getAttributeValue("", - ATTR_END_RECT_LEFT)), - Integer.parseInt(parser.getAttributeValue("", - ATTR_END_RECT_TOP)), - Integer.parseInt(parser.getAttributeValue("", - ATTR_END_RECT_RIGHT)), - Integer.parseInt(parser.getAttributeValue("", - ATTR_END_RECT_BOTTOM))); + Integer.parseInt(parser.getAttributeValue("", ATTR_END_RECT_LEFT)), + Integer.parseInt(parser.getAttributeValue("", ATTR_END_RECT_TOP)), + Integer.parseInt(parser.getAttributeValue("", ATTR_END_RECT_RIGHT)), + Integer.parseInt(parser.getAttributeValue("", ATTR_END_RECT_BOTTOM))); effect = new EffectKenBurns(mediaItem, effectId, startRect, endRect, startTimeMs, durationMs); } else { - effect = null; + throw new IllegalArgumentException("Invalid effect type: " + type); } return effect; @@ -1239,48 +1243,34 @@ public class VideoEditorImpl implements VideoEditor { * * @return The audio track */ - private AudioTrack parseAudioTrack(XmlPullParser parser) { + private AudioTrack parseAudioTrack(XmlPullParser parser) throws IOException { final String audioTrackId = parser.getAttributeValue("", ATTR_ID); final String filename = parser.getAttributeValue("", ATTR_FILENAME); - final long startTimeMs = Long.parseLong(parser.getAttributeValue("", - ATTR_START_TIME)); - final long beginMs = Long.parseLong(parser.getAttributeValue("", - ATTR_BEGIN_TIME)); - final long endMs = Long.parseLong(parser.getAttributeValue("", - ATTR_END_TIME)); - final int volume = Integer.parseInt(parser.getAttributeValue("", - ATTR_VOLUME)); - final boolean muted = Boolean.parseBoolean(parser.getAttributeValue("", - ATTR_MUTED)); - final boolean loop = Boolean.parseBoolean(parser.getAttributeValue("", - ATTR_LOOP)); - final boolean duckingEnabled = - Boolean.parseBoolean(parser.getAttributeValue("", - ATTR_DUCK_ENABLED)); - final int duckThreshold = Integer.parseInt(parser.getAttributeValue("", - ATTR_DUCK_THRESHOLD)); - final int duckedTrackVolume = - Integer.parseInt(parser.getAttributeValue("", + final long startTimeMs = Long.parseLong(parser.getAttributeValue("", ATTR_START_TIME)); + final long beginMs = Long.parseLong(parser.getAttributeValue("", ATTR_BEGIN_TIME)); + final long endMs = Long.parseLong(parser.getAttributeValue("", ATTR_END_TIME)); + final int volume = Integer.parseInt(parser.getAttributeValue("", ATTR_VOLUME)); + final boolean muted = Boolean.parseBoolean(parser.getAttributeValue("", ATTR_MUTED)); + final boolean loop = Boolean.parseBoolean(parser.getAttributeValue("", ATTR_LOOP)); + final boolean duckingEnabled = Boolean.parseBoolean( + parser.getAttributeValue("", ATTR_DUCK_ENABLED)); + final int duckThreshold = Integer.parseInt( + parser.getAttributeValue("", ATTR_DUCK_THRESHOLD)); + final int duckedTrackVolume = Integer.parseInt(parser.getAttributeValue("", ATTR_DUCKED_TRACK_VOLUME)); - final String waveformFilename = parser.getAttributeValue("", - ATTR_AUDIO_WAVEFORM_FILENAME); - try { - final AudioTrack audioTrack = new AudioTrack(this, audioTrackId, - filename, startTimeMs, - beginMs, endMs, loop, - volume, muted, - duckingEnabled, - duckThreshold, - duckedTrackVolume, - waveformFilename); - - return audioTrack; - } catch (IOException ex) { - return null; - } - } + final String waveformFilename = parser.getAttributeValue("", ATTR_AUDIO_WAVEFORM_FILENAME); + final AudioTrack audioTrack = new AudioTrack(this, audioTrackId, + filename, startTimeMs, + beginMs, endMs, loop, + volume, muted, + duckingEnabled, + duckThreshold, + duckedTrackVolume, + waveformFilename); + return audioTrack; + } /* * {@inheritDoc} @@ -1424,7 +1414,8 @@ public class VideoEditorImpl implements VideoEditor { Integer.toString(endRect.bottom)); final MediaItem mItem = effect.getMediaItem(); if(((MediaImageItem)mItem).getGeneratedImageClip() != null) { - serializer.attribute("", ATTR_IS_IMAGE_CLIP_GENERATED,Boolean.toString(true)); + serializer.attribute("", ATTR_IS_IMAGE_CLIP_GENERATED, + Boolean.toString(true)); serializer.attribute("", ATTR_GENERATED_IMAGE_CLIP, ((MediaImageItem)mItem).getGeneratedImageClip()); } else { @@ -1447,28 +1438,22 @@ public class VideoEditorImpl implements VideoEditor { for (Transition transition : mTransitions) { serializer.startTag("", TAG_TRANSITION); serializer.attribute("", ATTR_ID, transition.getId()); - serializer.attribute("", ATTR_TYPE, - transition.getClass().getSimpleName()); - serializer.attribute("", ATTR_DURATION, - Long.toString(transition.getDuration())); - serializer.attribute("", ATTR_BEHAVIOR, - Integer.toString(transition.getBehavior())); + serializer.attribute("", ATTR_TYPE, transition.getClass().getSimpleName()); + serializer.attribute("", ATTR_DURATION, Long.toString(transition.getDuration())); + serializer.attribute("", ATTR_BEHAVIOR, Integer.toString(transition.getBehavior())); serializer.attribute("", ATTR_IS_TRANSITION_GENERATED, Boolean.toString(transition.isGenerated())); if (transition.isGenerated() == true) { - serializer.attribute("", ATTR_GENERATED_TRANSITION_CLIP, - transition.mFilename); + serializer.attribute("", ATTR_GENERATED_TRANSITION_CLIP, transition.mFilename); } final MediaItem afterMediaItem = transition.getAfterMediaItem(); if (afterMediaItem != null) { - serializer.attribute("", ATTR_AFTER_MEDIA_ITEM_ID, - afterMediaItem.getId()); + serializer.attribute("", ATTR_AFTER_MEDIA_ITEM_ID, afterMediaItem.getId()); } final MediaItem beforeMediaItem = transition.getBeforeMediaItem(); if (beforeMediaItem != null) { - serializer.attribute("", ATTR_BEFORE_MEDIA_ITEM_ID, - beforeMediaItem.getId()); + serializer.attribute("", ATTR_BEFORE_MEDIA_ITEM_ID, beforeMediaItem.getId()); } if (transition instanceof TransitionSliding) { @@ -1492,14 +1477,10 @@ public class VideoEditorImpl implements VideoEditor { serializer.startTag("", TAG_AUDIO_TRACK); serializer.attribute("", ATTR_ID, at.getId()); serializer.attribute("", ATTR_FILENAME, at.getFilename()); - serializer.attribute("", ATTR_START_TIME, - Long.toString(at.getStartTime())); - serializer.attribute("", ATTR_BEGIN_TIME, - Long.toString(at.getBoundaryBeginTime())); - serializer.attribute("", ATTR_END_TIME, - Long.toString(at.getBoundaryEndTime())); - serializer.attribute("", ATTR_VOLUME, - Integer.toString(at.getVolume())); + serializer.attribute("", ATTR_START_TIME, Long.toString(at.getStartTime())); + serializer.attribute("", ATTR_BEGIN_TIME, Long.toString(at.getBoundaryBeginTime())); + serializer.attribute("", ATTR_END_TIME, Long.toString(at.getBoundaryEndTime())); + serializer.attribute("", ATTR_VOLUME, Integer.toString(at.getVolume())); serializer.attribute("", ATTR_DUCK_ENABLED, Boolean.toString(at.isDuckingEnabled())); serializer.attribute("", ATTR_DUCKED_TRACK_VOLUME, |