Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dcb743e2 authored by Zhijun He's avatar Zhijun He Committed by Android (Google) Code Review
Browse files

Merge "Camera2: replace partial quirks with normal partial result" into lmp-dev

parents e7a7ec6d 83159151
Loading
Loading
Loading
Loading
+16 −6
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ public class CameraDeviceImpl extends android.hardware.camera2.CameraDevice {

    private final String mCameraId;
    private final CameraCharacteristics mCharacteristics;
    private final int mTotalPartialCount;

    /**
     * A list tracking request and its expected last frame.
@@ -210,7 +211,7 @@ public class CameraDeviceImpl extends android.hardware.camera2.CameraDevice {

    public CameraDeviceImpl(String cameraId, StateListener listener, Handler handler,
                        CameraCharacteristics characteristics) {
        if (cameraId == null || listener == null || handler == null) {
        if (cameraId == null || listener == null || handler == null || characteristics == null) {
            throw new IllegalArgumentException("Null argument given");
        }
        mCameraId = cameraId;
@@ -226,6 +227,15 @@ public class CameraDeviceImpl extends android.hardware.camera2.CameraDevice {
        }
        TAG = tag;
        DEBUG = Log.isLoggable(TAG, Log.DEBUG);

        Integer partialCount =
                mCharacteristics.get(CameraCharacteristics.REQUEST_PARTIAL_RESULT_COUNT);
        if (partialCount == null) {
            // 1 means partial result is not supported.
            mTotalPartialCount = 1;
        } else {
            mTotalPartialCount = partialCount;
        }
    }

    public CameraDeviceCallbacks getCallbacks() {
@@ -1042,11 +1052,11 @@ public class CameraDeviceImpl extends android.hardware.camera2.CameraDevice {
                final CaptureListenerHolder holder =
                        CameraDeviceImpl.this.mCaptureListenerMap.get(requestId);

                Boolean quirkPartial = result.get(CaptureResult.QUIRKS_PARTIAL_RESULT);
                boolean quirkIsPartialResult = (quirkPartial != null && quirkPartial);
                boolean isPartialResult =
                        (resultExtras.getPartialResultCount() < mTotalPartialCount);

                // Update tracker (increment counter) when it's not a partial result.
                if (!quirkIsPartialResult) {
                if (!isPartialResult) {
                    mFrameNumberTracker.updateTracker(resultExtras.getFrameNumber(),
                            /*error*/false);
                }
@@ -1076,7 +1086,7 @@ public class CameraDeviceImpl extends android.hardware.camera2.CameraDevice {
                Runnable resultDispatch = null;

                // Either send a partial result or the final capture completed result
                if (quirkIsPartialResult) {
                if (isPartialResult) {
                    final CaptureResult resultAsCapture =
                            new CaptureResult(result, request, requestId);

@@ -1113,7 +1123,7 @@ public class CameraDeviceImpl extends android.hardware.camera2.CameraDevice {
                holder.getHandler().post(resultDispatch);

                // Fire onCaptureSequenceCompleted
                if (!quirkIsPartialResult) {
                if (!isPartialResult) {
                    checkAndFireSequenceComplete();
                }

+9 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ public class CaptureResultExtras implements Parcelable {
    private int afTriggerId;
    private int precaptureTriggerId;
    private long frameNumber;
    private int partialResultCount;

    public static final Parcelable.Creator<CaptureResultExtras> CREATOR =
            new Parcelable.Creator<CaptureResultExtras>() {
@@ -46,12 +47,14 @@ public class CaptureResultExtras implements Parcelable {
    }

    public CaptureResultExtras(int requestId, int subsequenceId, int afTriggerId,
                               int precaptureTriggerId, long frameNumber) {
                               int precaptureTriggerId, long frameNumber,
                               int partialResultCount) {
        this.requestId = requestId;
        this.subsequenceId = subsequenceId;
        this.afTriggerId = afTriggerId;
        this.precaptureTriggerId = precaptureTriggerId;
        this.frameNumber = frameNumber;
        this.partialResultCount = partialResultCount;
    }

    @Override
@@ -66,6 +69,7 @@ public class CaptureResultExtras implements Parcelable {
        dest.writeInt(afTriggerId);
        dest.writeInt(precaptureTriggerId);
        dest.writeLong(frameNumber);
        dest.writeInt(partialResultCount);
    }

    public void readFromParcel(Parcel in) {
@@ -74,6 +78,7 @@ public class CaptureResultExtras implements Parcelable {
        afTriggerId = in.readInt();
        precaptureTriggerId = in.readInt();
        frameNumber = in.readLong();
        partialResultCount = in.readInt();
    }

    public int getRequestId() {
@@ -96,4 +101,7 @@ public class CaptureResultExtras implements Parcelable {
        return frameNumber;
    }

    public int getPartialResultCount() {
        return partialResultCount;
    }
}
+3 −2
Original line number Diff line number Diff line
@@ -73,10 +73,11 @@ public class LegacyCameraDevice implements AutoCloseable {
    private CaptureResultExtras getExtrasFromRequest(RequestHolder holder) {
        if (holder == null) {
            return new CaptureResultExtras(ILLEGAL_VALUE, ILLEGAL_VALUE, ILLEGAL_VALUE,
                    ILLEGAL_VALUE, ILLEGAL_VALUE);
                    ILLEGAL_VALUE, ILLEGAL_VALUE, ILLEGAL_VALUE);
        }
        return new CaptureResultExtras(holder.getRequestId(), holder.getSubsequeceId(),
                /*afTriggerId*/0, /*precaptureTriggerId*/0, holder.getFrameNumber());
                /*afTriggerId*/0, /*precaptureTriggerId*/0, holder.getFrameNumber(),
                /*partialResultCount*/1);
    }

    /**