From 2d0fe6609be3ecaa3908f6d1f56608974e67ecf4 Mon Sep 17 00:00:00 2001 From: liuguijing <1440265357@qq.com> Date: Sat, 19 Apr 2025 20:22:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BA=E4=BF=AE=E5=A4=8D=E5=AE=81=E5=A4=8F?= =?UTF-8?q?=E7=9F=AD=E8=A7=86=E9=A2=91=E6=8B=8D=E7=85=A7=E7=BF=BB=E8=BD=AC?= =?UTF-8?q?=E7=9A=84bug=20=E4=B8=B4=E6=97=B6=E4=BF=AE=E6=94=B9=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 11 ++++++++++- .../xypower/mpapp/v2/Camera2VideoActivity.java | 5 ++++- .../GPUCameraRecorderBuilder.java | 18 ++++++++++++++---- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 71294fd1..6b31a8f7 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -2497,7 +2497,16 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< } } - int orientation = mPhotoInfo.orientation == 0 ? -1 : (mPhotoInfo.orientation - 1) * 90; + //为修复宁夏短视频拍照翻转的bug 临时修改方法 +// int orientation = mPhotoInfo.orientation == 0 ? -1 : (mPhotoInfo.orientation - 1) * 90; + int orientation = -1; + if (mPhotoInfo.cameraId == 0) { + orientation = -1; + } else if (mPhotoInfo.cameraId == 1) { + orientation = 0; + } else if (mPhotoInfo.cameraId == 2) { + orientation =-3; + } jboolean photoOrVideo = mPhotoInfo.mediaType == 0 ? JNI_TRUE : JNI_FALSE; env->CallVoidMethod(m_javaService, mStartRecordingMid, photoOrVideo, mPhotoInfo.cameraId, (uint64_t)mPhotoInfo.photoId, mPhotoInfo.duration, mPhotoInfo.width, mPhotoInfo.height, mPhotoInfo.duration, orientation, diff --git a/app/src/main/java/com/xypower/mpapp/v2/Camera2VideoActivity.java b/app/src/main/java/com/xypower/mpapp/v2/Camera2VideoActivity.java index 8bc22f94..8a071eff 100644 --- a/app/src/main/java/com/xypower/mpapp/v2/Camera2VideoActivity.java +++ b/app/src/main/java/com/xypower/mpapp/v2/Camera2VideoActivity.java @@ -769,7 +769,10 @@ public class Camera2VideoActivity extends AppCompatActivity { @Override public void run() { Log.i("OSD", "Record Stop " + Long.toString(mDuration)); - mGPUCameraRecorder.stop(); + if (mGPUCameraRecorder != null) { + mGPUCameraRecorder.stop(); + } + int aa = 0; } diff --git a/gpuv/src/main/java/com/xypower/gpuv/camerarecorder/GPUCameraRecorderBuilder.java b/gpuv/src/main/java/com/xypower/gpuv/camerarecorder/GPUCameraRecorderBuilder.java index ce0ca2c9..1a39c4fd 100644 --- a/gpuv/src/main/java/com/xypower/gpuv/camerarecorder/GPUCameraRecorderBuilder.java +++ b/gpuv/src/main/java/com/xypower/gpuv/camerarecorder/GPUCameraRecorderBuilder.java @@ -30,7 +30,7 @@ public class GPUCameraRecorderBuilder { private int cameraHeight = 720; private GlFilter glFilter; private long duration; - + private int rotation; public GPUCameraRecorderBuilder(Activity activity, GLSurfaceView glSurfaceView) { this.activity = activity; this.glSurfaceView = glSurfaceView; @@ -84,6 +84,10 @@ public class GPUCameraRecorderBuilder { return this; } + public GPUCameraRecorderBuilder rotation(int d) { + this.rotation = d; + return this; + } public GPUCameraRecorderBuilder recordNoFilter(boolean recordNoFilter) { this.recordNoFilter = recordNoFilter; return this; @@ -98,11 +102,17 @@ public class GPUCameraRecorderBuilder { boolean isLandscapeDevice = resources.getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; int degrees = 0; +// if (isLandscapeDevice) { +// int rotation = activity.getWindowManager().getDefaultDisplay().getRotation(); +// Log.d("GPUCameraRecorder", "Surface.ROTATION_90 = " + Surface.ROTATION_90 + " rotation = " + rotation); +// degrees = 90 * (rotation - 2); +// } if (isLandscapeDevice) { - int rotation = activity.getWindowManager().getDefaultDisplay().getRotation(); - Log.d("GPUCameraRecorder", "Surface.ROTATION_90 = " + Surface.ROTATION_90 + " rotation = " + rotation); - degrees = 90 * (rotation - 2); + Log.d("GPUCameraRecorder", "测试测试rotation" + rotation); + degrees = rotation * 90; } + Log.d("GPUCameraRecorder", "测试测试" + degrees); + GPUCameraRecorder GPUCameraRecorder = new GPUCameraRecorder( cameraRecordListener,