From e683a58c8239ac7079716dc5841d1f8ef107fb56 Mon Sep 17 00:00:00 2001 From: wangshuo <584363327@qq.com> Date: Fri, 27 Oct 2023 15:03:00 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=A4=9A=E6=AC=A1=E8=BD=AC?= =?UTF-8?q?=E5=B1=8F=E5=81=B6=E7=8E=B0=E6=98=BE=E7=A4=BA=E6=96=B9=E5=90=91?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cloudphone/src/main/cpp/CasController.cpp | 4 +++- .../cloudphone/apiimpl/CloudPhoneImpl.java | 2 ++ .../virtualdevice/camera/VirtualCamera.java | 17 ----------------- .../sensor/VirtualSensorManager.java | 1 + 4 files changed, 6 insertions(+), 18 deletions(-) diff --git a/cloudphone/src/main/cpp/CasController.cpp b/cloudphone/src/main/cpp/CasController.cpp index 7f73b64..634d183 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 767467b..2cc6f83 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 2f2a9c7..97112be 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 9e780bc..d898a30 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); -- Gitee