public class

MediaCodecDecoderException

extends DecoderException

 java.lang.Object

↳java.lang.Throwable

↳java.lang.Exception

androidx.media3.decoder.DecoderException

↳androidx.media3.exoplayer.mediacodec.MediaCodecDecoderException

Subclasses:

MediaCodecVideoDecoderException

Gradle dependencies

compile group: 'androidx.media3', name: 'media3-exoplayer', version: '1.0.0-alpha03'

  • groupId: androidx.media3
  • artifactId: media3-exoplayer
  • version: 1.0.0-alpha03

Artifact androidx.media3:media3-exoplayer:1.0.0-alpha03 it located at Google repository (https://maven.google.com/)

Overview

Thrown when a failure occurs in a MediaCodec decoder.

Summary

Fields
public final MediaCodecInfocodecInfo

The MediaCodecInfo of the decoder that failed.

public final java.lang.StringdiagnosticInfo

An optional developer-readable diagnostic information string.

Constructors
publicMediaCodecDecoderException(java.lang.Throwable cause, MediaCodecInfo codecInfo)

Methods
from java.lang.ThrowableaddSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Fields

public final MediaCodecInfo codecInfo

The MediaCodecInfo of the decoder that failed. Null if unknown.

public final java.lang.String diagnosticInfo

An optional developer-readable diagnostic information string. May be null.

Constructors

public MediaCodecDecoderException(java.lang.Throwable cause, MediaCodecInfo codecInfo)

Source

/*
 * Copyright (C) 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.media3.exoplayer.mediacodec;

import android.media.MediaCodec;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.common.util.Util;
import androidx.media3.decoder.DecoderException;

/** Thrown when a failure occurs in a {@link MediaCodec} decoder. */
@UnstableApi
public class MediaCodecDecoderException extends DecoderException {

  /** The {@link MediaCodecInfo} of the decoder that failed. Null if unknown. */
  @Nullable public final MediaCodecInfo codecInfo;

  /** An optional developer-readable diagnostic information string. May be null. */
  @Nullable public final String diagnosticInfo;

  public MediaCodecDecoderException(Throwable cause, @Nullable MediaCodecInfo codecInfo) {
    super("Decoder failed: " + (codecInfo == null ? null : codecInfo.name), cause);
    this.codecInfo = codecInfo;
    diagnosticInfo = Util.SDK_INT >= 21 ? getDiagnosticInfoV21(cause) : null;
  }

  @RequiresApi(21)
  @Nullable
  private static String getDiagnosticInfoV21(Throwable cause) {
    if (cause instanceof MediaCodec.CodecException) {
      return ((MediaCodec.CodecException) cause).getDiagnosticInfo();
    }
    return null;
  }
}