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

Commit 5926ea8e authored by Shuzhen Wang's avatar Shuzhen Wang Committed by Android (Google) Code Review
Browse files

Merge "Camera: Move readoutTimestamp to OutputConfiguration"

parents 9321ea07 bce53dbf
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -97,6 +97,10 @@ int OutputConfiguration::getMirrorMode() const {
    return mMirrorMode;
}

bool OutputConfiguration::useReadoutTimestamp() const {
    return mUseReadoutTimestamp;
}

OutputConfiguration::OutputConfiguration() :
        mRotation(INVALID_ROTATION),
        mSurfaceSetID(INVALID_SET_ID),
@@ -110,7 +114,8 @@ OutputConfiguration::OutputConfiguration() :
        mColorSpace(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_UNSPECIFIED),
        mStreamUseCase(ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT),
        mTimestampBase(TIMESTAMP_BASE_DEFAULT),
        mMirrorMode(MIRROR_MODE_AUTO) {
        mMirrorMode(MIRROR_MODE_AUTO),
        mUseReadoutTimestamp(false) {
}

OutputConfiguration::OutputConfiguration(const android::Parcel& parcel) :
@@ -220,6 +225,12 @@ status_t OutputConfiguration::readFromParcel(const android::Parcel* parcel) {
        return err;
    }

    int useReadoutTimestamp = 0;
    if ((err = parcel->readInt32(&useReadoutTimestamp)) != OK) {
        ALOGE("%s: Failed to read useReadoutTimestamp flag from parcel", __FUNCTION__);
        return err;
    }

    mRotation = rotation;
    mSurfaceSetID = setID;
    mSurfaceType = surfaceType;
@@ -231,6 +242,7 @@ status_t OutputConfiguration::readFromParcel(const android::Parcel* parcel) {
    mStreamUseCase = streamUseCase;
    mTimestampBase = timestampBase;
    mMirrorMode = mirrorMode;
    mUseReadoutTimestamp = useReadoutTimestamp != 0;
    for (auto& surface : surfaceShims) {
        ALOGV("%s: OutputConfiguration: %p, name %s", __FUNCTION__,
                surface.graphicBufferProducer.get(),
@@ -244,10 +256,10 @@ status_t OutputConfiguration::readFromParcel(const android::Parcel* parcel) {

    ALOGV("%s: OutputConfiguration: rotation = %d, setId = %d, surfaceType = %d,"
          " physicalCameraId = %s, isMultiResolution = %d, streamUseCase = %" PRId64
          ", timestampBase = %d, mirrorMode = %d",
          ", timestampBase = %d, mirrorMode = %d, useReadoutTimestamp = %d",
          __FUNCTION__, mRotation, mSurfaceSetID, mSurfaceType,
          String8(mPhysicalCameraId).string(), mIsMultiResolution, mStreamUseCase, timestampBase,
          mMirrorMode);
          mMirrorMode, mUseReadoutTimestamp);

    return err;
}
@@ -267,6 +279,7 @@ OutputConfiguration::OutputConfiguration(sp<IGraphicBufferProducer>& gbp, int ro
    mStreamUseCase = ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT;
    mTimestampBase = TIMESTAMP_BASE_DEFAULT;
    mMirrorMode = MIRROR_MODE_AUTO;
    mUseReadoutTimestamp = false;
}

OutputConfiguration::OutputConfiguration(
@@ -280,7 +293,7 @@ OutputConfiguration::OutputConfiguration(
    mColorSpace(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_UNSPECIFIED),
    mStreamUseCase(ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT),
    mTimestampBase(TIMESTAMP_BASE_DEFAULT),
    mMirrorMode(MIRROR_MODE_AUTO) { }
    mMirrorMode(MIRROR_MODE_AUTO), mUseReadoutTimestamp(false) { }

status_t OutputConfiguration::writeToParcel(android::Parcel* parcel) const {

@@ -342,6 +355,9 @@ status_t OutputConfiguration::writeToParcel(android::Parcel* parcel) const {
    err = parcel->writeInt32(mMirrorMode);
    if (err != OK) return err;

    err = parcel->writeInt32(mUseReadoutTimestamp ? 1 : 0);
    if (err != OK) return err;

    return OK;
}

+8 −3
Original line number Diff line number Diff line
@@ -44,8 +44,7 @@ public:
        TIMESTAMP_BASE_MONOTONIC = 2,
        TIMESTAMP_BASE_REALTIME = 3,
        TIMESTAMP_BASE_CHOREOGRAPHER_SYNCED = 4,
        TIMESTAMP_BASE_READOUT_SENSOR = 5,
        TIMESTAMP_BASE_MAX = TIMESTAMP_BASE_READOUT_SENSOR,
        TIMESTAMP_BASE_MAX = TIMESTAMP_BASE_CHOREOGRAPHER_SYNCED,
    };
    enum MirrorModeType {
        MIRROR_MODE_AUTO = 0,
@@ -69,6 +68,7 @@ public:
    int64_t                    getStreamUseCase() const;
    int                        getTimestampBase() const;
    int                        getMirrorMode() const;
    bool                       useReadoutTimestamp() const;

    // set of sensor pixel mode resolutions allowed {MAX_RESOLUTION, DEFAULT_MODE};
    const std::vector<int32_t>&            getSensorPixelModesUsed() const;
@@ -115,7 +115,8 @@ public:
                mColorSpace == other.mColorSpace &&
                mStreamUseCase == other.mStreamUseCase &&
                mTimestampBase == other.mTimestampBase &&
                mMirrorMode == other.mMirrorMode);
                mMirrorMode == other.mMirrorMode &&
                mUseReadoutTimestamp == other.mUseReadoutTimestamp);
    }
    bool operator != (const OutputConfiguration& other) const {
        return !(*this == other);
@@ -167,6 +168,9 @@ public:
        if (mMirrorMode != other.mMirrorMode) {
            return mMirrorMode < other.mMirrorMode;
        }
        if (mUseReadoutTimestamp != other.mUseReadoutTimestamp) {
            return mUseReadoutTimestamp < other.mUseReadoutTimestamp;
        }
        return gbpsLessThan(other);
    }

@@ -196,6 +200,7 @@ private:
    int64_t                    mStreamUseCase;
    int                        mTimestampBase;
    int                        mMirrorMode;
    bool                       mUseReadoutTimestamp;
};
} // namespace params
} // namespace camera2
+7 −3
Original line number Diff line number Diff line
@@ -890,6 +890,7 @@ binder::Status CameraDeviceClient::createStream(
    int timestampBase = outputConfiguration.getTimestampBase();
    int mirrorMode = outputConfiguration.getMirrorMode();
    int32_t colorSpace = outputConfiguration.getColorSpace();
    bool useReadoutTimestamp = outputConfiguration.useReadoutTimestamp();

    res = SessionConfigurationUtils::checkSurfaceType(numBufferProducers, deferredConsumer,
            outputConfiguration.getSurfaceType());
@@ -973,7 +974,8 @@ binder::Status CameraDeviceClient::createStream(
                static_cast<camera_stream_rotation_t>(outputConfiguration.getRotation()),
                &streamId, physicalCameraId, streamInfo.sensorPixelModesUsed, &surfaceIds,
                outputConfiguration.getSurfaceSetID(), isShared, isMultiResolution,
                streamInfo.colorSpace, streamInfo.dynamicRangeProfile, streamInfo.streamUseCase);
                streamInfo.colorSpace, streamInfo.dynamicRangeProfile, streamInfo.streamUseCase,
                useReadoutTimestamp);
        if (err == OK) {
            Mutex::Autolock l(mCompositeLock);
            mCompositeStreamMap.add(IInterface::asBinder(surfaces[0]->getIGraphicBufferProducer()),
@@ -986,7 +988,8 @@ binder::Status CameraDeviceClient::createStream(
                &streamId, physicalCameraId, streamInfo.sensorPixelModesUsed, &surfaceIds,
                outputConfiguration.getSurfaceSetID(), isShared, isMultiResolution,
                /*consumerUsage*/0, streamInfo.dynamicRangeProfile, streamInfo.streamUseCase,
                streamInfo.timestampBase, streamInfo.mirrorMode, streamInfo.colorSpace);
                streamInfo.timestampBase, streamInfo.mirrorMode, streamInfo.colorSpace,
                useReadoutTimestamp);
    }

    if (err != OK) {
@@ -1085,7 +1088,8 @@ binder::Status CameraDeviceClient::createDeferredSurfaceStreamLocked(
            outputConfiguration.isMultiResolution(), consumerUsage,
            outputConfiguration.getDynamicRangeProfile(),
            outputConfiguration.getStreamUseCase(),
            outputConfiguration.getMirrorMode());
            outputConfiguration.getMirrorMode(),
            outputConfiguration.useReadoutTimestamp());

    if (err != OK) {
        res = STATUS_ERROR_FMT(CameraService::ERROR_INVALID_OPERATION,
+2 −2
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ status_t CompositeStream::createStream(const std::vector<sp<Surface>>& consumers
        const std::unordered_set<int32_t> &sensorPixelModesUsed,
        std::vector<int> * surfaceIds,
        int streamSetId, bool isShared, bool isMultiResolution, int32_t colorSpace,
        int64_t dynamicProfile, int64_t streamUseCase) {
        int64_t dynamicProfile, int64_t streamUseCase, bool useReadoutTimestamp) {
    if (hasDeferredConsumer) {
        ALOGE("%s: Deferred consumers not supported in case of composite streams!",
                __FUNCTION__);
@@ -77,7 +77,7 @@ status_t CompositeStream::createStream(const std::vector<sp<Surface>>& consumers

    return createInternalStreams(consumers, hasDeferredConsumer, width, height, format, rotation,
            id, physicalCameraId, sensorPixelModesUsed, surfaceIds, streamSetId, isShared,
            colorSpace, dynamicProfile, streamUseCase);
            colorSpace, dynamicProfile, streamUseCase, useReadoutTimestamp);
}

status_t CompositeStream::deleteStream() {
+2 −2
Original line number Diff line number Diff line
@@ -47,7 +47,7 @@ public:
            const std::unordered_set<int32_t> &sensorPixelModesUsed,
            std::vector<int> *surfaceIds,
            int streamSetId, bool isShared, bool isMultiResolution, int32_t colorSpace,
            int64_t dynamicProfile, int64_t streamUseCase);
            int64_t dynamicProfile, int64_t streamUseCase, bool useReadoutTimestamp);

    status_t deleteStream();

@@ -61,7 +61,7 @@ public:
            const std::unordered_set<int32_t> &sensorPixelModesUsed,
            std::vector<int> *surfaceIds,
            int streamSetId, bool isShared, int32_t colorSpace,
            int64_t dynamicProfile, int64_t streamUseCase) = 0;
            int64_t dynamicProfile, int64_t streamUseCase, bool useReadoutTimestamp) = 0;

    // Release all internal streams and corresponding resources.
    virtual status_t deleteInternalStreams() = 0;
Loading