diff --git a/modules/video_coding/codecs/vp8/vp8_impl.cc b/modules/video_coding/codecs/vp8/vp8_impl.cc index f491445835..5d47048250 100644 --- a/modules/video_coding/codecs/vp8/vp8_impl.cc +++ b/modules/video_coding/codecs/vp8/vp8_impl.cc @@ -279,8 +279,10 @@ int VP8EncoderImpl::Release() { } while (!encoders_.empty()) { vpx_codec_ctx_t& encoder = encoders_.back(); - if (vpx_codec_destroy(&encoder)) { - ret_val = WEBRTC_VIDEO_CODEC_MEMORY; + if (inited_) { + if (vpx_codec_destroy(&encoder)) { + ret_val = WEBRTC_VIDEO_CODEC_MEMORY; + } } encoders_.pop_back(); } @@ -1294,8 +1296,10 @@ int VP8DecoderImpl::Release() { int ret_val = WEBRTC_VIDEO_CODEC_OK; if (decoder_ != NULL) { - if (vpx_codec_destroy(decoder_)) { - ret_val = WEBRTC_VIDEO_CODEC_MEMORY; + if (inited_) { + if (vpx_codec_destroy(decoder_)) { + ret_val = WEBRTC_VIDEO_CODEC_MEMORY; + } } delete decoder_; decoder_ = NULL; diff --git a/modules/video_coding/codecs/vp9/vp9_impl.cc b/modules/video_coding/codecs/vp9/vp9_impl.cc index c54fda53b7..2fb6e55aff 100644 --- a/modules/video_coding/codecs/vp9/vp9_impl.cc +++ b/modules/video_coding/codecs/vp9/vp9_impl.cc @@ -101,8 +101,10 @@ int VP9EncoderImpl::Release() { encoded_image_._buffer = nullptr; } if (encoder_ != nullptr) { - if (vpx_codec_destroy(encoder_)) { - ret_val = WEBRTC_VIDEO_CODEC_MEMORY; + if (inited_) { + if (vpx_codec_destroy(encoder_)) { + ret_val = WEBRTC_VIDEO_CODEC_MEMORY; + } } delete encoder_; encoder_ = nullptr; @@ -1008,10 +1010,12 @@ int VP9DecoderImpl::Release() { int ret_val = WEBRTC_VIDEO_CODEC_OK; if (decoder_ != nullptr) { - // When a codec is destroyed libvpx will release any buffers of - // |frame_buffer_pool_| it is currently using. - if (vpx_codec_destroy(decoder_)) { - ret_val = WEBRTC_VIDEO_CODEC_MEMORY; + if (inited_) { + // When a codec is destroyed libvpx will release any buffers of + // |frame_buffer_pool_| it is currently using. + if (vpx_codec_destroy(decoder_)) { + ret_val = WEBRTC_VIDEO_CODEC_MEMORY; + } } delete decoder_; decoder_ = nullptr;