JNI에서 ByteBuffer를 C++로 전달하려는 경우 AVDecode에서 디코딩 된 이미지를 수신하는 버퍼가 버퍼가 C++로 올바르게 채워지지만 Java 측의 ByteBuffer는 여전히 비어 있습니다. 오류의 원인을 찾으십시오. 감사. pOutBuffer는 JNI를 통해 전달 된 ByteBuffer입니다. 이 함수가 리턴 자바 측 pOutBuffer 여전히 비어JNI에서 char []을 ByteBuffer로 변환하는 방법?
jclass ByteBufferClass = env->GetObjectClass(pOutBuffer);
jmethodID ArraryMethodId = env->GetMethodID(ByteBufferClass,"array","()[B");
jmethodID ClearMethodId = env->GetMethodID(ByteBufferClass,"clear","()Ljava/nio/Buffer;");
//clear buffer
env->CallObjectMethod(pOutBuffer,ClearMethodId);
jbyteArray OutByteArrary = (jbyteArray)env->CallObjectMethod(pOutBuffer,ArraryMethodId);
jbyte OutJbyte = env->GetByteArrayElements(OutByteArrary,0);
Out = (unsigned char*)OutJbyte;
DecodeSize = AVDecode(m_pVideoDecode, (unsigned char *)In, inputSize, (unsigned char **)&Out, (int *)&pBFrameKey);
디코딩이 올 바르고 난 '아웃'이 있지만, 출력 이미지로 채워진다 것을 알 수있다.
allocateDirect()를 시도하고 GetDirectBufferAddress() 메소드를 사용해 보았지만 여전히 비어 있습니다. 할당을 사용하여 Java로 작성된 ByteBuffer인지 알고 싶습니다. 어떤 메소드를 사용해야합니까? 감사. – waydeom
자바 코드를 게시 할 수 있습니까? – GooseSerbus