Fix camera switch bug

The encoder should be available when camera is opened.

Signed-off-by: Leo Ma <begeekmyfriend@gmail.com>
camera2
Leo Ma 9 years ago
parent f6f071a6b6
commit 42fd31eb5c

@ -106,10 +106,8 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL
btnSwitchCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Camera.getNumberOfCameras() > 0) {
mPublisher.switchCameraFace((mPublisher.getCamraId() + 1) % Camera.getNumberOfCameras());
}
}
});
btnRecord.setOnClickListener(new View.OnClickListener() {

@ -52,6 +52,7 @@ public class SrsEncoder {
private boolean networkWeakTriggered = false;
private boolean mCameraFaceFront = true;
private boolean useSoftEncoder = false;
private boolean canSoftEncoder = false;
private long mPresentTimeUs;
@ -113,9 +114,12 @@ public class SrsEncoder {
setEncoderBitrate(vBitrate);
setEncoderPreset(x264Preset);
if (useSoftEncoder && !openSoftEncoder()) {
if (useSoftEncoder) {
canSoftEncode = openSoftEncoder();
if (!canSoftEncode) {
return false;
}
}
// aencoder pcm to aac raw stream.
// requires sdk level 16+, Android 4.1, 4.1.1, the JELLY_BEAN
@ -170,6 +174,7 @@ public class SrsEncoder {
public void stop() {
if (useSoftEncoder) {
closeSoftEncoder();
canSoftEncode = false;
}
if (aencoder != null) {
@ -195,11 +200,11 @@ public class SrsEncoder {
mCameraFaceFront = false;
}
public void swithToSoftEncoder() {
public void switchToSoftEncoder() {
useSoftEncoder = true;
}
public void swithToHardEncoder() {
public void switchToHardEncoder() {
useSoftEncoder = false;
}
@ -207,6 +212,18 @@ public class SrsEncoder {
return useSoftEncoder;
}
public boolean canHardEncode() {
return vencoder != null;
}
public boolean canSoftEncode() {
return canSoftEncode;
}
public boolean isEnabled() {
return canHardEncode() || canSoftEncode();
}
public void setPreviewResolution(int width, int height) {
vPrevWidth = width;
vPrevHeight = height;

@ -144,12 +144,12 @@ public class SrsPublisher {
}
}
public void swithToSoftEncoder() {
mEncoder.swithToSoftEncoder();
public void switchToSoftEncoder() {
mEncoder.switchToSoftEncoder();
}
public void swithToHardEncoder() {
mEncoder.swithToHardEncoder();
public void switchToHardEncoder() {
mEncoder.switchToHardEncoder();
}
public boolean isSoftEncoder() {
@ -207,8 +207,9 @@ public class SrsPublisher {
}
public void switchCameraFace(int id) {
mCameraView.setCameraId(id);
if (mEncoder.isEnabled()) {
mCameraView.stopCamera();
mCameraView.setCameraId(id);
if (id == 0) {
mEncoder.setCameraBackFace();
} else {
@ -216,6 +217,7 @@ public class SrsPublisher {
}
mCameraView.startCamera();
}
}
private void startAudio() {
if (mic != null) {

Loading…
Cancel
Save