Modify network weak exception as event handler

Signed-off-by: Leo Ma <begeekmyfriend@gmail.com>
camera2
Leo Ma 9 years ago
parent 144608b4f6
commit b29ee3a77a

@ -228,6 +228,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) {

@ -33,6 +33,8 @@ public class SrsEncoder {
public static final int ACHANNEL = AudioFormat.CHANNEL_IN_STEREO; public static final int ACHANNEL = AudioFormat.CHANNEL_IN_STEREO;
public static final int ABITRATE = 32 * 1000; // 32kbps public static final int ABITRATE = 32 * 1000; // 32kbps
private EventHandler mHandler;
private boolean onNetworkWeakTriggered = false;
private int mOrientation = Configuration.ORIENTATION_PORTRAIT; private int mOrientation = Configuration.ORIENTATION_PORTRAIT;
private SrsFlvMuxer flvMuxer; private SrsFlvMuxer flvMuxer;
@ -56,6 +58,13 @@ public class SrsEncoder {
private int audioFlvTrack; private int audioFlvTrack;
private int audioMp4Track; private int audioMp4Track;
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;
@ -369,9 +382,14 @@ public class SrsEncoder {
new IllegalArgumentException("libyuv failure")); new IllegalArgumentException("libyuv failure"));
} }
} }
if (onNetworkWeakTriggered) {
onNetworkWeakTriggered = false;
mHandler.onNetworkResume("Network resume");
}
} else { } else {
Thread.getDefaultUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), mHandler.onNetworkWeak("Network weak");
new IOException("Network is weak")); onNetworkWeakTriggered = true;
} }
} }
@ -451,9 +469,14 @@ public class SrsEncoder {
new IllegalArgumentException("libyuv failure")); new IllegalArgumentException("libyuv failure"));
} }
} }
if (onNetworkWeakTriggered) {
onNetworkWeakTriggered = false;
mHandler.onNetworkResume("Network resume");
}
} else { } else {
Thread.getDefaultUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), mHandler.onNetworkWeak("Network weak");
new IOException("Network is weak")); onNetworkWeakTriggered = true;
} }
} }

@ -268,4 +268,8 @@ public class SrsPublisher {
mMp4Muxer = new SrsMp4Muxer(handler); mMp4Muxer = new SrsMp4Muxer(handler);
mEncoder.setMp4Muxer(mMp4Muxer); mEncoder.setMp4Muxer(mMp4Muxer);
} }
public void setNetworkEventHandler(SrsEncoder.EventHandler handler) {
mEncoder.setNetworkEventHandler(handler);
}
} }

Loading…
Cancel
Save