package androidx.media3.exoplayer.audio; import android.content.Context; import android.media.AudioDeviceInfo; import android.media.MediaCrypto; import android.media.MediaFormat; import android.os.Handler; import androidx.media3.common.AudioAttributes; import androidx.media3.common.AuxEffectInfo; import androidx.media3.common.Format; import androidx.media3.common.MimeTypes; import androidx.media3.common.PlaybackParameters; import androidx.media3.common.audio.AudioProcessor; import androidx.media3.common.util.Assertions; import androidx.media3.common.util.Log; import androidx.media3.common.util.MediaFormatUtil; import androidx.media3.common.util.Util; import androidx.media3.decoder.DecoderInputBuffer; import androidx.media3.exoplayer.DecoderReuseEvaluation; import androidx.media3.exoplayer.ExoPlaybackException; import androidx.media3.exoplayer.FormatHolder; import androidx.media3.exoplayer.MediaClock; import androidx.media3.exoplayer.Renderer; import androidx.media3.exoplayer.RendererCapabilities; import androidx.media3.exoplayer.audio.AudioRendererEventListener; import androidx.media3.exoplayer.audio.AudioSink; import androidx.media3.exoplayer.audio.DefaultAudioSink; import androidx.media3.exoplayer.mediacodec.MediaCodecAdapter; import androidx.media3.exoplayer.mediacodec.MediaCodecInfo; import androidx.media3.exoplayer.mediacodec.MediaCodecRenderer; import androidx.media3.exoplayer.mediacodec.MediaCodecSelector; import androidx.media3.exoplayer.mediacodec.MediaCodecUtil; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableList; import io.sentry.protocol.SentryThread; import java.nio.ByteBuffer; import java.util.List; /* loaded from: classes2.dex */ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements MediaClock { private static final String TAG = "MediaCodecAudioRenderer"; private static final String VIVO_BITS_PER_SAMPLE_KEY = "v-bits-per-sample"; private boolean allowFirstBufferPositionDiscontinuity; private boolean allowPositionDiscontinuity; private final AudioSink audioSink; private boolean audioSinkNeedsReset; private int codecMaxInputSize; private boolean codecNeedsDiscardChannelsWorkaround; private final Context context; private long currentPositionUs; private Format decryptOnlyCodecFormat; private final AudioRendererEventListener.EventDispatcher eventDispatcher; private boolean experimentalKeepAudioTrackOnSeek; private Format inputFormat; private Renderer.WakeupListener wakeupListener; public void experimentalSetEnableKeepAudioTrackOnSeek(boolean z) { this.experimentalKeepAudioTrackOnSeek = z; } @Override // androidx.media3.exoplayer.BaseRenderer, androidx.media3.exoplayer.Renderer public MediaClock getMediaClock() { return this; } @Override // androidx.media3.exoplayer.Renderer, androidx.media3.exoplayer.RendererCapabilities public String getName() { return TAG; } protected void onPositionDiscontinuity() { this.allowPositionDiscontinuity = true; } public MediaCodecAudioRenderer(Context context, MediaCodecSelector mediaCodecSelector) { this(context, mediaCodecSelector, null, null); } public MediaCodecAudioRenderer(Context context, MediaCodecSelector mediaCodecSelector, Handler handler, AudioRendererEventListener audioRendererEventListener) { this(context, mediaCodecSelector, handler, audioRendererEventListener, AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES, new AudioProcessor[0]); } public MediaCodecAudioRenderer(Context context, MediaCodecSelector mediaCodecSelector, Handler handler, AudioRendererEventListener audioRendererEventListener, AudioCapabilities audioCapabilities, AudioProcessor... audioProcessorArr) { this(context, mediaCodecSelector, handler, audioRendererEventListener, new DefaultAudioSink.Builder().setAudioCapabilities((AudioCapabilities) MoreObjects.firstNonNull(audioCapabilities, AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES)).setAudioProcessors(audioProcessorArr).build()); } public MediaCodecAudioRenderer(Context context, MediaCodecSelector mediaCodecSelector, Handler handler, AudioRendererEventListener audioRendererEventListener, AudioSink audioSink) { this(context, MediaCodecAdapter.Factory.DEFAULT, mediaCodecSelector, false, handler, audioRendererEventListener, audioSink); } public MediaCodecAudioRenderer(Context context, MediaCodecSelector mediaCodecSelector, boolean z, Handler handler, AudioRendererEventListener audioRendererEventListener, AudioSink audioSink) { this(context, MediaCodecAdapter.Factory.DEFAULT, mediaCodecSelector, z, handler, audioRendererEventListener, audioSink); } public MediaCodecAudioRenderer(Context context, MediaCodecAdapter.Factory factory, MediaCodecSelector mediaCodecSelector, boolean z, Handler handler, AudioRendererEventListener audioRendererEventListener, AudioSink audioSink) { super(1, factory, mediaCodecSelector, z, 44100.0f); this.context = context.getApplicationContext(); this.audioSink = audioSink; this.eventDispatcher = new AudioRendererEventListener.EventDispatcher(handler, audioRendererEventListener); audioSink.setListener(new AudioSinkListener()); } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer protected int supportsFormat(MediaCodecSelector mediaCodecSelector, Format format) throws MediaCodecUtil.DecoderQueryException { boolean z; if (!MimeTypes.isAudio(format.sampleMimeType)) { return RendererCapabilities.create(0); } int i = Util.SDK_INT >= 21 ? 32 : 0; boolean z2 = true; boolean z3 = format.cryptoType != 0; boolean supportsFormatDrm = supportsFormatDrm(format); int i2 = 8; if (supportsFormatDrm && this.audioSink.supportsFormat(format) && (!z3 || MediaCodecUtil.getDecryptOnlyDecoderInfo() != null)) { return RendererCapabilities.create(4, 8, i); } if ("audio/raw".equals(format.sampleMimeType) && !this.audioSink.supportsFormat(format)) { return RendererCapabilities.create(1); } if (!this.audioSink.supportsFormat(Util.getPcmFormat(2, format.channelCount, format.sampleRate))) { return RendererCapabilities.create(1); } List decoderInfos = getDecoderInfos(mediaCodecSelector, format, false, this.audioSink); if (decoderInfos.isEmpty()) { return RendererCapabilities.create(1); } if (!supportsFormatDrm) { return RendererCapabilities.create(2); } MediaCodecInfo mediaCodecInfo = decoderInfos.get(0); boolean isFormatSupported = mediaCodecInfo.isFormatSupported(format); if (!isFormatSupported) { for (int i3 = 1; i3 < decoderInfos.size(); i3++) { MediaCodecInfo mediaCodecInfo2 = decoderInfos.get(i3); if (mediaCodecInfo2.isFormatSupported(format)) { z = false; mediaCodecInfo = mediaCodecInfo2; break; } } } z = true; z2 = isFormatSupported; int i4 = z2 ? 4 : 3; if (z2 && mediaCodecInfo.isSeamlessAdaptationSupported(format)) { i2 = 16; } return RendererCapabilities.create(i4, i2, i, mediaCodecInfo.hardwareAccelerated ? 64 : 0, z ? 128 : 0); } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer protected List getDecoderInfos(MediaCodecSelector mediaCodecSelector, Format format, boolean z) throws MediaCodecUtil.DecoderQueryException { return MediaCodecUtil.getDecoderInfosSortedByFormatSupport(getDecoderInfos(mediaCodecSelector, format, z, this.audioSink), format); } private static List getDecoderInfos(MediaCodecSelector mediaCodecSelector, Format format, boolean z, AudioSink audioSink) throws MediaCodecUtil.DecoderQueryException { MediaCodecInfo decryptOnlyDecoderInfo; if (format.sampleMimeType == null) { return ImmutableList.of(); } if (audioSink.supportsFormat(format) && (decryptOnlyDecoderInfo = MediaCodecUtil.getDecryptOnlyDecoderInfo()) != null) { return ImmutableList.of(decryptOnlyDecoderInfo); } return MediaCodecUtil.getDecoderInfosSoftMatch(mediaCodecSelector, format, z, false); } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer protected boolean shouldUseBypass(Format format) { return this.audioSink.supportsFormat(format); } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer protected MediaCodecAdapter.Configuration getMediaCodecConfiguration(MediaCodecInfo mediaCodecInfo, Format format, MediaCrypto mediaCrypto, float f) { this.codecMaxInputSize = getCodecMaxInputSize(mediaCodecInfo, format, getStreamFormats()); this.codecNeedsDiscardChannelsWorkaround = codecNeedsDiscardChannelsWorkaround(mediaCodecInfo.name); MediaFormat mediaFormat = getMediaFormat(format, mediaCodecInfo.codecMimeType, this.codecMaxInputSize, f); this.decryptOnlyCodecFormat = (!"audio/raw".equals(mediaCodecInfo.mimeType) || "audio/raw".equals(format.sampleMimeType)) ? null : format; return MediaCodecAdapter.Configuration.createForAudioDecoding(mediaCodecInfo, mediaFormat, format, mediaCrypto); } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer protected DecoderReuseEvaluation canReuseCodec(MediaCodecInfo mediaCodecInfo, Format format, Format format2) { DecoderReuseEvaluation canReuseCodec = mediaCodecInfo.canReuseCodec(format, format2); int i = canReuseCodec.discardReasons; if (isBypassPossible(format2)) { i |= 32768; } if (getCodecMaxInputSize(mediaCodecInfo, format2) > this.codecMaxInputSize) { i |= 64; } int i2 = i; return new DecoderReuseEvaluation(mediaCodecInfo.name, format, format2, i2 != 0 ? 0 : canReuseCodec.result, i2); } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer protected float getCodecOperatingRateV23(float f, Format format, Format[] formatArr) { int i = -1; for (Format format2 : formatArr) { int i2 = format2.sampleRate; if (i2 != -1) { i = Math.max(i, i2); } } if (i == -1) { return -1.0f; } return i * f; } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer protected void onCodecInitialized(String str, MediaCodecAdapter.Configuration configuration, long j, long j2) { this.eventDispatcher.decoderInitialized(str, j, j2); } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer protected void onCodecReleased(String str) { this.eventDispatcher.decoderReleased(str); } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer protected void onCodecError(Exception exc) { Log.e(TAG, "Audio codec error", exc); this.eventDispatcher.audioCodecError(exc); } /* JADX INFO: Access modifiers changed from: protected */ @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer public DecoderReuseEvaluation onInputFormatChanged(FormatHolder formatHolder) throws ExoPlaybackException { this.inputFormat = (Format) Assertions.checkNotNull(formatHolder.format); DecoderReuseEvaluation onInputFormatChanged = super.onInputFormatChanged(formatHolder); this.eventDispatcher.inputFormatChanged(this.inputFormat, onInputFormatChanged); return onInputFormatChanged; } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer protected void onOutputFormatChanged(Format format, MediaFormat mediaFormat) throws ExoPlaybackException { int pcmEncoding; Format format2 = this.decryptOnlyCodecFormat; int[] iArr = null; if (format2 != null) { format = format2; } else if (getCodec() != null) { if ("audio/raw".equals(format.sampleMimeType)) { pcmEncoding = format.pcmEncoding; } else if (Util.SDK_INT >= 24 && mediaFormat.containsKey("pcm-encoding")) { pcmEncoding = mediaFormat.getInteger("pcm-encoding"); } else { pcmEncoding = mediaFormat.containsKey(VIVO_BITS_PER_SAMPLE_KEY) ? Util.getPcmEncoding(mediaFormat.getInteger(VIVO_BITS_PER_SAMPLE_KEY)) : 2; } Format build = new Format.Builder().setSampleMimeType("audio/raw").setPcmEncoding(pcmEncoding).setEncoderDelay(format.encoderDelay).setEncoderPadding(format.encoderPadding).setChannelCount(mediaFormat.getInteger("channel-count")).setSampleRate(mediaFormat.getInteger("sample-rate")).build(); if (this.codecNeedsDiscardChannelsWorkaround && build.channelCount == 6 && format.channelCount < 6) { iArr = new int[format.channelCount]; for (int i = 0; i < format.channelCount; i++) { iArr[i] = i; } } format = build; } try { this.audioSink.configure(format, 0, iArr); } catch (AudioSink.ConfigurationException e) { throw createRendererException(e, e.format, 5001); } } /* JADX INFO: Access modifiers changed from: protected */ @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer, androidx.media3.exoplayer.BaseRenderer public void onEnabled(boolean z, boolean z2) throws ExoPlaybackException { super.onEnabled(z, z2); this.eventDispatcher.enabled(this.decoderCounters); if (getConfiguration().tunneling) { this.audioSink.enableTunnelingV21(); } else { this.audioSink.disableTunneling(); } this.audioSink.setPlayerId(getPlayerId()); } /* JADX INFO: Access modifiers changed from: protected */ @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer, androidx.media3.exoplayer.BaseRenderer public void onPositionReset(long j, boolean z) throws ExoPlaybackException { super.onPositionReset(j, z); if (this.experimentalKeepAudioTrackOnSeek) { this.audioSink.experimentalFlushWithoutAudioTrackRelease(); } else { this.audioSink.flush(); } this.currentPositionUs = j; this.allowFirstBufferPositionDiscontinuity = true; this.allowPositionDiscontinuity = true; } /* JADX INFO: Access modifiers changed from: protected */ @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer, androidx.media3.exoplayer.BaseRenderer public void onStarted() { super.onStarted(); this.audioSink.play(); } /* JADX INFO: Access modifiers changed from: protected */ @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer, androidx.media3.exoplayer.BaseRenderer public void onStopped() { updateCurrentPosition(); this.audioSink.pause(); super.onStopped(); } /* JADX INFO: Access modifiers changed from: protected */ @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer, androidx.media3.exoplayer.BaseRenderer public void onDisabled() { this.audioSinkNeedsReset = true; this.inputFormat = null; try { this.audioSink.flush(); try { super.onDisabled(); } finally { } } catch (Throwable th) { try { super.onDisabled(); throw th; } finally { } } } /* JADX INFO: Access modifiers changed from: protected */ @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer, androidx.media3.exoplayer.BaseRenderer public void onReset() { try { super.onReset(); } finally { if (this.audioSinkNeedsReset) { this.audioSinkNeedsReset = false; this.audioSink.reset(); } } } @Override // androidx.media3.exoplayer.BaseRenderer protected void onRelease() { this.audioSink.release(); } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer, androidx.media3.exoplayer.Renderer public boolean isEnded() { return super.isEnded() && this.audioSink.isEnded(); } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer, androidx.media3.exoplayer.Renderer public boolean isReady() { return this.audioSink.hasPendingData() || super.isReady(); } @Override // androidx.media3.exoplayer.MediaClock public long getPositionUs() { if (getState() == 2) { updateCurrentPosition(); } return this.currentPositionUs; } @Override // androidx.media3.exoplayer.MediaClock public void setPlaybackParameters(PlaybackParameters playbackParameters) { this.audioSink.setPlaybackParameters(playbackParameters); } @Override // androidx.media3.exoplayer.MediaClock public PlaybackParameters getPlaybackParameters() { return this.audioSink.getPlaybackParameters(); } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer protected void onQueueInputBuffer(DecoderInputBuffer decoderInputBuffer) { if (!this.allowFirstBufferPositionDiscontinuity || decoderInputBuffer.isDecodeOnly()) { return; } if (Math.abs(decoderInputBuffer.timeUs - this.currentPositionUs) > 500000) { this.currentPositionUs = decoderInputBuffer.timeUs; } this.allowFirstBufferPositionDiscontinuity = false; } /* JADX INFO: Access modifiers changed from: protected */ @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer public void onProcessedStreamChange() { super.onProcessedStreamChange(); this.audioSink.handleDiscontinuity(); } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer protected boolean processOutputBuffer(long j, long j2, MediaCodecAdapter mediaCodecAdapter, ByteBuffer byteBuffer, int i, int i2, int i3, long j3, boolean z, boolean z2, Format format) throws ExoPlaybackException { Assertions.checkNotNull(byteBuffer); if (this.decryptOnlyCodecFormat != null && (i2 & 2) != 0) { ((MediaCodecAdapter) Assertions.checkNotNull(mediaCodecAdapter)).releaseOutputBuffer(i, false); return true; } if (z) { if (mediaCodecAdapter != null) { mediaCodecAdapter.releaseOutputBuffer(i, false); } this.decoderCounters.skippedOutputBufferCount += i3; this.audioSink.handleDiscontinuity(); return true; } try { if (!this.audioSink.handleBuffer(byteBuffer, j3, i3)) { return false; } if (mediaCodecAdapter != null) { mediaCodecAdapter.releaseOutputBuffer(i, false); } this.decoderCounters.renderedOutputBufferCount += i3; return true; } catch (AudioSink.InitializationException e) { throw createRendererException(e, this.inputFormat, e.isRecoverable, 5001); } catch (AudioSink.WriteException e2) { throw createRendererException(e2, format, e2.isRecoverable, 5002); } } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer protected void renderToEndOfStream() throws ExoPlaybackException { try { this.audioSink.playToEndOfStream(); } catch (AudioSink.WriteException e) { throw createRendererException(e, e.format, e.isRecoverable, 5002); } } @Override // androidx.media3.exoplayer.mediacodec.MediaCodecRenderer protected void onOutputStreamOffsetUsChanged(long j) { this.audioSink.setOutputStreamOffsetUs(j); } @Override // androidx.media3.exoplayer.BaseRenderer, androidx.media3.exoplayer.PlayerMessage.Target public void handleMessage(int i, Object obj) throws ExoPlaybackException { if (i == 2) { this.audioSink.setVolume(((Float) obj).floatValue()); return; } if (i == 3) { this.audioSink.setAudioAttributes((AudioAttributes) obj); return; } if (i == 6) { this.audioSink.setAuxEffectInfo((AuxEffectInfo) obj); return; } switch (i) { case 9: this.audioSink.setSkipSilenceEnabled(((Boolean) obj).booleanValue()); return; case 10: this.audioSink.setAudioSessionId(((Integer) obj).intValue()); return; case 11: this.wakeupListener = (Renderer.WakeupListener) obj; return; case 12: if (Util.SDK_INT >= 23) { Api23.setAudioSinkPreferredDevice(this.audioSink, obj); return; } return; default: super.handleMessage(i, obj); return; } } protected int getCodecMaxInputSize(MediaCodecInfo mediaCodecInfo, Format format, Format[] formatArr) { int codecMaxInputSize = getCodecMaxInputSize(mediaCodecInfo, format); if (formatArr.length == 1) { return codecMaxInputSize; } for (Format format2 : formatArr) { if (mediaCodecInfo.canReuseCodec(format, format2).result != 0) { codecMaxInputSize = Math.max(codecMaxInputSize, getCodecMaxInputSize(mediaCodecInfo, format2)); } } return codecMaxInputSize; } private int getCodecMaxInputSize(MediaCodecInfo mediaCodecInfo, Format format) { if (!"OMX.google.raw.decoder".equals(mediaCodecInfo.name) || Util.SDK_INT >= 24 || (Util.SDK_INT == 23 && Util.isTv(this.context))) { return format.maxInputSize; } return -1; } protected MediaFormat getMediaFormat(Format format, String str, int i, float f) { MediaFormat mediaFormat = new MediaFormat(); mediaFormat.setString("mime", str); mediaFormat.setInteger("channel-count", format.channelCount); mediaFormat.setInteger("sample-rate", format.sampleRate); MediaFormatUtil.setCsdBuffers(mediaFormat, format.initializationData); MediaFormatUtil.maybeSetInteger(mediaFormat, "max-input-size", i); if (Util.SDK_INT >= 23) { mediaFormat.setInteger(SentryThread.JsonKeys.PRIORITY, 0); if (f != -1.0f && !deviceDoesntSupportOperatingRate()) { mediaFormat.setFloat("operating-rate", f); } } if (Util.SDK_INT <= 28 && "audio/ac4".equals(format.sampleMimeType)) { mediaFormat.setInteger("ac4-is-sync", 1); } if (Util.SDK_INT >= 24 && this.audioSink.getFormatSupport(Util.getPcmFormat(4, format.channelCount, format.sampleRate)) == 2) { mediaFormat.setInteger("pcm-encoding", 4); } if (Util.SDK_INT >= 32) { mediaFormat.setInteger("max-output-channel-count", 99); } return mediaFormat; } private void updateCurrentPosition() { long currentPositionUs = this.audioSink.getCurrentPositionUs(isEnded()); if (currentPositionUs != Long.MIN_VALUE) { if (!this.allowPositionDiscontinuity) { currentPositionUs = Math.max(this.currentPositionUs, currentPositionUs); } this.currentPositionUs = currentPositionUs; this.allowPositionDiscontinuity = false; } } private static boolean deviceDoesntSupportOperatingRate() { return Util.SDK_INT == 23 && ("ZTE B2017G".equals(Util.MODEL) || "AXON 7 mini".equals(Util.MODEL)); } private static boolean codecNeedsDiscardChannelsWorkaround(String str) { return Util.SDK_INT < 24 && "OMX.SEC.aac.dec".equals(str) && "samsung".equals(Util.MANUFACTURER) && (Util.DEVICE.startsWith("zeroflte") || Util.DEVICE.startsWith("herolte") || Util.DEVICE.startsWith("heroqlte")); } /* loaded from: classes2.dex */ private final class AudioSinkListener implements AudioSink.Listener { private AudioSinkListener() { } @Override // androidx.media3.exoplayer.audio.AudioSink.Listener public void onPositionDiscontinuity() { MediaCodecAudioRenderer.this.onPositionDiscontinuity(); } @Override // androidx.media3.exoplayer.audio.AudioSink.Listener public void onPositionAdvancing(long j) { MediaCodecAudioRenderer.this.eventDispatcher.positionAdvancing(j); } @Override // androidx.media3.exoplayer.audio.AudioSink.Listener public void onUnderrun(int i, long j, long j2) { MediaCodecAudioRenderer.this.eventDispatcher.underrun(i, j, j2); } @Override // androidx.media3.exoplayer.audio.AudioSink.Listener public void onSkipSilenceEnabledChanged(boolean z) { MediaCodecAudioRenderer.this.eventDispatcher.skipSilenceEnabledChanged(z); } @Override // androidx.media3.exoplayer.audio.AudioSink.Listener public void onOffloadBufferEmptying() { if (MediaCodecAudioRenderer.this.wakeupListener != null) { MediaCodecAudioRenderer.this.wakeupListener.onWakeup(); } } @Override // androidx.media3.exoplayer.audio.AudioSink.Listener public void onOffloadBufferFull() { if (MediaCodecAudioRenderer.this.wakeupListener != null) { MediaCodecAudioRenderer.this.wakeupListener.onSleep(); } } @Override // androidx.media3.exoplayer.audio.AudioSink.Listener public void onAudioSinkError(Exception exc) { Log.e(MediaCodecAudioRenderer.TAG, "Audio sink error", exc); MediaCodecAudioRenderer.this.eventDispatcher.audioSinkError(exc); } @Override // androidx.media3.exoplayer.audio.AudioSink.Listener public void onAudioCapabilitiesChanged() { MediaCodecAudioRenderer.this.onRendererCapabilitiesChanged(); } } /* loaded from: classes2.dex */ private static final class Api23 { private Api23() { } public static void setAudioSinkPreferredDevice(AudioSink audioSink, Object obj) { audioSink.setPreferredDevice((AudioDeviceInfo) obj); } } }