diff options
author | James Dong <jdong@google.com> | 2011-06-20 16:24:48 -0700 |
---|---|---|
committer | James Dong <jdong@google.com> | 2011-06-21 13:50:51 -0700 |
commit | 24a38f1ab9ed3b7b9f8517b22dbf692a898117e3 (patch) | |
tree | 0fd2ad82fe0ba6dd667f3e77ea3ac7f5d1f6436b /media | |
parent | 93aa58fd944b5cfb825f592de29e25a4f02cf97a (diff) | |
download | frameworks_base-24a38f1ab9ed3b7b9f8517b22dbf692a898117e3.zip frameworks_base-24a38f1ab9ed3b7b9f8517b22dbf692a898117e3.tar.gz frameworks_base-24a38f1ab9ed3b7b9f8517b22dbf692a898117e3.tar.bz2 |
Switch to use MediaMetadataRetriever to generate the project thumbnail when the first media item is a MediaVideoItem
o This patch allows us to use the logic from MediaMetadataRetriever to extract a thumbnail instead of extracting
the thumbnail from a fixed position (@500 ms).
Change-Id: I81e8378d9bed80894cc622479679021dce3d52e5
related-to-bug: 3485609
Diffstat (limited to 'media')
-rwxr-xr-x | media/java/android/media/videoeditor/VideoEditorImpl.java | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/media/java/android/media/videoeditor/VideoEditorImpl.java b/media/java/android/media/videoeditor/VideoEditorImpl.java index 2105deb..649b98a 100755 --- a/media/java/android/media/videoeditor/VideoEditorImpl.java +++ b/media/java/android/media/videoeditor/VideoEditorImpl.java @@ -38,6 +38,7 @@ import android.graphics.Bitmap; import android.graphics.Rect; import android.media.videoeditor.MediaImageItem; import android.media.videoeditor.MediaItem; +import android.media.MediaMetadataRetriever; import android.util.Log; import android.util.Xml; import android.view.Surface; @@ -1833,12 +1834,32 @@ public class VideoEditorImpl implements VideoEditor { } Bitmap projectBitmap = null; - try { - projectBitmap = mI.getThumbnail(width, height, 500); - } catch (IllegalArgumentException e) { - throw new IllegalArgumentException ("Illegal argument error creating project thumbnail"); - } catch (IOException e) { - throw new IllegalArgumentException ("IO Error creating project thumbnail"); + String filename = mI.getFilename(); + if (mI instanceof MediaVideoItem) { + MediaMetadataRetriever retriever = new MediaMetadataRetriever(); + retriever.setDataSource(filename); + Bitmap bitmap = retriever.getFrameAtTime(); + retriever.release(); + retriever = null; + if (bitmap == null) { + String msg = "Thumbnail extraction from " + + filename + " failed"; + throw new IllegalArgumentException(msg); + } + // Resize the thumbnail to the target size + projectBitmap = + Bitmap.createScaledBitmap(bitmap, width, height, true); + } else { + try { + projectBitmap = mI.getThumbnail(width, height, 500); + } catch (IllegalArgumentException e) { + String msg = "Project thumbnail extraction from " + + filename + " failed"; + throw new IllegalArgumentException(msg); + } catch (IOException e) { + String msg = "IO Error creating project thumbnail"; + throw new IllegalArgumentException(msg); + } } try { |