diff --git a/services/data_process/src/pipeline_node/colorspace_conversion/color_format_process.cpp b/services/data_process/src/pipeline_node/colorspace_conversion/color_format_process.cpp index 88edf0f61ee0aa3f6c384be2fabc093806968296..61f751e93dd63002844b8977782145b384cecbaf 100644 --- a/services/data_process/src/pipeline_node/colorspace_conversion/color_format_process.cpp +++ b/services/data_process/src/pipeline_node/colorspace_conversion/color_format_process.cpp @@ -67,8 +67,9 @@ void ColorFormatProcess::ReleaseProcessNode() if (nextDataProcess_ != nullptr) { nextDataProcess_->ReleaseProcessNode(); + nextDataProcess_ = nullptr; } - nextDataProcess_ = nullptr; + DHLOGD("Release [%d] node : ColorFormatNode end.", nodeRank_); } int32_t ColorFormatProcess::ProcessData(std::vector>& inputBuffers) diff --git a/services/data_process/src/pipeline_node/fpscontroller/fps_controller_process.cpp b/services/data_process/src/pipeline_node/fpscontroller/fps_controller_process.cpp index 9017b79733076bc9d6cac12c9f321b215cf33919..cfa057f8b0af756a8247f78e393121da309f43c8 100644 --- a/services/data_process/src/pipeline_node/fpscontroller/fps_controller_process.cpp +++ b/services/data_process/src/pipeline_node/fpscontroller/fps_controller_process.cpp @@ -50,10 +50,6 @@ int32_t FpsControllerProcess::InitNode(const VideoConfigParams& sourceConfig, co void FpsControllerProcess::ReleaseProcessNode() { DHLOGD("Start release [%d] node : FPS controller.", nodeRank_); - if (nextDataProcess_ != nullptr) { - nextDataProcess_->ReleaseProcessNode(); - } - isFpsControllerProcess_ = false; isFirstFrame_ = false; targetFrameRate_ = 0; @@ -67,6 +63,12 @@ void FpsControllerProcess::ReleaseProcessNode() for (int i = 0; i < INCOME_FRAME_TIME_HISTORY_WINDOWS_SIZE; i++) { incomingFrameTimesMs_[i] = 0; } + + if (nextDataProcess_ != nullptr) { + nextDataProcess_->ReleaseProcessNode(); + nextDataProcess_ = nullptr; + } + DHLOGD("Release [%d] node : FPS controller end.", nodeRank_); } int32_t FpsControllerProcess::ProcessData(std::vector>& inputBuffers) 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 d5f6a9c3fa692d9cbe61029314bbe2462b9cf162..7b2181de19159ecd1d406b0d540555c2b3e3b706 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 @@ -326,12 +326,8 @@ void DecodeDataProcess::ReleaseProcessNode() { DHLOGD("Start release [%d] node : DecodeNode.", nodeRank_); isDecoderProcess_.store(false); - if (nextDataProcess_ != nullptr) { - nextDataProcess_->ReleaseProcessNode(); - } - - ReleaseCodecEvent(); ReleaseVideoDecoder(); + ReleaseCodecEvent(); ReleaseDecoderSurface(); processType_ = ""; @@ -341,6 +337,11 @@ void DecodeDataProcess::ReleaseProcessNode() lastFeedDecoderInputBufferTimeUs_ = 0; outputTimeStampUs_ = 0; alignedHeight_ = 0; + + if (nextDataProcess_ != nullptr) { + nextDataProcess_->ReleaseProcessNode(); + nextDataProcess_ = nullptr; + } DHLOGD("Release [%d] node : DecodeNode end.", nodeRank_); } 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 26166903b807a23168777dc4b39e5d663b2472eb..9545d64390afa4172234497d8f2b78c0305dddb9 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 @@ -315,12 +315,8 @@ void DecodeDataProcess::ReleaseProcessNode() { DHLOGD("Start release [%d] node : DecodeNode.", nodeRank_); isDecoderProcess_.store(false); - if (nextDataProcess_ != nullptr) { - nextDataProcess_->ReleaseProcessNode(); - } - - ReleaseCodecEvent(); ReleaseVideoDecoder(); + ReleaseCodecEvent(); ReleaseDecoderSurface(); processType_ = ""; @@ -330,6 +326,11 @@ void DecodeDataProcess::ReleaseProcessNode() lastFeedDecoderInputBufferTimeUs_ = 0; outputTimeStampUs_ = 0; alignedHeight_ = 0; + + if (nextDataProcess_ != nullptr) { + nextDataProcess_->ReleaseProcessNode(); + nextDataProcess_ = nullptr; + } DHLOGD("Release [%d] node : DecodeNode end.", nodeRank_); } 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 9d67bc14859830bbf0fa38b655b5a50571949dbd..25ed01b9bfa1272715d7c7bb0934b3550ccf7e97 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 @@ -321,16 +321,17 @@ void EncodeDataProcess::ReleaseProcessNode() { DHLOGD("Start release [%d] node : EncodeNode.", nodeRank_); isEncoderProcess_.store(false); - if (nextDataProcess_ != nullptr) { - nextDataProcess_->ReleaseProcessNode(); - } - ReleaseVideoEncoder(); waitEncoderOutputCount_ = 0; lastFeedEncoderInputBufferTimeUs_ = 0; inputTimeStampUs_ = 0; processType_ = ""; + + if (nextDataProcess_ != nullptr) { + nextDataProcess_->ReleaseProcessNode(); + nextDataProcess_ = nullptr; + } DHLOGD("Release [%d] node : EncodeNode end.", nodeRank_); } 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 36b61665b0f3046cb7281ecc34132d08f1359bff..c95f53cae2fa2b5a7d0135315dcb5e4fa07e1a97 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 @@ -293,16 +293,17 @@ void EncodeDataProcess::ReleaseProcessNode() { DHLOGD("Start release [%d] node : EncodeNode.", nodeRank_); isEncoderProcess_.store(false); - if (nextDataProcess_ != nullptr) { - nextDataProcess_->ReleaseProcessNode(); - } - ReleaseVideoEncoder(); waitEncoderOutputCount_ = 0; lastFeedEncoderInputBufferTimeUs_ = 0; inputTimeStampUs_ = 0; processType_ = ""; + + if (nextDataProcess_ != nullptr) { + nextDataProcess_->ReleaseProcessNode(); + nextDataProcess_ = nullptr; + } DHLOGD("Release [%d] node : EncodeNode end.", nodeRank_); } diff --git a/services/data_process/src/pipeline_node/scale_conversion/scale_convert_process.cpp b/services/data_process/src/pipeline_node/scale_conversion/scale_convert_process.cpp index 19f410313248a2a1b0d782689a4ee64600624b08..590425eabf4419113e259d2639a02d8ad2211145 100644 --- a/services/data_process/src/pipeline_node/scale_conversion/scale_convert_process.cpp +++ b/services/data_process/src/pipeline_node/scale_conversion/scale_convert_process.cpp @@ -82,18 +82,22 @@ void ScaleConvertProcess::ReleaseProcessNode() { DHLOGI("Start release [%d] node : ScaleConvertNode.", nodeRank_); isScaleConvert_.store(false); + + { + std::lock_guard autoLock(scaleMutex_); + if (swsContext_ != nullptr) { + av_freep(&srcData_[0]); + av_freep(&dstData_[0]); + sws_freeContext(swsContext_); + swsContext_ = nullptr; + } + } + if (nextDataProcess_ != nullptr) { nextDataProcess_->ReleaseProcessNode(); nextDataProcess_ = nullptr; } - - std::lock_guard autoLock(scaleMutex_); - if (swsContext_ != nullptr) { - av_freep(&srcData_[0]); - av_freep(&dstData_[0]); - sws_freeContext(swsContext_); - swsContext_ = nullptr; - } + DHLOGI("Release [%d] node : ScaleConvertNode end.", nodeRank_); } int ScaleConvertProcess::ProcessData(std::vector>& inputBuffers)