Skip to content

Conversation

@pull
Copy link

@pull pull bot commented Jan 14, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

WenHung_Teng and others added 10 commits January 8, 2026 14:19
This change refactors UseCaseCamera, UseCaseCameraRequestControl,
and CapturePipeline to utilize javax.inject.Provider for their
dependencies instead of direct object injection.

Key changes include:
* Updated constructors for `UseCaseCamera`, `UseCaseCameraRequestControl`,
and `CapturePipeline` to accept `Provider<T>` or lambda providers.

* Converted internal properties to use `by lazy` initialization,
ensuring components are only instantiated when accessed.

* Cleaned up `UseCaseCameraConfig` by removing the `useCases` list
and unnecessary intermediate providers, reducing configuration overhead.

This refactoring helps break circular dependencies between the CameraControl,
CameraState, and CapturePipeline, and ensures that heavy components are
initialized lazily rather than at the moment of graph configuration.

Bug: 448593362
Test: UseCaseCameraRequestControlTest, UseCaseManagerTest, StillCaptureRequestControlTest
Change-Id: Ibef6101fa8ac83fcc160f16b0be099f0fa6110b0
This change introduces a new API getTopPageObjectAtPosition to the PdfDocumentRemote interface to query the topmost PDF object at a specific point on a page, filtered by object type.

- A new PdfObject AIDL parcelable.
- The getTopPageObjectAtPosition method in PdfDocumentRemote.aidl

Test: SandboxedPdfDocumentTest
Bug: 448072992
Change-Id: I6a862b2ad655aeabfe45f16a1c3f4b3dec3e6236
This change introduces the getTopPageObjectAtPosition functionality to the PdfDocument interface.

includes:
- Adds the new getTopPageObjectAtPosition suspend function to the PdfDocument interface.
- Implementation in SandboxedPdfDocument`.
- Adding placeholder implementations in various FakePdfDocument and FakeEditablePdfDocument classes used for testing.

Test: SandboxedPdfDocumentTest
Bug: 447328457
Change-Id: I342aa77bdd48554f9f3ec0ce30177e30122c47b9
This change implements the conversion from the AOSP `PdfPageObject` to the Jetpack `PdfObject` within `PdfDocumentRemoteImpl`.

- The `getTopPageObjectAtPosition` function now converts the AOSP `PdfPageObject` and `PdfPageImageObject` into the corresponding Jetpack `ImagePdfObject`, `PdfObject`
- The bounding box for `ImagePdfObject` is calculated from the transformation matrix of the `PdfPageImageObject`.

Test: SandboxedPdfDocumentTest
Bug: 448072992
Change-Id: I12ea3eb08dc30235bff0a1b59845f91b626251ef
… AudioSpec

 The 'AUTO' naming was ambiguous in cases where the system needed to distinguish between "automatically selected" and "no preference provided." Transitioning to 'UNSPECIFIED' improves semantic clarity for configurations where no specific requirement is set, allowing the resolution engine to handle defaults more predictably.

Key changes:
- Renamed QUALITY_SELECTOR_DEFAULT to QUALITY_SELECTOR_UNSPECIFIED in VideoSpec and initialized it with a new QualitySelector.NONE constant.
- Moved DEFAULT spec instances from MediaSpec companion object to their respective classes (VideoSpec.DEFAULT and AudioSpec.DEFAULT) for better encapsulation.
- Updated Recorder.DEFAULT_QUALITY_SELECTOR to explicitly define its preferred quality list (FHD, HD, SD).
- Removed unused AudioSpec.NO_AUDIO.

Bug: 473996668
Test: ./gradlew camera:camera-video:testRelease
Change-Id: Ifc908a042f4728b46705fe3469bc2db241a5175f
 Introduce MediaConfigUtil to centralize the logic for resolving media settings (container format, MIME types, and EncoderProfiles), including the auto-selection via FormatComboRegistry queries if certain container format or MIME types are unset.

 Currently, `VideoConfigUtil.resolveVideoMimeInfo()` and `AudioConfigUtil.resolveAudioMimeInfo()` resolve settings based only on output format and EncoderProfiles. However, supporting custom MIME types requires evaluating the entire combination of MediaSpec(container, MIME types), DynamicRange and EncoderProfiles. `MediaConfigUtil.resolveMediaInfo()` will later replace the `VideoConfigUtil.resolveVideoMimeInfo()` and `AudioConfigUtil.resolveAudioMimeInfo()` to handle these combinations holistically.

 Key changes:
 - Added `MediaConfigUtil.resolveMediaInfo()` which attempts to resolve configuration using `EncoderProfiles` first, and falls back to `FormatComboRegistry` if necessary.
 - Introduced `MediaInfo` class to aggregate the resolved configuration (Container, Video, Audio).
 - Added `ContainerInfo` to hold container format details.
 - Added helper methods in `VideoConfigUtil` and `AudioConfigUtil` to resolve compatible profiles based on MIME types and dynamic range.

Bug: 473996668
Test: ./gradlew camera:camera-video:testRelease
Change-Id: I3ca7ec6c01e63aed7a4f144f42ce3a04ee664f83
* changes:
  Centralize media configuration resolution with MediaConfigUtil
  Refactor: Rename *_AUTO to *_UNSPECIFIED in MediaSpec, VideoSpec, and AudioSpec
This CL refactors UseCaseCameraRequestControl to support lazy
initialization, moving its heavy construction off the main
thread during camera startup.

DeferredUseCaseCameraRequestControl:
A proxy implementation that intercepts control requests and
dispatches them to the background sequential thread before
initializing the real implementation.

Updated UseCaseCameraRequestControlImpl: Modified internal
dispatching logic (runOnSequential) to detect if it is already
running on the sequential thread. If so, it executes immediately
(using CoroutineStart.UNDISPATCHED) to prevent double-posting tasks.

Binds the new Wrapper to the UseCaseCameraRequestControl interface,
allowing consumers (like FlashControl, ZoomControl) to remain
unchanged while benefiting from lazy loading.

Bug: 448593362
Test: ./gradlew camera:camera-camera2-pipe-integration:testDebugUnitTest
Test: Manual verification of startup logs to confirm deferred initialization.
Change-Id: Iad3437208e1f296f25be054e2fe3655ca816bd3b
* changes:
  Convert AOSP PdfPageObject to Jetpack PdfObject
  Add getTopPageObjectAtPosition API in pdf document
  Add getTopPageObject in pdf document service
* changes:
  Refactor: Defer UseCaseCameraRequestControl initialization
  Use Providers for UseCaseCamera dependencies to defer initialization
@pull pull bot locked and limited conversation to collaborators Jan 14, 2026
@pull pull bot added the ⤵️ pull label Jan 14, 2026
@pull pull bot merged commit 5cfa11c into MaxMood96:androidx-main Jan 14, 2026
1 of 2 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants