Proto commits in google/jetpack-camera-app

These 54 commits are when the Protocol Buffers files have changed:

Commit:4a780d8
Author:Trevor McGuire
Committer:Trevor McGuire

chore: align proto enums with proto3 zero-value best practices Added <ENUM_NAME>_UNSPECIFIED = 0 to all proto enums to comply with official proto3 style guide requirements. Updated ModelMappers.kt to handle the new UNSPECIFIED values and safely fallback to defaults. Also added a rule enforcing this to the local styleguide.

Commit:11ed164
Author:Trevor McGuire

chore: align proto enums with proto3 zero-value best practices Added <ENUM_NAME>_UNSPECIFIED = 0 to all proto enums to comply with official proto3 style guide requirements. Updated ModelMappers.kt to handle the new UNSPECIFIED values and safely fallback to defaults. Also added a rule enforcing this to the local styleguide.

Commit:97f9e98
Author:Trevor McGuire
Committer:Trevor McGuire

Address review comments regarding datastore factory and imports

Commit:2b21350
Author:Trevor McGuire

chore: split proto generation into standalone modules

Commit:190c006
Author:Trevor McGuire
Committer:Trevor McGuire

Restore datastore-proto module and decouple via SettingsDataSource This PR restores the `datastore-proto` module that was removed in PR #525. It brings back the `.proto` files, mappers, and serializers, but in a separate module under `:core:settings:datastore-proto`. Key architectural changes: - The `datastore-proto` module encapsulates `DataStoreFactory.create()` so `androidx.datastore` is no longer exposed to `:app`. - The `datastore-proto` module is completely Hilt-free. - Updates `:app`'s `AppSettingsModule` to manually provide the `ProtoDataStoreSettingsDataSource`.

Commit:bda48ab
Author:davidjiagoogle
Committer:GitHub

