Modify network weak exception as event handler

Signed-off-by: Leo Ma <begeekmyfriend@gmail.com>
camera2
Leo Ma 9 years ago
parent cf0ec99282
commit 4adb67785b

@ -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() { Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override @Override
public void uncaughtException(Thread thread, Throwable ex) { public void uncaughtException(Thread thread, Throwable ex) {

@ -44,6 +44,8 @@ public class SrsEncoder {
private MediaCodec.BufferInfo vebi = new MediaCodec.BufferInfo(); private MediaCodec.BufferInfo vebi = new MediaCodec.BufferInfo();
private MediaCodec.BufferInfo aebi = new MediaCodec.BufferInfo(); private MediaCodec.BufferInfo aebi = new MediaCodec.BufferInfo();
private EventHandler mHandler;
private boolean networkWeakTriggered = false;
private boolean mCameraFaceFront = true; private boolean mCameraFaceFront = true;
private boolean useSoftEncoder = false; private boolean useSoftEncoder = false;
@ -56,6 +58,13 @@ public class SrsEncoder {
private int audioFlvTrack; private int audioFlvTrack;
private int audioMp4Track; private int audioMp4Track;
public interface EventHandler {
void onNetworkResume(String msg);
void onNetworkWeak(String msg);
}
// Y, U (Cb) and V (Cr) // Y, U (Cb) and V (Cr)
// yuv420 yuv yuv yuv yuv // yuv420 yuv yuv yuv yuv
// yuv420p (planar) yyyy*2 uu vv // yuv420p (planar) yyyy*2 uu vv
@ -79,6 +88,10 @@ public class SrsEncoder {
this.mp4Muxer = mp4Muxer; this.mp4Muxer = mp4Muxer;
} }
public void setNetworkEventHandler(EventHandler handler) {
mHandler = handler;
}
public boolean start() { public boolean start() {
if (flvMuxer == null || mp4Muxer == null) { if (flvMuxer == null || mp4Muxer == null) {
return false; return false;
@ -340,9 +353,14 @@ public class SrsEncoder {
new IllegalArgumentException("libyuv failure")); new IllegalArgumentException("libyuv failure"));
} }
} }
if (networkWeakTriggered) {
networkWeakTriggered = false;
mHandler.onNetworkResume("Network resume");
}
} else { } else {
Thread.getDefaultUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), mHandler.onNetworkWeak("Network weak");
new IOException("Network is weak")); networkWeakTriggered = true;
} }
} }

@ -318,6 +318,10 @@ public class SrsPublisher implements SurfaceHolder.Callback, Camera.PreviewCallb
mEncoder.setMp4Muxer(mMp4Muxer); mEncoder.setMp4Muxer(mMp4Muxer);
} }
public void setNetworkEventHandler(SrsEncoder.EventHandler handler) {
mEncoder.setNetworkEventHandler(handler);
}
public void setSurfaceView(SurfaceView surfaceView) { public void setSurfaceView(SurfaceView surfaceView) {
mCameraView = surfaceView; mCameraView = surfaceView;
mCameraView.getHolder().addCallback(this); mCameraView.getHolder().addCallback(this);

Loading…
Cancel
Save