Skip to content

Commit eb194d5

Browse files
theandi666Android (Google) Code Review
authored andcommitted
Merge "Return codec buffers that are marked as having host endianness." into jb-dev
2 parents 1d56afc + 3dd7fd0 commit eb194d5

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

media/jni/android_media_MediaCodec.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,25 @@ status_t JMediaCodec::getBuffers(
212212
}
213213

214214
jclass byteBufferClass = env->FindClass("java/nio/ByteBuffer");
215+
CHECK(byteBufferClass != NULL);
216+
217+
jmethodID orderID = env->GetMethodID(
218+
byteBufferClass,
219+
"order",
220+
"(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;");
221+
222+
CHECK(orderID != NULL);
223+
224+
jclass byteOrderClass = env->FindClass("java/nio/ByteOrder");
225+
CHECK(byteOrderClass != NULL);
226+
227+
jmethodID nativeOrderID = env->GetStaticMethodID(
228+
byteOrderClass, "nativeOrder", "()Ljava/nio/ByteOrder;");
229+
CHECK(nativeOrderID != NULL);
230+
231+
jobject nativeByteOrderObj =
232+
env->CallStaticObjectMethod(byteOrderClass, nativeOrderID);
233+
CHECK(nativeByteOrderObj != NULL);
215234

216235
*bufArray = (jobjectArray)env->NewObjectArray(
217236
buffers.size(), byteBufferClass, NULL);
@@ -224,13 +243,21 @@ status_t JMediaCodec::getBuffers(
224243
buffer->base(),
225244
buffer->capacity());
226245

246+
jobject me = env->CallObjectMethod(
247+
byteBuffer, orderID, nativeByteOrderObj);
248+
env->DeleteLocalRef(me);
249+
me = NULL;
250+
227251
env->SetObjectArrayElement(
228252
*bufArray, i, byteBuffer);
229253

230254
env->DeleteLocalRef(byteBuffer);
231255
byteBuffer = NULL;
232256
}
233257

258+
env->DeleteLocalRef(nativeByteOrderObj);
259+
nativeByteOrderObj = NULL;
260+
234261
return OK;
235262
}
236263

0 commit comments

Comments
 (0)