diff --git a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java index 3a476229e1..86b74041f4 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java @@ -37,6 +37,7 @@ import android.media.MediaCodec.CryptoException; import android.media.MediaCrypto; import android.media.MediaCryptoException; import android.media.MediaFormat; +import android.media.metrics.LogSessionId; import android.os.Bundle; import android.os.SystemClock; import androidx.annotation.CallSuper; @@ -50,6 +51,7 @@ import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.FormatHolder; import com.google.android.exoplayer2.PlaybackException; +import com.google.android.exoplayer2.analytics.PlayerId; import com.google.android.exoplayer2.decoder.CryptoConfig; import com.google.android.exoplayer2.decoder.DecoderCounters; import com.google.android.exoplayer2.decoder.DecoderInputBuffer; @@ -1060,6 +1062,9 @@ public abstract class MediaCodecRenderer extends BaseRenderer { TraceUtil.beginSection("createCodec:" + codecName); MediaCodecAdapter.Configuration configuration = getMediaCodecConfiguration(codecInfo, inputFormat, crypto, codecOperatingRate); + if (Util.SDK_INT >= 31) { + Api31.setLogSessionIdToMediaCodecFormat(configuration, getPlayerId()); + } codec = codecAdapterFactory.createAdapter(configuration); codecInitializedTimestamp = SystemClock.elapsedRealtime(); @@ -2421,4 +2426,17 @@ public abstract class MediaCodecRenderer extends BaseRenderer { && format.channelCount == 1 && "OMX.MTK.AUDIO.DECODER.MP3".equals(name); } + + @RequiresApi(31) + private static final class Api31 { + private Api31() {} + + public static void setLogSessionIdToMediaCodecFormat( + MediaCodecAdapter.Configuration codecConfiguration, PlayerId playerId) { + LogSessionId logSessionId = playerId.getLogSessionId(); + if (!logSessionId.equals(LogSessionId.LOG_SESSION_ID_NONE)) { + codecConfiguration.mediaFormat.setString("log-session-id", logSessionId.getStringId()); + } + } + } }