Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3dd7fd08 authored by Andreas Huber's avatar Andreas Huber
Browse files

Return codec buffers that are marked as having host endianness.

Change-Id: Iedfd829d108e65ee368909af14ace68b63e0e168
related-to-bug: 6364139
parent c2182c67
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -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;
}