From 1a915a6c7cd25d2c42cee9e0e9817ef6bc6ba535 Mon Sep 17 00:00:00 2001 From: Clone_Zhang Date: Mon, 28 Nov 2022 17:40:35 +0800 Subject: [PATCH] fix: modify release order Signed-off-by: Clone_Zhang --- .../multimedia_codec/decoder/decode_data_process.cpp | 3 ++- .../multimedia_codec/decoder/decode_data_process_common.cpp | 3 ++- .../multimedia_codec/encoder/encode_data_process.cpp | 6 ++++-- .../multimedia_codec/encoder/encode_data_process_common.cpp | 6 ++++-- 4 files changed, 12 insertions(+), 6 deletions(-) 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 0a205cd5..14158e7a 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 778eccae..6a42895d 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 094cc391..d578c0ef 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 dc54e05b..c8f53ae3 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."); } -- Gitee