diff options
| author | 2012-05-08 14:32:23 -0700 | |
|---|---|---|
| committer | 2012-05-08 14:32:23 -0700 | |
| commit | eb194d5d3c84a71de82316618b845bcd1fde61ff (patch) | |
| tree | 3608720e12b9b1885ee7a1ad03c0c0348f91f373 | |
| parent | 1d56afc6ace90e7cbd32d776b73173ef0dfa95c4 (diff) | |
| parent | 3dd7fd08a8a1d658b0aac8590f1fd922e056f689 (diff) | |
Merge "Return codec buffers that are marked as having host endianness." into jb-dev
| -rw-r--r-- | media/jni/android_media_MediaCodec.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp index acd81e1d591e..e43e66e6363a 100644 --- a/media/jni/android_media_MediaCodec.cpp +++ b/media/jni/android_media_MediaCodec.cpp @@ -212,6 +212,25 @@ status_t JMediaCodec::getBuffers( } jclass byteBufferClass = env->FindClass("java/nio/ByteBuffer"); + CHECK(byteBufferClass != NULL); + + jmethodID orderID = env->GetMethodID( + byteBufferClass, + "order", + "(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;"); + + CHECK(orderID != NULL); + + jclass byteOrderClass = env->FindClass("java/nio/ByteOrder"); + CHECK(byteOrderClass != NULL); + + jmethodID nativeOrderID = env->GetStaticMethodID( + byteOrderClass, "nativeOrder", "()Ljava/nio/ByteOrder;"); + CHECK(nativeOrderID != NULL); + + jobject nativeByteOrderObj = + env->CallStaticObjectMethod(byteOrderClass, nativeOrderID); + CHECK(nativeByteOrderObj != NULL); *bufArray = (jobjectArray)env->NewObjectArray( buffers.size(), byteBufferClass, NULL); @@ -224,6 +243,11 @@ status_t JMediaCodec::getBuffers( buffer->base(), buffer->capacity()); + jobject me = env->CallObjectMethod( + byteBuffer, orderID, nativeByteOrderObj); + env->DeleteLocalRef(me); + me = NULL; + env->SetObjectArrayElement( *bufArray, i, byteBuffer); @@ -231,6 +255,9 @@ status_t JMediaCodec::getBuffers( byteBuffer = NULL; } + env->DeleteLocalRef(nativeByteOrderObj); + nativeByteOrderObj = NULL; + return OK; } |