public class

ExtraSupportedOutputSizeQuirk

extends java.lang.Object

implements Quirk

 java.lang.Object

↳androidx.camera.camera2.internal.compat.quirk.ExtraSupportedOutputSizeQuirk

Gradle dependencies

compile group: 'androidx.camera', name: 'camera-camera2', version: '1.5.0-alpha01'

  • groupId: androidx.camera
  • artifactId: camera-camera2
  • version: 1.5.0-alpha01

Artifact androidx.camera:camera-camera2:1.5.0-alpha01 it located at Google repository (https://maven.google.com/)

Overview

QuirkSummary Bug Id: b/241876294, b/299075294 Description: CamcorderProfile resolutions can not find a match in the output size list of CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP. Some resolutions are added back as they are supported by the camera and do not have stretching issues. Device(s): Motorola Moto E5 Play.

Summary

Constructors
publicExtraSupportedOutputSizeQuirk()

Methods
public SizegetExtraSupportedResolutions(java.lang.Class<java.lang.Object> klass)

Returns the extra supported resolutions on the device.

public SizegetExtraSupportedResolutions(int format)

Returns the extra supported resolutions on the device.

from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructors

public ExtraSupportedOutputSizeQuirk()

Methods

public Size getExtraSupportedResolutions(int format)

Returns the extra supported resolutions on the device.

public Size getExtraSupportedResolutions(java.lang.Class<java.lang.Object> klass)

Returns the extra supported resolutions on the device.

Source

/*
 * Copyright 2022 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.camera2.internal.compat.quirk;

import android.hardware.camera2.params.StreamConfigurationMap;
import android.os.Build;
import android.util.Size;

import androidx.annotation.NonNull;
import androidx.camera.core.impl.ImageFormatConstants;
import androidx.camera.core.impl.Quirk;

/**
 * <p>QuirkSummary
 *     Bug Id: b/241876294, b/299075294
 *     Description: CamcorderProfile resolutions can not find a match in the output size list of
 *                  CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP. Some resolutions are
 *                  added back as they are supported by the camera and do not have stretching
 *                  issues.
 *     Device(s): Motorola Moto E5 Play.
 */
public class ExtraSupportedOutputSizeQuirk implements Quirk {

    static boolean load() {
        return isMotoE5Play();
    }

    private static boolean isMotoE5Play() {
        return "motorola".equalsIgnoreCase(Build.BRAND) && "moto e5 play".equalsIgnoreCase(
                Build.MODEL);
    }

    /**
     * Returns the extra supported resolutions on the device.
     */
    @NonNull
    public Size[] getExtraSupportedResolutions(int format) {
        if (format == ImageFormatConstants.INTERNAL_DEFINED_IMAGE_FORMAT_PRIVATE
                && isMotoE5Play()) {
            return getMotoE5PlayExtraSupportedResolutions();
        } else {
            return new Size[]{};
        }
    }

    /**
     * Returns the extra supported resolutions on the device.
     */
    @NonNull
    public <T> Size[] getExtraSupportedResolutions(@NonNull Class<T> klass) {
        if (StreamConfigurationMap.isOutputSupportedFor(klass) && isMotoE5Play()) {
            return getMotoE5PlayExtraSupportedResolutions();
        } else {
            return new Size[]{};
        }
    }

    @NonNull
    private Size[] getMotoE5PlayExtraSupportedResolutions() {
        // Both the front and the main cameras support the following resolutions.
        return new Size[]{
                // FHD
                new Size(1440, 1080),
                // HD
                new Size(960, 720),
                // SD (640:480 is already included in the original list)
        };
    }
}