Skip to content

Commit 3dd7fd0

Browse files
committed
Return codec buffers that are marked as having host endianness.
Change-Id: Iedfd829d108e65ee368909af14ace68b63e0e168 related-to-bug: 6364139
1 parent c2182c6 commit 3dd7fd0

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)