Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1104)

Unified Diff: media/base/android/java/src/org/chromium/media/MediaCodecBridge.java

Issue 2697643003: media: Clean up MediaCodecBridge and remove subclasses (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
diff --git a/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java b/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
index 35f7deea44a321d79568a136485c38018807fc3c..4cae731351b21910711f9ebd36c8fdd05b5c224a 100644
--- a/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
+++ b/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
@@ -28,16 +28,7 @@ import java.nio.ByteBuffer;
*/
@JNINamespace("media")
class MediaCodecBridge {
- private static final String TAG = "cr_MediaCodecBridge";
-
- // Status codes. Keep these in sync with MediaCodecStatus in media_codec_bridge.h.
- private static final int MEDIA_CODEC_OK = 0;
- private static final int MEDIA_CODEC_DEQUEUE_INPUT_AGAIN_LATER = 1;
- private static final int MEDIA_CODEC_DEQUEUE_OUTPUT_AGAIN_LATER = 2;
- private static final int MEDIA_CODEC_OUTPUT_BUFFERS_CHANGED = 3;
- private static final int MEDIA_CODEC_OUTPUT_FORMAT_CHANGED = 4;
- private static final int MEDIA_CODEC_NO_KEY = 5;
- private static final int MEDIA_CODEC_ERROR = 6;
+ private static final String TAG = "cr.MediaCodecBridge";
// After a flush(), dequeueOutputBuffer() can often produce empty presentation timestamps
// for several frames. As a result, the player may find that the time does not increase
@@ -50,12 +41,6 @@ class MediaCodecBridge {
// We use only one output audio format (PCM16) that has 2 bytes per sample
private static final int PCM16_BYTES_PER_SAMPLE = 2;
- // The following values should be kept in sync with the media::EncryptionScheme::CipherMode
- // enum in media/base/encryption_scheme.h
- private static final int MEDIA_ENCRYPTION_SCHEME_CIPHER_MODE_UNENCRYPTED = 0;
- private static final int MEDIA_ENCRYPTION_SCHEME_CIPHER_MODE_AES_CTR = 1;
- private static final int MEDIA_ENCRYPTION_SCHEME_CIPHER_MODE_AES_CBC = 2;
-
private static final int MEDIA_CODEC_UNKNOWN_CIPHER_MODE = -1;
// TODO(qinmin): Use MediaFormat constants when part of the public API.
@@ -153,7 +138,7 @@ class MediaCodecBridge {
@MainDex
private static class GetOutputFormatResult {
private final int mStatus;
- // May be null if mStatus is not MEDIA_CODEC_OK.
+ // May be null if mStatus is not MediaCodecStatus.OK.
private final MediaFormat mFormat;
private GetOutputFormatResult(int status, MediaFormat format) {
@@ -212,7 +197,7 @@ class MediaCodecBridge {
String mime, boolean isSecure, int direction, boolean requireSoftwareCodec) {
MediaCodecUtil.CodecCreationInfo info = new MediaCodecUtil.CodecCreationInfo();
try {
- if (direction == MediaCodecUtil.MEDIA_CODEC_ENCODER) {
+ if (direction == MediaCodecDirection.ENCODER) {
info = MediaCodecUtil.createEncoder(mime);
} else {
// |isSecure| only applies to video decoders.
@@ -269,15 +254,15 @@ class MediaCodecBridge {
@CalledByNative
private DequeueInputResult dequeueInputBuffer(long timeoutUs) {
- int status = MEDIA_CODEC_ERROR;
+ int status = MediaCodecStatus.ERROR;
int index = -1;
try {
int indexOrStatus = mMediaCodec.dequeueInputBuffer(timeoutUs);
if (indexOrStatus >= 0) { // index!
- status = MEDIA_CODEC_OK;
+ status = MediaCodecStatus.OK;
index = indexOrStatus;
} else if (indexOrStatus == MediaCodec.INFO_TRY_AGAIN_LATER) {
- status = MEDIA_CODEC_DEQUEUE_INPUT_AGAIN_LATER;
+ status = MediaCodecStatus.TRY_AGAIN_LATER;
} else {
Log.e(TAG, "Unexpected index_or_status: " + indexOrStatus);
assert false;
@@ -295,9 +280,9 @@ class MediaCodecBridge {
mMediaCodec.flush();
} catch (IllegalStateException e) {
Log.e(TAG, "Failed to flush MediaCodec", e);
- return MEDIA_CODEC_ERROR;
+ return MediaCodecStatus.ERROR;
}
- return MEDIA_CODEC_OK;
+ return MediaCodecStatus.OK;
}
@CalledByNative
@@ -324,12 +309,12 @@ class MediaCodecBridge {
@CalledByNative
private GetOutputFormatResult getOutputFormat() {
MediaFormat format = null;
- int status = MEDIA_CODEC_OK;
+ int status = MediaCodecStatus.OK;
try {
format = mMediaCodec.getOutputFormat();
} catch (IllegalStateException e) {
Log.e(TAG, "Failed to get output format", e);
- status = MEDIA_CODEC_ERROR;
+ status = MediaCodecStatus.ERROR;
}
return new GetOutputFormatResult(status, format);
}
@@ -370,9 +355,9 @@ class MediaCodecBridge {
mMediaCodec.queueInputBuffer(index, offset, size, presentationTimeUs, flags);
} catch (Exception e) {
Log.e(TAG, "Failed to queue input buffer", e);
- return MEDIA_CODEC_ERROR;
+ return MediaCodecStatus.ERROR;
}
- return MEDIA_CODEC_OK;
+ return MediaCodecStatus.OK;
}
@TargetApi(Build.VERSION_CODES.KITKAT)
@@ -412,11 +397,11 @@ class MediaCodecBridge {
// MEDIA_CODEC_UNKNOWN_CIPHER_MODE in the case of unknown incoming value.
private int translateCipherModeValue(int nativeValue) {
switch (nativeValue) {
- case MEDIA_ENCRYPTION_SCHEME_CIPHER_MODE_UNENCRYPTED:
+ case CipherMode.UNENCRYPTED:
return MediaCodec.CRYPTO_MODE_UNENCRYPTED;
- case MEDIA_ENCRYPTION_SCHEME_CIPHER_MODE_AES_CTR:
+ case CipherMode.AES_CTR:
return MediaCodec.CRYPTO_MODE_AES_CTR;
- case MEDIA_ENCRYPTION_SCHEME_CIPHER_MODE_AES_CBC:
+ case CipherMode.AES_CBC:
return MediaCodec.CRYPTO_MODE_AES_CBC;
default:
Log.e(TAG, "Unsupported cipher mode: " + nativeValue);
@@ -432,12 +417,12 @@ class MediaCodecBridge {
try {
cipherMode = translateCipherModeValue(cipherMode);
if (cipherMode == MEDIA_CODEC_UNKNOWN_CIPHER_MODE) {
- return MEDIA_CODEC_ERROR;
+ return MediaCodecStatus.ERROR;
}
boolean usesCbcs = cipherMode == MediaCodec.CRYPTO_MODE_AES_CBC;
if (usesCbcs && !MediaCodecUtil.platformSupportsCbcsEncryption()) {
Log.e(TAG, "Encryption scheme 'cbcs' not supported on this platform.");
- return MEDIA_CODEC_ERROR;
+ return MediaCodecStatus.ERROR;
}
CryptoInfo cryptoInfo = new CryptoInfo();
cryptoInfo.set(numSubSamples, numBytesOfClearData, numBytesOfEncryptedData, keyId, iv,
@@ -448,23 +433,23 @@ class MediaCodecBridge {
MediaCodecUtil.setPatternIfSupported(cryptoInfo, patternEncrypt, patternSkip);
} else {
Log.e(TAG, "Pattern encryption only supported for 'cbcs' scheme (CBC mode).");
- return MEDIA_CODEC_ERROR;
+ return MediaCodecStatus.ERROR;
}
}
mMediaCodec.queueSecureInputBuffer(index, offset, cryptoInfo, presentationTimeUs, 0);
} catch (MediaCodec.CryptoException e) {
if (e.getErrorCode() == MediaCodec.CryptoException.ERROR_NO_KEY) {
Log.d(TAG, "Failed to queue secure input buffer: CryptoException.ERROR_NO_KEY");
- return MEDIA_CODEC_NO_KEY;
+ return MediaCodecStatus.NO_KEY;
}
Log.e(TAG, "Failed to queue secure input buffer, CryptoException with error code "
+ e.getErrorCode());
- return MEDIA_CODEC_ERROR;
+ return MediaCodecStatus.ERROR;
} catch (IllegalStateException e) {
Log.e(TAG, "Failed to queue secure input buffer, IllegalStateException " + e);
- return MEDIA_CODEC_ERROR;
+ return MediaCodecStatus.ERROR;
}
- return MEDIA_CODEC_OK;
+ return MediaCodecStatus.OK;
}
@CalledByNative
@@ -481,7 +466,7 @@ class MediaCodecBridge {
@CalledByNative
private DequeueOutputResult dequeueOutputBuffer(long timeoutUs) {
MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
- int status = MEDIA_CODEC_ERROR;
+ int status = MediaCodecStatus.ERROR;
int index = -1;
try {
int indexOrStatus = mMediaCodec.dequeueOutputBuffer(info, timeoutUs);
@@ -494,22 +479,22 @@ class MediaCodecBridge {
mLastPresentationTimeUs = info.presentationTimeUs;
if (indexOrStatus >= 0) { // index!
- status = MEDIA_CODEC_OK;
+ status = MediaCodecStatus.OK;
index = indexOrStatus;
} else if (indexOrStatus == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
mOutputBuffers = mMediaCodec.getOutputBuffers();
- status = MEDIA_CODEC_OUTPUT_BUFFERS_CHANGED;
+ status = MediaCodecStatus.OUTPUT_BUFFERS_CHANGED;
} else if (indexOrStatus == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
- status = MEDIA_CODEC_OUTPUT_FORMAT_CHANGED;
+ status = MediaCodecStatus.OUTPUT_FORMAT_CHANGED;
MediaFormat newFormat = mMediaCodec.getOutputFormat();
} else if (indexOrStatus == MediaCodec.INFO_TRY_AGAIN_LATER) {
- status = MEDIA_CODEC_DEQUEUE_OUTPUT_AGAIN_LATER;
+ status = MediaCodecStatus.TRY_AGAIN_LATER;
} else {
Log.e(TAG, "Unexpected index_or_status: " + indexOrStatus);
assert false;
}
} catch (IllegalStateException e) {
- status = MEDIA_CODEC_ERROR;
+ status = MediaCodecStatus.ERROR;
Log.e(TAG, "Failed to dequeue output buffer", e);
}
@@ -629,7 +614,7 @@ class MediaCodecBridge {
}
@CalledByNative
- private boolean isAdaptivePlaybackSupported(int width, int height) {
+ private boolean isAdaptivePlaybackSupported() {
// If media codec has adaptive playback supported, then the max sizes
// used during creation are only hints.
return mAdaptivePlaybackSupported;

Powered by Google App Engine
This is Rietveld 408576698