首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

jni中char[]怎么转成ByteBuffer

2012-03-25 
jni中char[]如何转成ByteBuffer在jni中,给out赋值之后,如何把Out里的内容再拷贝到pOutBuffer中,我现在的方

jni中char[]如何转成ByteBuffer
在jni中,给out赋值之后,如何把Out里的内容再拷贝到pOutBuffer中,我现在的方法返回到java中pOutBuffer是空的。

[code=C/C++][/code]
jmethodID ArrayMethodId = env->GetMethodID(ByteBufferClass,"array","()[B");
jmethodID ClearMethodId = env->GetMethodID(ByteBufferClass,"clear","()Ljava/nio/Buffer;");

// clear output buffer
env->CallObjectMethod(pOutBuffer,ClearMethodId);

OutByteArray = (jbyteArray)env->CallObjectMethod(pOutBuffer, ArrayMethodId);
OutJbyte = env->GetByteArrayElements(OutByteArray,0);

Out = (unsigned char *)OutJbyte;

DecodeSize = AVDecode(m_pVideoDecode, (unsigned char *)In, inputSize, (unsigned char **)&Out, (int *)&pBFrameKey);

//把Out设置到pOutBuffer?????????????
jclass ByteBufferClass = env->GetObjectClass(pOutBuffer);
jmethodID SetPositionMethodId = env->GetMethodID(ByteBufferClass,"position","(I)Ljava/nio/Buffer;");?
env->CallObjectMethod(pOutBuffer,SetPositionMethodId,OutSize);


[解决办法]
楼主发错地方了吧。。。
代码帮你整理了下

C/C++ code
jmethodID ArrayMethodId = env->GetMethodID(ByteBufferClass,"array","()[B");jmethodID ClearMethodId = env->GetMethodID(ByteBufferClass,"clear","()Ljava/nio/Buffer;");// clear output bufferenv->CallObjectMethod(pOutBuffer,ClearMethodId);OutByteArray = (jbyteArray)env->CallObjectMethod(pOutBuffer, ArrayMethodId);OutJbyte = env->GetByteArrayElements(OutByteArray,0);Out = (unsigned char *)OutJbyte;DecodeSize = AVDecode(m_pVideoDecode, (unsigned char *)In, inputSize, (unsigned char **)&Out, (int *)&pBFrameKey);//把Out设置到pOutBuffer?????????????jclass ByteBufferClass = env->GetObjectClass(pOutBuffer);jmethodID SetPositionMethodId = env->GetMethodID(ByteBufferClass,"position","(I)Ljava/nio/Buffer;");  env->CallObjectMethod(pOutBuffer,SetPositionMethodId,OutSize); 

热点排行