diff --git a/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process.cpp b/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process.cpp index 0a205cd52e038d1483888c0a89a3b1eac3c029d7..14158e7aa700b5d90bdb5ec26fce43bb30938ab0 100644 --- a/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process.cpp +++ b/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process.cpp @@ -274,9 +274,9 @@ void DecodeDataProcess::ReleaseVideoDecoder() { std::lock_guard lck(mtxDecoderState_); DHLOGD("Start release videoDecoder."); - decodeVideoCallback_ = nullptr; if (videoDecoder_ == nullptr) { DHLOGE("The video decoder does not exist before ReleaseVideoDecoder."); + decodeVideoCallback_ = nullptr; return; } int32_t ret = StopVideoDecoder(); @@ -288,6 +288,7 @@ void DecodeDataProcess::ReleaseVideoDecoder() DHLOGE("VideoDecoder release failed. Error type: %d.", ret); } videoDecoder_ = nullptr; + decodeVideoCallback_ = nullptr; } void DecodeDataProcess::ReleaseDecoderSurface() diff --git a/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process_common.cpp b/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process_common.cpp index 778eccaeeaf203a6683487fdc67656adddd14eb6..6a42895d0fd0be1715332f1e4b0ac4de2ca68993 100644 --- a/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process_common.cpp +++ b/services/data_process/src/pipeline_node/multimedia_codec/decoder/decode_data_process_common.cpp @@ -263,9 +263,9 @@ void DecodeDataProcess::ReleaseVideoDecoder() { std::lock_guard lck(mtxDecoderState_); DHLOGD("Start release videoDecoder."); - decodeVideoCallback_ = nullptr; if (videoDecoder_ == nullptr) { DHLOGE("The video decoder does not exist before ReleaseVideoDecoder."); + decodeVideoCallback_ = nullptr; return; } int32_t ret = StopVideoDecoder(); @@ -277,6 +277,7 @@ void DecodeDataProcess::ReleaseVideoDecoder() DHLOGE("VideoDecoder release failed. Error type: %d.", ret); } videoDecoder_ = nullptr; + decodeVideoCallback_ = nullptr; } void DecodeDataProcess::ReleaseDecoderSurface() diff --git a/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process.cpp b/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process.cpp index 094cc3914687a119c1eceee92ea3bf75ebb191bf..d578c0ef43eb818f4cdf0ec01670945bf6cb2eeb 100644 --- a/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process.cpp +++ b/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process.cpp @@ -296,10 +296,10 @@ void EncodeDataProcess::ReleaseVideoEncoder() { std::lock_guard lck(mtxEncoderState_); DHLOGD("Start release videoEncoder."); - encodeProducerSurface_ = nullptr; - encodeVideoCallback_ = nullptr; if (videoEncoder_ == nullptr) { DHLOGE("The video encoder does not exist before ReleaseVideoEncoder."); + encodeProducerSurface_ = nullptr; + encodeVideoCallback_ = nullptr; return; } int32_t ret = StopVideoEncoder(); @@ -310,7 +310,9 @@ void EncodeDataProcess::ReleaseVideoEncoder() if (ret != Media::MediaServiceErrCode::MSERR_OK) { DHLOGE("VideoEncoder release failed. Error type: %d.", ret); } + encodeProducerSurface_ = nullptr; videoEncoder_ = nullptr; + encodeVideoCallback_ = nullptr; DHLOGD("Start release videoEncoder success."); } diff --git a/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process_common.cpp b/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process_common.cpp index dc54e05b978552818f5045978903966ad108b7ed..c8f53ae3f0cf7dbbeb193b447d4e807d1f83a228 100644 --- a/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process_common.cpp +++ b/services/data_process/src/pipeline_node/multimedia_codec/encoder/encode_data_process_common.cpp @@ -268,10 +268,10 @@ void EncodeDataProcess::ReleaseVideoEncoder() { std::lock_guard lck(mtxEncoderState_); DHLOGD("Start release videoEncoder."); - encodeProducerSurface_ = nullptr; - encodeVideoCallback_ = nullptr; if (videoEncoder_ == nullptr) { DHLOGE("The video encoder does not exist before ReleaseVideoEncoder."); + encodeProducerSurface_ = nullptr; + encodeVideoCallback_ = nullptr; return; } int32_t ret = StopVideoEncoder(); @@ -282,7 +282,9 @@ void EncodeDataProcess::ReleaseVideoEncoder() if (ret != Media::MediaServiceErrCode::MSERR_OK) { DHLOGE("VideoEncoder release failed. Error type: %d.", ret); } + encodeProducerSurface_ = nullptr; videoEncoder_ = nullptr; + encodeVideoCallback_ = nullptr; DHLOGD("Start release videoEncoder success."); }