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