Add "throws IOException" to MediaCodec constructors (8)

Change to add "throws IOException" to android.media.MediaCodec
(createByCodecName|createDecoderByType|createEncoderByType).  The exception was
previously thrown through the native JNI, but not explicitly declared.

Requires changes to existing code for declaration compatibility.

Bug: 11364276
Change-Id: I6487408709342b390bac2b935f4642d4aaf36102
Signed-off-by: Andy Hung <hunga@google.com>
This commit is contained in:
Andy Hung
2013-11-04 15:24:46 -08:00
parent 30ae166370
commit 35133e2bc5
2 changed files with 31 additions and 19 deletions

View File

@@ -32,6 +32,7 @@ import java.util.ListIterator;
import java.util.Iterator; import java.util.Iterator;
import java.util.HashMap; import java.util.HashMap;
import java.util.Random; import java.util.Random;
import java.io.IOException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.lang.Exception; import java.lang.Exception;
import java.lang.InterruptedException; import java.lang.InterruptedException;
@@ -128,8 +129,7 @@ public class MediaDrmAPITest extends Activity {
try { try {
mDrm = new MediaDrm(kWidevineScheme); mDrm = new MediaDrm(kWidevineScheme);
} catch (MediaDrmException e) { } catch (MediaDrmException e) {
Log.e(TAG, "Failed to create MediaDrm: " + e.getMessage()); Log.e(TAG, "Failed to create MediaDrm", e);
e.printStackTrace();
mTestFailed = true; mTestFailed = true;
return; return;
} }
@@ -175,7 +175,7 @@ public class MediaDrmAPITest extends Activity {
private void stopDrm(MediaDrm drm) { private void stopDrm(MediaDrm drm) {
if (drm != mDrm) { if (drm != mDrm) {
Log.e(TAG, "invalid drm specified in stopDrm"); Log.e(TAG, "Invalid drm specified in stopDrm");
mTestFailed = true; mTestFailed = true;
} }
mLooper.quit(); mLooper.quit();
@@ -287,18 +287,23 @@ public class MediaDrmAPITest extends Activity {
try { try {
crypto = new MediaCrypto(kWidevineScheme, getTestModeSessionId(sessionId)); crypto = new MediaCrypto(kWidevineScheme, getTestModeSessionId(sessionId));
} catch (MediaCryptoException e) { } catch (MediaCryptoException e) {
Log.e(TAG, "test failed due to exception: " + e.getMessage()); Log.e(TAG, "Failed to create MediaCrypto", e);
e.printStackTrace();
mTestFailed = true; mTestFailed = true;
finish(); finish();
} }
String mime = "video/avc"; String mime = "video/avc";
MediaCodec codec; MediaCodec codec = null;
if (crypto.requiresSecureDecoderComponent(mime)) { try {
codec = MediaCodec.createByCodecName(getSecureDecoderNameForMime(mime)); if (crypto.requiresSecureDecoderComponent(mime)) {
} else { codec = MediaCodec.createByCodecName(getSecureDecoderNameForMime(mime));
codec = MediaCodec.createDecoderByType(mime); } else {
codec = MediaCodec.createDecoderByType(mime);
}
} catch (IOException e) {
Log.e(TAG, "Failed to create " + mime + " codec", e);
mTestFailed = true;
finish();
} }
MediaFormat format = MediaFormat.createVideoFormat(mime, 1280, 720); MediaFormat format = MediaFormat.createVideoFormat(mime, 1280, 720);
@@ -424,20 +429,26 @@ public class MediaDrmAPITest extends Activity {
try { try {
crypto = new MediaCrypto(kWidevineScheme, getTestModeSessionId(sessionId)); crypto = new MediaCrypto(kWidevineScheme, getTestModeSessionId(sessionId));
} catch (MediaCryptoException e) { } catch (MediaCryptoException e) {
Log.e(TAG, "test failed due to exception: " + e.getMessage()); Log.e(TAG, "Failed to create MediaCrypto", e);
e.printStackTrace();
mTestFailed = true; mTestFailed = true;
finish(); finish();
} }
String mime = "video/avc"; String mime = "video/avc";
MediaCodec codec; MediaCodec codec = null;
boolean secure = false; boolean secure = false;
if (crypto.requiresSecureDecoderComponent(mime)) {
codec = MediaCodec.createByCodecName(getSecureDecoderNameForMime(mime)); try {
secure = true; if (crypto.requiresSecureDecoderComponent(mime)) {
} else { codec = MediaCodec.createByCodecName(getSecureDecoderNameForMime(mime));
codec = MediaCodec.createDecoderByType(mime); secure = true;
} else {
codec = MediaCodec.createDecoderByType(mime);
}
} catch (IOException e) {
Log.e(TAG, "Failed to create " + mime + " codec", e);
mTestFailed = true;
finish();
} }
MediaFormat format = MediaFormat.createVideoFormat(mime, 1280, 720); MediaFormat format = MediaFormat.createVideoFormat(mime, 1280, 720);

View File

@@ -499,7 +499,8 @@ class MediaCodecView extends SurfaceView
} }
private void addTrack( private void addTrack(
int trackIndex, MediaFormat format, boolean encrypted) { int trackIndex, MediaFormat format, boolean encrypted)
throws IOException {
String mime = format.getString(MediaFormat.KEY_MIME); String mime = format.getString(MediaFormat.KEY_MIME);
boolean isVideo = mime.startsWith("video/"); boolean isVideo = mime.startsWith("video/");