Changed AndroidVideoDecoder to also handle IllegalArgumentException and IllegalStateException during the init of the decoder and fallback to a software decoder

Bug: webrtc:11785
Change-Id: I984d65947274b62fdcae20772537d20851cb25ba
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/180460
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31856}
diff --git a/AUTHORS b/AUTHORS
index 63d90c2..ad7bdbd 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -130,3 +130,4 @@
 Tuple, LLC <*@tuple.app>
 Videona Socialmedia <*@videona.com>
 Threema GmbH <*@threema.ch>
+Dennis Angelo <dennis.angelo@gmail.com>
diff --git a/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java b/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java
index b797e25..d9e1d36 100644
--- a/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java
+++ b/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java
@@ -180,7 +180,7 @@
 
     try {
       codec = mediaCodecWrapperFactory.createByCodecName(codecName);
-    } catch (IOException | IllegalArgumentException e) {
+    } catch (IOException | IllegalArgumentException | IllegalStateException e) {
       Logging.e(TAG, "Cannot create media decoder " + codecName);
       return VideoCodecStatus.FALLBACK_SOFTWARE;
     }
@@ -191,7 +191,7 @@
       }
       codec.configure(format, surface, null, 0);
       codec.start();
-    } catch (IllegalStateException e) {
+    } catch (IllegalStateException | IllegalArgumentException e) {
       Logging.e(TAG, "initDecode failed", e);
       release();
       return VideoCodecStatus.FALLBACK_SOFTWARE;