java.lang.Object
↳androidx.camera.core.VideoCaptureConfig
Overview
Config for a video capture use case.
Summary
Methods |
---|
public boolean | containsOption(Config.Option<java.lang.Object> id)
|
public void | findOptions(java.lang.String idStem, Config.OptionMatcher matcher)
|
public int | getAudioBitRate()
Returns the audio encoding bit rate. |
public int | getAudioBitRate(int valueIfMissing)
Returns the audio encoding bit rate. |
public int | getAudioChannelCount()
Returns the audio channel count. |
public int | getAudioChannelCount(int valueIfMissing)
Returns the audio channel count. |
public int | getAudioMinBufferSize()
Returns the audio minimum buffer size, in bytes. |
public int | getAudioMinBufferSize(int valueIfMissing)
Returns the audio minimum buffer size, in bytes. |
public int | getAudioRecordSource()
Returns the audio recording source. |
public int | getAudioRecordSource(int valueIfMissing)
Returns the audio recording source. |
public int | getAudioSampleRate()
Returns the audio sample rate. |
public int | getAudioSampleRate(int valueIfMissing)
Returns the audio sample rate. |
public java.util.concurrent.Executor | getBackgroundExecutor()
Returns the executor that will be used for background tasks. |
public java.util.concurrent.Executor | getBackgroundExecutor(java.util.concurrent.Executor valueIfMissing)
Returns the executor that will be used for background tasks. |
public int | getBitRate()
Returns the encoding bit rate. |
public int | getBitRate(int valueIfMissing)
Returns the encoding bit rate. |
public CameraIdFilter | getCameraIdFilter()
Returns the set of CameraIdFilter that filter out unavailable camera id. |
public CameraIdFilter | getCameraIdFilter(CameraIdFilter valueIfMissing)
Returns the set of CameraIdFilter that filter out unavailable camera id. |
public CaptureConfig.OptionUnpacker | getCaptureOptionUnpacker()
|
public CaptureConfig.OptionUnpacker | getCaptureOptionUnpacker(CaptureConfig.OptionUnpacker valueIfMissing)
|
public CaptureConfig | getDefaultCaptureConfig()
|
public CaptureConfig | getDefaultCaptureConfig(CaptureConfig valueIfMissing)
|
public Size | getDefaultResolution()
Retrieves the default resolution of the target intending to use from this configuration. |
public Size | getDefaultResolution(Size valueIfMissing)
Retrieves the default resolution of the target intending to use from this configuration. |
public SessionConfig | getDefaultSessionConfig()
|
public SessionConfig | getDefaultSessionConfig(SessionConfig valueIfMissing)
|
public int | getIFrameInterval()
Returns the number of seconds between each key frame. |
public int | getIFrameInterval(int valueIfMissing)
Returns the number of seconds between each key frame. |
public androidx.camera.core.CameraX.LensFacing | getLensFacing()
Retrieves the lens facing direction for the primary camera to be configured. |
public androidx.camera.core.CameraX.LensFacing | getLensFacing(androidx.camera.core.CameraX.LensFacing valueIfMissing)
Returns the lens-facing direction of the camera being configured. |
public Size | getMaxResolution()
|
public Size | getMaxResolution(Size valueIfMissing)
|
public SessionConfig.OptionUnpacker | getSessionOptionUnpacker()
|
public SessionConfig.OptionUnpacker | getSessionOptionUnpacker(SessionConfig.OptionUnpacker valueIfMissing)
|
public java.util.List<> | getSupportedResolutions()
|
public java.util.List<> | getSupportedResolutions(java.util.List<> valueIfMissing)
|
public int | getSurfaceOccupancyPriority()
|
public int | getSurfaceOccupancyPriority(int valueIfMissing)
|
public AspectRatio | getTargetAspectRatio()
Retrieves the aspect ratio of the target intending to use images from this configuration. |
public AspectRatio | getTargetAspectRatio(AspectRatio valueIfMissing)
Retrieves the aspect ratio of the target intending to use images from this configuration. |
public Rational | getTargetAspectRatioCustom()
Retrieves the aspect ratio of the target intending to use images from this configuration. |
public Rational | getTargetAspectRatioCustom(Rational valueIfMissing)
Retrieves the aspect ratio of the target intending to use images from this configuration. |
public java.lang.Class<VideoCapture> | getTargetClass()
|
public java.lang.Class<VideoCapture> | getTargetClass(java.lang.Class<VideoCapture> valueIfMissing)
|
public java.lang.String | getTargetName()
Retrieves the name of the target object being configured. |
public java.lang.String | getTargetName(java.lang.String valueIfMissing)
Retrieves the name of the target object being configured. |
public Size | getTargetResolution()
|
public Size | getTargetResolution(Size valueIfMissing)
|
public int | getTargetRotation()
Retrieves the rotation of the target intending to use images from this configuration. |
public int | getTargetRotation(int valueIfMissing)
Retrieves the rotation of the target intending to use images from this configuration. |
public androidx.camera.core.UseCase.EventListener | getUseCaseEventListener()
|
public androidx.camera.core.UseCase.EventListener | getUseCaseEventListener(androidx.camera.core.UseCase.EventListener valueIfMissing)
|
public int | getVideoFrameRate()
Returns the recording frames per second. |
public int | getVideoFrameRate(int valueIfMissing)
Returns the recording frames per second. |
public java.util.Set<Config.Option> | listOptions()
|
public java.lang.Object | retrieveOption(Config.Option<java.lang.Object> id)
|
public java.lang.Object | retrieveOption(Config.Option<java.lang.Object> id, java.lang.Object valueIfMissing)
|
from java.lang.Object | clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods
public int
getVideoFrameRate(int valueIfMissing)
Returns the recording frames per second.
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or valueIfMissing
if the value does not exist in this
configuration.
public int
getVideoFrameRate()
Returns the recording frames per second.
Returns:
The stored value, if it exists in this configuration.
public int
getBitRate(int valueIfMissing)
Returns the encoding bit rate.
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or valueIfMissing
if the value does not exist in this
configuration.
Returns the encoding bit rate.
Returns:
The stored value, if it exists in this configuration.
public int
getIFrameInterval(int valueIfMissing)
Returns the number of seconds between each key frame.
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or valueIfMissing
if the value does not exist in this
configuration.
public int
getIFrameInterval()
Returns the number of seconds between each key frame.
Returns:
The stored value, if it exists in this configuration.
public int
getAudioBitRate(int valueIfMissing)
Returns the audio encoding bit rate.
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or valueIfMissing
if the value does not exist in this
configuration.
public int
getAudioBitRate()
Returns the audio encoding bit rate.
Returns:
The stored value, if it exists in this configuration.
public int
getAudioSampleRate(int valueIfMissing)
Returns the audio sample rate.
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or valueIfMissing
if the value does not exist in this
configuration.
public int
getAudioSampleRate()
Returns the audio sample rate.
Returns:
The stored value, if it exists in this configuration.
public int
getAudioChannelCount(int valueIfMissing)
Returns the audio channel count.
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or valueIfMissing
if the value does not exist in this
configuration.
public int
getAudioChannelCount()
Returns the audio channel count.
Returns:
The stored value, if it exists in this configuration.
public int
getAudioRecordSource(int valueIfMissing)
Returns the audio recording source.
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or valueIfMissing
if the value does not exist in this
configuration.
public int
getAudioRecordSource()
Returns the audio recording source.
Returns:
The stored value, if it exists in this configuration.
public int
getAudioMinBufferSize(int valueIfMissing)
Returns the audio minimum buffer size, in bytes.
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or valueIfMissing
if the value does not exist in this
configuration.
public int
getAudioMinBufferSize()
Returns the audio minimum buffer size, in bytes.
Returns:
The stored value, if it exists in this configuration.
public boolean
containsOption(
Config.Option<java.lang.Object> id)
public java.lang.Object
retrieveOption(
Config.Option<java.lang.Object> id)
public java.lang.Object
retrieveOption(
Config.Option<java.lang.Object> id, java.lang.Object valueIfMissing)
public java.util.Set<Config.Option>
listOptions()
public java.lang.Class<VideoCapture>
getTargetClass(java.lang.Class<VideoCapture> valueIfMissing)
public java.lang.Class<VideoCapture>
getTargetClass()
public java.lang.String
getTargetName(java.lang.String valueIfMissing)
Retrieves the name of the target object being configured.
The name should be a value that can uniquely identify an instance of the object being
configured.
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or valueIfMissing
if the value does not exist in this
configuration.
public java.lang.String
getTargetName()
Retrieves the name of the target object being configured.
The name should be a value that can uniquely identify an instance of the object being
configured.
Returns:
The stored value, if it exists in this configuration.
public androidx.camera.core.CameraX.LensFacing
getLensFacing(androidx.camera.core.CameraX.LensFacing valueIfMissing)
Returns the lens-facing direction of the camera being configured.
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or valueIfMissing
if the value does not exist in this
configuration.
public androidx.camera.core.CameraX.LensFacing
getLensFacing()
Retrieves the lens facing direction for the primary camera to be configured.
Returns:
The stored value, if it exists in this configuration.
Returns the set of CameraIdFilter that filter out unavailable camera id.
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or ValueIfMissing
if the value does not exist in this
configuration.
Returns the set of CameraIdFilter that filter out unavailable camera id.
Returns:
The stored value, if it exists in the configuration.
public Rational
getTargetAspectRatioCustom(Rational valueIfMissing)
Retrieves the aspect ratio of the target intending to use images from this configuration.
This is the ratio of the target's width to the image's height, where the numerator of the
provided corresponds to the width, and the denominator corresponds to the
height.
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or valueIfMissing
if the value does not exist in this
configuration.
public Rational
getTargetAspectRatioCustom()
Retrieves the aspect ratio of the target intending to use images from this configuration.
This is the ratio of the target's width to the image's height, where the numerator of the
provided corresponds to the width, and the denominator corresponds to the
height.
Returns:
The stored value, if it exists in this configuration.
Retrieves the aspect ratio of the target intending to use images from this configuration.
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or valueIfMissing
if the value does not exist in this
configuration.
Retrieves the aspect ratio of the target intending to use images from this configuration.
Returns:
The stored value, if it exists in this configuration.
public int
getTargetRotation(int valueIfMissing)
Retrieves the rotation of the target intending to use images from this configuration.
This is one of four valid values: , ,
, . Rotation values are relative to
the device's "natural" rotation, .
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or valueIfMissing
if the value does not exist in this
configuration.
public int
getTargetRotation()
Retrieves the rotation of the target intending to use images from this configuration.
This is one of four valid values: , ,
, . Rotation values are relative to
the device's "natural" rotation, .
Returns:
The stored value, if it exists in this configuration.
public Size
getTargetResolution(Size valueIfMissing)
public Size
getTargetResolution()
public Size
getDefaultResolution(Size valueIfMissing)
Retrieves the default resolution of the target intending to use from this configuration.
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or valueIfMissing
if the value does not exist in this
configuration.
public Size
getDefaultResolution()
Retrieves the default resolution of the target intending to use from this configuration.
Returns:
The stored value, if it exists in this configuration.
public Size
getMaxResolution(Size valueIfMissing)
public Size
getMaxResolution()
public java.util.List<
> getSupportedResolutions(java.util.List<> valueIfMissing)public java.util.List<
> getSupportedResolutions()public java.util.concurrent.Executor
getBackgroundExecutor(java.util.concurrent.Executor valueIfMissing)
Returns the executor that will be used for background tasks.
Parameters:
valueIfMissing: The value to return if this configuration option has not been set.
Returns:
The stored value or valueIfMissing
if the value does not exist in this
configuration.
public java.util.concurrent.Executor
getBackgroundExecutor()
Returns the executor that will be used for background tasks.
Returns:
The stored value, if it exists in this configuration.
public int
getSurfaceOccupancyPriority(int valueIfMissing)
public int
getSurfaceOccupancyPriority()
public androidx.camera.core.UseCase.EventListener
getUseCaseEventListener(androidx.camera.core.UseCase.EventListener valueIfMissing)
public androidx.camera.core.UseCase.EventListener
getUseCaseEventListener()
Source
/*
* Copyright 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package androidx.camera.core;
import android.util.Pair;
import android.util.Rational;
import android.util.Size;
import android.view.Surface;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.annotation.RestrictTo.Scope;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.Executor;
/**
* Config for a video capture use case.
*
* @hide In the earlier stage, the VideoCapture is deprioritized.
*/
@RestrictTo(Scope.LIBRARY_GROUP)
public final class VideoCaptureConfig
implements UseCaseConfig<VideoCapture>,
ImageOutputConfig,
CameraDeviceConfig,
ThreadConfig {
// Option Declarations:
// *********************************************************************************************
static final Option<Integer> OPTION_VIDEO_FRAME_RATE =
Option.create("camerax.core.videoCapture.recordingFrameRate", int.class);
static final Option<Integer> OPTION_BIT_RATE =
Option.create("camerax.core.videoCapture.bitRate", int.class);
static final Option<Integer> OPTION_INTRA_FRAME_INTERVAL =
Option.create("camerax.core.videoCapture.intraFrameInterval", int.class);
static final Option<Integer> OPTION_AUDIO_BIT_RATE =
Option.create("camerax.core.videoCapture.audioBitRate", int.class);
static final Option<Integer> OPTION_AUDIO_SAMPLE_RATE =
Option.create("camerax.core.videoCapture.audioSampleRate", int.class);
static final Option<Integer> OPTION_AUDIO_CHANNEL_COUNT =
Option.create("camerax.core.videoCapture.audioChannelCount", int.class);
static final Option<Integer> OPTION_AUDIO_RECORD_SOURCE =
Option.create("camerax.core.videoCapture.audioRecordSource", int.class);
static final Option<Integer> OPTION_AUDIO_MIN_BUFFER_SIZE =
Option.create("camerax.core.videoCapture.audioMinBufferSize", int.class);
// *********************************************************************************************
private final OptionsBundle mConfig;
VideoCaptureConfig(OptionsBundle config) {
mConfig = config;
}
/**
* Returns the recording frames per second.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
* configuration.
*/
public int getVideoFrameRate(int valueIfMissing) {
return retrieveOption(OPTION_VIDEO_FRAME_RATE, valueIfMissing);
}
/**
* Returns the recording frames per second.
*
* @return The stored value, if it exists in this configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
*/
public int getVideoFrameRate() {
return retrieveOption(OPTION_VIDEO_FRAME_RATE);
}
/**
* Returns the encoding bit rate.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
* configuration.
*/
public int getBitRate(int valueIfMissing) {
return retrieveOption(OPTION_BIT_RATE, valueIfMissing);
}
/**
* Returns the encoding bit rate.
*
* @return The stored value, if it exists in this configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
*/
public int getBitRate() {
return retrieveOption(OPTION_BIT_RATE);
}
/**
* Returns the number of seconds between each key frame.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
* configuration.
*/
public int getIFrameInterval(int valueIfMissing) {
return retrieveOption(OPTION_INTRA_FRAME_INTERVAL, valueIfMissing);
}
/**
* Returns the number of seconds between each key frame.
*
* @return The stored value, if it exists in this configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
*/
public int getIFrameInterval() {
return retrieveOption(OPTION_INTRA_FRAME_INTERVAL);
}
/**
* Returns the audio encoding bit rate.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
* configuration.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
public int getAudioBitRate(int valueIfMissing) {
return retrieveOption(OPTION_AUDIO_BIT_RATE, valueIfMissing);
}
/**
* Returns the audio encoding bit rate.
*
* @return The stored value, if it exists in this configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
public int getAudioBitRate() {
return retrieveOption(OPTION_AUDIO_BIT_RATE);
}
/**
* Returns the audio sample rate.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
* configuration.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
public int getAudioSampleRate(int valueIfMissing) {
return retrieveOption(OPTION_AUDIO_SAMPLE_RATE, valueIfMissing);
}
/**
* Returns the audio sample rate.
*
* @return The stored value, if it exists in this configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
public int getAudioSampleRate() {
return retrieveOption(OPTION_AUDIO_SAMPLE_RATE);
}
/**
* Returns the audio channel count.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
* configuration.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
public int getAudioChannelCount(int valueIfMissing) {
return retrieveOption(OPTION_AUDIO_CHANNEL_COUNT, valueIfMissing);
}
/**
* Returns the audio channel count.
*
* @return The stored value, if it exists in this configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
public int getAudioChannelCount() {
return retrieveOption(OPTION_AUDIO_CHANNEL_COUNT);
}
/**
* Returns the audio recording source.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
* configuration.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
public int getAudioRecordSource(int valueIfMissing) {
return retrieveOption(OPTION_AUDIO_RECORD_SOURCE, valueIfMissing);
}
/**
* Returns the audio recording source.
*
* @return The stored value, if it exists in this configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
public int getAudioRecordSource() {
return retrieveOption(OPTION_AUDIO_RECORD_SOURCE);
}
/**
* Returns the audio minimum buffer size, in bytes.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
* configuration.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
public int getAudioMinBufferSize(int valueIfMissing) {
return retrieveOption(OPTION_AUDIO_MIN_BUFFER_SIZE, valueIfMissing);
}
/**
* Returns the audio minimum buffer size, in bytes.
*
* @return The stored value, if it exists in this configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
public int getAudioMinBufferSize() {
return retrieveOption(OPTION_AUDIO_MIN_BUFFER_SIZE);
}
// Start of the default implementation of Config
// *********************************************************************************************
// Implementations of Config default methods
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
public boolean containsOption(@NonNull Option<?> id) {
return mConfig.containsOption(id);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@Nullable
public <ValueT> ValueT retrieveOption(@NonNull Option<ValueT> id) {
return mConfig.retrieveOption(id);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@Nullable
public <ValueT> ValueT retrieveOption(@NonNull Option<ValueT> id,
@Nullable ValueT valueIfMissing) {
return mConfig.retrieveOption(id, valueIfMissing);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
public void findOptions(@NonNull String idStem, @NonNull OptionMatcher matcher) {
mConfig.findOptions(idStem, matcher);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public Set<Option<?>> listOptions() {
return mConfig.listOptions();
}
// Implementations of TargetConfig default methods
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Nullable
public Class<VideoCapture> getTargetClass(
@Nullable Class<VideoCapture> valueIfMissing) {
@SuppressWarnings("unchecked") // Value should only be added via Builder#setTargetClass()
Class<VideoCapture> storedClass =
(Class<VideoCapture>) retrieveOption(
OPTION_TARGET_CLASS,
valueIfMissing);
return storedClass;
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public Class<VideoCapture> getTargetClass() {
@SuppressWarnings("unchecked") // Value should only be added via Builder#setTargetClass()
Class<VideoCapture> storedClass =
(Class<VideoCapture>) retrieveOption(
OPTION_TARGET_CLASS);
return storedClass;
}
/**
* Retrieves the name of the target object being configured.
*
* <p>The name should be a value that can uniquely identify an instance of the object being
* configured.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
* configuration.
*/
@Override
@Nullable
public String getTargetName(@Nullable String valueIfMissing) {
return retrieveOption(OPTION_TARGET_NAME, valueIfMissing);
}
/**
* Retrieves the name of the target object being configured.
*
* <p>The name should be a value that can uniquely identify an instance of the object being
* configured.
*
* @return The stored value, if it exists in this configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
*/
@Override
@NonNull
public String getTargetName() {
return retrieveOption(OPTION_TARGET_NAME);
}
// Implementations of CameraDeviceConfig default methods
/**
* Returns the lens-facing direction of the camera being configured.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
* configuration.
*/
@Override
@Nullable
public CameraX.LensFacing getLensFacing(@Nullable CameraX.LensFacing valueIfMissing) {
return retrieveOption(OPTION_LENS_FACING, valueIfMissing);
}
/**
* Retrieves the lens facing direction for the primary camera to be configured.
*
* @return The stored value, if it exists in this configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
*/
@Override
@NonNull
public CameraX.LensFacing getLensFacing() {
return retrieveOption(OPTION_LENS_FACING);
}
/**
* Returns the set of {@link CameraIdFilter} that filter out unavailable camera id.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>ValueIfMissing</code> if the value does not exist in this
* configuration.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@Nullable
public CameraIdFilter getCameraIdFilter(@Nullable CameraIdFilter valueIfMissing) {
return retrieveOption(OPTION_CAMERA_ID_FILTER, valueIfMissing);
}
/**
* Returns the set of {@link CameraIdFilter} that filter out unavailable camera id.
*
* @return The stored value, if it exists in the configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public CameraIdFilter getCameraIdFilter() {
return retrieveOption(OPTION_CAMERA_ID_FILTER);
}
// Implementations of ImageOutputConfig default methods
/**
* Retrieves the aspect ratio of the target intending to use images from this configuration.
*
* <p>This is the ratio of the target's width to the image's height, where the numerator of the
* provided {@link Rational} corresponds to the width, and the denominator corresponds to the
* height.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
* configuration.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@Nullable
public Rational getTargetAspectRatioCustom(@Nullable Rational valueIfMissing) {
return retrieveOption(OPTION_TARGET_ASPECT_RATIO_CUSTOM, valueIfMissing);
}
/**
* Retrieves the aspect ratio of the target intending to use images from this configuration.
*
* <p>This is the ratio of the target's width to the image's height, where the numerator of the
* provided {@link Rational} corresponds to the width, and the denominator corresponds to the
* height.
*
* @return The stored value, if it exists in this configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
* @hide
*/
@NonNull
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
public Rational getTargetAspectRatioCustom() {
return retrieveOption(OPTION_TARGET_ASPECT_RATIO_CUSTOM);
}
/**
* Retrieves the aspect ratio of the target intending to use images from this configuration.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
* configuration.
*/
@Nullable
@Override
public AspectRatio getTargetAspectRatio(@Nullable AspectRatio valueIfMissing) {
return retrieveOption(OPTION_TARGET_ASPECT_RATIO, valueIfMissing);
}
/**
* Retrieves the aspect ratio of the target intending to use images from this configuration.
*
* @return The stored value, if it exists in this configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
*/
@NonNull
@Override
public AspectRatio getTargetAspectRatio() {
return retrieveOption(OPTION_TARGET_ASPECT_RATIO);
}
/**
* Retrieves the rotation of the target intending to use images from this configuration.
*
* <p>This is one of four valid values: {@link Surface#ROTATION_0}, {@link Surface#ROTATION_90},
* {@link Surface#ROTATION_180}, {@link Surface#ROTATION_270}. Rotation values are relative to
* the device's "natural" rotation, {@link Surface#ROTATION_0}.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
* configuration.
*/
@Override
@RotationValue
public int getTargetRotation(int valueIfMissing) {
return retrieveOption(OPTION_TARGET_ROTATION, valueIfMissing);
}
/**
* Retrieves the rotation of the target intending to use images from this configuration.
*
* <p>This is one of four valid values: {@link Surface#ROTATION_0}, {@link Surface#ROTATION_90},
* {@link Surface#ROTATION_180}, {@link Surface#ROTATION_270}. Rotation values are relative to
* the device's "natural" rotation, {@link Surface#ROTATION_0}.
*
* @return The stored value, if it exists in this configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
*/
@Override
@RotationValue
public int getTargetRotation() {
return retrieveOption(OPTION_TARGET_ROTATION);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@Nullable
public Size getTargetResolution(@Nullable Size valueIfMissing) {
return retrieveOption(ImageOutputConfig.OPTION_TARGET_RESOLUTION, valueIfMissing);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public Size getTargetResolution() {
return retrieveOption(ImageOutputConfig.OPTION_TARGET_RESOLUTION);
}
/**
* Retrieves the default resolution of the target intending to use from this configuration.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
* configuration.
* @hide
*/
@Nullable
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
public Size getDefaultResolution(@Nullable Size valueIfMissing) {
return retrieveOption(ImageOutputConfig.OPTION_DEFAULT_RESOLUTION, valueIfMissing);
}
/**
* Retrieves the default resolution of the target intending to use from this configuration.
*
* @return The stored value, if it exists in this configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
* @hide
*/
@NonNull
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
public Size getDefaultResolution() {
return retrieveOption(ImageOutputConfig.OPTION_DEFAULT_RESOLUTION);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@Nullable
public Size getMaxResolution(@Nullable Size valueIfMissing) {
return retrieveOption(OPTION_MAX_RESOLUTION, valueIfMissing);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public Size getMaxResolution() {
return retrieveOption(OPTION_MAX_RESOLUTION);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@Nullable
public List<Pair<Integer, Size[]>> getSupportedResolutions(
@Nullable List<Pair<Integer, Size[]>> valueIfMissing) {
return retrieveOption(OPTION_SUPPORTED_RESOLUTIONS, valueIfMissing);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public List<Pair<Integer, Size[]>> getSupportedResolutions() {
return retrieveOption(OPTION_SUPPORTED_RESOLUTIONS);
}
// Implementations of ThreadConfig default methods
/**
* Returns the executor that will be used for background tasks.
*
* @param valueIfMissing The value to return if this configuration option has not been set.
* @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
* configuration.
*/
@Override
@Nullable
public Executor getBackgroundExecutor(@Nullable Executor valueIfMissing) {
return retrieveOption(OPTION_BACKGROUND_EXECUTOR, valueIfMissing);
}
/**
* Returns the executor that will be used for background tasks.
*
* @return The stored value, if it exists in this configuration.
* @throws IllegalArgumentException if the option does not exist in this configuration.
*/
@Override
@NonNull
public Executor getBackgroundExecutor() {
return retrieveOption(OPTION_BACKGROUND_EXECUTOR);
}
// Implementations of UseCaseConfig default methods
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@Nullable
public SessionConfig getDefaultSessionConfig(@Nullable SessionConfig valueIfMissing) {
return retrieveOption(OPTION_DEFAULT_SESSION_CONFIG, valueIfMissing);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public SessionConfig getDefaultSessionConfig() {
return retrieveOption(OPTION_DEFAULT_SESSION_CONFIG);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@Nullable
public SessionConfig.OptionUnpacker getSessionOptionUnpacker(
@Nullable SessionConfig.OptionUnpacker valueIfMissing) {
return retrieveOption(OPTION_SESSION_CONFIG_UNPACKER, valueIfMissing);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public SessionConfig.OptionUnpacker getSessionOptionUnpacker() {
return retrieveOption(OPTION_SESSION_CONFIG_UNPACKER);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@Nullable
public CaptureConfig getDefaultCaptureConfig(@Nullable CaptureConfig valueIfMissing) {
return retrieveOption(OPTION_DEFAULT_CAPTURE_CONFIG, valueIfMissing);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public CaptureConfig getDefaultCaptureConfig() {
return retrieveOption(OPTION_DEFAULT_CAPTURE_CONFIG);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@Nullable
public CaptureConfig.OptionUnpacker getCaptureOptionUnpacker(
@Nullable CaptureConfig.OptionUnpacker valueIfMissing) {
return retrieveOption(OPTION_CAPTURE_CONFIG_UNPACKER, valueIfMissing);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public CaptureConfig.OptionUnpacker getCaptureOptionUnpacker() {
return retrieveOption(OPTION_CAPTURE_CONFIG_UNPACKER);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
public int getSurfaceOccupancyPriority(int valueIfMissing) {
return retrieveOption(OPTION_SURFACE_OCCUPANCY_PRIORITY, valueIfMissing);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
public int getSurfaceOccupancyPriority() {
return retrieveOption(OPTION_SURFACE_OCCUPANCY_PRIORITY);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@Nullable
public UseCase.EventListener getUseCaseEventListener(
@Nullable UseCase.EventListener valueIfMissing) {
return retrieveOption(OPTION_USE_CASE_EVENT_LISTENER, valueIfMissing);
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public UseCase.EventListener getUseCaseEventListener() {
return retrieveOption(OPTION_USE_CASE_EVENT_LISTENER);
}
// End of the default implementation of Config
// *********************************************************************************************
/** Builder for a {@link VideoCaptureConfig}. */
public static final class Builder
implements
UseCaseConfig.Builder<VideoCapture, VideoCaptureConfig, Builder>,
ImageOutputConfig.Builder<Builder>,
CameraDeviceConfig.Builder<Builder>,
ThreadConfig.Builder<Builder> {
private final MutableOptionsBundle mMutableConfig;
/** Creates a new Builder object. */
public Builder() {
this(MutableOptionsBundle.create());
}
private Builder(MutableOptionsBundle mutableConfig) {
mMutableConfig = mutableConfig;
Class<?> oldConfigClass =
mutableConfig.retrieveOption(TargetConfig.OPTION_TARGET_CLASS, null);
if (oldConfigClass != null && !oldConfigClass.equals(VideoCapture.class)) {
throw new IllegalArgumentException(
"Invalid target class configuration for "
+ Builder.this
+ ": "
+ oldConfigClass);
}
setTargetClass(VideoCapture.class);
}
/**
* Generates a Builder from another Config object
*
* @param configuration An immutable configuration to pre-populate this builder.
* @return The new Builder.
*/
@NonNull
public static Builder fromConfig(@NonNull VideoCaptureConfig configuration) {
return new Builder(MutableOptionsBundle.from(configuration));
}
/**
* {@inheritDoc}
*
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public MutableConfig getMutableConfig() {
return mMutableConfig;
}
/**
* Builds an immutable {@link VideoCaptureConfig} from the current state.
*
* @return A {@link VideoCaptureConfig} populated with the current state.
*/
@NonNull
public VideoCaptureConfig build() {
// Error at runtime for using both setTargetResolution and setTargetAspectRatio on
// the same config.
if (getMutableConfig().retrieveOption(OPTION_TARGET_ASPECT_RATIO, null) != null
&& getMutableConfig().retrieveOption(OPTION_TARGET_RESOLUTION, null) != null) {
throw new IllegalArgumentException(
"Cannot use both setTargetResolution and setTargetAspectRatio on the same "
+ "config.");
}
return new VideoCaptureConfig(OptionsBundle.from(mMutableConfig));
}
/**
* Sets the recording frames per second.
*
* @param videoFrameRate The requested interval in seconds.
* @return The current Builder.
*/
@NonNull
public Builder setVideoFrameRate(int videoFrameRate) {
getMutableConfig().insertOption(OPTION_VIDEO_FRAME_RATE, videoFrameRate);
return this;
}
/**
* Sets the encoding bit rate.
*
* @param bitRate The requested bit rate in bits per second.
* @return The current Builder.
*/
@NonNull
public Builder setBitRate(int bitRate) {
getMutableConfig().insertOption(OPTION_BIT_RATE, bitRate);
return this;
}
/**
* Sets number of seconds between each key frame in seconds.
*
* @param interval The requested interval in seconds.
* @return The current Builder.
*/
@NonNull
public Builder setIFrameInterval(int interval) {
getMutableConfig().insertOption(OPTION_INTRA_FRAME_INTERVAL, interval);
return this;
}
/**
* Sets the bit rate of the audio stream.
*
* @param bitRate The requested bit rate in bits/s.
* @return The current Builder.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public Builder setAudioBitRate(int bitRate) {
getMutableConfig().insertOption(OPTION_AUDIO_BIT_RATE, bitRate);
return this;
}
/**
* Sets the sample rate of the audio stream.
*
* @param sampleRate The requested sample rate in bits/s.
* @return The current Builder.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public Builder setAudioSampleRate(int sampleRate) {
getMutableConfig().insertOption(OPTION_AUDIO_SAMPLE_RATE, sampleRate);
return this;
}
/**
* Sets the number of audio channels.
*
* @param channelCount The requested number of audio channels.
* @return The current Builder.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public Builder setAudioChannelCount(int channelCount) {
getMutableConfig().insertOption(OPTION_AUDIO_CHANNEL_COUNT, channelCount);
return this;
}
/**
* Sets the audio source.
*
* @param source The audio source. Currently only AudioSource.MIC is supported.
* @return The current Builder.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public Builder setAudioRecordSource(int source) {
getMutableConfig().insertOption(OPTION_AUDIO_RECORD_SOURCE, source);
return this;
}
/**
* Sets the audio min buffer size.
*
* @param minBufferSize The requested audio minimum buffer size, in bytes.
* @return The current Builder.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public Builder setAudioMinBufferSize(int minBufferSize) {
getMutableConfig().insertOption(OPTION_AUDIO_MIN_BUFFER_SIZE, minBufferSize);
return this;
}
// Implementations of TargetConfig.Builder default methods
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public Builder setTargetClass(@NonNull Class<VideoCapture> targetClass) {
getMutableConfig().insertOption(OPTION_TARGET_CLASS, targetClass);
// If no name is set yet, then generate a unique name
if (null == getMutableConfig().retrieveOption(OPTION_TARGET_NAME, null)) {
String targetName = targetClass.getCanonicalName() + "-" + UUID.randomUUID();
setTargetName(targetName);
}
return this;
}
/**
* Sets the name of the target object being configured.
*
* <p>The name should be a value that can uniquely identify an instance of the object being
* configured.
*
* @param targetName A unique string identifier for the instance of the class being
* configured.
* @return the current Builder.
*/
@Override
@NonNull
public Builder setTargetName(@NonNull String targetName) {
getMutableConfig().insertOption(OPTION_TARGET_NAME, targetName);
return this;
}
// Implementations of CameraDeviceConfig.Builder default methods
/**
* Sets the primary camera to be configured based on the direction the lens is facing.
*
* <p>If multiple cameras exist with equivalent lens facing direction, the first ("primary")
* camera for that direction will be chosen.
*
* @param lensFacing The direction of the camera's lens.
* @return the current Builder.
*/
@Override
@NonNull
public Builder setLensFacing(@NonNull CameraX.LensFacing lensFacing) {
getMutableConfig().insertOption(OPTION_LENS_FACING, lensFacing);
return this;
}
/**
* Sets a {@link CameraIdFilter} that filter out the unavailable camera id.
*
* <p>The camera id filter will be used to filter those cameras with lens facing
* specified in the config.
*
* @param cameraIdFilter The {@link CameraIdFilter}.
* @return the current Builder.
* @hide
*/
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public Builder setCameraIdFilter(@NonNull CameraIdFilter cameraIdFilter) {
getMutableConfig().insertOption(OPTION_CAMERA_ID_FILTER, cameraIdFilter);
return this;
}
// Implementations of ImageOutputConfig.Builder default methods
/**
* Sets the aspect ratio of the intended target for images from this configuration.
*
* <p>This is the ratio of the target's width to the image's height, where the numerator of
* the provided {@link Rational} corresponds to the width, and the denominator corresponds
* to the height.
*
* <p>The target aspect ratio is used as a hint when determining the resulting output aspect
* ratio which may differ from the request, possibly due to device constraints.
* Application code should check the resulting output's resolution.
*
* <p>This method can be used to request an aspect ratio that is not from the standard set
* of aspect ratios defined in the {@link AspectRatio}.
*
* <p>This method will remove any value set by setTargetAspectRatio().
*
* <p>For VideoCapture the output is the output video file.
*
* @param aspectRatio A {@link Rational} representing the ratio of the target's width and
* height.
* @return The current Builder.
* @hide
*/
@NonNull
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
public Builder setTargetAspectRatioCustom(@NonNull Rational aspectRatio) {
getMutableConfig().insertOption(OPTION_TARGET_ASPECT_RATIO_CUSTOM, aspectRatio);
getMutableConfig().removeOption(OPTION_TARGET_ASPECT_RATIO);
return this;
}
/**
* Sets the aspect ratio of the intended target for images from this configuration.
*
* <p>It is not allowed to set both target aspect ratio and target resolution on the same
* use case.
*
* <p>The target aspect ratio is used as a hint when determining the resulting output aspect
* ratio which may differ from the request, possibly due to device constraints.
* Application code should check the resulting output's resolution.
*
* @param aspectRatio A {@link AspectRatio} representing the ratio of the
* target's width and height.
* @return The current Builder.
*/
@NonNull
@Override
public Builder setTargetAspectRatio(@NonNull AspectRatio aspectRatio) {
getMutableConfig().insertOption(OPTION_TARGET_ASPECT_RATIO, aspectRatio);
return this;
}
/**
* Sets the rotation of the intended target for images from this configuration.
*
* <p>This is one of four valid values: {@link Surface#ROTATION_0}, {@link
* Surface#ROTATION_90}, {@link Surface#ROTATION_180}, {@link Surface#ROTATION_270}.
* Rotation values are relative to the "natural" rotation, {@link Surface#ROTATION_0}.
*
* @param rotation The rotation of the intended target.
* @return The current Builder.
*/
@NonNull
@Override
public Builder setTargetRotation(@RotationValue int rotation) {
getMutableConfig().insertOption(OPTION_TARGET_ROTATION, rotation);
return this;
}
/**
* Sets the resolution of the intended target from this configuration.
*
* <p>The target resolution attempts to establish a minimum bound for the image resolution.
* The actual image resolution will be the closest available resolution in size that is not
* smaller than the target resolution, as determined by the Camera implementation. However,
* if no resolution exists that is equal to or larger than the target resolution, the
* nearest available resolution smaller than the target resolution will be chosen.
*
* <p>It is not allowed to set both target aspect ratio and target resolution on the same
* use case.
*
* <p>The target aspect ratio will also be set the same as the aspect ratio of the provided
* {@link Size}. Make sure to set the target resolution with the correct orientation.
*
* @param resolution The target resolution to choose from supported output sizes list.
* @return The current Builder.
* @hide
*/
@NonNull
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
public Builder setTargetResolution(@NonNull Size resolution) {
getMutableConfig().insertOption(OPTION_TARGET_RESOLUTION, resolution);
if (resolution != null) {
getMutableConfig().insertOption(OPTION_TARGET_ASPECT_RATIO_CUSTOM,
new Rational(resolution.getWidth(), resolution.getHeight()));
}
return this;
}
/**
* Sets the default resolution of the intended target from this configuration.
*
* @param resolution The default resolution to choose from supported output sizes list.
* @return The current Builder.
* @hide
*/
@NonNull
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
public Builder setDefaultResolution(@NonNull Size resolution) {
getMutableConfig().insertOption(OPTION_DEFAULT_RESOLUTION, resolution);
return null;
}
/** @hide */
@NonNull
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
public Builder setMaxResolution(@NonNull Size resolution) {
getMutableConfig().insertOption(OPTION_MAX_RESOLUTION, resolution);
return this;
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public Builder setSupportedResolutions(@NonNull List<Pair<Integer, Size[]>> resolutions) {
getMutableConfig().insertOption(OPTION_SUPPORTED_RESOLUTIONS, resolutions);
return this;
}
// Implementations of ThreadConfig.Builder default methods
/**
* Sets the default executor that will be used for background tasks.
*
* @param executor The executor which will be used for background tasks.
* @return the current Builder.
*/
@Override
@NonNull
public Builder setBackgroundExecutor(@NonNull Executor executor) {
getMutableConfig().insertOption(OPTION_BACKGROUND_EXECUTOR, executor);
return this;
}
// Implementations of UseCaseConfig.Builder default methods
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public Builder setDefaultSessionConfig(@NonNull SessionConfig sessionConfig) {
getMutableConfig().insertOption(OPTION_DEFAULT_SESSION_CONFIG, sessionConfig);
return this;
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public Builder setDefaultCaptureConfig(@NonNull CaptureConfig captureConfig) {
getMutableConfig().insertOption(OPTION_DEFAULT_CAPTURE_CONFIG, captureConfig);
return this;
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public Builder setSessionOptionUnpacker(
@NonNull SessionConfig.OptionUnpacker optionUnpacker) {
getMutableConfig().insertOption(OPTION_SESSION_CONFIG_UNPACKER, optionUnpacker);
return this;
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public Builder setCaptureOptionUnpacker(
@NonNull CaptureConfig.OptionUnpacker optionUnpacker) {
getMutableConfig().insertOption(OPTION_CAPTURE_CONFIG_UNPACKER, optionUnpacker);
return this;
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public Builder setSurfaceOccupancyPriority(int priority) {
getMutableConfig().insertOption(OPTION_SURFACE_OCCUPANCY_PRIORITY, priority);
return this;
}
/** @hide */
@RestrictTo(Scope.LIBRARY_GROUP)
@Override
@NonNull
public Builder setUseCaseEventListener(
@NonNull UseCase.EventListener useCaseEventListener) {
getMutableConfig().insertOption(OPTION_USE_CASE_EVENT_LISTENER, useCaseEventListener);
return this;
}
}
}