Settle API

Signed-off-by: Leo Ma <begeekmyfriend@gmail.com>
camera2
Leo Ma 8 years ago
parent 2cfb8336ab
commit a36039093a

@ -218,7 +218,7 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
return mCamId; return mCamId;
} }
public void enableEncoding() { private void enableEncoding() {
worker = new Thread(new Runnable() { worker = new Thread(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -244,7 +244,7 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
mIsEncoding = true; mIsEncoding = true;
} }
public void disableEncoding() { private void disableEncoding() {
mIsEncoding = false; mIsEncoding = false;
mGLIntBufferCache.clear(); mGLIntBufferCache.clear();
@ -268,6 +268,8 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
} }
} }
enableEncoding();
Camera.Parameters params = mCamera.getParameters(); Camera.Parameters params = mCamera.getParameters();
List<String> supportedFocusModes = params.getSupportedFocusModes(); List<String> supportedFocusModes = params.getSupportedFocusModes();

@ -18,7 +18,6 @@ public class SrsPublisher {
private static AcousticEchoCanceler aec; private static AcousticEchoCanceler aec;
private static AutomaticGainControl agc; private static AutomaticGainControl agc;
private byte[] mPcmBuffer = new byte[4096]; private byte[] mPcmBuffer = new byte[4096];
private boolean aloop = false;
private Thread aworker; private Thread aworker;
private SrsCameraView mCameraView; private SrsCameraView mCameraView;
@ -67,11 +66,7 @@ public class SrsPublisher {
mCameraView.stopCamera(); mCameraView.stopCamera();
} }
public void startEncode() { public void startAudio() {
if (!mEncoder.start()) {
return;
}
mic = mEncoder.chooseAudioRecord(); mic = mEncoder.chooseAudioRecord();
if (mic == null) { if (mic == null) {
return; return;
@ -91,19 +86,62 @@ public class SrsPublisher {
} }
} }
mCameraView.enableEncoding();
aworker = new Thread(new Runnable() { aworker = new Thread(new Runnable() {
@Override @Override
public void run() { public void run() {
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO); android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);
startAudio(); mic.startRecording();
while (!Thread.interrupted()) {
int size = mic.read(mPcmBuffer, 0, mPcmBuffer.length);
if (size <= 0) {
break;
}
mEncoder.onGetPcmFrame(mPcmBuffer, size);
}
} }
}); });
aloop = true;
aworker.start(); aworker.start();
} }
public void stopAudio() {
if (aworker != null) {
aworker.interrupt();
try {
aworker.join();
} catch (InterruptedException e) {
aworker.interrupt();
}
aworker = null;
}
if (mic != null) {
mic.setRecordPositionUpdateListener(null);
mic.stop();
mic.release();
mic = null;
}
if (aec != null) {
aec.setEnabled(false);
aec.release();
aec = null;
}
if (agc != null) {
agc.setEnabled(false);
agc.release();
agc = null;
}
}
public void startEncode() {
if (!mEncoder.start()) {
return;
}
startAudio();
}
public void stopEncode() { public void stopEncode() {
stopAudio(); stopAudio();
stopCamera(); stopCamera();
@ -218,56 +256,10 @@ public class SrsPublisher {
} else { } else {
mEncoder.setCameraFrontFace(); mEncoder.setCameraFrontFace();
} }
mCameraView.enableEncoding();
mCameraView.startCamera(); mCameraView.startCamera();
} }
} }
private void startAudio() {
if (mic != null) {
mic.startRecording();
while (aloop && !Thread.interrupted()) {
int size = mic.read(mPcmBuffer, 0, mPcmBuffer.length);
if (size <= 0) {
break;
}
mEncoder.onGetPcmFrame(mPcmBuffer, size);
}
}
}
private void stopAudio() {
aloop = false;
if (aworker != null) {
aworker.interrupt();
try {
aworker.join();
} catch (InterruptedException e) {
aworker.interrupt();
}
aworker = null;
}
if (mic != null) {
mic.setRecordPositionUpdateListener(null);
mic.stop();
mic.release();
mic = null;
}
if (aec != null) {
aec.setEnabled(false);
aec.release();
aec = null;
}
if (agc != null) {
agc.setEnabled(false);
agc.release();
agc = null;
}
}
public void setRtmpHandler(RtmpHandler handler) { public void setRtmpHandler(RtmpHandler handler) {
mFlvMuxer = new SrsFlvMuxer(handler); mFlvMuxer = new SrsFlvMuxer(handler);
if (mEncoder != null) { if (mEncoder != null) {

Loading…
Cancel
Save