From 3db399227fa407d329327b08b458b4fcfdf854ac Mon Sep 17 00:00:00 2001 From: yrom Date: Thu, 24 May 2018 10:18:51 +0800 Subject: [PATCH] BaseEncoder: prepare mediacodec on nonnull callback See #21 MediaCodec maybe crash on some devices due to null callback --- app/src/main/java/net/yrom/screenrecorder/BaseEncoder.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/net/yrom/screenrecorder/BaseEncoder.java b/app/src/main/java/net/yrom/screenrecorder/BaseEncoder.java index 52ccdeb..86504bf 100644 --- a/app/src/main/java/net/yrom/screenrecorder/BaseEncoder.java +++ b/app/src/main/java/net/yrom/screenrecorder/BaseEncoder.java @@ -79,7 +79,10 @@ public void prepare() throws IOException { String mimeType = format.getString(MediaFormat.KEY_MIME); final MediaCodec encoder = createEncoder(mimeType); try { - encoder.setCallback(this.mCallback == null ? null : mCodecCallback); + if (this.mCallback != null) { + // NOTE: MediaCodec maybe crash on some devices due to null callback + encoder.setCallback(mCodecCallback); + } encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); onEncoderConfigured(encoder); encoder.start();