Handle IOException from MediaCodec factory methods

Bug: 11364276
Change-Id: I930f37e8c2cba77e1da3d6a6878186182282b51e
Signed-off-by: Andy Hung <hunga@google.com>
This commit is contained in:
Andy Hung
2014-01-14 17:33:44 -08:00
parent 1d708f6bdd
commit 641456cdcc
2 changed files with 31 additions and 19 deletions

View File

@@ -37,6 +37,7 @@ import java.util.ListIterator;
import java.util.Iterator;
import java.util.HashMap;
import java.util.Random;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.lang.Exception;
import java.lang.InterruptedException;
@@ -188,8 +189,7 @@ public class MediaDrmAPITest extends Activity {
try {
mDrm = new MediaDrm(kWidevineScheme);
} catch (MediaDrmException e) {
Log.e(TAG, "Failed to create MediaDrm: " + e.getMessage());
e.printStackTrace();
Log.e(TAG, "Failed to create MediaDrm", e);
mTestFailed = true;
return;
}
@@ -235,7 +235,7 @@ public class MediaDrmAPITest extends Activity {
private void stopDrm(MediaDrm drm) {
if (drm != mDrm) {
Log.e(TAG, "invalid drm specified in stopDrm");
Log.e(TAG, "Invalid drm specified in stopDrm");
mTestFailed = true;
}
mLooper.quit();
@@ -582,18 +582,23 @@ public class MediaDrmAPITest extends Activity {
try {
crypto = new MediaCrypto(kWidevineScheme, getTestModeSessionId(sessionId));
} catch (MediaCryptoException e) {
Log.e(TAG, "test failed due to exception: " + e.getMessage());
e.printStackTrace();
Log.e(TAG, "Failed to create MediaCrypto", e);
mTestFailed = true;
finish();
}
String mime = "video/avc";
MediaCodec codec;
if (crypto.requiresSecureDecoderComponent(mime)) {
codec = MediaCodec.createByCodecName(getSecureDecoderNameForMime(mime));
} else {
codec = MediaCodec.createDecoderByType(mime);
MediaCodec codec = null;
try {
if (crypto.requiresSecureDecoderComponent(mime)) {
codec = MediaCodec.createByCodecName(getSecureDecoderNameForMime(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);
@@ -732,20 +737,26 @@ public class MediaDrmAPITest extends Activity {
try {
crypto = new MediaCrypto(kWidevineScheme, getTestModeSessionId(sessionId));
} catch (MediaCryptoException e) {
Log.e(TAG, "test failed due to exception: " + e.getMessage());
e.printStackTrace();
Log.e(TAG, "Failed to create MediaCrypto", e);
mTestFailed = true;
finish();
}
String mime = "video/avc";
MediaCodec codec;
MediaCodec codec = null;
boolean secure = false;
if (crypto.requiresSecureDecoderComponent(mime)) {
codec = MediaCodec.createByCodecName(getSecureDecoderNameForMime(mime));
secure = true;
} else {
codec = MediaCodec.createDecoderByType(mime);
try {
if (crypto.requiresSecureDecoderComponent(mime)) {
codec = MediaCodec.createByCodecName(getSecureDecoderNameForMime(mime));
secure = true;
} else {
codec = MediaCodec.createDecoderByType(mime);
}
} catch (IOException e) {
Log.e(TAG, "Failed to create " + mime + " codec", e);
mTestFailed = true;
finish();
}
// make sure the surface view has been created

View File

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