This commit is contained in:
WangQiang 2022-08-04 15:17:07 +08:00
parent 107a04605b
commit 0eafbf9ff1
146 changed files with 711 additions and 574 deletions

View File

@ -333,11 +333,11 @@ maven_install(
"androidx.fragment:fragment:1.3.4", "androidx.fragment:fragment:1.3.4",
"androidx.annotation:annotation:aar:1.1.0", "androidx.annotation:annotation:aar:1.1.0",
"androidx.appcompat:appcompat:aar:1.1.0-rc01", "androidx.appcompat:appcompat:aar:1.1.0-rc01",
"androidx.camera:camera-core:1.0.0-beta10", "androidx.camera:camera-core:1.0.2",
"androidx.camera:camera-camera2:1.0.0-beta10", "androidx.camera:camera-camera2:1.0.2",
"androidx.camera:camera-lifecycle:1.0.0-beta10", "androidx.camera:camera-lifecycle:1.0.2",
"androidx.constraintlayout:constraintlayout:aar:1.1.3", "androidx.constraintlayout:constraintlayout:aar:1.1.3",
"androidx.core:core:aar:1.1.0-rc03", "androidx.core:core:aar:1.1.0",
"androidx.legacy:legacy-support-v4:aar:1.0.0", "androidx.legacy:legacy-support-v4:aar:1.0.0",
"androidx.recyclerview:recyclerview:aar:1.1.0-beta02", "androidx.recyclerview:recyclerview:aar:1.1.0-beta02",
"androidx.test.espresso:espresso-core:3.1.1", "androidx.test.espresso:espresso-core:3.1.1",
@ -355,6 +355,10 @@ maven_install(
"com.google.guava:listenablefuture:1.0", "com.google.guava:listenablefuture:1.0",
"junit:junit:4.12", "junit:junit:4.12",
"org.hamcrest:hamcrest-library:1.3", "org.hamcrest:hamcrest-library:1.3",
"androidx.lifecycle:lifecycle-livedata-core:2.3.1",
"androidx.lifecycle:lifecycle-livedata:2.3.1",
"androidx.lifecycle:lifecycle-common:2.3.1",
"androidx.lifecycle:lifecycle-runtime:2.3.1",
], ],
repositories = [ repositories = [
"https://maven.google.com", "https://maven.google.com",

View File

@ -333,11 +333,11 @@ maven_install(
"androidx.fragment:fragment:1.3.4", "androidx.fragment:fragment:1.3.4",
"androidx.annotation:annotation:aar:1.1.0", "androidx.annotation:annotation:aar:1.1.0",
"androidx.appcompat:appcompat:aar:1.1.0-rc01", "androidx.appcompat:appcompat:aar:1.1.0-rc01",
"androidx.camera:camera-core:1.0.0-beta10", "androidx.camera:camera-core:1.0.2",
"androidx.camera:camera-camera2:1.0.0-beta10", "androidx.camera:camera-camera2:1.0.2",
"androidx.camera:camera-lifecycle:1.0.0-beta10", "androidx.camera:camera-lifecycle:1.0.2",
"androidx.constraintlayout:constraintlayout:aar:1.1.3", "androidx.constraintlayout:constraintlayout:aar:1.1.3",
"androidx.core:core:aar:1.1.0-rc03", "androidx.core:core:aar:1.1.0",
"androidx.legacy:legacy-support-v4:aar:1.0.0", "androidx.legacy:legacy-support-v4:aar:1.0.0",
"androidx.recyclerview:recyclerview:aar:1.1.0-beta02", "androidx.recyclerview:recyclerview:aar:1.1.0-beta02",
"androidx.test.espresso:espresso-core:3.1.1", "androidx.test.espresso:espresso-core:3.1.1",
@ -355,6 +355,10 @@ maven_install(
"com.google.guava:listenablefuture:1.0", "com.google.guava:listenablefuture:1.0",
"junit:junit:4.12", "junit:junit:4.12",
"org.hamcrest:hamcrest-library:1.3", "org.hamcrest:hamcrest-library:1.3",
"androidx.lifecycle:lifecycle-livedata-core:2.3.1",
"androidx.lifecycle:lifecycle-livedata:2.3.1",
"androidx.lifecycle:lifecycle-common:2.3.1",
"androidx.lifecycle:lifecycle-runtime:2.3.1",
], ],
repositories = [ repositories = [
"https://maven.google.com", "https://maven.google.com",

View File

@ -35,7 +35,6 @@ import com.google.mediapipe.solutions.facedetection.FaceDetection;
import com.google.mediapipe.solutions.facedetection.FaceDetectionOptions; import com.google.mediapipe.solutions.facedetection.FaceDetectionOptions;
import com.google.mediapipe.solutions.facedetection.FaceDetectionResult; import com.google.mediapipe.solutions.facedetection.FaceDetectionResult;
import com.google.mediapipe.solutions.facedetection.FaceKeypoint; import com.google.mediapipe.solutions.facedetection.FaceKeypoint;
import com.google.mediapipe.formats.proto.LocationDataProto.LocationData.RelativeKeypoint;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.quark.quamera">
<uses-permission android:name="android.permission.CAMERA" />
<uses-sdk tools:overrideLibrary="androidx.camera.core,androidx.camera.camera2" />
</manifest>

View File

@ -32,6 +32,15 @@ android_library(
srcs = glob( srcs = glob(
["**/*.java"], ["**/*.java"],
), ),
assets = [
"//mediapipe/render/android/camera/java/com/ola/olamera:rbga_2_yuv_frag.frag",
"//mediapipe/render/android/camera/java/com/ola/olamera:rgba_2_yuv_vertex.vert",
],
assets_dir = "",
# resource_files = glob(["res/**"]),
javacopts = ["-Acom.google.auto.value.AutoBuilderIsUnstable"],
manifest = ":AndroidManifest.xml",
visibility = ["//visibility:public"],
deps = [ deps = [
"@maven//:com_google_guava_guava", "@maven//:com_google_guava_guava",
"//third_party:androidx_annotation", "//third_party:androidx_annotation",
@ -39,6 +48,11 @@ android_library(
"//third_party:camerax_camera2", "//third_party:camerax_camera2",
"//third_party:camerax_core", "//third_party:camerax_core",
"//third_party:camerax_lifecycle", "//third_party:camerax_lifecycle",
"@maven//:androidx_exifinterface_exifinterface", "//third_party:lifecycle_livedata",
"//third_party:lifecycle_livedata_core",
"//third_party:androidx_core",
"//third_party:androidx_lifecycle_common",
"//third_party:androidx_lifecycle_runtime",
"@maven//:androidx_exifinterface_exifinterface",
], ],
) )

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera; package com.ola.olamera.camera;
import android.content.Context; import android.content.Context;
@ -9,12 +9,12 @@ import android.util.Pair;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import com.quark.quamera.camera.camera.CameraLifeManager; import com.ola.olamera.camera.camera.CameraLifeManager;
import com.quark.quamera.camera.camera.CameraRepository; import com.ola.olamera.camera.camera.CameraRepository;
import com.quark.quamera.camera.concurrent.CameraExecutors; import com.ola.olamera.camera.concurrent.CameraExecutors;
import com.quark.quamera.camera.session.SessionConfig; import com.ola.olamera.camera.session.SessionConfig;
import com.quark.quamera.camera.session.UserCameraSession; import com.ola.olamera.camera.session.UserCameraSession;
import com.quark.quamera.util.Preconditions; import com.ola.olamera.util.Preconditions;
import java.util.Iterator; import java.util.Iterator;
import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ConcurrentLinkedQueue;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.anotaion; package com.ola.olamera.camera.anotaion;
/* /*
* Copyright 2019 The Android Open Source Project * Copyright 2019 The Android Open Source Project

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.camera; package com.ola.olamera.camera.camera;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.hardware.camera2.CameraAccessException; import android.hardware.camera2.CameraAccessException;
@ -16,18 +16,18 @@ import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import com.quark.quamera.camera.anotaion.ExecutedBy; import com.ola.olamera.camera.anotaion.ExecutedBy;
import com.quark.quamera.camera.concurrent.HandlerScheduledExecutorService; import com.ola.olamera.camera.concurrent.HandlerScheduledExecutorService;
import com.quark.quamera.camera.sensor.DisplayOrientationDetector; import com.ola.olamera.camera.sensor.DisplayOrientationDetector;
import com.quark.quamera.camera.session.ImageCapture; import com.ola.olamera.camera.session.ImageCapture;
import com.quark.quamera.camera.session.InnerImageCaptureCallback; import com.ola.olamera.camera.session.InnerImageCaptureCallback;
import com.quark.quamera.camera.session.RepeatCaptureRequestConfig; import com.ola.olamera.camera.session.RepeatCaptureRequestConfig;
import com.quark.quamera.camera.session.SessionConfig; import com.ola.olamera.camera.session.SessionConfig;
import com.quark.quamera.camera.session.SingleCaptureConfig; import com.ola.olamera.camera.session.SingleCaptureConfig;
import com.quark.quamera.camera.session.SyncCaptureSession; import com.ola.olamera.camera.session.SyncCaptureSession;
import com.quark.quamera.util.CameraLogger; import com.ola.olamera.util.CameraLogger;
import com.quark.quamera.util.CameraShould; import com.ola.olamera.util.CameraShould;
import com.quark.quamera.util.Preconditions; import com.ola.olamera.util.Preconditions;
import java.util.Collections; import java.util.Collections;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.camera; package com.ola.olamera.camera.camera;
import android.hardware.camera2.CameraCharacteristics; import android.hardware.camera2.CameraCharacteristics;
@ -9,10 +9,10 @@ import android.os.Build;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import com.quark.quamera.camera.session.CameraCaptureCallback; import com.ola.olamera.camera.session.CameraCaptureCallback;
import com.quark.quamera.camera.session.RepeatCaptureRequestConfig; import com.ola.olamera.camera.session.RepeatCaptureRequestConfig;
import com.quark.quamera.camera.session.config.CameraConfigUtils; import com.ola.olamera.camera.session.config.CameraConfigUtils;
import com.quark.quamera.util.ArrayUtil; import com.ola.olamera.util.ArrayUtil;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.camera; package com.ola.olamera.camera.camera;
import android.graphics.Rect; import android.graphics.Rect;
@ -9,12 +9,12 @@ import android.util.Range;
import android.util.Size; import android.util.Size;
import android.util.SizeF; import android.util.SizeF;
import com.quark.quamera.camera.sensor.DisplayOrientationDetector; import com.ola.olamera.camera.sensor.DisplayOrientationDetector;
import com.quark.quamera.camera.sensor.ImageRotationHelper; import com.ola.olamera.camera.sensor.ImageRotationHelper;
import com.quark.quamera.camera.session.CameraSelector; import com.ola.olamera.camera.session.CameraSelector;
import com.quark.quamera.util.CameraInit; import com.ola.olamera.util.CameraInit;
import com.quark.quamera.util.CameraLogger; import com.ola.olamera.util.CameraLogger;
import com.quark.quamera.util.CameraShould; import com.ola.olamera.util.CameraShould;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.camera; package com.ola.olamera.camera.camera;
import android.os.Handler; import android.os.Handler;

View File

@ -1,20 +1,20 @@
package com.quark.quamera.camera.camera; package com.ola.olamera.camera.camera;
import android.content.Context; import android.content.Context;
import android.os.Build; import android.os.Build;
import android.util.Size; import android.util.Size;
import com.quark.quamera.camera.preview.IPreviewView; import com.ola.olamera.camera.preview.IPreviewView;
import com.quark.quamera.camera.sensor.DisplayOrientationDetector; import com.ola.olamera.camera.sensor.DisplayOrientationDetector;
import com.quark.quamera.camera.sensor.ImageRotationHelper; import com.ola.olamera.camera.sensor.ImageRotationHelper;
import com.quark.quamera.camera.session.CameraCaptureCallback; import com.ola.olamera.camera.session.CameraCaptureCallback;
import com.quark.quamera.camera.session.CameraSelector; import com.ola.olamera.camera.session.CameraSelector;
import com.quark.quamera.camera.session.ImageCapture; import com.ola.olamera.camera.session.ImageCapture;
import com.quark.quamera.camera.session.SessionConfig; import com.ola.olamera.camera.session.SessionConfig;
import com.quark.quamera.camera.session.SingleCaptureConfig; import com.ola.olamera.camera.session.SingleCaptureConfig;
import com.quark.quamera.util.CameraLogger; import com.ola.olamera.util.CameraLogger;
import com.quark.quamera.util.Preconditions; import com.ola.olamera.util.Preconditions;
import java.util.List; import java.util.List;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
@ -26,7 +26,6 @@ import androidx.lifecycle.Observer;
//保证一次只有一个相机 //保证一次只有一个相机
//所有相机的生命管理 //所有相机的生命管理
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public class CameraLifeManager { public class CameraLifeManager {
private Camera2CameraImpl mCurrentCamera; private Camera2CameraImpl mCurrentCamera;
private ImageCapture mImageCapture; private ImageCapture mImageCapture;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.camera; package com.ola.olamera.camera.camera;
/* /*
* *
* Creation : 2021/3/29 * Creation : 2021/3/29

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.camera; package com.ola.olamera.camera.camera;
/* /*
* *
* Creation : 2021/3/29 * Creation : 2021/3/29
@ -11,16 +11,12 @@ import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCharacteristics; import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraDevice; import android.hardware.camera2.CameraDevice;
import android.hardware.camera2.CameraManager; import android.hardware.camera2.CameraManager;
import android.os.Build;
import android.os.Handler; import android.os.Handler;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.core.util.Preconditions;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
class CameraManagerCompatBaseImpl implements CameraManagerCompatImpl { class CameraManagerCompatBaseImpl implements CameraManagerCompatImpl {

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.camera; package com.ola.olamera.camera.camera;
/* /*
* *
* Creation : 2021/3/29 * Creation : 2021/3/29

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.camera; package com.ola.olamera.camera.camera;
/* /*
* *
* Creation : 20-11-23 * Creation : 20-11-23
@ -16,11 +16,11 @@ import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.util.Size; import android.util.Size;
import com.quark.quamera.camera.anotaion.ExecutedBy; import com.ola.olamera.camera.anotaion.ExecutedBy;
import com.quark.quamera.camera.session.CameraSelector; import com.ola.olamera.camera.session.CameraSelector;
import com.quark.quamera.util.CameraLogger; import com.ola.olamera.util.CameraLogger;
import com.quark.quamera.util.CameraShould; import com.ola.olamera.util.CameraShould;
import com.quark.quamera.util.Preconditions; import com.ola.olamera.util.Preconditions;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.camera; package com.ola.olamera.camera.camera;
/* /*
* *
* Creation : 20-11-18 * Creation : 20-11-18

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.camera; package com.ola.olamera.camera.camera;
/* /*
* *
* Creation : 2021/6/6 * Creation : 2021/6/6

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.camera; package com.ola.olamera.camera.camera;
/* /*
* *
* Creation : 20-11-23 * Creation : 20-11-23
@ -15,12 +15,12 @@ import android.util.Rational;
import android.util.Size; import android.util.Size;
import android.view.SurfaceHolder; import android.view.SurfaceHolder;
import com.quark.quamera.camera.imagereader.DeferrableImageReader; import com.ola.olamera.camera.imagereader.DeferrableImageReader;
import com.quark.quamera.camera.sensor.ImageRotationHelper; import com.ola.olamera.camera.sensor.ImageRotationHelper;
import com.quark.quamera.camera.session.ImageCapture; import com.ola.olamera.camera.session.ImageCapture;
import com.quark.quamera.camera.session.PreviewConfig; import com.ola.olamera.camera.session.PreviewConfig;
import com.quark.quamera.util.CameraInit; import com.ola.olamera.util.CameraInit;
import com.quark.quamera.util.CameraLogger; import com.ola.olamera.util.CameraLogger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.camera; package com.ola.olamera.camera.camera;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.camera; package com.ola.olamera.camera.camera;
public interface ICameraErrorListener { public interface ICameraErrorListener {

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.camera; package com.ola.olamera.camera.camera;
/* /*
* *
* Creation : 2021/6/6 * Creation : 2021/6/6

View File

@ -1,6 +1,6 @@
package com.quark.quamera.camera.concurrent; package com.ola.olamera.camera.concurrent;
import com.quark.quamera.util.SequentialExecutor; import com.ola.olamera.util.SequentialExecutor;
public class CameraExecutors { public class CameraExecutors {

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.concurrent; package com.ola.olamera.camera.concurrent;
/* /*
* *
* Creation : 2021/2/8 * Creation : 2021/2/8
@ -11,7 +11,7 @@ import android.os.Handler;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.quark.quamera.util.CameraShould; import com.ola.olamera.util.CameraShould;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.concurrent.Delayed; import java.util.concurrent.Delayed;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camera.concurrent; package com.ola.olamera.camera.concurrent;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.imagereader; package com.ola.olamera.camera.imagereader;
/* /*
* *
* Creation : 2021/4/22 * Creation : 2021/4/22

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.imagereader; package com.ola.olamera.camera.imagereader;
/* /*
* *
* Creation : 20-11-26 * Creation : 20-11-26
@ -9,9 +9,9 @@ import android.media.ImageReader;
import android.os.Build; import android.os.Build;
import android.os.Handler; import android.os.Handler;
import com.quark.quamera.camera.camera.CameraSurfaceHelper; import com.ola.olamera.camera.camera.CameraSurfaceHelper;
import com.quark.quamera.camera.sensor.ImageRotationHelper; import com.ola.olamera.camera.sensor.ImageRotationHelper;
import com.quark.quamera.util.Preconditions; import com.ola.olamera.util.Preconditions;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.imagereader; package com.ola.olamera.camera.imagereader;
/* /*
* *
* Creation : 20-12-2 * Creation : 20-12-2

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.imagereader; package com.ola.olamera.camera.imagereader;
/* /*
* *
* Creation : 20-12-2 * Creation : 20-12-2
@ -13,8 +13,8 @@ import androidx.annotation.GuardedBy;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import com.quark.quamera.camera.sensor.ImageRotationHelper; import com.ola.olamera.camera.sensor.ImageRotationHelper;
import com.quark.quamera.util.Preconditions; import com.ola.olamera.util.Preconditions;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;

View File

@ -1,10 +1,10 @@
package com.quark.quamera.camera.preview; package com.ola.olamera.camera.preview;
import android.view.Surface; import android.view.Surface;
import com.quark.quamera.camera.camera.Camera2CameraImpl; import com.ola.olamera.camera.camera.Camera2CameraImpl;
import com.quark.quamera.camera.session.CameraCaptureComboCallback; import com.ola.olamera.camera.session.CameraCaptureComboCallback;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.camera.core.Preview; import androidx.camera.core.Preview;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.preview; package com.ola.olamera.camera.preview;
/* /*
* *
* Creation : 2021/7/12 * Creation : 2021/7/12
@ -12,7 +12,7 @@ import android.util.Size;
import androidx.camera.core.FocusMeteringResult; import androidx.camera.core.FocusMeteringResult;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
import com.quark.quamera.render.photo.SnapShotCommand; import com.ola.olamera.render.photo.SnapShotCommand;
public interface IPreviewView { public interface IPreviewView {

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.preview; package com.ola.olamera.camera.preview;
/* /*
* *
* Creation : 2020/4/15 * Creation : 2020/4/15
@ -9,7 +9,7 @@ import android.graphics.SurfaceTexture;
import android.util.Log; import android.util.Log;
import android.view.Surface; import android.view.Surface;
import com.quark.quamera.util.CameraLogger; import com.ola.olamera.util.CameraLogger;
import java.util.Arrays; import java.util.Arrays;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camera.preview; package com.ola.olamera.camera.preview;
import android.view.Surface; import android.view.Surface;
import android.view.SurfaceView; import android.view.SurfaceView;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camera.preview; package com.ola.olamera.camera.preview;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.graphics.Matrix; import android.graphics.Matrix;
@ -29,9 +29,9 @@ import androidx.annotation.IntRange;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import com.quark.quamera.util.CameraLogger; import com.ola.olamera.util.CameraLogger;
import com.quark.quamera.util.CameraShould; import com.ola.olamera.util.CameraShould;
import com.quark.quamera.util.ImageUtils; import com.ola.olamera.util.ImageUtils;
/** /**
* Utility methods for calculating viewports. * Utility methods for calculating viewports.

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camera.sensor; package com.ola.olamera.camera.sensor;
import android.util.Log; import android.util.Log;
import android.view.Surface; import android.view.Surface;
@ -22,7 +22,7 @@ import android.view.Surface;
import androidx.annotation.RestrictTo; import androidx.annotation.RestrictTo;
import androidx.annotation.RestrictTo.Scope; import androidx.annotation.RestrictTo.Scope;
import com.quark.quamera.camera.session.CameraSelector; import com.ola.olamera.camera.session.CameraSelector;
/** /**
* Contains utility methods related to camera orientation. * Contains utility methods related to camera orientation.

View File

@ -1,12 +1,12 @@
package com.quark.quamera.camera.sensor; package com.ola.olamera.camera.sensor;
import android.content.Context; import android.content.Context;
import android.view.OrientationEventListener; import android.view.OrientationEventListener;
import com.quark.quamera.util.CameraInit; import com.ola.olamera.util.CameraInit;
import com.quark.quamera.util.CameraLogger; import com.ola.olamera.util.CameraLogger;
import com.quark.quamera.util.CollectionUtil; import com.ola.olamera.util.CollectionUtil;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.sensor; package com.ola.olamera.camera.sensor;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.sensor; package com.ola.olamera.camera.sensor;
import android.os.Build; import android.os.Build;
@ -6,8 +6,8 @@ import android.os.Build;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import com.quark.quamera.camera.camera.Camera2Info; import com.ola.olamera.camera.camera.Camera2Info;
import com.quark.quamera.camera.session.CameraSelector; import com.ola.olamera.camera.session.CameraSelector;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
import android.hardware.camera2.CaptureResult; import android.hardware.camera2.CaptureResult;
import android.os.Build; import android.os.Build;
@ -24,11 +24,11 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import com.quark.quamera.camera.session.CameraCaptureMetaData.AeState; import com.ola.olamera.camera.session.CameraCaptureMetaData.AeState;
import com.quark.quamera.camera.session.CameraCaptureMetaData.AfMode; import com.ola.olamera.camera.session.CameraCaptureMetaData.AfMode;
import com.quark.quamera.camera.session.CameraCaptureMetaData.AfState; import com.ola.olamera.camera.session.CameraCaptureMetaData.AfState;
import com.quark.quamera.camera.session.CameraCaptureMetaData.AwbState; import com.ola.olamera.camera.session.CameraCaptureMetaData.AwbState;
import com.quark.quamera.camera.session.CameraCaptureMetaData.FlashState; import com.ola.olamera.camera.session.CameraCaptureMetaData.FlashState;
/** /**
* The camera2 implementation for the capture result of a single image capture. * The camera2 implementation for the capture result of a single image capture.

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
/* /*
* *
* Creation : 20-12-19 * Creation : 20-12-19

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
/* /*
* *
* Creation : 2021/5/26 * Creation : 2021/5/26

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
import androidx.annotation.RestrictTo; import androidx.annotation.RestrictTo;
import androidx.annotation.RestrictTo.Scope; import androidx.annotation.RestrictTo.Scope;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
import androidx.annotation.RestrictTo; import androidx.annotation.RestrictTo;
import androidx.annotation.RestrictTo.Scope; import androidx.annotation.RestrictTo.Scope;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
import android.hardware.camera2.CaptureResult; import android.hardware.camera2.CaptureResult;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
/* /*
* *
* Creation : 20-11-18 * Creation : 20-11-18

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
import android.hardware.camera2.CameraCaptureSession; import android.hardware.camera2.CameraCaptureSession;
import android.hardware.camera2.CaptureFailure; import android.hardware.camera2.CaptureFailure;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
import android.hardware.camera2.CameraCaptureSession; import android.hardware.camera2.CameraCaptureSession;
import android.hardware.camera2.CaptureFailure; import android.hardware.camera2.CaptureFailure;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
import android.hardware.camera2.CameraCaptureSession; import android.hardware.camera2.CameraCaptureSession;
@ -12,8 +12,8 @@ import android.view.Surface;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import com.quark.quamera.camera.camera.Camera2CameraImpl; import com.ola.olamera.camera.camera.Camera2CameraImpl;
import com.quark.quamera.util.CameraLogger; import com.ola.olamera.util.CameraLogger;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public class CaptureControlCallback extends CameraCaptureSession.CaptureCallback { public class CaptureControlCallback extends CameraCaptureSession.CaptureCallback {

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
import android.hardware.camera2.CameraCaptureSession; import android.hardware.camera2.CameraCaptureSession;
import android.hardware.camera2.CaptureFailure; import android.hardware.camera2.CaptureFailure;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
/* /*
* *
* Creation : 20-11-18 * Creation : 20-11-18

View File

@ -1,6 +1,6 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
import com.quark.quamera.camera.preview.SurfaceTextureWrapper; import com.ola.olamera.camera.preview.SurfaceTextureWrapper;
public abstract class ISurfaceUpdateListener extends CameraCaptureCallback { public abstract class ISurfaceUpdateListener extends CameraCaptureCallback {

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
/* /*
* *
* Creation : 20-11-18 * Creation : 20-11-18

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
/* /*
* *
* Creation : 2021/4/19 * Creation : 2021/4/19
@ -16,15 +16,15 @@ import android.os.Build;
import android.util.LayoutDirection; import android.util.LayoutDirection;
import android.util.Size; import android.util.Size;
import com.quark.quamera.camera.camera.Camera2CameraImpl; import com.ola.olamera.camera.camera.Camera2CameraImpl;
import com.quark.quamera.camera.camera.Camera2Info; import com.ola.olamera.camera.camera.Camera2Info;
import com.quark.quamera.camera.imagereader.DeferrableImageReader; import com.ola.olamera.camera.imagereader.DeferrableImageReader;
import com.quark.quamera.camera.preview.IPreviewView; import com.ola.olamera.camera.preview.IPreviewView;
import com.quark.quamera.camera.preview.ViewPorts; import com.ola.olamera.camera.preview.ViewPorts;
import com.quark.quamera.camera.session.config.CameraConfigUtils; import com.ola.olamera.camera.session.config.CameraConfigUtils;
import com.quark.quamera.util.CameraLogger; import com.ola.olamera.util.CameraLogger;
import com.quark.quamera.util.ImageUtils; import com.ola.olamera.util.ImageUtils;
import com.quark.quamera.util.Should; import com.ola.olamera.util.Should;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
@ -38,8 +38,8 @@ import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import androidx.exifinterface.media.ExifInterface; import androidx.exifinterface.media.ExifInterface;
import static com.quark.quamera.util.ImageUtils.min; import static com.ola.olamera.util.ImageUtils.min;
import static com.quark.quamera.util.ImageUtils.sizeToVertexes; import static com.ola.olamera.util.ImageUtils.sizeToVertexes;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public class ImageCapture { public class ImageCapture {

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
/* /*
* *
* Creation : 2021/7/13 * Creation : 2021/7/13

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
import android.hardware.camera2.CameraCharacteristics; import android.hardware.camera2.CameraCharacteristics;
@ -10,11 +10,11 @@ import android.util.Range;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import com.quark.quamera.camera.camera.Camera2Info; import com.ola.olamera.camera.camera.Camera2Info;
import com.quark.quamera.camera.camera.CameraSurfaceHelper; import com.ola.olamera.camera.camera.CameraSurfaceHelper;
import com.quark.quamera.camera.imagereader.DeferrableImageReader; import com.ola.olamera.camera.imagereader.DeferrableImageReader;
import com.quark.quamera.camera.preview.IPreviewView; import com.ola.olamera.camera.preview.IPreviewView;
import com.quark.quamera.camera.session.config.CameraConfigUtils; import com.ola.olamera.camera.session.config.CameraConfigUtils;
import java.util.List; import java.util.List;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
/* /*
* *
* Creation : 20-12-19 * Creation : 20-12-19
@ -10,7 +10,7 @@ import android.hardware.camera2.CaptureRequest;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.quark.quamera.camera.camera.Camera2Info; import com.ola.olamera.camera.camera.Camera2Info;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
import android.os.Handler; import android.os.Handler;
@ -6,9 +6,9 @@ import android.os.Looper;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.quark.quamera.camera.camera.CameraErrorListenerHandlerWrapper; import com.ola.olamera.camera.camera.CameraErrorListenerHandlerWrapper;
import com.quark.quamera.camera.camera.ICameraErrorListener; import com.ola.olamera.camera.camera.ICameraErrorListener;
import com.quark.quamera.camera.session.config.CameraSelectConfig; import com.ola.olamera.camera.session.config.CameraSelectConfig;
public class SessionConfig { public class SessionConfig {

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
/* /*
* *
* Creation : 2021/6/18 * Creation : 2021/6/18

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
/* /*
* *
* Creation : 20-11-23 * Creation : 20-11-23
@ -16,14 +16,14 @@ import android.os.Handler;
import android.util.Log; import android.util.Log;
import android.view.Surface; import android.view.Surface;
import com.quark.quamera.camera.anotaion.ExecutedBy; import com.ola.olamera.camera.anotaion.ExecutedBy;
import com.quark.quamera.camera.camera.Camera2CameraImpl; import com.ola.olamera.camera.camera.Camera2CameraImpl;
import com.quark.quamera.camera.camera.CameraState; import com.ola.olamera.camera.camera.CameraState;
import com.quark.quamera.camera.imagereader.DeferrableImageReader; import com.ola.olamera.camera.imagereader.DeferrableImageReader;
import com.quark.quamera.camera.preview.IPreviewSurfaceProvider; import com.ola.olamera.camera.preview.IPreviewSurfaceProvider;
import com.quark.quamera.util.CameraLogger; import com.ola.olamera.util.CameraLogger;
import com.quark.quamera.util.CameraShould; import com.ola.olamera.util.CameraShould;
import com.quark.quamera.util.TestOnly; import com.ola.olamera.util.TestOnly;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -126,150 +126,156 @@ public class SyncCaptureSession {
private final CaptureControlCallback mCaptureControlCallback = new CaptureControlCallback(); private final CaptureControlCallback mCaptureControlCallback = new CaptureControlCallback();
private void openCaptureSession(@NonNull CameraDevice cameraDevice) { private void openCaptureSession(@NonNull CameraDevice cameraDevice) {
if (mSessionConfig == null) { synchronized (mStateLock) {
return; if (mSessionConfig == null) {
} return;
}
try { try {
PreviewConfig previewConfig = mSessionConfig.getPreviewConfig(); PreviewConfig previewConfig = mSessionConfig.getPreviewConfig();
IPreviewSurfaceProvider.SurfaceRequest request = new IPreviewSurfaceProvider.SurfaceRequest(); IPreviewSurfaceProvider.SurfaceRequest request = new IPreviewSurfaceProvider.SurfaceRequest();
request.width = previewConfig.getActualWidth(); request.width = previewConfig.getActualWidth();
request.height = previewConfig.getActualHeight(); request.height = previewConfig.getActualHeight();
request.camera2Camera = mCamera; request.camera2Camera = mCamera;
request.repeatCaptureCallback = previewConfig.getRepeatCaptureCallback(); request.repeatCaptureCallback = previewConfig.getRepeatCaptureCallback();
Surface previewSurface = previewConfig.getPreviewView().getSurfaceProvider().provide(request); Surface previewSurface = previewConfig.getPreviewView().getSurfaceProvider().provide(request);
//创建CaptureRequestBuilderTEMPLATE_PREVIEW比表示预览请求 //创建CaptureRequestBuilderTEMPLATE_PREVIEW比表示预览请求
mCaptureRequestBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW); mCaptureRequestBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
//设置Surface作为预览数据的显示界面 //设置Surface作为预览数据的显示界面
ArrayList<Surface> surfaces = new ArrayList<>(); ArrayList<Surface> surfaces = new ArrayList<>();
surfaces.add(previewSurface); surfaces.add(previewSurface);
mCaptureRequestBuilder.addTarget(previewSurface); mCaptureRequestBuilder.addTarget(previewSurface);
if (mSessionConfig.getPreviewConfig().getImageReaders() != null) { if (mSessionConfig.getPreviewConfig().getImageReaders() != null) {
for (DeferrableImageReader imageReader : mSessionConfig.getPreviewConfig().getImageReaders()) { for (DeferrableImageReader imageReader : mSessionConfig.getPreviewConfig().getImageReaders()) {
if (imageReader.unWrapper() != null) { if (imageReader.unWrapper() != null) {
surfaces.add(imageReader.unWrapper().getSurface()); surfaces.add(imageReader.unWrapper().getSurface());
CameraLogger.i(Camera2CameraImpl.TAG, "add ImageReader Surface begin ( format:%d, %d*%d )", imageReader.getFormat(), imageReader.unWrapper().getWidth(), imageReader.unWrapper().getHeight()); CameraLogger.i(Camera2CameraImpl.TAG, "add ImageReader Surface begin ( format:%d, %d*%d )", imageReader.getFormat(), imageReader.unWrapper().getWidth(), imageReader.unWrapper().getHeight());
mCaptureRequestBuilder.addTarget(imageReader.unWrapper().getSurface()); mCaptureRequestBuilder.addTarget(imageReader.unWrapper().getSurface());
}
} }
} }
ImageCapture captureConfig = mSessionConfig.getImageCapture();
if (captureConfig != null && captureConfig.getDeferrableImageReader() != null) {
surfaces.add(captureConfig.getDeferrableImageReader().unWrapper().getSurface());
}
CameraLogger.i(Camera2CameraImpl.TAG, "openCaptureSession begin ( preview: %d*%d )",
mSessionConfig.getPreviewConfig().getActualWidth(),
mSessionConfig.getPreviewConfig().getActualHeight());
changeState(State.OPENING);
cameraDevice.createCaptureSession(surfaces, mStateController, mHandler);
} catch (CameraAccessException e) {
CameraLogger.e(Camera2CameraImpl.TAG, "openCaptureSession error (%s) ", e.getMessage());
CameraShould.fail("", e);
} }
ImageCapture captureConfig = mSessionConfig.getImageCapture();
if (captureConfig != null && captureConfig.getDeferrableImageReader() != null) {
surfaces.add(captureConfig.getDeferrableImageReader().unWrapper().getSurface());
}
CameraLogger.i(Camera2CameraImpl.TAG, "openCaptureSession begin ( preview: %d*%d )",
mSessionConfig.getPreviewConfig().getActualWidth(),
mSessionConfig.getPreviewConfig().getActualHeight());
changeState(State.OPENING);
cameraDevice.createCaptureSession(surfaces, mStateController, mHandler);
} catch (CameraAccessException e) {
CameraLogger.e(Camera2CameraImpl.TAG, "openCaptureSession error (%s) ", e.getMessage());
CameraShould.fail("", e);
} }
} }
public void capture(SingleCaptureConfig singleCaptureConfig, @NonNull CameraDevice cameraDevice, @NonNull InnerImageCaptureCallback capturedCallback) { public void capture(SingleCaptureConfig singleCaptureConfig, @NonNull CameraDevice cameraDevice, @NonNull InnerImageCaptureCallback capturedCallback) {
switch (mState) { synchronized (mStateLock) {
case OPENED: switch (mState) {
captureInner(singleCaptureConfig, cameraDevice, capturedCallback); case OPENED:
break; captureInner(singleCaptureConfig, cameraDevice, capturedCallback);
default: break;
if (capturedCallback != null) { default:
capturedCallback.onError(new IllegalStateException("can not capture image when " + mState)); if (capturedCallback != null) {
} capturedCallback.onError(new IllegalStateException("can not capture image when " + mState));
}
}
} }
} }
private void captureInner(SingleCaptureConfig singleCaptureConfig, @NonNull CameraDevice cameraDevice, private void captureInner(SingleCaptureConfig singleCaptureConfig, @NonNull CameraDevice cameraDevice,
@NonNull InnerImageCaptureCallback capturedCallback) { @NonNull InnerImageCaptureCallback capturedCallback) {
try { synchronized (mStateLock) {
try {
ImageCapture captureConfig = mSessionConfig.getImageCapture(); ImageCapture captureConfig = mSessionConfig.getImageCapture();
if (captureConfig == null) { if (captureConfig == null) {
throw new RuntimeException("init image capture config first"); throw new RuntimeException("init image capture config first");
}
// This is the CaptureRequest.Builder that we use to take a picture.
final CaptureRequest.Builder captureBuilder =
cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
ImageReader actualImageReader = captureConfig.getDeferrableImageReader().unWrapper();
captureBuilder.addTarget(actualImageReader.getSurface());
int natureRotation = captureConfig.getDeferrableImageReader().getImageRotationHelper().getImageRotation();
int sensorRotation = captureConfig.getDeferrableImageReader().getImageRotationHelper().getCameraSensorOrientation();
int jpegRotation = sensorRotation;
if (singleCaptureConfig != null && singleCaptureConfig.useNatureRotation()) {
jpegRotation = natureRotation;
}
captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, jpegRotation);
captureBuilder.set(CaptureRequest.JPEG_QUALITY, singleCaptureConfig != null ?
singleCaptureConfig.getJpegQuality() : 100);
captureConfig.fillConfig(mCamera.getCameraCharacteristics(), captureBuilder);
//选择对应的相机初始化默认配置
if (mSessionConfig.getSelectConfig() != null) {
mSessionConfig.getSelectConfig().fillConfig(mCamera.getCamera2Info(), captureBuilder);
}
//TODO NoBlockImageAnalyzer 相当于每次只有一个图片回掉,之前的回掉会给新触发的callback给替换掉
captureConfig.getDeferrableImageReader().getNoBlockImageAnalyzer().setImageAnalyzer((image, cameraSensorRotation, imageRotation) -> {
CameraLogger.i(Camera2CameraImpl.TAG, "ImageCapture Success (%d * %d)", image.getWidth(), image.getHeight());
capturedCallback.onCaptureSuccess(image);
});
CameraCaptureSession.CaptureCallback innerCallback = new CameraCaptureSession.CaptureCallback() {
@Override
public void onCaptureFailed(@NonNull CameraCaptureSession session,
@NonNull CaptureRequest request,
@NonNull CaptureFailure failure) {
super.onCaptureFailed(session, request, failure);
capturedCallback.onError(new Exception("capture_error:" + failure.getReason()));
} }
@Override
public void onCaptureStarted(@NonNull CameraCaptureSession session, @NonNull CaptureRequest request, long timestamp, long frameNumber) { // This is the CaptureRequest.Builder that we use to take a picture.
capturedCallback.onCaptureStart(); final CaptureRequest.Builder captureBuilder =
cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
ImageReader actualImageReader = captureConfig.getDeferrableImageReader().unWrapper();
captureBuilder.addTarget(actualImageReader.getSurface());
int natureRotation = captureConfig.getDeferrableImageReader().getImageRotationHelper().getImageRotation();
int sensorRotation = captureConfig.getDeferrableImageReader().getImageRotationHelper().getCameraSensorOrientation();
int jpegRotation = sensorRotation;
if (singleCaptureConfig != null && singleCaptureConfig.useNatureRotation()) {
jpegRotation = natureRotation;
}
captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, jpegRotation);
captureBuilder.set(CaptureRequest.JPEG_QUALITY, singleCaptureConfig != null ?
singleCaptureConfig.getJpegQuality() : 100);
captureConfig.fillConfig(mCamera.getCameraCharacteristics(), captureBuilder);
//选择对应的相机初始化默认配置
if (mSessionConfig.getSelectConfig() != null) {
mSessionConfig.getSelectConfig().fillConfig(mCamera.getCamera2Info(), captureBuilder);
} }
@Override //TODO NoBlockImageAnalyzer 相当于每次只有一个图片回掉,之前的回掉会给新触发的callback给替换掉
public void onCaptureSequenceAborted(@NonNull CameraCaptureSession session, int sequenceId) { captureConfig.getDeferrableImageReader().getNoBlockImageAnalyzer().setImageAnalyzer((image, cameraSensorRotation, imageRotation) -> {
super.onCaptureSequenceAborted(session, sequenceId); CameraLogger.i(Camera2CameraImpl.TAG, "ImageCapture Success (%d * %d)", image.getWidth(), image.getHeight());
capturedCallback.onError(new Exception("capture_error:onCaptureSequenceAborted")); capturedCallback.onCaptureSuccess(image);
});
} CameraCaptureSession.CaptureCallback innerCallback = new CameraCaptureSession.CaptureCallback() {
};
@Override
public void onCaptureFailed(@NonNull CameraCaptureSession session,
@NonNull CaptureRequest request,
@NonNull CaptureFailure failure) {
super.onCaptureFailed(session, request, failure);
capturedCallback.onError(new Exception("capture_error:" + failure.getReason()));
}
@Override
public void onCaptureStarted(@NonNull CameraCaptureSession session, @NonNull CaptureRequest request, long timestamp, long frameNumber) {
capturedCallback.onCaptureStart();
}
@Override
public void onCaptureSequenceAborted(@NonNull CameraCaptureSession session, int sequenceId) {
super.onCaptureSequenceAborted(session, sequenceId);
capturedCallback.onError(new Exception("capture_error:onCaptureSequenceAborted"));
}
};
//TODO 目前只有闪光等设置了需要关闭Repeating模式重新开启 //TODO 目前只有闪光等设置了需要关闭Repeating模式重新开启
//但是这块改动影响了CameraCaptureState的逻辑目前先不实现 //但是这块改动影响了CameraCaptureState的逻辑目前先不实现
// mCameraCaptureSession.stopRepeating(); // mCameraCaptureSession.stopRepeating();
// mCameraCaptureSession.abortCaptures(); // mCameraCaptureSession.abortCaptures();
int id = mCameraCaptureSession.capture(captureBuilder.build(), innerCallback, mHandler); int id = mCameraCaptureSession.capture(captureBuilder.build(), innerCallback, mHandler);
CameraLogger.i(Camera2CameraImpl.TAG, "send image capture request " + id); CameraLogger.i(Camera2CameraImpl.TAG, "send image capture request " + id);
} catch (CameraAccessException e) { } catch (CameraAccessException e) {
CameraLogger.e(Camera2CameraImpl.TAG, "openCaptureSession error (%s) ", e.getMessage()); CameraLogger.e(Camera2CameraImpl.TAG, "openCaptureSession error (%s) ", e.getMessage());
CameraShould.fail("", e); CameraShould.fail("", e);
capturedCallback.onError(e); capturedCallback.onError(e);
}
} }
} }
@ -380,68 +386,71 @@ public class SyncCaptureSession {
public void doRepeatingCaptureAction(@NonNull RepeatCaptureRequestConfig config) { public void doRepeatingCaptureAction(@NonNull RepeatCaptureRequestConfig config) {
mHandler.post(() -> { mHandler.post(() -> {
switch (mState) { synchronized (mStateLock) {
case OPENED: switch (mState) {
issueRepeatingCaptureRequests(config); case OPENED:
break; issueRepeatingCaptureRequests(config);
default: break;
if (config.getCallback() != null) { default:
if (config.getCallbackExecutor() != null) { if (config.getCallback() != null) {
config.getCallbackExecutor().execute(() -> config.getCallback().onCaptureFailed(new CameraCaptureFailure(CameraCaptureFailure.Reason.ERROR))); if (config.getCallbackExecutor() != null) {
} else { config.getCallbackExecutor().execute(() -> config.getCallback().onCaptureFailed(new CameraCaptureFailure(CameraCaptureFailure.Reason.ERROR)));
config.getCallback().onCaptureFailed(new CameraCaptureFailure(CameraCaptureFailure.Reason.ERROR)); } else {
} config.getCallback().onCaptureFailed(new CameraCaptureFailure(CameraCaptureFailure.Reason.ERROR));
break; }
break;
}
} }
} }
}); });
} }
private void issueRepeatingCaptureRequests(RepeatCaptureRequestConfig action) { private void issueRepeatingCaptureRequests(RepeatCaptureRequestConfig action) {
if (mSessionConfig == null) { synchronized (mStateLock) {
CameraLogger.e(TAG, "Skipping issueRepeatingCaptureRequests for no configuration case."); if (mSessionConfig == null) {
return; CameraLogger.e(TAG, "Skipping issueRepeatingCaptureRequests for no configuration case.");
} return;
try {
//设置反复捕获数据的请求这样预览界面就会一直有数据显示
List<CameraCaptureSession.CaptureCallback> callbackList = new ArrayList<>();
callbackList.add(mCaptureControlCallback);
RepeatCaptureRequestConfig requestConfig = mSessionConfig.getPreviewConfig().getRepeatCaptureRequestConfig();
requestConfig.fillConfig(mCamera.getCamera2Info(), mCaptureRequestBuilder);
callbackList.add(convert2SystemApiCaptureCallback(requestConfig.getCallbackExecutor(), requestConfig.getCallback()));
if (action != null) {
callbackList.add(convert2SystemApiCaptureCallback(action.getCallbackExecutor(), action.getCallback()));
action.fillConfig(mCamera.getCamera2Info(), mCaptureRequestBuilder);
} }
//选择对应的相机初始化默认配置 try {
if (mSessionConfig.getSelectConfig() != null) {
mSessionConfig.getSelectConfig().fillConfig(mCamera.getCamera2Info(), mCaptureRequestBuilder); //设置反复捕获数据的请求这样预览界面就会一直有数据显示
List<CameraCaptureSession.CaptureCallback> callbackList = new ArrayList<>();
callbackList.add(mCaptureControlCallback);
RepeatCaptureRequestConfig requestConfig = mSessionConfig.getPreviewConfig().getRepeatCaptureRequestConfig();
requestConfig.fillConfig(mCamera.getCamera2Info(), mCaptureRequestBuilder);
callbackList.add(convert2SystemApiCaptureCallback(requestConfig.getCallbackExecutor(), requestConfig.getCallback()));
if (action != null) {
callbackList.add(convert2SystemApiCaptureCallback(action.getCallbackExecutor(), action.getCallback()));
action.fillConfig(mCamera.getCamera2Info(), mCaptureRequestBuilder);
}
//选择对应的相机初始化默认配置
if (mSessionConfig.getSelectConfig() != null) {
mSessionConfig.getSelectConfig().fillConfig(mCamera.getCamera2Info(), mCaptureRequestBuilder);
}
//创建捕获请求
CaptureRequest request = mCaptureRequestBuilder.build();
ComboSessionCaptureCallback comboSessionCaptureCallback = new ComboSessionCaptureCallback(callbackList);
if (mCamera.getCameraState() == CameraState.OPEN) {
mCameraCaptureSession.setRepeatingRequest(request, comboSessionCaptureCallback, mHandler);
}
} catch (CameraAccessException e) {
CameraLogger.e(Camera2CameraImpl.TAG, "CameraCaptureSession.openCaptureSession error (%s) ", e.getMessage());
CameraShould.fail("", e);
} }
//创建捕获请求
CaptureRequest request = mCaptureRequestBuilder.build();
ComboSessionCaptureCallback comboSessionCaptureCallback = new ComboSessionCaptureCallback(callbackList);
if (mCamera.getCameraState() == CameraState.OPEN) {
mCameraCaptureSession.setRepeatingRequest(request, comboSessionCaptureCallback, mHandler);
}
} catch (CameraAccessException e) {
CameraLogger.e(Camera2CameraImpl.TAG, "CameraCaptureSession.openCaptureSession error (%s) ", e.getMessage());
CameraShould.fail("", e);
} }
} }

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session; package com.ola.olamera.camera.session;
/* /*
* *
* Creation : 20-11-23 * Creation : 20-11-23
@ -7,10 +7,10 @@ package com.quark.quamera.camera.session;
import android.os.Build; import android.os.Build;
import com.quark.quamera.camera.camera.Camera2Info; import com.ola.olamera.camera.camera.Camera2Info;
import com.quark.quamera.camera.camera.CameraLifeManager; import com.ola.olamera.camera.camera.CameraLifeManager;
import com.quark.quamera.camera.camera.CameraState; import com.ola.olamera.camera.camera.CameraState;
import com.quark.quamera.camera.session.config.CameraSelectConfig; import com.ola.olamera.camera.session.config.CameraSelectConfig;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session.config; package com.ola.olamera.camera.session.config;
/* /*
* *
* Creation : 2021/6/30 * Creation : 2021/6/30
@ -13,7 +13,7 @@ import android.os.Build;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import com.quark.quamera.util.ArrayUtil; import com.ola.olamera.util.ArrayUtil;
public class CameraConfigUtils { public class CameraConfigUtils {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camera.session.config; package com.ola.olamera.camera.session.config;
/* /*
* *
* Creation : 2021/5/7 * Creation : 2021/5/7
@ -9,9 +9,9 @@ import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CaptureRequest; import android.hardware.camera2.CaptureRequest;
import android.os.Build; import android.os.Build;
import com.quark.quamera.camera.camera.Camera2Info; import com.ola.olamera.camera.camera.Camera2Info;
import com.quark.quamera.camera.session.CameraSelector; import com.ola.olamera.camera.session.CameraSelector;
import com.quark.quamera.util.CameraLogger; import com.ola.olamera.util.CameraLogger;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camerax; package com.ola.olamera.camerax;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
@ -28,7 +28,7 @@ import android.util.Size;
import android.view.Display; import android.view.Display;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
import com.quark.quamera.camerax.controller.ForwardingLiveData; import com.ola.olamera.camerax.controller.ForwardingLiveData;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camerax; package com.ola.olamera.camerax;
/* /*
* *
* Creation : 20-11-25 * Creation : 20-11-25
@ -18,13 +18,13 @@ import android.util.Log;
import android.util.Size; import android.util.Size;
import android.util.SizeF; import android.util.SizeF;
import com.quark.quamera.camera.preview.ViewPort; import com.ola.olamera.camera.preview.ViewPort;
import com.quark.quamera.camera.preview.ViewPorts; import com.ola.olamera.camera.preview.ViewPorts;
import com.quark.quamera.camera.session.SingleCaptureConfig; import com.ola.olamera.camera.session.SingleCaptureConfig;
import com.quark.quamera.camerax.utils.FocalLengthInfo; import com.ola.olamera.camerax.utils.FocalLengthInfo;
import com.quark.quamera.camerax.utils.SingleThreadHandlerExecutor; import com.ola.olamera.camerax.utils.SingleThreadHandlerExecutor;
import com.quark.quamera.render.view.CameraXPreviewView; import com.ola.olamera.render.view.CameraXPreviewView;
import com.quark.quamera.util.CameraLogger; import com.ola.olamera.util.CameraLogger;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.ArrayList; import java.util.ArrayList;
@ -65,7 +65,6 @@ import androidx.lifecycle.LifecycleRegistry;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public class CameraXManager implements LifecycleOwner, ICameraManager<CameraXPreviewView> { public class CameraXManager implements LifecycleOwner, ICameraManager<CameraXPreviewView> {
private LifecycleCameraController mCameraController; private LifecycleCameraController mCameraController;
@ -185,7 +184,7 @@ public class CameraXManager implements LifecycleOwner, ICameraManager<CameraXPre
*/ */
@UiThread @UiThread
@SuppressLint("RestrictedApi") @SuppressLint("RestrictedApi")
public void takePictureOriginalData(SingleCaptureConfig singleCaptureConfig, com.quark.quamera.camera.session.ImageCapture.OnImageCapturedCallback capturedCallback) { public void takePictureOriginalData(SingleCaptureConfig singleCaptureConfig, com.ola.olamera.camera.session.ImageCapture.OnImageCapturedCallback capturedCallback) {
if (mCameraController == null) { if (mCameraController == null) {
return; return;
} }
@ -232,8 +231,8 @@ public class CameraXManager implements LifecycleOwner, ICameraManager<CameraXPre
}); });
} }
private com.quark.quamera.camera.session.CameraSelector.CameraLenFacing mPreCameraLenFacing = private com.ola.olamera.camera.session.CameraSelector.CameraLenFacing mPreCameraLenFacing =
com.quark.quamera.camera.session.CameraSelector.CameraLenFacing.LEN_FACING_BACK; com.ola.olamera.camera.session.CameraSelector.CameraLenFacing.LEN_FACING_BACK;
/** /**
* 转换摄像头 * 转换摄像头
@ -242,7 +241,7 @@ public class CameraXManager implements LifecycleOwner, ICameraManager<CameraXPre
*/ */
@UiThread @UiThread
@SuppressLint("RestrictedApi") @SuppressLint("RestrictedApi")
public void switchCamera(com.quark.quamera.camera.session.CameraSelector.CameraLenFacing cameraLenFacing, Size previewSize) { public void switchCamera(com.ola.olamera.camera.session.CameraSelector.CameraLenFacing cameraLenFacing, Size previewSize) {
if (cameraLenFacing == null) { if (cameraLenFacing == null) {
if (mCurrentCameraSelector == FRONT_SELECTOR) { if (mCurrentCameraSelector == FRONT_SELECTOR) {
mCurrentCameraSelector = BACK_SELECTOR; mCurrentCameraSelector = BACK_SELECTOR;
@ -253,7 +252,7 @@ public class CameraXManager implements LifecycleOwner, ICameraManager<CameraXPre
if (mPreCameraLenFacing != null && mPreCameraLenFacing == cameraLenFacing) { if (mPreCameraLenFacing != null && mPreCameraLenFacing == cameraLenFacing) {
return; return;
} }
if (cameraLenFacing == com.quark.quamera.camera.session.CameraSelector.CameraLenFacing.LEN_FACING_FONT) { if (cameraLenFacing == com.ola.olamera.camera.session.CameraSelector.CameraLenFacing.LEN_FACING_FONT) {
mCurrentCameraSelector = FRONT_SELECTOR; mCurrentCameraSelector = FRONT_SELECTOR;
} else { } else {
mCurrentCameraSelector = BACK_SELECTOR; mCurrentCameraSelector = BACK_SELECTOR;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camerax; package com.ola.olamera.camerax;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.media.ExifInterface; import android.media.ExifInterface;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camerax; package com.ola.olamera.camerax;
/* /*
* *
* Creation : 2021/11/15 * Creation : 2021/11/15

View File

@ -1,9 +1,9 @@
package com.quark.quamera.camerax; package com.ola.olamera.camerax;
import android.util.Size; import android.util.Size;
import com.quark.quamera.camera.session.SingleCaptureConfig; import com.ola.olamera.camera.session.SingleCaptureConfig;
import com.quark.quamera.render.view.BasePreviewView; import com.ola.olamera.render.view.BasePreviewView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -27,9 +27,9 @@ public interface ICameraManager<T extends BasePreviewView> {
void startCamera(Size previewSize, boolean useWideCamera, boolean needBindLifecycle, boolean isLimitCaptureSize, Size maxCaptureSize); void startCamera(Size previewSize, boolean useWideCamera, boolean needBindLifecycle, boolean isLimitCaptureSize, Size maxCaptureSize);
void switchCamera(com.quark.quamera.camera.session.CameraSelector.CameraLenFacing cameraLenFacing, Size previewSize); void switchCamera(com.ola.olamera.camera.session.CameraSelector.CameraLenFacing cameraLenFacing, Size previewSize);
void takePictureOriginalData(SingleCaptureConfig singleCaptureConfig, com.quark.quamera.camera.session.ImageCapture.OnImageCapturedCallback capturedCallback); void takePictureOriginalData(SingleCaptureConfig singleCaptureConfig, com.ola.olamera.camera.session.ImageCapture.OnImageCapturedCallback capturedCallback);
void enableFlash(boolean enable); void enableFlash(boolean enable);

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camerax; package com.ola.olamera.camerax;
import android.Manifest; import android.Manifest;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camerax; package com.ola.olamera.camerax;
import androidx.camera.lifecycle.ProcessCameraProvider; import androidx.camera.lifecycle.ProcessCameraProvider;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camerax; package com.ola.olamera.camerax;
import androidx.camera.core.impl.CameraCaptureResult; import androidx.camera.core.impl.CameraCaptureResult;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camerax.controller; package com.ola.olamera.camerax.controller;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.graphics.PointF; import android.graphics.PointF;
@ -12,8 +12,8 @@ import android.view.ScaleGestureDetector;
import android.view.ViewConfiguration; import android.view.ViewConfiguration;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
import com.quark.quamera.camerax.CameraController; import com.ola.olamera.camerax.CameraController;
import com.quark.quamera.render.view.CameraXPreviewView; import com.ola.olamera.render.view.CameraXPreviewView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camerax.controller; package com.ola.olamera.camerax.controller;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camerax.controller; package com.ola.olamera.camerax.controller;
import android.util.Size; import android.util.Size;
import android.view.MotionEvent; import android.view.MotionEvent;
@ -8,7 +8,7 @@ import androidx.camera.core.FocusMeteringResult;
import androidx.camera.core.SurfaceRequest; import androidx.camera.core.SurfaceRequest;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
import com.quark.quamera.camerax.CameraController; import com.ola.olamera.camerax.CameraController;
/** /**
* @author : liujian * @author : liujian

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camerax.controller; package com.ola.olamera.camerax.controller;
/** /**
* 点击对焦的事件回调 * 点击对焦的事件回调

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camerax.controller; package com.ola.olamera.camerax.controller;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.graphics.Bitmap; import android.graphics.Bitmap;
@ -31,8 +31,8 @@ import android.view.SurfaceView;
import android.view.TextureView; import android.view.TextureView;
import android.view.View; import android.view.View;
import com.quark.quamera.camerax.controller.internal.compat.quirk.PreviewOneThirdWiderQuirk; import com.ola.olamera.camerax.controller.internal.compat.quirk.PreviewOneThirdWiderQuirk;
import com.quark.quamera.camerax.controller.internal.compat.quirk.TextureViewRotationQuirk; import com.ola.olamera.camerax.controller.internal.compat.quirk.TextureViewRotationQuirk;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camerax.controller; package com.ola.olamera.camerax.controller;
import android.graphics.Matrix; import android.graphics.Matrix;
import android.graphics.PointF; import android.graphics.PointF;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camerax.controller; package com.ola.olamera.camerax.controller;
import android.content.Context; import android.content.Context;
import android.view.OrientationEventListener; import android.view.OrientationEventListener;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camerax.controller; package com.ola.olamera.camerax.controller;
import android.graphics.Matrix; import android.graphics.Matrix;
import android.graphics.Rect; import android.graphics.Rect;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camerax.controller.internal.compat.quirk; package com.ola.olamera.camerax.controller.internal.compat.quirk;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camerax.controller.internal.compat.quirk; package com.ola.olamera.camerax.controller.internal.compat.quirk;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camerax.controller.internal.compat.quirk; package com.ola.olamera.camerax.controller.internal.compat.quirk;
import android.os.Build; import android.os.Build;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camerax.controller.internal.compat.quirk; package com.ola.olamera.camerax.controller.internal.compat.quirk;
import android.os.Build; import android.os.Build;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camerax.controller.internal.compat.quirk; package com.ola.olamera.camerax.controller.internal.compat.quirk;
import android.os.Build; import android.os.Build;
import android.view.TextureView; import android.view.TextureView;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camerax.filter; package com.ola.olamera.camerax.filter;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camerax.utils; package com.ola.olamera.camerax.utils;
/* /*
* *
* Creation : 2021/5/26 * Creation : 2021/5/26
@ -10,9 +10,9 @@ import android.hardware.camera2.CaptureResult;
import android.os.Build; import android.os.Build;
import android.util.Log; import android.util.Log;
import com.quark.quamera.render.DefaultCameraRender; import com.ola.olamera.render.DefaultCameraRender;
import com.quark.quamera.util.CameraInit; import com.ola.olamera.util.CameraInit;
import com.quark.quamera.util.CameraReflection; import com.ola.olamera.util.CameraReflection;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.lang.reflect.Field; import java.lang.reflect.Field;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.camerax.utils; package com.ola.olamera.camerax.utils;
public class FocalLengthInfo implements Comparable<FocalLengthInfo> { public class FocalLengthInfo implements Comparable<FocalLengthInfo> {
public float focalLength = Float.MAX_VALUE; public float focalLength = Float.MAX_VALUE;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.quark.quamera.camerax.utils; package com.ola.olamera.camerax.utils;
import android.os.Handler; import android.os.Handler;
import android.os.HandlerThread; import android.os.HandlerThread;

View File

@ -0,0 +1,63 @@
precision highp float;
precision highp int;
varying vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
uniform float inputImageTextureWidth;
uniform float inputImageTextureHeight;
float cY(float x,float y){
vec4 c=texture2D(inputImageTexture,vec2(x,y));
return 0.183 * c.r + 0.614 * c.g + 0.062 * c.b + 0.0625;
}
vec4 cC(float x,float y,float dx,float dy){
vec4 c0=texture2D(inputImageTexture,vec2(x,y));
vec4 c1=texture2D(inputImageTexture,vec2(x+dx,y));
vec4 c2=texture2D(inputImageTexture,vec2(x,y+dy));
vec4 c3=texture2D(inputImageTexture,vec2(x+dx,y+dy));
return (c0+c1+c2+c3)/4.;
}
float cU(float x,float y,float dx,float dy){
vec4 c=cC(x,y,dx,dy);
return -0.101 * c.r - 0.339 * c.g + 0.439 * c.b + 0.5000;
}
float cV(float x,float y,float dx,float dy){
vec4 c=cC(x,y,dx,dy);
return 0.439 * c.r - 0.399 * c.g - 0.040 * c.b + 0.5000;
}
vec2 cPos(float t,float shiftx,float gy){
vec2 pos=vec2(floor(inputImageTextureWidth*textureCoordinate.x),floor(inputImageTextureHeight*gy));
return vec2(mod(pos.x*shiftx,inputImageTextureWidth),(pos.y*shiftx+floor(pos.x*shiftx/inputImageTextureWidth))*t);
}
vec4 calculateY(){
vec2 pos=cPos(1.,4.,textureCoordinate.y);
vec4 oColor=vec4(0);
float textureYPos=pos.y/inputImageTextureHeight;
oColor[0]=cY(pos.x/inputImageTextureWidth,textureYPos);
oColor[1]=cY((pos.x+1.)/inputImageTextureWidth,textureYPos);
oColor[2]=cY((pos.x+2.)/inputImageTextureWidth,textureYPos);
oColor[3]=cY((pos.x+3.)/inputImageTextureWidth,textureYPos);
return oColor;
}
vec4 calculateUV(float dx,float dy){
vec2 pos=cPos(2.,4.,textureCoordinate.y-0.2500);
vec4 oColor=vec4(0);
float textureYPos=pos.y/inputImageTextureHeight;
oColor[0]= cV(pos.x/inputImageTextureWidth,textureYPos,dx,dy);
oColor[1]= cU(pos.x/inputImageTextureWidth,textureYPos,dx,dy);
oColor[2]= cV((pos.x+2.)/inputImageTextureWidth,textureYPos,dx,dy);
oColor[3]= cU((pos.x+2.)/inputImageTextureWidth,textureYPos,dx,dy);
return oColor;
}
void main() {
if(textureCoordinate.y<0.2500){
gl_FragColor=calculateY();
}else if(textureCoordinate.y<0.3750){
gl_FragColor=calculateUV(1./inputImageTextureWidth,1./inputImageTextureHeight);
}else{
gl_FragColor=vec4(0,0,0,0);
}
}

View File

@ -1,11 +1,11 @@
package com.quark.quamera.render; package com.ola.olamera.render;
/* /*
* *
* Creation : 2021/4/13 * Creation : 2021/4/13
* Author : jiaming.wjm@ * Author : jiaming.wjm@
*/ */
import com.quark.quamera.render.view.AndroidGLSurfaceView; import com.ola.olamera.render.view.AndroidGLSurfaceView;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.render; package com.ola.olamera.render;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.content.Context; import android.content.Context;
@ -12,17 +12,17 @@ import android.os.SystemClock;
import android.util.Log; import android.util.Log;
import android.util.Rational; import android.util.Rational;
import com.quark.quamera.camera.preview.ViewPort; import com.ola.olamera.camera.preview.ViewPort;
import com.quark.quamera.render.entry.FrameDetectData; import com.ola.olamera.render.entry.FrameDetectData;
import com.quark.quamera.render.entry.RenderFlowData; import com.ola.olamera.render.entry.RenderFlowData;
import com.quark.quamera.render.expansion.IRenderExpansion; import com.ola.olamera.render.expansion.IRenderExpansion;
import com.quark.quamera.render.photo.ExportPhoto; import com.ola.olamera.render.photo.ExportPhoto;
import com.quark.quamera.render.photo.SnapShotCommand; import com.ola.olamera.render.photo.SnapShotCommand;
import com.quark.quamera.render.view.AndroidGLSurfaceView; import com.ola.olamera.render.view.AndroidGLSurfaceView;
import com.quark.quamera.util.CameraInit; import com.ola.olamera.util.CameraInit;
import com.quark.quamera.util.CameraLogger; import com.ola.olamera.util.CameraLogger;
import com.quark.quamera.util.CameraShould; import com.ola.olamera.util.CameraShould;
import com.quark.quamera.util.ImageUtils; import com.ola.olamera.util.ImageUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.render; package com.ola.olamera.render;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.graphics.Bitmap; import android.graphics.Bitmap;
@ -7,9 +7,9 @@ import android.opengl.GLES20;
import android.opengl.Matrix; import android.opengl.Matrix;
import android.util.Log; import android.util.Log;
import com.quark.quamera.util.GlCommonUtil; import com.ola.olamera.util.GlCommonUtil;
import com.quark.quamera.util.MatrixUtils; import com.ola.olamera.util.MatrixUtils;
import com.quark.quamera.util.OpenGlUtils; import com.ola.olamera.util.OpenGlUtils;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.ByteOrder; import java.nio.ByteOrder;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.render; package com.ola.olamera.render;
/* /*
* *
* Creation : 2021/1/26 * Creation : 2021/1/26
@ -10,17 +10,17 @@ import android.os.Build;
import android.os.SystemClock; import android.os.SystemClock;
import android.util.Log; import android.util.Log;
import com.quark.quamera.camera.camera.Camera2CameraImpl; import com.ola.olamera.camera.camera.Camera2CameraImpl;
import com.quark.quamera.camera.camera.CameraState; import com.ola.olamera.camera.camera.CameraState;
import com.quark.quamera.camera.camera.ICameraStateListener; import com.ola.olamera.camera.camera.ICameraStateListener;
import com.quark.quamera.camera.preview.SurfaceTextureWrapper; import com.ola.olamera.camera.preview.SurfaceTextureWrapper;
import com.quark.quamera.camera.session.CameraCaptureCallback; import com.ola.olamera.camera.session.CameraCaptureCallback;
import com.quark.quamera.camera.session.CameraCaptureComboCallback; import com.ola.olamera.camera.session.CameraCaptureComboCallback;
import com.quark.quamera.camera.session.CameraCaptureResult; import com.ola.olamera.camera.session.CameraCaptureResult;
import com.quark.quamera.camerax.utils.CameraXCaptureResultManager; import com.ola.olamera.camerax.utils.CameraXCaptureResultManager;
import com.quark.quamera.util.Camera2CaptureResultManager; import com.ola.olamera.util.Camera2CaptureResultManager;
import com.quark.quamera.util.CameraInit; import com.ola.olamera.util.CameraInit;
import com.quark.quamera.util.CameraShould; import com.ola.olamera.util.CameraShould;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.render; package com.ola.olamera.render;
public class GLConstant { public class GLConstant {

View File

@ -1,4 +1,4 @@
package com.quark.quamera.render; package com.ola.olamera.render;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.graphics.Bitmap; import android.graphics.Bitmap;
@ -8,14 +8,14 @@ import android.opengl.GLES20;
import android.util.Log; import android.util.Log;
import com.quark.quamera.util.GlCommonUtil; import com.ola.olamera.util.GlCommonUtil;
import com.quark.quamera.util.MatrixUtils; import com.ola.olamera.util.MatrixUtils;
import com.quark.quamera.util.OpenGlUtils; import com.ola.olamera.util.OpenGlUtils;
import java.nio.FloatBuffer; import java.nio.FloatBuffer;
import java.util.LinkedList; import java.util.LinkedList;
import static com.quark.quamera.render.CropFboFilter.doSnapshot; import static com.ola.olamera.render.CropFboFilter.doSnapshot;
@TargetApi(18) @TargetApi(18)

View File

@ -1,8 +1,8 @@
package com.quark.quamera.render; package com.ola.olamera.render;
import android.opengl.EGLContext; import android.opengl.EGLContext;
import com.quark.quamera.camera.camera.Camera2CameraImpl; import com.ola.olamera.camera.camera.Camera2CameraImpl;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package com.quark.quamera.render; package com.ola.olamera.render;
/* /*
* *
* Creation : 2021/7/27 * Creation : 2021/7/27

View File

@ -1,4 +1,4 @@
package com.quark.quamera.render; package com.ola.olamera.render;
/* /*
* *
* Creation : 2021/1/28 * Creation : 2021/1/28

Some files were not shown because too many files have changed in this diff Show More