Call vpx_codec_destroy() only if vpx_codec_init() call preceded.

This fixes the issue when Init() with correct codec settings fails
because preceding Init() was called with wrong settings.

Bug: webrtc:8969
Change-Id: I50e618af6266ef593942fda27839c7c01e8717ae
Reviewed-on: https://webrtc-review.googlesource.com/59382
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22271}
diff --git a/modules/video_coding/codecs/vp8/vp8_impl.cc b/modules/video_coding/codecs/vp8/vp8_impl.cc
index f491445..5d47048 100644
--- a/modules/video_coding/codecs/vp8/vp8_impl.cc
+++ b/modules/video_coding/codecs/vp8/vp8_impl.cc
@@ -279,8 +279,10 @@
   }
   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 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 c54fda5..2fb6e55 100644
--- a/modules/video_coding/codecs/vp9/vp9_impl.cc
+++ b/modules/video_coding/codecs/vp9/vp9_impl.cc
@@ -101,8 +101,10 @@
     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 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;