Loading services/camera/virtualcamera/VirtualCameraRenderThread.cc +8 −1 Original line number Diff line number Diff line Loading @@ -109,7 +109,14 @@ CameraMetadata createCaptureResultMetadata( .setControlAeLock(ANDROID_CONTROL_AE_LOCK_OFF) .setControlAeMode(ANDROID_CONTROL_AE_MODE_ON) .setControlAePrecaptureTrigger( ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE) // Limited devices are expected to have precapture ae enabled and // respond to cancellation request. Since we don't actuall support // AE at all, let's just respect the cancellation expectation in // case it's requested requestSettings.aePrecaptureTrigger == ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL ? ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL : ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE) .setControlAeState(ANDROID_CONTROL_AE_STATE_INACTIVE) .setControlAfMode(ANDROID_CONTROL_AF_MODE_OFF) .setControlAfTrigger(ANDROID_CONTROL_AF_TRIGGER_IDLE) Loading services/camera/virtualcamera/VirtualCameraRenderThread.h +2 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,8 @@ struct RequestSettings { camera_metadata_enum_android_control_capture_intent_t captureIntent = VirtualCameraDevice::kDefaultCaptureIntent; std::optional<GpsCoordinates> gpsCoordinates; std::optional<camera_metadata_enum_android_control_ae_precapture_trigger> aePrecaptureTrigger; }; // Represents single capture request to fill set of buffers. Loading services/camera/virtualcamera/VirtualCameraSession.cc +2 −1 Original line number Diff line number Diff line Loading @@ -265,7 +265,8 @@ RequestSettings createSettingsFromMetadata(const CameraMetadata& metadata) { .fpsRange = getFpsRange(metadata), .captureIntent = getCaptureIntent(metadata).value_or( ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW), .gpsCoordinates = getGpsCoordinates(metadata)}; .gpsCoordinates = getGpsCoordinates(metadata), .aePrecaptureTrigger = getPrecaptureTrigger(metadata)}; } } // namespace Loading services/camera/virtualcamera/util/MetadataUtil.cc +16 −0 Original line number Diff line number Diff line Loading @@ -931,6 +931,22 @@ std::optional<camera_metadata_enum_android_lens_facing> getLensFacing( return static_cast<camera_metadata_enum_android_lens_facing>(entry.data.u8[0]); } std::optional<camera_metadata_enum_android_control_ae_precapture_trigger> getPrecaptureTrigger( const aidl::android::hardware::camera::device::CameraMetadata& cameraMetadata) { auto metadata = reinterpret_cast<const camera_metadata_t*>(cameraMetadata.metadata.data()); camera_metadata_ro_entry_t entry; if (find_camera_metadata_ro_entry( metadata, ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER, &entry) != OK) { return std::nullopt; } return static_cast<camera_metadata_enum_android_control_ae_precapture_trigger>( entry.data.u8[0]); } } // namespace virtualcamera } // namespace companion } // namespace android services/camera/virtualcamera/util/MetadataUtil.h +4 −0 Original line number Diff line number Diff line Loading @@ -480,6 +480,10 @@ std::optional<GpsCoordinates> getGpsCoordinates( std::optional<camera_metadata_enum_android_lens_facing> getLensFacing( const aidl::android::hardware::camera::device::CameraMetadata& metadata); std::optional<camera_metadata_enum_android_control_ae_precapture_trigger> getPrecaptureTrigger( const aidl::android::hardware::camera::device::CameraMetadata& cameraMetadata); } // namespace virtualcamera } // namespace companion } // namespace android Loading Loading
services/camera/virtualcamera/VirtualCameraRenderThread.cc +8 −1 Original line number Diff line number Diff line Loading @@ -109,7 +109,14 @@ CameraMetadata createCaptureResultMetadata( .setControlAeLock(ANDROID_CONTROL_AE_LOCK_OFF) .setControlAeMode(ANDROID_CONTROL_AE_MODE_ON) .setControlAePrecaptureTrigger( ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE) // Limited devices are expected to have precapture ae enabled and // respond to cancellation request. Since we don't actuall support // AE at all, let's just respect the cancellation expectation in // case it's requested requestSettings.aePrecaptureTrigger == ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL ? ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL : ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE) .setControlAeState(ANDROID_CONTROL_AE_STATE_INACTIVE) .setControlAfMode(ANDROID_CONTROL_AF_MODE_OFF) .setControlAfTrigger(ANDROID_CONTROL_AF_TRIGGER_IDLE) Loading
services/camera/virtualcamera/VirtualCameraRenderThread.h +2 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,8 @@ struct RequestSettings { camera_metadata_enum_android_control_capture_intent_t captureIntent = VirtualCameraDevice::kDefaultCaptureIntent; std::optional<GpsCoordinates> gpsCoordinates; std::optional<camera_metadata_enum_android_control_ae_precapture_trigger> aePrecaptureTrigger; }; // Represents single capture request to fill set of buffers. Loading
services/camera/virtualcamera/VirtualCameraSession.cc +2 −1 Original line number Diff line number Diff line Loading @@ -265,7 +265,8 @@ RequestSettings createSettingsFromMetadata(const CameraMetadata& metadata) { .fpsRange = getFpsRange(metadata), .captureIntent = getCaptureIntent(metadata).value_or( ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW), .gpsCoordinates = getGpsCoordinates(metadata)}; .gpsCoordinates = getGpsCoordinates(metadata), .aePrecaptureTrigger = getPrecaptureTrigger(metadata)}; } } // namespace Loading
services/camera/virtualcamera/util/MetadataUtil.cc +16 −0 Original line number Diff line number Diff line Loading @@ -931,6 +931,22 @@ std::optional<camera_metadata_enum_android_lens_facing> getLensFacing( return static_cast<camera_metadata_enum_android_lens_facing>(entry.data.u8[0]); } std::optional<camera_metadata_enum_android_control_ae_precapture_trigger> getPrecaptureTrigger( const aidl::android::hardware::camera::device::CameraMetadata& cameraMetadata) { auto metadata = reinterpret_cast<const camera_metadata_t*>(cameraMetadata.metadata.data()); camera_metadata_ro_entry_t entry; if (find_camera_metadata_ro_entry( metadata, ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER, &entry) != OK) { return std::nullopt; } return static_cast<camera_metadata_enum_android_control_ae_precapture_trigger>( entry.data.u8[0]); } } // namespace virtualcamera } // namespace companion } // namespace android
services/camera/virtualcamera/util/MetadataUtil.h +4 −0 Original line number Diff line number Diff line Loading @@ -480,6 +480,10 @@ std::optional<GpsCoordinates> getGpsCoordinates( std::optional<camera_metadata_enum_android_lens_facing> getLensFacing( const aidl::android::hardware::camera::device::CameraMetadata& metadata); std::optional<camera_metadata_enum_android_control_ae_precapture_trigger> getPrecaptureTrigger( const aidl::android::hardware::camera::device::CameraMetadata& cameraMetadata); } // namespace virtualcamera } // namespace companion } // namespace android Loading