Refactor settings storage to Preferences DataStore to remove Protobuf (#525) * Refactor settings storage to Preferences DataStore to remove Protobuf * Address code review comments on safe string parsing & apply spotless formatting * Remove unused androidx.datastore dependency from feature/settings and refactor tests to use SharedPreferences * Clean up unused datastore and protobuf version and plugin declarations from Gradle scripts and Proguard config * Remove obsolete protobuf files and ProtoConversionTest from data:settings * Refactor persistence into standalone :data:settings-datastore module * Refactor settings persistence using modular Preferences DataStore (Option B) * Address PR 525 review comments: optimize enum mapping performance, add rename warning comments, fix navigation encoding, and expand test coverage * Import onAllNodesWithTag in ComposeTestRuleExt.kt * Address PR #525 review feedback: rename data source to PrefsDataStoreSettingsDataSource, remove Hilt dependencies from core:settings, add KDocs, and fix dependencies * Add unit tests for DebugSettings and DebugSettingsNavType

This commit does not contain any .proto files.

Commit:29eed2d
Author:davidjiagoogle

Merge branch 'main' into david/splitEffects and resolve conflicts

Commit:d9eb028
Author:davidjiagoogle

Refactor JCA to use extensible String-based Camera Effects

Commit:c9e9606
Author:Kimberly Crevecoeur
Committer:GitHub

Delete concurrent camera quick setting (#512) Deletes the concurrent camera quick setting in anticipation of a quick settings UI refactor wherein it is removed. The concurrent camerea setting has been made available in the main settings screen.

Commit:ed02201
Author:Trevor McGuire
Committer:Trevor McGuire

Add Rule of Thirds grid overlay to camera preview Adds a toggleable "Rule of Thirds" grid overlay to the camera preview to help with shot composition. Key changes include: - A `GridType` enum (`NONE`, `RULE_OF_THIRDS`) was introduced to manage grid visibility, allowing for future extensibility. - The grid selection is persisted in DataStore through the `SettingsRepository`. - A toggle button has been added to the Quick Settings panel. - The grid overlay features a fade-in/fade-out animation. The fade-out is handled within a `NonCancellable` context to prevent the animation from being interrupted, which avoids visual flickering. - For iconography, the button uses the standard `Icons.Default.Grid3x3` for the "on" state and a local vector asset (`grid_3x3_off.xml`) for the "off" state.

Commit:c9e1b61
Author:Kimberly Crevecoeur
Committer:Kimberly Crevecoeur

Refactor: Decouple DataStore from Settings Module Extracted Proto DataStore implementation into a new :data:settings-datastore module. This improves modularity and separation of concerns by isolating the persistence layer. :data:settings now solely defines interfaces and handles constraints.

Commit:34896f9
Author:Kimberly Crevecoeur

move proto models and mappers to core:model

Commit:a2ff088
Author:Kimberly Crevecoeur

Refactor: Decouple Models from Data Persistence for Enhanced Modularity This pull request introduces a significant architectural refactoring focused on improving the internal modularity and maintainability of the codebase. The primary goal was to decouple the core data models from any specific data persistence implementation (namely Protobuf and DataStore). This change ensures that core application components can utilize fundamental data types and settings interfaces without inheriting dependencies on Protobuf or DataStore, thus promoting cleaner module boundaries and increased flexibility for internal system evolution. Key Changes: 1. Creation of `:data:settings` (API Module): * A new, lightweight module was created to define the public API for settings within the application. * It contains the SettingsRepository interface and pure data models for settings (JcaSettings). * This module depends only on :core:model, ensuring it has no knowledge of persistence details. 2. Creation of `:data:settings-datastore` (Implementation Module): * The original :data:settings module was renamed and repurposed to become the concrete implementation of the new API module. * It now contains the LocalSettingsRepository implementation, the DataStoreModule for Hilt, and all Protobuf-related logic. 3. Purification of `:core:model`: * All Protobuf dependencies, imports, and conversion functions (toProto/fromProto) have been completely removed from this module. * :core:model is now a pure-Kotlin module, containing only the fundamental data classes and enums. This makes it a lightweight and universal dependency within the application. 4. Centralized Proto Mappers: * All toProto/fromProto logic has been migrated into the :data:settings-datastore module under a new mappers package. * The conversion logic is now implemented as idiomatic Kotlin extension functions (toDomain()/toProto()) in dedicated files (e.g., AspectRatioMapper.kt). This co-locates mapping logic while maintaining a clean separation of concerns. 5. Decoupling Navigation from Persistence: * The DebugSettingsNavType was refactored to remove its dependency on Protobuf serialization. * The DebugSettings data class now contains self-sufficient toNavString() and fromNavString() methods for navigation-specific serialization, ensuring the UI/navigation layer is completely independent of the data storage layer.

Commit:5b2e380
Author:Donovan McMurray
Committer:GitHub

Gllb (#361) * Integrate Google Low Light Boost. * More gLLB integration. * Add LowLightBoostPriority to Settings. * Correcting how LowLightBoostPriority is persisted. * Separate LowLightBoostSessionContainer into its own file. * Re-add LLB AE Mode functionality. * Update gLLB version to 16.0.1-beta04 * Update LLB availability check to try to download LLB if available * Apply spotless * Only report gLLB support if it is supported AND available Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Fix bug where lowLightBoostSession.release() wasn't getting called. * Make LLB session container a singleton and release session when app is resumed. * Fix issue where release was called multiple times on LLB Session after backgrounding JCA for long periods of time. * Clean up SDK version logic. * Removing accidental git command from SettingsViewModel comment. * Fix conditional checking for lens support of flash modes. * Restrict HDR and Concurrent Camera Quick Settings when LLB is active. * Add new error message for Google LLB. * Turn off HDR and Concurrent Camera if LLB is seleted from Settings Page. * Make 2 separate Illuminants for LLB options. This allows us to remove expensive calls to getLowLightBoostAvailablity while the camera is running, and only call this method during setup. * Change LowLightBoostState from enum to a float to accomodate the boostStrength value coming from Google LLB. * Pass a callback to LowLightBoostEffect for scene detection instead of passing whole CameraState. * Restoring .idea/other.xml file * Make LowLightBoostSessionContainer an object for simplicity. * Remove unnecessary coroutineScope. * Remove unnecessary coroutineScope.launch call. * Revert effects->effect in createUseCaseGroup. * Update Google LLB library to version 16.0.1-beta05. * Fix the gLLB installation flow so it doesn't block the camera initialization. * Update Google LLB version. * Release LLB Surface when it's no longer in use (in all cases). * Clean up the error handling when LLB fails. * Add lowLightBoostEvents to alert subscribers when an error occurs. This class allows for other event types to be added in the future. * Change getLowLightBoostEvents() to return a SharedFlow. * Wrap all of gLLB setup in try/catch block. * Call LLB error callback in when LLB Session encounters an error. * Add check for Google Play Services version until fix lands in LLB library. * Refactor LowLightBoost event to state This removes LLB "events" which can be more simply represented as a state within the existing LowLightBoostState. This change merges the failure event into LowLightBoostState as a new 'Error' state. This allows for the removal of the lowLightBoostEvents channel from the CameraSystem interface, simplifying the public API and ensuring unidirectional data flow. The PreviewViewModel and associated UI have been updated to handle the new `Error` state correctly. * Removing check for SERVICE_RELEASED to call LLB error callback. All cases where onSessionDisconnected() is called should be treated as an error. * Add exception to error callback for LLB * Only handle LLB state change errors when the state changes Adds distinctUntilChanged() to the StateFlow being collected to ensure we only handle the state change once. * Replace LowLightBoostSessionContainer with LowLightBoostSessionState. This allows the app to share the state of the Google LLB Session as needed. * Fixing comment in LowLightBoostSessionState. * Remove redundant code for setting LLB Session State to ReleaseRequested. * Clean up LLB Session release code. LowLightBoostSessionState.ReleaseRequested should not be needed, as the release logic should all happen in LowLightBoostSurfaceProcessor. * Revert "Clean up LLB Session release code." This reverts commit 15dc24e3260cf358a1ed77ff5723d276f60f5a39. * Revert "Remove redundant code for setting LLB Session State to ReleaseRequested." This reverts commit 425c5afffd5a37269466e8462e972211d4c47e89. * Revert "Fixing comment in LowLightBoostSessionState." This reverts commit f5a101b951bee5842561d499432b465662ffdb4d. * Revert "Replace LowLightBoostSessionContainer with LowLightBoostSessionState." This reverts commit 4f4735534046ed0222ae89b636251fd90227e324. * Refactor LowLightBoostSurfaceProcessor to use structured concurrency This makes the LowLightBoostSurfaceProcessor a bit more resilient and relies on structured concurrency to ensure we don't create multiple low light boost sessions concurrently. TotalCaptureResults are fed to the LowLightBoostEffect via a StateFlow rather than using a singleton * Simplify error handling and remove unnecessary coroutineScope {} * Undo change where single stream mode won't be applied when LLB fails * Remove unused LowLightBoostEvent * Change FlashModeUiStateAdapter to take a boolean for LLB being active instead of the strength value. The state doesn't need to be updated on every change of the strength value, just when the threshold is crossed. * Only update LLB state from onCaptureCompleted when using LLB AE Mode. * Adjust line lengths to be under 100 for gLLB changes. * Fix remaining spotless errors. Before, the spotlessApply run was failing because of max line length errors due to too many nesting levels. This was circumvented by refactoring some code into their own functions in CameraXCameraSystem.kt. * Update FlashModeuiStateAdapterTest to use isLowLightBoostActive instead of strength. * Clean up some lint errors --------- Co-authored-by: Trevor McGuire <trevormcguire@google.com> Co-authored-by: Trevor McGuire <temcguir@gmail.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

Commit:cdf87cb
Author:helpingstar
Committer:GitHub

Rename capture_mode.proto to stream_config.proto (#409)

Commit:33e1bc7
Author:donovanfm

Resolve conflicts merging main -> gllb.

Commit:b463055
Author:Trevor McGuire
Committer:GitHub

Make DebugSettings and TestPattern serializable as protobufs (#385)

Commit:065f571
Author:Trevor McGuire

Merge branch 'main' into gllb

Commit:20bafc2
Author:Trevor McGuire
Committer:Trevor McGuire

Make DebugSettings and TestPattern serializable as protobufs

Commit:85207d3
Author:Trevor McGuire
Committer:Trevor McGuire

Merge branch 'main'' into temcguir/remove_assisted_injection

Commit:ec3a5b9
Author:davidjiagoogle
Committer:GitHub

Move data models from data/settings to core/model (#376) * init * update * update * init * update * flipLensUiState * update * update * update * quicksettingsuiState * update * fix quickSettingIsOpen * update * spotless * spotless * update * spotless * update * update * update * update * update * Update StreamConfigsUiStateAdapter.kt * update * spotless * update * Update CaptureModeUiStateAdapter.kt * Update CaptureModeUiStateAdapter.kt * Update CaptureModeUiStateAdapter.kt * init * init * Update FlipLensUiStateAdapter.kt * update * Update FlipLensUiStateAdapter.kt * Update PreviewViewModel.kt * update * update * screenFlashUiState * spotless * address comments * merge * spotless * Update PreviewScreenComponents.kt * simplify deps * init * dep * Merge branch 'david/quickSettingsUiState' into david/uiComponents * address comments * update * update * update * update * merge * update * make CaptureModeToggleUiState binary * fix CaptureModeSettingsTest * spotless * rename captureUiState & init PreviewDisplayUiState * Move components from preview to ui.component.capture * migrate the tests from feature/preview * merge from main * import resource for tests * Address comments and merge after math * Delete kotlin-compiler-14341256067501647337.salive * Revert CaptureViewModel * Add back ignoreUri's default value * Move models from data/settings to data/model * Move ViewModel initialization back to PreviewScreen & use PreviewViewModel's property access notation * Spotless * fix manifest * Spotless * Add javadocs for CameraControlOverlay.get**EventForExternalCaptureMode methods * fix missed import conversions * Convert more imports that were missed * missed more imports in PreviewViewModelTest * Move TestPattern along with other models * move to core/model * remove leftover files in data/model * Delete .gitignore

Commit:f092e6b
Author:Trevor McGuire

Replace Hilt AssistedInjection with Nav Args for PreviewViewModel This commit refactors PreviewViewModel to remove Hilt assisted injection for ExternalCaptureMode and DebugSettings. These are now passed as Navigation arguments. It also introduces a Channel for communicating capture events. To enable this: * ExternalCaptureMode has been simplified into a sealed interface with distinct states: Standard, ImageCapture, MultipleImageCapture, and VideoCapture. This was necessary to make it parcelable for navigation. * DebugSettings (and its component TestPattern) are now serialized using Protocol Buffers to allow them to be passed as navigation arguments. The benefits of this refactor include: * Decoupling PreviewViewModel from Hilt assisted injection for these dependencies. * Simplifying the dependency graph and ViewModel instantiation. * Clarifying the data flow for ExternalCaptureMode and DebugSettings through standard Navigation components. * Centralizing UI logic for ExternalCaptureMode within PreviewViewModel, moving it out of individual UI components like ControlsBottom and CaptureButton. * Replacing callbacks in PreviewViewModel.captureImage (formerly captureImageWithUri) and PreviewViewModel.startRecording with a CaptureEvent Kotlin Channel. This provides a more reactive way to communicate capture results (success/failure/progress) and URIs to the UI. * Consolidating save location logic into the SaveLocation sealed interface. All external URIs are now passed via the captureUris navigation argument, and the results are communicated back through the CaptureEvent channel.

Commit:e9bcba8
Author:David Jia

move to core/model

Commit:44c8447
Author:David Jia

Move models from data/settings to data/model

Commit:60e16dd
Author:donovanfm

Add LowLightBoostPriority to Settings.

Commit:ea21c59
Author:Trevor McGuire

Clear main-cfg branch of all files

This commit does not contain any .proto files.

Commit:ebddf33
Author:Kimberly Crevecoeur
Committer:GitHub

Mute Audio Default Setting (#268) * Implement default setting to start recordings muted or with audio * use new .withAudioEnabled API * Rename Mute Audio usages to default positive * audio uistate --------- Co-authored-by: Jaehwa Noh <shwoghk14@gmail.com>

The documentation is generated from this commit.

Commit:e610e53
Author:davidjiagoogle
Committer:GitHub

VideoQuality proto and VideoQualitySetting (#294) * VideoQuality proto and VideoQualitySetting * Update VideoQuality.kt * update * Update VideoQuality.kt * address comments * update * update * update * update * Update SettingsComponents.kt * spotless * address comment * add video resolution in debug overlay * update * update * added preview icon * Update PreviewScreenComponents.kt * Update PreviewViewModel.kt * address comments * Update SettingsComponents.kt * Update PreviewViewModel.kt * Update CameraExt.kt * Update CameraSession.kt * fallback strategy * Update SettingsComponents.kt * Update CameraSession.kt * Update Constraints.kt * address comments * address comments * Update FakeJcaSettingsSerializer.kt * spotless

Commit:1e28091
Author:Kimberly Crevecoeur
Committer:GitHub

Rename CaptureMode setting model to StreamConfig (#297) * rename relevant instances of captureMode to streamConfig

Commit:9e99e0b
Author:Kimberly Crevecoeur
Committer:Kimberly Crevecoeur

rename captureMode setting model to streamConfig # Conflicts: # core/camera/src/main/java/com/google/jetpackcamera/core/camera/CameraXCameraUseCase.kt # feature/settings/src/main/java/com/google/jetpackcamera/settings/SettingsViewModel.kt # feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt

Commit:41f953f
Author:Trevor McGuire
Committer:GitHub

Add Optical Image Stabilization mode (#289) * Add OIS stabilization mode * Default camera flip disabled when non-AUTO stabilization mode not supported on other lens * Apply spotless * Make AUTO stabilization fall back to OIS when available Instead of just choosing stabilization ON, this will now use OIS if it is available and ON is not. * Make UI show when AUTO chooses OIS Adds an icon to show when AUTO stabilization mode has chosen OIS rather than ON. Also adjusts ON icon to use a different "A" symbol. * Change cascading "if" condition to "when" * Move unsupported FPS sets for stabilization modes to Constraints * Rely on Constraints for unsupported FPS per StabilizationMode in UI * Rename StabilizationUiState.Set to StabilizationUiState.Enabled * Throw IllegalStateException when StabilizationUiState.Specific contains AUTO stabilization This should not be a legal state since it is not specific. * Require StabilizationUiState.Specific to not have AUTO stabilization mode

Commit:3f136fd
Author:Yasith Vidanaarachchi
Committer:GitHub

Add LLB as a FlashMode, and remove existing LLB toggle related settings (#269)

Commit:116e484
Author:Trevor McGuire
Committer:GitHub

Add AUTO stabilization setting and enable by default (#278) * Add AUTO stabilization mode and make default Adds an AUTO stabilization mode that is now used by default. This mode will use preview stabilization or video stabilization depending on device support. This also does some refactoring to accommodate the new AUTO stabilization mode. Instead of keeping track of preview stabilization and video stabilization separately, we now use a single enum to track all stabilization modes. * Add AUTO selector to settings screen * Add StabilizationMode to CameraState Since this can now be resolved from AUTO or turned off temporarily during concurrent camera mode, we need to only show the indicator when it is actually on. This allows us to detect when and which stabilization mode is enabled. * Add icon for HIGH_QUALITY stabilization * Display stabilization mode from CaptureResult * Make AUTO only select ON when device configuration is supported High quality stabilization may affect WYSIWYG and performance. We'll only use high quality stabilization if it's explicitly turned on in the settings. * Only support AUTO in constraints when ON is supported * Better handling of camera switching No longer switch stabilization mode based on camera lens constraints when switching lenses. Now we will keep the mode, and will show that the mode is active based on the CameraState. This allows switching between back and front lens and maintaining the stabilization mode. AUTO mode will still remove the stabilization icon when it is not able to apply stabilization. * Show "AUTO" stabilization icon when in auto stabilization mode * Animate AUTO visibility icon Will fade in when stabilization is applied, and fade out otherwise * Remove unused protos

Commit:21fdaf1
Author:Trevor McGuire
Committer:GitHub

Add AUTO stabilization setting and enable by default (#278) * Add AUTO stabilization mode and make default Adds an AUTO stabilization mode that is now used by default. This mode will use preview stabilization or video stabilization depending on device support. This also does some refactoring to accommodate the new AUTO stabilization mode. Instead of keeping track of preview stabilization and video stabilization separately, we now use a single enum to track all stabilization modes. * Add AUTO selector to settings screen * Add StabilizationMode to CameraState Since this can now be resolved from AUTO or turned off temporarily during concurrent camera mode, we need to only show the indicator when it is actually on. This allows us to detect when and which stabilization mode is enabled. * Add icon for HIGH_QUALITY stabilization * Display stabilization mode from CaptureResult * Make AUTO only select ON when device configuration is supported High quality stabilization may affect WYSIWYG and performance. We'll only use high quality stabilization if it's explicitly turned on in the settings. * Only support AUTO in constraints when ON is supported * Better handling of camera switching No longer switch stabilization mode based on camera lens constraints when switching lenses. Now we will keep the mode, and will show that the mode is active based on the CameraState. This allows switching between back and front lens and maintaining the stabilization mode. AUTO mode will still remove the stabilization icon when it is not able to apply stabilization. * Show "AUTO" stabilization icon when in auto stabilization mode * Animate AUTO visibility icon Will fade in when stabilization is applied, and fade out otherwise * Remove unused protos

Commit:becc704
Author:Yasith Vidanaarachchi

animation prototype with scale

Commit:3e07a32
Author:Kimberly Crevecoeur
Committer:GitHub

Implement duration limit to recordings (#231) Includes setting with options for unlimited or 5, 10, 30, 60 seconds duration.

Commit:4e4d815
Author:heytsai
Committer:GitHub

Support Ultra HDR image capture (#206) * Add ImageOutputFormat settings to model - Add image output format proto and settings - Add supported output formats to settings * Support Ultra HDR image capture - Add supported image formats into CameraConstraints - Add UI for toggling capture between HDR image and HDR video - Hook up ImageFormat setting to CameraXCameraUseCase - Enable/Disable HdrCaptureModeToggleButton according to capture mode - Check image format and reset if needed when capture mode is changed - Not to bind video capture when capturing Ultra HDR image * Other - Display HDR icon text in QuickSettings as HDR instead of HLG10 --------- Co-authored-by: Ming-Da Tsai <mingdatsai@google.com>

Commit:17c50b5
Author:Trevor McGuire
Committer:GitHub

Add per-lens and system constraints for HDR video (#168) * Remove constraints from CameraAppSettings These don't need to be persisted, and only need to be updated once on initialization. * Add constraints classes * Add constraints for dynamic range Whenever the camera is switched, the constraints of supported dynamic range need to be updated. * Add ConstraintsRepository to data layer Make ConstraintsRepository an injectible singleton to ensure we're using the same instance across the camera use case and the viewmodels * Add constraints to SettingsScreen * Add constraints to preview screen / quick settings * Add constraints to all tests and use new UiState classes Fix UiTestUtil dependency on new PreviewUiState sealed class Fix up FakeSettingsRepository to handle constraints Adapt PreviewViewModelTest to fit with constraint changes Delete tests that are no longer valid since Settings no longer contain constraints Fixup LocalSettingsRepositoryInstrumentedTest to use new naming for default settings Adapt CameraAppSettingsViewModelTest to use new SystemConstraints and SettingsViewModel changes * Apply spotless * Reorder and delete old proto fields for app settings We should only do this in pre-release versions. After a release, the field numbers need to be locked in a deprecated or added to a list of `reserved`.

Commit:6121243
Author:Ming-Da Tsai
Committer:Ming-Da Tsai

Add ImageOutputFormat settings to model - Add image output format proto and settings - Add supported output formats to settings

Commit:7e342d9
Author:Kimberly Crevecoeur
Committer:GitHub

Target FPS settings (#86) * add target fps setting ui and datastore value * implement setTargetFrameRate in CameraXCameraUseCase * modify available stabilizations based on selected fps

Commit:3bda628
Author:Trevor McGuire
Committer:GitHub

Use LensFacing instead of flipCamera (#133) * Add LensFacing to model * Remove unused CameraUseCase data classes Use the classes in the model instead * Change CameraUseCase.flipCamera() to setLensFacing() * Use of setLensFacing rather than flipCamera Switches all usage to setting LensFacing directly rather than relying on booleans. * Add switch camera tests This will switch cameras using three methods: 1. The flip camera button on the preview screen 2. Double tapping the screen to flip cameras 3. Flipping cameras with the quick settings button * Fix unit test failures * Remove unused import and unnecessary changes * Fix BackgroundDeviceTest Fixes tests in BackgroundDeviceTest that use the flip camera button * Fix comments in LocalSettingsRepositoryInstrumentedTest

Commit:8498fe2
Author:Trevor McGuire
Committer:GitHub

Add HDR settings to model (#111) * Convert settings tests to use Truth * Add dynamic range proto and setting Only includes SDR and HLG10 currently * Add supported dynamic ranges to settings * Apply spotless * Make copyright header years reflect date of inception

Commit:6e32e86
Author:Trevor McGuire
Committer:GitHub

Copyright headers should reflect inception year (#115) * Tell spotless to never update existing year in copyright All files should use inception year for copyright * Update all copyright headers to file inception year based on git history * Update copyright after merge with main

Commit:db184fe
Author:Trevor McGuire
Committer:Trevor McGuire

Add supported dynamic ranges to settings

Commit:3cf09b2
Author:Trevor McGuire
Committer:Trevor McGuire

Add dynamic range proto and setting Only includes SDR and HLG10 currently

Commit:aa88019
Author:Kimberly Crevecoeur
Committer:GitHub

Settings to enable preview/video stabilization (#83) Add stabilization setting datastore and ui * Popup dialog setting in settings screen; options enabled/disabled based on device capability * UI icon on preview screen indicating when stabilization is active

Commit:7edde7e
Author:Kimberly Crevecoeur

Merge branch 'main' into kim/demo_new_settings

Commit:dd6e490
Author:Kimberly Crevecoeur
Committer:GitHub

Rename enums (#66) * rename proto and setting enums

Commit:54daeec
Author:Kimberly Crevecoeur
Committer:GitHub

Capture Mode Setting and Integration (#37)

Commit:87b3433
Author:Kimberly Crevecoeur
Committer:GitHub

Aspect Ratio Setting (#38)

Commit:7bf8722
Author:Kimberly Crevecoeur
Committer:Kimberly Crevecoeur

demo setting backend and functions

Commit:2ccc32a
Author:Kimberly Crevecoeur
Committer:GitHub

Implement flip camera (#20) * functional persistent setting for camera direction * add flip camera button to preview screen * provide available device lens directions to settings * added available lens as a condition to set default to front camera

Commit:d2df712
Author:Kimberly Crevecoeur
Committer:GitHub

Connect CameraUseCase to settings data and implement rear camera flash (#16) * rename Settings class to CameraAppSettings * create flash setting * create flash setting UI for Settings Screen * functional implementation of default flash setting for rear camera

Commit:0738ef4
Author:Kim
Committer:GitHub

Foundation for Settings UI and persistent datastore * create proto-datastore schema for jetpack camera app settings * create settings screen page with back navigation and functional settings * functional setting to set app dark mode * tests for DataStoreModule, LocalSettingsRepository, SettingsViewModel