diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..f01e7779057d55c3e2f9d091c60879e100af9deb --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,7 @@ +stages: + - update-from-upstream + +include: + - project: 'e/templates' + ref: master + file: '/gitlab-ci/.gitlab-ci-import-updates-from-upstream.yml' diff --git a/camera/device/3.2/default/Android.bp b/camera/device/3.2/default/Android.bp index a1962915fff7f1c4e570796c6008acb9addde860..efcfec64062fbad928a4f361a895a0f22d044c41 100644 --- a/camera/device/3.2/default/Android.bp +++ b/camera/device/3.2/default/Android.bp @@ -9,7 +9,10 @@ package { cc_library_shared { name: "camera.device@3.2-impl", - defaults: ["hidl_defaults"], + defaults: [ + "hidl_defaults", + "camera_override_format_from_reserved_defaults", + ], proprietary: true, srcs: [ "CameraDevice.cpp", diff --git a/camera/device/3.2/default/CameraDeviceSession.cpp b/camera/device/3.2/default/CameraDeviceSession.cpp index 769991c5fa3df5131d19c5b8cb0e7c0c0f8f5e56..6e5c7142519e8d7e9e7365a1365cabababa262d0 100644 --- a/camera/device/3.2/default/CameraDeviceSession.cpp +++ b/camera/device/3.2/default/CameraDeviceSession.cpp @@ -926,12 +926,15 @@ bool CameraDeviceSession::preProcessConfigurationLocked( mStreamMap[id].data_space); mCirculatingBuffers.emplace(stream.mId, CirculatingBuffers{}); } else { - // width/height/format must not change, but usage/rotation might need to change + // width/height must not change, but usage/rotation might need to change + // format might change and get updated with TARGET_CAMERA_OVERRIDE_FORMAT_FROM_RESERVED if (mStreamMap[id].stream_type != (int) requestedConfiguration.streams[i].streamType || mStreamMap[id].width != requestedConfiguration.streams[i].width || mStreamMap[id].height != requestedConfiguration.streams[i].height || +#ifndef TARGET_CAMERA_OVERRIDE_FORMAT_FROM_RESERVED mStreamMap[id].format != (int) requestedConfiguration.streams[i].format || +#endif mStreamMap[id].data_space != mapToLegacyDataspace( static_cast ( requestedConfiguration.streams[i].dataSpace))) { diff --git a/camera/device/3.2/default/convert.cpp b/camera/device/3.2/default/convert.cpp index 207560783fb2e66d17a792290f6bc4fed51833e1..fdbc204556c846969a0b0b8f42e418c192d00440 100644 --- a/camera/device/3.2/default/convert.cpp +++ b/camera/device/3.2/default/convert.cpp @@ -74,6 +74,10 @@ void convertFromHidl(const Stream &src, Camera3Stream* dst) { dst->data_space = (android_dataspace_t) src.dataSpace; dst->rotation = (int) src.rotation; dst->usage = (uint32_t) src.usage; +#ifdef TARGET_CAMERA_OVERRIDE_FORMAT_FROM_RESERVED + dst->reserved[0] = NULL; + dst->reserved[1] = NULL; +#endif // Fields to be filled by HAL (max_buffers, priv) are initialized to 0 dst->max_buffers = 0; dst->priv = 0; @@ -96,6 +100,25 @@ void convertToHidl(const Camera3Stream* src, HalStream* dst) { ALOGW("%s: Stream type %d is not currently supported!", __FUNCTION__, src->stream_type); } + +#ifdef TARGET_CAMERA_OVERRIDE_FORMAT_FROM_RESERVED + HalStream* halStream = NULL; + if (src->reserved[0] != NULL) { + halStream = (HalStream*)(src->reserved[0]); + } else if (src->reserved[1] != NULL) { + halStream = (HalStream*)(src->reserved[1]); + } + + // Check if overrideFormat is set and honor it + if (halStream != NULL) { + dst->overrideFormat = (PixelFormat) halStream->overrideFormat; + if (src->stream_type == CAMERA3_STREAM_OUTPUT) { + dst->producerUsage = (BufferUsageFlags)halStream->producerUsage; + } else if (src->stream_type == CAMERA3_STREAM_INPUT) { + dst->consumerUsage = (BufferUsageFlags)halStream->consumerUsage; + } + } +#endif } void convertToHidl(const camera3_stream_configuration_t& src, HalStreamConfiguration* dst) { diff --git a/camera/device/3.3/default/Android.bp b/camera/device/3.3/default/Android.bp index cc0dd39db5b1a845ebb8bf22e151ae3c6d4f3b3d..5620102d7e3543e46d8126f2bd0c52c01deeb9ee 100644 --- a/camera/device/3.3/default/Android.bp +++ b/camera/device/3.3/default/Android.bp @@ -9,7 +9,10 @@ package { cc_library_shared { name: "camera.device@3.3-impl", - defaults: ["hidl_defaults"], + defaults: [ + "hidl_defaults", + "camera_override_format_from_reserved_defaults", + ], proprietary: true, srcs: [ "CameraDevice.cpp", diff --git a/camera/device/3.3/default/convert.cpp b/camera/device/3.3/default/convert.cpp index dae190b03c82344f371cb772d9b38fedc7cf80b1..9b6caf036027d438b0cd19fbe5160f92a6ac1181 100644 --- a/camera/device/3.3/default/convert.cpp +++ b/camera/device/3.3/default/convert.cpp @@ -47,6 +47,24 @@ void convertToHidl(const Camera3Stream* src, HalStream* dst) { ALOGW("%s: Stream type %d is not currently supported!", __FUNCTION__, src->stream_type); } + +#ifdef TARGET_CAMERA_OVERRIDE_FORMAT_FROM_RESERVED + HalStream* halStream = NULL; + if (src->reserved[0] != NULL) { + halStream = (HalStream*)(src->reserved[0]); + } else if (src->reserved[1] != NULL) { + halStream = (HalStream*)(src->reserved[1]); + } + + if (halStream != NULL) { + dst->v3_2.overrideFormat = (PixelFormat) halStream->v3_2.overrideFormat; + if (src->stream_type == CAMERA3_STREAM_OUTPUT) { + dst->v3_2.producerUsage = (BufferUsageFlags)halStream->v3_2.producerUsage; + } else if (src->stream_type == CAMERA3_STREAM_INPUT) { + dst->v3_2.consumerUsage = (BufferUsageFlags)halStream->v3_2.consumerUsage; + } + } +#endif } void convertToHidl(const camera3_stream_configuration_t& src, HalStreamConfiguration* dst) {