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;
         }