Merge "Return codec buffers that are marked as having host endianness." into jb-dev

This commit is contained in:
Andreas Huber
2012-05-08 14:32:23 -07:00
committed by Android (Google) Code Review

View File

@@ -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;
}