media: release codec in the case of exception

Bug: 21171205
Change-Id: I804d9b29d965d0b1f2eca4eedf85b087ebb7b4a0
diff --git a/tests/tests/media/src/android/media/cts/ResourceManagerTestActivityBase.java b/tests/tests/media/src/android/media/cts/ResourceManagerTestActivityBase.java
index 3e0b111..38d1a92 100644
--- a/tests/tests/media/src/android/media/cts/ResourceManagerTestActivityBase.java
+++ b/tests/tests/media/src/android/media/cts/ResourceManagerTestActivityBase.java
@@ -156,16 +156,18 @@
         CodecCapabilities caps = info.getCapabilitiesForType(MIME);
         VideoCapabilities vcaps = caps.getVideoCapabilities();
         MediaFormat format = getTestFormat(vcaps, securePlayback);
+        MediaCodec codec = null;
         for (int i = mCodecs.size(); i < max; ++i) {
             try {
                 Log.d(TAG, "Create codec " + name + " #" + i);
-                MediaCodec codec = MediaCodec.createByCodecName(name);
+                codec = MediaCodec.createByCodecName(name);
                 codec.setCallback(mCallback);
                 Log.d(TAG, "Configure codec " + format);
                 codec.configure(format, null, null, 0);
                 Log.d(TAG, "Start codec " + format);
                 codec.start();
                 mCodecs.add(codec);
+                codec = null;
             } catch (IllegalArgumentException e) {
                 Log.d(TAG, "IllegalArgumentException " + e.getMessage());
                 break;
@@ -177,6 +179,11 @@
                 break;
             }
         }
+        if (codec != null) {
+            Log.d(TAG, "release codec");
+            codec.release();
+            codec = null;
+        }
     }
 
     protected void finishWithResult(int result) {