diff --git a/cloudphone/src/main/cpp/CasController.cpp b/cloudphone/src/main/cpp/CasController.cpp index 7f73b644950921fa329cf9d966666ef47bd7c4de..634d183126e25dd8849949f588262173025ec538 100644 --- a/cloudphone/src/main/cpp/CasController.cpp +++ b/cloudphone/src/main/cpp/CasController.cpp @@ -957,7 +957,9 @@ void CasController::ResetDecoder(bool isClearStream) { StopDecWorker(false); if (isClearStream) { - ClearDataStream(); + if (m_videoPacketStream != nullptr) { + m_videoPacketStream->Clear(); + } } CreateDecWorker(m_nativeWindow, m_needVideoDecode); StartDecWorker(false); diff --git a/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImpl.java b/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImpl.java index 767467b00d4e20d51701bfef52a986a8fedf81cd..2cc6f83dd99d1521cda3e778c19031d29e9d20ce 100644 --- a/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImpl.java +++ b/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImpl.java @@ -245,6 +245,8 @@ public class CloudPhoneImpl implements ICloudPhone { mCASClient.stop(false); mCmdHandler = null; mCurrentState = STATE_INIT; + mSurfaceView.setOnTouchListener(null); + mSurfaceView.setOnKeyListener(null); mSurfaceView = null; mActivity = null; mViewGroup = null; diff --git a/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/camera/VirtualCamera.java b/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/camera/VirtualCamera.java index 2f2a9c78ae355f54dad40fc6b1adc5b37234fe4b..97112bed11cf89631b5f1961903e5acfe5e0ae88 100644 --- a/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/camera/VirtualCamera.java +++ b/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/camera/VirtualCamera.java @@ -50,7 +50,6 @@ public class VirtualCamera implements Camera.PreviewCallback { private Camera mCamera = null; private static final int LOG_LENGTH_LIMIT = 2000; private static final int SIZE_WIDTH_LIMIT = 1280; - private static final int JPEG_BUFFER_SIZE = 8 * 1024 * 1024; private static final int DEFAULT_WIDTH = 640; private static final int DEFAULT_HEIGHT = 480; @@ -61,7 +60,6 @@ public class VirtualCamera implements Camera.PreviewCallback { private SurfaceHolder mSurfaceHolder; private boolean mIsUseH264; - private ByteArrayOutputStream jpegBuffer = new ByteArrayOutputStream(JPEG_BUFFER_SIZE); private Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); private IVirtualDeviceDataListener mCameraListener = null; private byte[] mPreviewBuffer = null; @@ -211,26 +209,11 @@ public class VirtualCamera implements Camera.PreviewCallback { public void onPreviewFrame(byte[] data, Camera camera) { Camera.Size size = camera.getParameters().getPreviewSize(); if (mIsUseH264) compressWithH264(data); - else compressWithMPEG(data, size.width, size.height); if (mSurfaceTexture != null) { camera.addCallbackBuffer(mPreviewBuffer); } } - private void compressWithMPEG(byte[] data, int width, int height) { - YuvImage image = new YuvImage(data, ImageFormat.NV21, width, height, null); - jpegBuffer.reset(); - int quality = 50; - if (!image.compressToJpeg(new Rect(0, 0, width, height), quality, jpegBuffer)) { - Log.e(TAG, "compressWithMPEG: failed to compress to jpeg"); - return; - } - if (mCameraListener != null) { - byte[] jpegData = jpegBuffer.toByteArray(); - mCameraListener.onRecvData(jpegData, jpegData.length, mCameraId); - } - } - private void compressWithH264(byte[] data) { mAvcCodec.offerEncoder(data, mH264Buffer); } diff --git a/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensorManager.java b/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensorManager.java index 9e780bc919aa99ba0433f761c66061e5f81c2570..d898a304683bd15cf62c4c54bea60c91dbdac287 100644 --- a/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensorManager.java +++ b/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensorManager.java @@ -70,6 +70,7 @@ public class VirtualSensorManager extends VirtualDeviceManager { } public void stop() { + mVirtualSensor.stopProcess(); int rspMsgLen = MSG_HEADER_LEN; MsgHeader header = new MsgHeader(OPT_SENSOR_DISABLE_REQ, DEV_TYPE_SENSOR, DEV_GYROSCOPE, rspMsgLen); mVirtualDeviceProtocol.sendMsg(header, null, SENSOR_DATA);