Skip to content

getSupportedMimeTypes() API#486

Open
davidjiagoogle wants to merge 2 commits intomainfrom
david/iscamerasupported
Open

getSupportedMimeTypes() API#486
davidjiagoogle wants to merge 2 commits intomainfrom
david/iscamerasupported

Conversation

@davidjiagoogle
Copy link
Collaborator

@davidjiagoogle davidjiagoogle commented Mar 12, 2026

Add a function to CameraSystem that return a list of supported MIME types, given a lens facing.

For the CameraXCameraSystem implementation, invoking this function does not need the instance to be initiated or the camera to be started. This function uses ProcessCameraProvider to pull the hardware capabilities for image and video capturing. If the cameraProvider instance in cameraXCameraSystem is already initiated, it will use that. If not, it will initiate a local cameraProvider within the function.

Potentially supported mimetypes are image/jpeg, image/jpeg-ultrahdr, video/mp4, video/avc, and video/hevc

Tested on a device that supports hdr image & video and got all types. Tested on a device that doesn't support hdr and only got [image/jpeg, video/mp4, video/avc]

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request enhances the camera system by providing a new API to programmatically determine the media types (image and video) that a camera supports. This functionality is designed to work efficiently, capable of querying camera capabilities without necessarily requiring the full initialization of the camera provider, thus offering greater flexibility for applications to adapt to device hardware.

Highlights

  • New API for MIME Type Support: Introduced a new suspend function, getSupportedMimeTypes(lensFacing: LensFacing): List<String>, to the CameraSystem interface. This API allows querying the supported image and video MIME types for a given camera lens facing.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • core/camera/src/main/java/com/google/jetpackcamera/core/camera/CameraSystem.kt
    • Added the getSupportedMimeTypes function to the CameraSystem interface.
  • core/camera/src/main/java/com/google/jetpackcamera/core/camera/CameraXCameraSystem.kt
    • Implemented the getSupportedMimeTypes method using CameraX's ProcessCameraProvider to query image and video capabilities.
    • Added logic to retrieve an existing cameraProvider instance or create a new local one if not initialized.
    • Mapped CameraX output formats and video capabilities to standard MIME types such as image/jpeg, video/mp4, video/avc, and video/hevc.
    • Included necessary imports for Quality and await from CameraX.
  • core/camera/src/main/java/com/google/jetpackcamera/core/camera/test/FakeCameraSystem.kt
    • Implemented the getSupportedMimeTypes method to return a predefined list of MIME types for testing purposes.
Activity
  • No human activity has been recorded for this pull request yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new getSupportedMimeTypes function to the CameraSystem interface, allowing clients to query for supported video and image formats. The implementation in CameraXCameraSystem correctly uses CameraX APIs to determine hardware capabilities. My feedback focuses on adding the required KDoc documentation for the new public APIs, as mandated by the repository's style guide, and a minor code simplification for better readability.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant