private long frameCount = 0;
// Preferred picture Size of the camera;
- private int width = 0;
- private int height = 0;
+ private Camera.Size mPreferredSize;
private MyServiceEventListener mListener;
public Camera getCameraInstance() {
if (mCamera == null) {
- CameraHandlerThread mThread = new CameraHandlerThread("camera thread");
+ CameraHandlerThread mThread = new CameraHandlerThread("ThreadCamera");
synchronized (mThread) {
mThread.openCamera();
}
if(mCamera != null){
try {
mCamera.stopPreview();
+ mCamera.setPreviewCallback(null);
mCamera.release();
mCamera = null;
} catch (Exception e){
public void startPreview (SurfaceHolder holder){
gLogger.debug("startPreview");
+ if(mCamera == null){
+ gLogger.error("startPreview - error: camera is null");
+ return;
+ }
try {
+ mCamera.setPreviewCallback(this);
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
} catch (Exception e){
}
public boolean setRtmpUrl (String url){
- //this.rtmpUrl = url;
- if(mCamera == null){
- gLogger.error("setRtmpUrl, error mCamera is null");
+ if(mCamera == null) {
+ gLogger.error("setRtmpUrl mCamera is null");
+ return false;
+ } else if (mPreferredSize == null) {
+ gLogger.error("setRtmpUrl mPreferredSize is null");
return false;
}
- gLogger.error("setRtmpUrl - size: " + width + "x" + height + ". url: " + url);
- int ret = FfmpegHelper.initEncoder(width, height, url);
+ gLogger.error("setRtmpUrl - size: " + mPreferredSize.width + "x" + mPreferredSize.height + ". url: " + url);
+ int ret = FfmpegHelper.initEncoder(mPreferredSize.width, mPreferredSize.height, url);
if(ret != 0){
gLogger.error("setRtmpUrl, initEncoder error");
}
- return ret == 0 ? true : false;
+ return ret == 0;
}
private void configCamera(Camera camera){
for(int[] i : paras.getSupportedPreviewFpsRange()){
gLogger.error("[" + i[0] + "," + i[1] + "]");
}
- width = preferredSize.width;
- height = preferredSize.height;
+ mPreferredSize = preferredSize;
paras.setPictureSize(preferredSize.width, preferredSize.height); // use 640x480 preferred
camera.setParameters(paras);
camera.setDisplayOrientation(0);
camera.setPreviewCallback(this);
}
+ public Camera.Size getBestPictureSize(){
+ return mPreferredSize;
+ }
+
// Camaer.onError callback
@Override
public void onError(int error, Camera camera){