Handle MediaMetadataRetriever.release IOException
MediaMetadataRetriever.release now declares a thrown IOException.
Bug: 200173116
Test: Should be a non-functional change (only relevant when using MediaDataSource).
Change-Id: I53665e192051ccc5103e9a61014fbed596a86891
diff --git a/src/com/android/gallery3d/app/VideoUtils.java b/src/com/android/gallery3d/app/VideoUtils.java
index 4f551a6..b5851a7 100755
--- a/src/com/android/gallery3d/app/VideoUtils.java
+++ b/src/com/android/gallery3d/app/VideoUtils.java
@@ -179,6 +179,11 @@
retrieverSrc.setDataSource(srcPath);
String degreesString = retrieverSrc.extractMetadata(
MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION);
+ try {
+ retrieverSrc.release();
+ } catch (IOException e) {
+ // Ignore errors occurred while releasing the MediaMetadataRetriever.
+ }
if (degreesString != null) {
int degrees = Integer.parseInt(degreesString);
if (degrees >= 0) {
diff --git a/src/com/android/gallery3d/util/SaveVideoFileUtils.java b/src/com/android/gallery3d/util/SaveVideoFileUtils.java
index bef75ba..7c6ba5e 100644
--- a/src/com/android/gallery3d/util/SaveVideoFileUtils.java
+++ b/src/com/android/gallery3d/util/SaveVideoFileUtils.java
@@ -28,6 +28,7 @@
import com.android.gallery3d.filtershow.tools.SaveImage.ContentResolverQueryCallback;
import java.io.File;
+import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -101,7 +102,7 @@
values.put(Video.Media.DATE_ADDED, nowInSec);
values.put(Video.Media.DATA, mDstFileInfo.mFile.getAbsolutePath());
values.put(Video.Media.SIZE, mDstFileInfo.mFile.length());
- int durationMs = retriveVideoDurationMs(mDstFileInfo.mFile.getPath());
+ int durationMs = retrieveVideoDurationMs(mDstFileInfo.mFile.getPath());
values.put(Video.Media.DURATION, durationMs);
// Copy the data taken and location info from src.
String[] projection = new String[] {
@@ -137,7 +138,7 @@
return contentResolver.insert(Video.Media.EXTERNAL_CONTENT_URI, values);
}
- public static int retriveVideoDurationMs(String path) {
+ private static int retrieveVideoDurationMs(String path) {
int durationMs = 0;
// Calculate the duration of the destination file.
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
@@ -147,7 +148,11 @@
if (duration != null) {
durationMs = Integer.parseInt(duration);
}
- retriever.release();
+ try {
+ retriever.release();
+ } catch (IOException e) {
+ // Ignore errors occurred while releasing the retriever.
+ }
return durationMs;
}
diff --git a/src/com/android/gallery3d/video/VideoSnapshotExt.java b/src/com/android/gallery3d/video/VideoSnapshotExt.java
index 1dc87b4..0d75a7a 100644
--- a/src/com/android/gallery3d/video/VideoSnapshotExt.java
+++ b/src/com/android/gallery3d/video/VideoSnapshotExt.java
@@ -168,7 +168,11 @@
if (bitmap == null) {
Log.w(TAG, "frame cannot be retrieved. ");
} else {
- retriever.release();
+ try {
+ retriever.release();
+ } catch (IOException e) {
+ // Ignore errors occurred while releasing the retriever.
+ }
if (DEBUG) {
Log.d(TAG, "retriever get frame resolution : " +
bitmap.getHeight() + "x" + bitmap.getWidth());
@@ -177,7 +181,11 @@
return bitmap;
}
}
- retriever.release();
+ try {
+ retriever.release();
+ } catch (IOException e) {
+ // Ignore errors occurred while releasing the retriever.
+ }
return null;
}