Index: media/base/android/media_codec_bridge.cc |
diff --git a/media/base/android/media_codec_bridge.cc b/media/base/android/media_codec_bridge.cc |
index 895243332ec5cc6eba9785894d0671e72dbdca8d..f5c73a0a75c2150cd47c8d46834f222a8f8e402f 100644 |
--- a/media/base/android/media_codec_bridge.cc |
+++ b/media/base/android/media_codec_bridge.cc |
@@ -128,23 +128,24 @@ void MediaCodecBridge::GetOutputFormat(int* width, int* height) { |
*height = Java_MediaCodecBridge_getOutputHeight(env, j_media_codec_.obj()); |
} |
-size_t MediaCodecBridge::QueueInputBuffer( |
- int index, const uint8* data, int size, |
+MediaCodecStatus MediaCodecBridge::QueueInputBuffer( |
+ int index, const uint8* data, int data_size, |
const base::TimeDelta& presentation_time) { |
- size_t size_to_copy = FillInputBuffer(index, data, size); |
+ int size_to_copy = FillInputBuffer(index, data, data_size); |
+ DCHECK_EQ(size_to_copy, data_size); |
JNIEnv* env = AttachCurrentThread(); |
- Java_MediaCodecBridge_queueInputBuffer( |
+ return static_cast<MediaCodecStatus>(Java_MediaCodecBridge_queueInputBuffer( |
env, j_media_codec_.obj(), |
- index, 0, size_to_copy, presentation_time.InMicroseconds(), 0); |
- return size_to_copy; |
+ index, 0, size_to_copy, presentation_time.InMicroseconds(), 0)); |
} |
-size_t MediaCodecBridge::QueueSecureInputBuffer( |
+MediaCodecStatus MediaCodecBridge::QueueSecureInputBuffer( |
int index, const uint8* data, int data_size, const uint8* key_id, |
int key_id_size, const uint8* iv, int iv_size, |
const SubsampleEntry* subsamples, int subsamples_size, |
const base::TimeDelta& presentation_time) { |
- size_t size_to_copy = FillInputBuffer(index, data, data_size); |
+ int size_to_copy = FillInputBuffer(index, data, data_size); |
+ DCHECK_EQ(size_to_copy, data_size); |
JNIEnv* env = AttachCurrentThread(); |
ScopedJavaLocalRef<jbyteArray> j_key_id = |
@@ -162,12 +163,11 @@ size_t MediaCodecBridge::QueueSecureInputBuffer( |
ScopedJavaLocalRef<jintArray> cypher_array = ToJavaIntArray( |
env, native_cypher_array.Pass(), subsamples_size); |
- Java_MediaCodecBridge_queueSecureInputBuffer( |
- env, j_media_codec_.obj(), index, 0, j_iv.obj(), j_key_id.obj(), |
- clear_array.obj(), cypher_array.obj(), subsamples_size, |
- presentation_time.InMicroseconds()); |
- |
- return size_to_copy; |
+ return static_cast<MediaCodecStatus>( |
+ Java_MediaCodecBridge_queueSecureInputBuffer( |
+ env, j_media_codec_.obj(), index, 0, j_iv.obj(), j_key_id.obj(), |
+ clear_array.obj(), cypher_array.obj(), subsamples_size, |
+ presentation_time.InMicroseconds())); |
} |
void MediaCodecBridge::QueueEOS(int input_buffer_index) { |
@@ -180,41 +180,21 @@ void MediaCodecBridge::QueueEOS(int input_buffer_index) { |
MediaCodecStatus MediaCodecBridge::DequeueInputBuffer( |
const base::TimeDelta& timeout, int* index) { |
JNIEnv* env = AttachCurrentThread(); |
- int result = Java_MediaCodecBridge_dequeueInputBuffer( |
+ ScopedJavaLocalRef<jobject> result = Java_MediaCodecBridge_dequeueInputBuffer( |
env, j_media_codec_.obj(), timeout.InMicroseconds()); |
- if (result == INFO_MEDIA_CODEC_ERROR) |
- return MEDIA_CODEC_ERROR; |
- else if (result == INFO_TRY_AGAIN_LATER) |
- return MEDIA_CODEC_ENQUEUE_INPUT_AGAIN_LATER; |
- |
- DCHECK_GE(result, 0); |
- *index = result; |
- return MEDIA_CODEC_OK; |
+ *index = Java_DequeueInputResult_index(env, result.obj()); |
+ return static_cast<MediaCodecStatus>( |
+ Java_DequeueInputResult_status(env, result.obj())); |
} |
MediaCodecStatus MediaCodecBridge::DequeueOutputBuffer( |
const base::TimeDelta& timeout, int* index, size_t* offset, size_t* size, |
base::TimeDelta* presentation_time, bool* end_of_stream) { |
JNIEnv* env = AttachCurrentThread(); |
- |
ScopedJavaLocalRef<jobject> result = |
Java_MediaCodecBridge_dequeueOutputBuffer(env, j_media_codec_.obj(), |
timeout.InMicroseconds()); |
- |
- int j_index = Java_DequeueOutputResult_index(env, result.obj()); |
- switch (j_index) { |
- case INFO_OUTPUT_BUFFERS_CHANGED: |
- return MEDIA_CODEC_OUTPUT_BUFFERS_CHANGED; |
- case INFO_OUTPUT_FORMAT_CHANGED: |
- return MEDIA_CODEC_OUTPUT_FORMAT_CHANGED; |
- case INFO_TRY_AGAIN_LATER: |
- return MEDIA_CODEC_DEQUEUE_OUTPUT_AGAIN_LATER; |
- case INFO_MEDIA_CODEC_ERROR: |
- return MEDIA_CODEC_ERROR; |
- } |
- |
- DCHECK_GE(j_index, 0); |
- *index = j_index; |
+ *index = Java_DequeueOutputResult_index(env, result.obj());; |
*offset = base::checked_numeric_cast<size_t>( |
Java_DequeueOutputResult_offset(env, result.obj())); |
*size = base::checked_numeric_cast<size_t>( |
@@ -223,7 +203,8 @@ MediaCodecStatus MediaCodecBridge::DequeueOutputBuffer( |
Java_DequeueOutputResult_presentationTimeMicroseconds(env, result.obj())); |
int flags = Java_DequeueOutputResult_flags(env, result.obj()); |
*end_of_stream = flags & kBufferFlagEndOfStream; |
- return MEDIA_CODEC_OK; |
+ return static_cast<MediaCodecStatus>( |
+ Java_DequeueOutputResult_status(env, result.obj())); |
} |
void MediaCodecBridge::ReleaseOutputBuffer(int index, bool render) { |
@@ -303,7 +284,7 @@ bool AudioCodecBridge::ConfigureMediaFormat( |
return true; |
JNIEnv* env = AttachCurrentThread(); |
- switch(codec) { |
+ switch (codec) { |
case kCodecVorbis: |
{ |
if (extra_data[0] != 2) { |