C++调用java层类
java层已经内部实现了,所以无需用javah生成h头文件,因为这不是C/C++需要去实现。
因为C/C++需要通过JNIEnv调用java层,所以需要java层类的api的签名,这样通过Jni来调用java的api。
根据C/C++调用java层API的目的和业务,实现C++类的接口。
#include "jni.h"
#include "TTVideo.h"
#include "AVCDecoderTypes.h"
#include "M4a.h"
class CMediaCodecJava
{
public:
CMediaCodecJava(TTUint aCodecType);
virtual ~CMediaCodecJava();
public:
virtual TTInt initDecode(void *object);
virtual TTInt uninitDecode();
virtual TTInt start();
virtual TTInt stop();
virtual TTInt setInputBuffer(TTBuffer *InBuffer);
virtual TTInt getOutputBuffer(TTVideoBuffer* DstBuffer, TTVideoFormat* pOutInfo);
virtual TTInt setParam(TTInt aID, void* pValue);
virtual TTInt getParam(TTInt aID, void* pValue);
virtual TTInt renderOutputBuffer(TTVideoBuffer* DstBuffer, TTBool bRender);
private:
virtual TTInt updateMCJFunc();
virtual TTInt updateBuffers();
virtual TTInt setConfigData();
virtual TTInt setCSData();
virtual TTInt setCSDataJava(unsigned char *pBuf, int nLen, int index);
private:
TTUint mVideoCodec;
TTBool mEOS;
TTBool mStarted;
TTBool mAllocated;
TTBool mNewStart;
TTVideoFormat mVideoFormat;
unsigned char * mHeadBuffer;
int mHeadSize;
unsigned char * mHeadConfigBuffer;
int mHeadConfigSize;
TTInt mVideoIndex;
JavaVM* mJVM;
jobject mSurfaceObj;
jobject mMediaCodec;
jobject mBufferInfo;
jobject mVideoFormatObj;
jobjectArray mInputBuffers;
jobjectArray mOutputBuffers;
jclass mMediaCodecClass;
jclass mMediaFormatClass;
jclass mBufferInfoClass;
jclass mByteBufferClass;
jmethodID mToString;
jmethodID mCreateByCodecType;
jmethodID mConfigure;
jmethodID mStart;
jmethodID mStop;
jmethodID mFlush;
jmethodID mRelease;
jmethodID mGetOutputFormat;
jmethodID mGetInputBuffers;
jmethodID mGetOutputBuffers;
jmethodID mDequeueInputBuffer;
jmethodID mDequeueOutputBuffer;
jmethodID mQueueInputBuffer;
jmethodID mReleaseOutputBuffer;
jmethodID mCreateVideoFormat;
jmethodID mSetInteger;
jmethodID mSetByteBuffer;
jmethodID mGetInteger;
jmethodID mBufferInfoConstructor;
jfieldID mSizeField;
jfieldID mOffsetField;
jfieldID mPtsField;
};
#endif //__TTHWDECODER_H__

浙公网安备 33010602011771号