diff --git a/services/engine/codec/audio/encoder/audio_ffmpeg_aac_encoder_plugin.cpp b/services/engine/codec/audio/encoder/audio_ffmpeg_aac_encoder_plugin.cpp index 4741411be50dbb96dede354422b49b60040367c0..f4d89bcd619985752f61800830bec0b179882d65 100644 --- a/services/engine/codec/audio/encoder/audio_ffmpeg_aac_encoder_plugin.cpp +++ b/services/engine/codec/audio/encoder/audio_ffmpeg_aac_encoder_plugin.cpp @@ -498,6 +498,7 @@ int32_t AudioFFMpegAacEncoderPlugin::PcmFillFrame(const std::shared_ptr &outBuffer) { + (void)memset_s(avPacket_.get(), sizeof(AVPacket), 0, sizeof(AVPacket)); auto ret = avcodec_receive_packet(avCodecContext_.get(), avPacket_.get()); int32_t status; if (ret >= 0) { @@ -513,6 +514,7 @@ int32_t AudioFFMpegAacEncoderPlugin::ReceiveBuffer(std::shared_ptr &outBuffer) { + (void)memset_s(avPacket_.get(), sizeof(AVPacket), 0, sizeof(AVPacket)); auto ret = avcodec_receive_packet(avCodecContext_.get(), avPacket_.get()); int32_t status; AVCodecBufferInfo initAttr = {0}; @@ -160,6 +161,7 @@ int32_t AudioFfmpegEncoderPlugin::ReceiveBuffer(std::shared_ptr AVCODEC_LOGE("audio encoder receive unknow error: %{public}s", FFMpegConverter::AVStrError(ret).c_str()); status = AVCodecServiceErrCode::AVCS_ERR_UNKNOWN; } + av_packet_unref(avPacket_.get()); return status; } diff --git a/services/media_engine/plugins/ffmpeg_adapter/audio_encoder/aac/ffmpeg_aac_encoder_plugin.cpp b/services/media_engine/plugins/ffmpeg_adapter/audio_encoder/aac/ffmpeg_aac_encoder_plugin.cpp index 0d99138f9da1ce1662c8fd510b922005ca322578..03e058946270fd7f3b7809110ca6fa39f7c219bb 100644 --- a/services/media_engine/plugins/ffmpeg_adapter/audio_encoder/aac/ffmpeg_aac_encoder_plugin.cpp +++ b/services/media_engine/plugins/ffmpeg_adapter/audio_encoder/aac/ffmpeg_aac_encoder_plugin.cpp @@ -326,6 +326,7 @@ Status FFmpegAACEncoderPlugin::ReceivePacketSucc(std::shared_ptr &outB Status FFmpegAACEncoderPlugin::ReceiveBuffer(std::shared_ptr &outBuffer) { + (void)memset_s(avPacket_.get(), sizeof(AVPacket), 0, sizeof(AVPacket)); auto ret = avcodec_receive_packet(avCodecContext_.get(), avPacket_.get()); Status status; if (ret >= 0) { @@ -343,6 +344,7 @@ Status FFmpegAACEncoderPlugin::ReceiveBuffer(std::shared_ptr &outBuffe MEDIA_LOG_E("audio encoder receive unknow error: %{public}s", OSAL::AVStrError(ret).c_str()); status = Status::ERROR_UNKNOWN; } + av_packet_unref(avPacket_.get()); return status; } diff --git a/services/media_engine/plugins/ffmpeg_adapter/audio_encoder/ffmpeg_base_encoder.cpp b/services/media_engine/plugins/ffmpeg_adapter/audio_encoder/ffmpeg_base_encoder.cpp index 9e7ea30eabc26560ad16d3b5d0fd07d3d970023e..4a0dfad8eadd802fc75f77bd1b7dd7391604ae03 100644 --- a/services/media_engine/plugins/ffmpeg_adapter/audio_encoder/ffmpeg_base_encoder.cpp +++ b/services/media_engine/plugins/ffmpeg_adapter/audio_encoder/ffmpeg_base_encoder.cpp @@ -153,6 +153,7 @@ Status FFmpegBaseEncoder::ProcessReceiveData(std::shared_ptr &outputBu Status FFmpegBaseEncoder::ReceiveBuffer(std::shared_ptr &outputBuffer) { + (void)memset_s(avPacket_.get(), sizeof(AVPacket), 0, sizeof(AVPacket)); auto ret = avcodec_receive_packet(avCodecContext_.get(), avPacket_.get()); Status status; if (ret >= 0) { @@ -168,6 +169,7 @@ Status FFmpegBaseEncoder::ReceiveBuffer(std::shared_ptr &outputBuffer) AVCODEC_LOGE("audio encoder receive unknow error: %{public}s", OSAL::AVStrError(ret).c_str()); status = Status::ERROR_UNKNOWN; } + av_packet_unref(avPacket_.get()); return status; }