@@ -27,6 +27,7 @@ void *_javaDirectPlayBufferPlayAudio = nullptr;
2727void *_javaDirectPlayBufferBeforeMixAudio = nullptr ;
2828void *_javaDirectPlayBufferMixAudio = nullptr ;
2929map<int , void *> decodeBufferMap;
30+ volatile bool mAvailable = false ;
3031
3132static JavaVM *gJVM = nullptr ;
3233
@@ -68,6 +69,13 @@ class AgoraVideoFrameObserver : public agora::media::IVideoFrameObserver
6869 memcpy ((uint8_t *) _byteBufferObject + widthAndHeight * 5 / 4 , videoFrame.vBuffer ,
6970 widthAndHeight / 4 );
7071
72+
73+ if (!mAvailable )
74+ {
75+ // check gCallBack is available.
76+ return ;
77+ }
78+
7179 if (uid == 0 )
7280 {
7381 env->CallVoidMethod (gCallBack , jmethodID, videoFrame.type , width, height, length,
@@ -204,6 +212,12 @@ class AgoraAudioFrameObserver : public agora::media::IAudioFrameObserver
204212 int len = audioFrame.samples * audioFrame.bytesPerSample ;
205213 memcpy (_byteBufferObject, audioFrame.buffer , (size_t ) len); // * sizeof(int16_t)
206214
215+ if (!mAvailable )
216+ {
217+ // check gCallBack is available.
218+ return ;
219+ }
220+
207221 if (uid == 0 )
208222 {
209223 env->CallVoidMethod (gCallBack , jmethodID, audioFrame.type , audioFrame.samples ,
@@ -364,12 +378,14 @@ JNIEXPORT void JNICALL Java_io_agora_advancedvideo_rawdata_MediaPreProcessing_se
364378 captureVideoMethodId = env->GetMethodID (gCallbackClass , " onCaptureVideoFrame" ,
365379 " (IIIIIIIIJ)V" );
366380 preEncodeVideoMethodId = env->GetMethodID (gCallbackClass , " onPreEncodeVideoFrame" ,
367- " (IIIIIIIIJ)V" );
381+ " (IIIIIIIIJ)V" );
368382 renderVideoMethodId = env->GetMethodID (gCallbackClass , " onRenderVideoFrame" ,
369383 " (IIIIIIIIIJ)V" );
370384
371385 __android_log_print (ANDROID_LOG_DEBUG, " setCallback" , " setCallback done successfully" );
372386 }
387+
388+ mAvailable = true ;
373389}
374390
375391JNIEXPORT void JNICALL
@@ -425,6 +441,8 @@ Java_io_agora_advancedvideo_rawdata_MediaPreProcessing_setVideoDecodeByteBuffer
425441JNIEXPORT void JNICALL Java_io_agora_advancedvideo_rawdata_MediaPreProcessing_releasePoint
426442 (JNIEnv *env, jclass)
427443{
444+ mAvailable = false ;
445+
428446 agora::util::AutoPtr<agora::media::IMediaEngine> mediaEngine;
429447 mediaEngine.queryInterface (rtcEngine, agora::INTERFACE_ID_TYPE::AGORA_IID_MEDIA_ENGINE);
430448
0 commit comments