diff --git a/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java b/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java index 35a0f0e011..aa68e9d832 100644 --- a/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java +++ b/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java @@ -585,13 +585,21 @@ class AndroidVideoDecoder implements VideoDecoder, VideoSink { } // Compare to existing width, height, and save values under the dimension lock. synchronized (dimensionLock) { - if (hasDecodedFirstFrame && (width != newWidth || height != newHeight)) { - stopOnOutputThread(new RuntimeException("Unexpected size change. Configured " + width + "*" - + height + ". New " + newWidth + "*" + newHeight)); - return; + if (newWidth != width || newHeight != height) { + if (hasDecodedFirstFrame) { + stopOnOutputThread(new RuntimeException("Unexpected size change. " + + "Configured " + width + "*" + height + ". " + + "New " + newWidth + "*" + newHeight)); + return; + } else if (newWidth <= 0 || newHeight <= 0) { + Logging.w(TAG, + "Unexpected format dimensions. Configured " + width + "*" + height + ". " + + "New " + newWidth + "*" + newHeight + ". Skip it"); + return; + } + width = newWidth; + height = newHeight; } - width = newWidth; - height = newHeight; } // Note: texture mode ignores colorFormat. Hence, if the texture helper is non-null, skip