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.2.0-alpha01'

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

Artifact androidx.camera:camera-video:1.2.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 intgetFrameRate()

Gets the frame rate.

public abstract intgetIFrameInterval()

Gets the i-frame interval.

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 Size getResolution()

Gets the resolution.

public abstract int getColorFormat()

Gets the color format.

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.annotation.RequiresApi;

import com.google.auto.value.AutoValue;

/** {@inheritDoc} */
@RequiresApi(21) // TODO(b/200306659): Remove and replace with annotation on package-info.java
@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);
    }

    @Override
    @NonNull
    public abstract String getMimeType();

    @Override
    public abstract int getProfile();

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

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

    /** 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());
        }
        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 resolution. */
        @NonNull
        public abstract Builder setResolution(@NonNull Size resolution);

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

        /** 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();
    }
}