X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjni%2FFfmpegHelper.cpp;h=71d7064e6630cab83bf0dcc534af3a6704e9120e;hb=d0d496554f96cebf84db3e9b3cf507577272ef8c;hp=1df52e52f9dd0be6c34b1a3efe94bc80f9a548b5;hpb=9773f3da1389f4e52fecfc79686fe2c94b08d6bc;p=rtmpclient.git diff --git a/app/src/main/jni/FfmpegHelper.cpp b/app/src/main/jni/FfmpegHelper.cpp index 1df52e5..71d7064 100644 --- a/app/src/main/jni/FfmpegHelper.cpp +++ b/app/src/main/jni/FfmpegHelper.cpp @@ -7,6 +7,7 @@ FfmpegHelper* FfmpegHelper::singleton = NULL; bool FfmpegHelper::isInit = false; +bool FfmpegHelper::isEncoderReady = false; FfmpegHelper::FfmpegHelper(JavaVM *vm, jclass cls) @@ -79,6 +80,7 @@ void FfmpegHelper::init() FLOGE("avformat_network_init, error:%s(%d)", av_err2str(ret), ret); } isInit = true; + isEncoderReady = false; } int FfmpegHelper::initEncoder(int width, int height, const char* outpath) @@ -146,12 +148,17 @@ int FfmpegHelper::initEncoder(int width, int height, const char* outpath) } startTime = av_gettime(); frameCnt = 0; + isEncoderReady = true; return 0; } int FfmpegHelper::processFrame(uint8_t* data) { + if(!isEncoderReady){ + FLOGE("processFrame - isEncoderReady is false."); + return -1; + } int ret = 0; int y_length = pWidth * pHeight; pFrameYUV = av_frame_alloc(); @@ -229,13 +236,18 @@ int FfmpegHelper::processFrame(uint8_t* data) int FfmpegHelper::close() { - if(vStream) + if(vStream){ avcodec_close(vStream->codec); + vStream = NULL; + } + if (formatCtx){ avio_close(formatCtx->pb); avformat_free_context(formatCtx); + formatCtx = NULL; } FLOGE("<----------- FfmpegHelper::close "); + isEncoderReady = false; return 0; }