mirror of
https://github.com/samsonjs/media.git
synced 2026-03-31 10:25:48 +00:00
Allow disabling offload gapless
Issues have been identified around offload gapless track transitions blocking the track timestamp. Until those issues are root caused, this settings allows to disable gapless offload completely. PiperOrigin-RevId: 372081545
This commit is contained in:
parent
b71c47f0dd
commit
4d4e235697
1 changed files with 15 additions and 4 deletions
|
|
@ -221,7 +221,8 @@ public final class DefaultAudioSink implements AudioSink {
|
|||
@IntDef({
|
||||
OFFLOAD_MODE_DISABLED,
|
||||
OFFLOAD_MODE_ENABLED_GAPLESS_REQUIRED,
|
||||
OFFLOAD_MODE_ENABLED_GAPLESS_NOT_REQUIRED
|
||||
OFFLOAD_MODE_ENABLED_GAPLESS_NOT_REQUIRED,
|
||||
OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED
|
||||
})
|
||||
public @interface OffloadMode {}
|
||||
|
||||
|
|
@ -243,6 +244,13 @@ public final class DefaultAudioSink implements AudioSink {
|
|||
* transitions between tracks of the same album.
|
||||
*/
|
||||
public static final int OFFLOAD_MODE_ENABLED_GAPLESS_NOT_REQUIRED = 2;
|
||||
/**
|
||||
* The audio sink will prefer offload playback, disabling gapless offload support.
|
||||
*
|
||||
* <p>Use this option if gapless has undesirable side effects. For example if it introduces
|
||||
* hardware issues.
|
||||
*/
|
||||
public static final int OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED = 3;
|
||||
|
||||
@Documented
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
|
|
@ -653,8 +661,10 @@ public final class DefaultAudioSink implements AudioSink {
|
|||
audioTrack = buildAudioTrack();
|
||||
if (isOffloadedPlayback(audioTrack)) {
|
||||
registerStreamEventCallbackV29(audioTrack);
|
||||
audioTrack.setOffloadDelayPadding(
|
||||
configuration.inputFormat.encoderDelay, configuration.inputFormat.encoderPadding);
|
||||
if (offloadMode != OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED) {
|
||||
audioTrack.setOffloadDelayPadding(
|
||||
configuration.inputFormat.encoderDelay, configuration.inputFormat.encoderPadding);
|
||||
}
|
||||
}
|
||||
audioSessionId = audioTrack.getAudioSessionId();
|
||||
audioTrackPositionTracker.setAudioTrack(
|
||||
|
|
@ -710,7 +720,8 @@ public final class DefaultAudioSink implements AudioSink {
|
|||
// The current audio track can be reused for the new configuration.
|
||||
configuration = pendingConfiguration;
|
||||
pendingConfiguration = null;
|
||||
if (isOffloadedPlayback(audioTrack)) {
|
||||
if (isOffloadedPlayback(audioTrack)
|
||||
&& offloadMode != OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED) {
|
||||
audioTrack.setOffloadEndOfStream();
|
||||
audioTrack.setOffloadDelayPadding(
|
||||
configuration.inputFormat.encoderDelay, configuration.inputFormat.encoderPadding);
|
||||
|
|
|
|||
Loading…
Reference in a new issue