From db963e9c64cc88bd912dc92ebace6a62b752c2a4 Mon Sep 17 00:00:00 2001 From: Gil Dobjanschi Date: Tue, 2 Nov 2010 19:19:04 -0700 Subject: Use SoftReference for WaveformData Change-Id: I801a4eb4f55e0c6244f868bf8b474a2a79d81642 --- .../java/android/media/videoeditor/AudioTrack.java | 23 ++++++++++++++++++---- .../android/media/videoeditor/MediaVideoItem.java | 23 ++++++++++++++++++---- 2 files changed, 38 insertions(+), 8 deletions(-) (limited to 'media') diff --git a/media/java/android/media/videoeditor/AudioTrack.java b/media/java/android/media/videoeditor/AudioTrack.java index 573208a..d02709e 100755 --- a/media/java/android/media/videoeditor/AudioTrack.java +++ b/media/java/android/media/videoeditor/AudioTrack.java @@ -17,6 +17,7 @@ package android.media.videoeditor; import java.io.IOException; +import java.lang.ref.SoftReference; /** * This class allows to handle an audio track. This audio file is mixed with the @@ -49,7 +50,7 @@ public class AudioTrack { // The audio waveform filename private String mAudioWaveformFilename; // The audio waveform data - private WaveformData mWaveformData; + private SoftReference mWaveformData; /** * An object of this type cannot be instantiated by using the default @@ -165,7 +166,8 @@ public class AudioTrack { mAudioWaveformFilename = audioWaveformFilename; if (audioWaveformFilename != null) { - mWaveformData = new WaveformData(audioWaveformFilename); + mWaveformData = + new SoftReference(new WaveformData(audioWaveformFilename)); } else { mWaveformData = null; } @@ -424,7 +426,7 @@ public class AudioTrack { throws IOException { // TODO: Set mAudioWaveformFilename at the end once the extract is // complete - mWaveformData = new WaveformData(mAudioWaveformFilename); + mWaveformData = new SoftReference(new WaveformData(mAudioWaveformFilename)); } /** @@ -448,7 +450,20 @@ public class AudioTrack { * @return The waveform data */ public WaveformData getWaveformData() { - return mWaveformData; + if (mWaveformData == null) { + return null; + } + + WaveformData waveformData = mWaveformData.get(); + if (waveformData != null) { + return waveformData; + } else if (mAudioWaveformFilename != null) { + waveformData = new WaveformData(mAudioWaveformFilename); + mWaveformData = new SoftReference(waveformData); + return waveformData; + } else { + return null; + } } /* diff --git a/media/java/android/media/videoeditor/MediaVideoItem.java b/media/java/android/media/videoeditor/MediaVideoItem.java index 1fa98e7..c1abf78 100755 --- a/media/java/android/media/videoeditor/MediaVideoItem.java +++ b/media/java/android/media/videoeditor/MediaVideoItem.java @@ -17,6 +17,7 @@ package android.media.videoeditor; import java.io.IOException; +import java.lang.ref.SoftReference; import android.graphics.Bitmap; import android.view.SurfaceHolder; @@ -47,7 +48,7 @@ public class MediaVideoItem extends MediaItem { private boolean mMuted; private String mAudioWaveformFilename; // The audio waveform data - private WaveformData mWaveformData; + private SoftReference mWaveformData; /** * An object of this type cannot be instantiated with a default constructor @@ -118,7 +119,8 @@ public class MediaVideoItem extends MediaItem { mMuted = muted; mAudioWaveformFilename = audioWaveformFilename; if (audioWaveformFilename != null) { - mWaveformData = new WaveformData(audioWaveformFilename); + mWaveformData = + new SoftReference(new WaveformData(audioWaveformFilename)); } else { mWaveformData = null; } @@ -293,7 +295,7 @@ public class MediaVideoItem extends MediaItem { public void extractAudioWaveform(ExtractAudioWaveformProgressListener listener) throws IOException { // TODO: Set mAudioWaveformFilename at the end once the export is complete - mWaveformData = new WaveformData(mAudioWaveformFilename); + mWaveformData = new SoftReference(new WaveformData(mAudioWaveformFilename)); } /** @@ -315,7 +317,20 @@ public class MediaVideoItem extends MediaItem { * @return The waveform data */ public WaveformData getWaveformData() { - return mWaveformData; + if (mWaveformData == null) { + return null; + } + + WaveformData waveformData = mWaveformData.get(); + if (waveformData != null) { + return waveformData; + } else if (mAudioWaveformFilename != null) { + waveformData = new WaveformData(mAudioWaveformFilename); + mWaveformData = new SoftReference(waveformData); + return waveformData; + } else { + return null; + } } /** -- cgit v1.1