From ec7b36cddf56314359ffd14bc60421f9597f2582 Mon Sep 17 00:00:00 2001 From: Raman Budny Date: Fri, 20 Dec 2019 11:12:07 +0300 Subject: [PATCH] Added exception handling to EncodedImage's release callback. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:11230 Change-Id: Iad5bb4470891fbaea6b83ba647c8b4bbc4e38c72 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/162803 Commit-Queue: Sami Kalliomäki Reviewed-by: Sami Kalliomäki Reviewed-by: Niels Moller Cr-Commit-Position: refs/heads/master@{#30165} --- .../src/java/org/webrtc/HardwareVideoEncoder.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java b/sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java index 2239d8e714..5cfd06597c 100644 --- a/sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java +++ b/sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java @@ -586,7 +586,14 @@ class HardwareVideoEncoder implements VideoEncoder { EncodedImage encodedImage = builder .setBuffer(frameBuffer, () -> { - codec.releaseOutputBuffer(index, false); + // This callback should not throw any exceptions since + // it may be called on an arbitrary thread. + // Check bug webrtc:11230 for more details. + try { + codec.releaseOutputBuffer(index, false); + } catch (Exception e) { + Logging.e(TAG, "releaseOutputBuffer failed", e); + } outputBuffersBusyCount.decrement(); }) .setFrameType(frameType)