Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 892bdbb5 authored by Luca Stefani's avatar Luca Stefani
Browse files

Twelve: TwelveAudioSink: Add missing delegates to defaultAudioSink

Java default methods are not overridden by delegation.

Fixes offload path on Pixel 9.

Change-Id: Ib5834b4bd3ff05381026aa07faca3d03d9864367
parent e632271e
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -5,7 +5,12 @@

package org.lineageos.twelve.services

import android.media.AudioDeviceInfo
import android.media.AudioTrack
import androidx.media3.common.Format
import androidx.media3.common.util.Clock
import androidx.media3.exoplayer.analytics.PlayerId
import androidx.media3.exoplayer.audio.AudioOffloadSupport
import androidx.media3.exoplayer.audio.AudioSink
import androidx.media3.exoplayer.audio.DefaultAudioSink
import java.nio.ByteBuffer
@@ -25,6 +30,18 @@ class TwelveAudioSink(
        isAccessible = true
    }

    override fun setPlayerId(playerId: PlayerId?) {
        defaultAudioSink.setPlayerId(playerId)
    }

    override fun setClock(clock: Clock) {
        defaultAudioSink.setClock(clock)
    }

    override fun getFormatOffloadSupport(format: Format): AudioOffloadSupport {
        return defaultAudioSink.getFormatOffloadSupport(format)
    }

    override fun handleBuffer(
        buffer: ByteBuffer,
        presentationTimeUs: Long,
@@ -35,9 +52,25 @@ class TwelveAudioSink(
        onAudioTrackUpdate(audioTrackField.get(defaultAudioSink) as? AudioTrack)
    }

    override fun setPreferredDevice(audioDeviceInfo: AudioDeviceInfo?) {
        defaultAudioSink.setPreferredDevice(audioDeviceInfo)
    }

    override fun setOffloadMode(offloadMode: Int) {
        defaultAudioSink.setOffloadMode(offloadMode)
    }

    override fun setOffloadDelayPadding(delayInFrames: Int, paddingInFrames: Int) {
        defaultAudioSink.setOffloadDelayPadding(delayInFrames, paddingInFrames)
    }

    override fun flush() = try {
        defaultAudioSink.flush()
    } finally {
        onAudioTrackUpdate(null)
    }

    override fun release() {
        defaultAudioSink.release()
    }
}