Skip to content
Snippets Groups Projects
Commit 42fd31eb authored by Leo Ma's avatar Leo Ma
Browse files

Fix camera switch bug


The encoder should be available when camera is opened.

Signed-off-by: default avatarLeo Ma <begeekmyfriend@gmail.com>
parent f6f071a6
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -106,9 +106,7 @@ 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());
}
mPublisher.switchCameraFace((mPublisher.getCamraId() + 1) % Camera.getNumberOfCameras());
}
});
 
Loading
Loading
Loading
Loading
@@ -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;
Loading
Loading
@@ -113,8 +114,11 @@ public class SrsEncoder {
setEncoderBitrate(vBitrate);
setEncoderPreset(x264Preset);
if (useSoftEncoder && !openSoftEncoder()) {
return false;
if (useSoftEncoder) {
canSoftEncode = openSoftEncoder();
if (!canSoftEncode) {
return false;
}
}
// aencoder pcm to aac raw stream.
Loading
Loading
@@ -170,6 +174,7 @@ public class SrsEncoder {
public void stop() {
if (useSoftEncoder) {
closeSoftEncoder();
canSoftEncode = false;
}
if (aencoder != null) {
Loading
Loading
@@ -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;
}
Loading
Loading
@@ -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;
Loading
Loading
Loading
Loading
@@ -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() {
Loading
Loading
@@ -207,14 +207,16 @@ public class SrsPublisher {
}
public void switchCameraFace(int id) {
mCameraView.setCameraId(id);
mCameraView.stopCamera();
if (id == 0) {
mEncoder.setCameraBackFace();
} else {
mEncoder.setCameraFrontFace();
if (mEncoder.isEnabled()) {
mCameraView.stopCamera();
mCameraView.setCameraId(id);
if (id == 0) {
mEncoder.setCameraBackFace();
} else {
mEncoder.setCameraFrontFace();
}
mCameraView.startCamera();
}
mCameraView.startCamera();
}
private void startAudio() {
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment