public abstract class

VideoEncoderConfig

extends java.lang.Object

implements EncoderConfig

 java.lang.Object

↳androidx.camera.video.internal.encoder.VideoEncoderConfig

Gradle dependencies

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

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

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

Overview

Summary

Methods
public static VideoEncoderConfig.Builderbuilder()

Returns a build for this config.

public abstract intgetBitrate()

Gets the bitrate.

public abstract intgetColorFormat()

Gets the color format.

public abstract VideoEncoderDataSpacegetDataSpace()

Gets the color data space.

public abstract intgetFrameRate()

Gets the frame rate.

public abstract intgetIFrameInterval()

Gets the i-frame interval.

public abstract TimebasegetInputTimebase()

public abstract java.lang.StringgetMimeType()

public abstract intgetProfile()

public abstract SizegetResolution()

Gets the resolution.

public MediaFormattoMediaFormat()

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

Methods

public static VideoEncoderConfig.Builder builder()

Returns a build for this config.

public abstract java.lang.String getMimeType()

public abstract int getProfile()

public abstract Timebase getInputTimebase()

public abstract Size getResolution()

Gets the resolution.

public abstract int getColorFormat()

Gets the color format.

public abstract VideoEncoderDataSpace getDataSpace()

Gets the color data space.

public abstract int getFrameRate()

Gets the frame rate.

public abstract int getIFrameInterval()

Gets the i-frame interval.

public abstract int getBitrate()

Gets the bitrate.

public MediaFormat toMediaFormat()

Source

/*
 * Copyright 2020 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.video.internal.encoder;

import android.media.MediaCodecInfo;
import android.media.MediaFormat;
import android.util.Size;

import androidx.annotation.NonNull;
import androidx.camera.core.impl.Timebase;

import com.google.auto.value.AutoValue;

/** {@inheritDoc} */
@AutoValue
public abstract class VideoEncoderConfig implements EncoderConfig {

    private static final int VIDEO_INTRA_FRAME_INTERVAL_DEFAULT = 1;
    private static final int VIDEO_COLOR_FORMAT_DEFAULT =
            MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface;

    // Restrict constructor to same package
    VideoEncoderConfig() {
    }

    /** Returns a build for this config. */
    @NonNull
    public static Builder builder() {
        return new AutoValue_VideoEncoderConfig.Builder()
                .setProfile(EncoderConfig.CODEC_PROFILE_NONE)
                .setIFrameInterval(VIDEO_INTRA_FRAME_INTERVAL_DEFAULT)
                .setColorFormat(VIDEO_COLOR_FORMAT_DEFAULT)
                .setDataSpace(VideoEncoderDataSpace.ENCODER_DATA_SPACE_UNSPECIFIED);
    }

    @Override
    @NonNull
    public abstract String getMimeType();

    @Override
    public abstract int getProfile();

    @Override
    @NonNull
    public abstract Timebase getInputTimebase();

    /** Gets the resolution. */
    @NonNull
    public abstract Size getResolution();

    /** Gets the color format. */
    public abstract int getColorFormat();

    /** Gets the color data space. */
    @NonNull
    public abstract VideoEncoderDataSpace getDataSpace();

    /** Gets the frame rate. */
    public abstract int getFrameRate();

    /** Gets the i-frame interval. */
    public abstract int getIFrameInterval();

    /** Gets the bitrate. */
    public abstract int getBitrate();

    /** {@inheritDoc} */
    @NonNull
    @Override
    public MediaFormat toMediaFormat() {
        Size size = getResolution();
        MediaFormat format = MediaFormat.createVideoFormat(getMimeType(), size.getWidth(),
                size.getHeight());
        format.setInteger(MediaFormat.KEY_COLOR_FORMAT, getColorFormat());
        format.setInteger(MediaFormat.KEY_BIT_RATE, getBitrate());
        format.setInteger(MediaFormat.KEY_FRAME_RATE, getFrameRate());
        format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, getIFrameInterval());
        if (getProfile() != EncoderConfig.CODEC_PROFILE_NONE) {
            format.setInteger(MediaFormat.KEY_PROFILE, getProfile());
        }
        VideoEncoderDataSpace dataSpace = getDataSpace();
        if (dataSpace.getStandard() != VideoEncoderDataSpace.VIDEO_COLOR_STANDARD_UNSPECIFIED) {
            format.setInteger(MediaFormat.KEY_COLOR_STANDARD, dataSpace.getStandard());
        }
        if (dataSpace.getTransfer() != VideoEncoderDataSpace.VIDEO_COLOR_TRANSFER_UNSPECIFIED) {
            format.setInteger(MediaFormat.KEY_COLOR_TRANSFER, dataSpace.getTransfer());
        }
        if (dataSpace.getRange() != VideoEncoderDataSpace.VIDEO_COLOR_RANGE_UNSPECIFIED) {
            format.setInteger(MediaFormat.KEY_COLOR_RANGE, dataSpace.getRange());
        }
        return format;
    }

    /** The builder of the config. */
    @AutoValue.Builder
    public abstract static class Builder {
        // Restrict construction to same package
        Builder() {
        }

        /** Sets the mime type. */
        @NonNull
        public abstract Builder setMimeType(@NonNull String mimeType);

        /** Sets (optional) profile for the mime type specified by {@link #setMimeType(String)}. */
        @NonNull
        public abstract Builder setProfile(int profile);

        /** Sets the source timebase. */
        @NonNull
        public abstract Builder setInputTimebase(@NonNull Timebase timebase);

        /** Sets the resolution. */
        @NonNull
        public abstract Builder setResolution(@NonNull Size resolution);

        /** Sets the color format. */
        @NonNull
        public abstract Builder setColorFormat(int colorFormat);

        /** Sets the color data space. */
        @NonNull
        public abstract Builder setDataSpace(@NonNull VideoEncoderDataSpace dataSpace);

        /** Sets the frame rate. */
        @NonNull
        public abstract Builder setFrameRate(int frameRate);

        /** Sets the i-frame interval. */
        @NonNull
        public abstract Builder setIFrameInterval(int iFrameInterval);

        /** Sets the bitrate. */
        @NonNull
        public abstract Builder setBitrate(int bitrate);

        /** Builds the config instance. */
        @NonNull
        public abstract VideoEncoderConfig build();
    }
}