From 4adb67785b37a471628bb7b71aecd2735e5c063b Mon Sep 17 00:00:00 2001 From: Leo Ma Date: Fri, 26 Aug 2016 09:00:13 +0800 Subject: [PATCH] Modify network weak exception as event handler Signed-off-by: Leo Ma --- .../java/net/ossrs/yasea/MainActivity.java | 22 +++++++++++++++++++ .../main/java/net/ossrs/yasea/SrsEncoder.java | 22 +++++++++++++++++-- .../java/net/ossrs/yasea/SrsPublisher.java | 4 ++++ 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/net/ossrs/yasea/MainActivity.java b/app/src/main/java/net/ossrs/yasea/MainActivity.java index 37ce231..3d47d98 100644 --- a/app/src/main/java/net/ossrs/yasea/MainActivity.java +++ b/app/src/main/java/net/ossrs/yasea/MainActivity.java @@ -236,6 +236,28 @@ public class MainActivity extends Activity { } }); + mPublisher.setNetworkEventHandler(new SrsEncoder.EventHandler() { + @Override + public void onNetworkResume(final String msg) { + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show(); + } + }); + } + + @Override + public void onNetworkWeak(final String msg) { + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show(); + } + }); + } + }); + Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { diff --git a/app/src/main/java/net/ossrs/yasea/SrsEncoder.java b/app/src/main/java/net/ossrs/yasea/SrsEncoder.java index 29416ce..60b66f8 100644 --- a/app/src/main/java/net/ossrs/yasea/SrsEncoder.java +++ b/app/src/main/java/net/ossrs/yasea/SrsEncoder.java @@ -44,6 +44,8 @@ public class SrsEncoder { private MediaCodec.BufferInfo vebi = new MediaCodec.BufferInfo(); private MediaCodec.BufferInfo aebi = new MediaCodec.BufferInfo(); + private EventHandler mHandler; + private boolean networkWeakTriggered = false; private boolean mCameraFaceFront = true; private boolean useSoftEncoder = false; @@ -56,6 +58,13 @@ public class SrsEncoder { private int audioFlvTrack; private int audioMp4Track; + public interface EventHandler { + + void onNetworkResume(String msg); + + void onNetworkWeak(String msg); + } + // Y, U (Cb) and V (Cr) // yuv420 yuv yuv yuv yuv // yuv420p (planar) yyyy*2 uu vv @@ -79,6 +88,10 @@ public class SrsEncoder { this.mp4Muxer = mp4Muxer; } + public void setNetworkEventHandler(EventHandler handler) { + mHandler = handler; + } + public boolean start() { if (flvMuxer == null || mp4Muxer == null) { return false; @@ -340,9 +353,14 @@ public class SrsEncoder { new IllegalArgumentException("libyuv failure")); } } + + if (networkWeakTriggered) { + networkWeakTriggered = false; + mHandler.onNetworkResume("Network resume"); + } } else { - Thread.getDefaultUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), - new IOException("Network is weak")); + mHandler.onNetworkWeak("Network weak"); + networkWeakTriggered = true; } } diff --git a/app/src/main/java/net/ossrs/yasea/SrsPublisher.java b/app/src/main/java/net/ossrs/yasea/SrsPublisher.java index fa72c7c..a83e32b 100644 --- a/app/src/main/java/net/ossrs/yasea/SrsPublisher.java +++ b/app/src/main/java/net/ossrs/yasea/SrsPublisher.java @@ -318,6 +318,10 @@ public class SrsPublisher implements SurfaceHolder.Callback, Camera.PreviewCallb mEncoder.setMp4Muxer(mMp4Muxer); } + public void setNetworkEventHandler(SrsEncoder.EventHandler handler) { + mEncoder.setNetworkEventHandler(handler); + } + public void setSurfaceView(SurfaceView surfaceView) { mCameraView = surfaceView; mCameraView.getHolder().addCallback(this);