1515 */
1616package androidx .media3 .exoplayer .trackselection ;
1717
18- import static androidx .media3 .common .TrackSelectionParameters .AUDIO_OFFLOAD_MODE_PREFERENCE_DISABLED ;
19- import static androidx .media3 .common .TrackSelectionParameters .AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED ;
18+ import static androidx .media3 .common .TrackSelectionParameters .AudioOffloadPreferences . AUDIO_OFFLOAD_MODE_DISABLED ;
19+ import static androidx .media3 .common .TrackSelectionParameters .AudioOffloadPreferences . AUDIO_OFFLOAD_MODE_REQUIRED ;
2020import static androidx .media3 .common .util .Assertions .checkStateNotNull ;
2121import static androidx .media3 .common .util .Util .castNonNull ;
2222import static androidx .media3 .exoplayer .RendererCapabilities .AUDIO_OFFLOAD_GAPLESS_SUPPORTED ;
5353import androidx .media3 .common .TrackGroup ;
5454import androidx .media3 .common .TrackSelectionOverride ;
5555import androidx .media3 .common .TrackSelectionParameters ;
56+ import androidx .media3 .common .TrackSelectionParameters .AudioOffloadPreferences ;
5657import androidx .media3 .common .util .Assertions ;
5758import androidx .media3 .common .util .BundleableUtil ;
5859import androidx .media3 .common .util .Log ;
@@ -463,12 +464,9 @@ public ParametersBuilder setPreferredAudioMimeTypes(String... mimeTypes) {
463464
464465 @ CanIgnoreReturnValue
465466 @ Override
466- public ParametersBuilder setAudioOffloadPreference (
467- @ TrackSelectionParameters .AudioOffloadModePreference int audioOffloadModePreference ,
468- boolean isGaplessSupportRequired ,
469- boolean isSpeedChangeSupportRequired ) {
470- delegate .setAudioOffloadPreference (
471- audioOffloadModePreference , isGaplessSupportRequired , isSpeedChangeSupportRequired );
467+ public ParametersBuilder setAudioOffloadPreferences (
468+ AudioOffloadPreferences audioOffloadPreferences ) {
469+ delegate .setAudioOffloadPreferences (audioOffloadPreferences );
472470 return this ;
473471 }
474472
@@ -2507,7 +2505,7 @@ public void onRendererCapabilitiesChanged(Renderer renderer) {
25072505 }
25082506
25092507 // Configure audio renderer to use offload if appropriate.
2510- if (parameters .audioOffloadModePreference != AUDIO_OFFLOAD_MODE_PREFERENCE_DISABLED ) {
2508+ if (parameters .audioOffloadPreferences . audioOffloadMode != AUDIO_OFFLOAD_MODE_DISABLED ) {
25112509 maybeConfigureRendererForOffload (
25122510 parameters ,
25132511 mappedTrackInfo ,
@@ -2529,9 +2527,10 @@ public void onRendererCapabilitiesChanged(Renderer renderer) {
25292527 * <p>The implementation should not account for overrides and disabled flags. Track selections
25302528 * generated by this method will be overridden to account for these properties.
25312529 *
2532- * <p>If selection parameters include {@link Parameters#audioOffloadModePreference} with {@link
2533- * TrackSelectionParameters#AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED}, then only audio tracks will
2534- * be selected. If no audio track is supported in offload, then no track will be selected.
2530+ * <p>If selection parameters include {@link Parameters#audioOffloadPreferences} with {@link
2531+ * AudioOffloadPreferences#audioOffloadMode} set to {@link
2532+ * AudioOffloadPreferences#AUDIO_OFFLOAD_MODE_REQUIRED} then only audio tracks will be selected.
2533+ * If no audio track is supported in offload, then no track will be selected.
25352534 *
25362535 * @param mappedTrackInfo Mapped track information.
25372536 * @param rendererFormatSupports The {@link Capabilities} for each mapped track, indexed by
@@ -2623,7 +2622,7 @@ protected Pair<ExoTrackSelection.Definition, Integer> selectVideoTrack(
26232622 @ AdaptiveSupport int [] mixedMimeTypeSupports ,
26242623 Parameters params )
26252624 throws ExoPlaybackException {
2626- if (params .audioOffloadModePreference == AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED ) {
2625+ if (params .audioOffloadPreferences . audioOffloadMode == AUDIO_OFFLOAD_MODE_REQUIRED ) {
26272626 return null ;
26282627 }
26292628 return selectTracksForType (
@@ -2741,7 +2740,7 @@ protected Pair<ExoTrackSelection.Definition, Integer> selectTextTrack(
27412740 Parameters params ,
27422741 @ Nullable String selectedAudioLanguage )
27432742 throws ExoPlaybackException {
2744- if (params .audioOffloadModePreference == AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED ) {
2743+ if (params .audioOffloadPreferences . audioOffloadMode == AUDIO_OFFLOAD_MODE_REQUIRED ) {
27452744 return null ;
27462745 }
27472746 return selectTracksForType (
@@ -2772,7 +2771,7 @@ protected Pair<ExoTrackSelection.Definition, Integer> selectTextTrack(
27722771 protected ExoTrackSelection .Definition selectOtherTrack (
27732772 int trackType , TrackGroupArray groups , @ Capabilities int [][] formatSupport , Parameters params )
27742773 throws ExoPlaybackException {
2775- if (params .audioOffloadModePreference == AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED ) {
2774+ if (params .audioOffloadPreferences . audioOffloadMode == AUDIO_OFFLOAD_MODE_REQUIRED ) {
27762775 return null ;
27772776 }
27782777 @ Nullable TrackGroup selectedGroup = null ;
@@ -3077,7 +3076,7 @@ private static void maybeConfigureRendererForOffload(
30773076 // Check whether we can enable offload. To enable offload we require exactly one audio track
30783077 // and a renderer with support matching the requirements set by
30793078 // setAudioOffloadPreference. There also cannot be other non-audio renderers with their own
3080- // selected tracks.
3079+ // selected tracks unless the selection parameters say audio-only is not required .
30813080 int audioRendererIndex = C .INDEX_UNSET ;
30823081 int audioRenderersSupportingOffload = 0 ;
30833082 boolean hasNonAudioRendererWithSelectedTracks = false ;
@@ -3106,7 +3105,7 @@ private static void maybeConfigureRendererForOffload(
31063105 if (!hasNonAudioRendererWithSelectedTracks && audioRenderersSupportingOffload == 1 ) {
31073106 RendererConfiguration offloadRendererConfiguration =
31083107 new RendererConfiguration (
3109- parameters .isGaplessSupportRequired
3108+ parameters .audioOffloadPreferences . isGaplessSupportRequired
31103109 ? AudioSink .OFFLOAD_MODE_ENABLED_GAPLESS_REQUIRED
31113110 : AudioSink .OFFLOAD_MODE_ENABLED_GAPLESS_NOT_REQUIRED ,
31123111 /* tunneling= */ rendererConfigurations [audioRendererIndex ] != null
@@ -3128,14 +3127,14 @@ private static boolean rendererSupportsOffload(
31283127 if (RendererCapabilities .getAudioOffloadSupport (formatSupport ) == AUDIO_OFFLOAD_NOT_SUPPORTED ) {
31293128 return false ;
31303129 }
3131- if (parameters .isSpeedChangeSupportRequired
3130+ if (parameters .audioOffloadPreferences . isSpeedChangeSupportRequired
31323131 && (RendererCapabilities .getAudioOffloadSupport (formatSupport )
31333132 & AUDIO_OFFLOAD_SPEED_CHANGE_SUPPORTED )
31343133 == 0 ) {
31353134 return false ;
31363135 }
31373136 // TODO(b/235883373): Add check for OPUS where gapless info is in initialization data
3138- if (parameters .isGaplessSupportRequired ) {
3137+ if (parameters .audioOffloadPreferences . isGaplessSupportRequired ) {
31393138 boolean isGapless = format .encoderDelay != 0 || format .encoderPadding != 0 ;
31403139 boolean isGaplessSupported =
31413140 (RendererCapabilities .getAudioOffloadSupport (formatSupport )
@@ -3751,7 +3750,7 @@ public int compareTo(AudioTrackInfo other) {
37513750 if (!isWithinConstraints && !parameters .exceedAudioConstraintsIfNecessary ) {
37523751 return SELECTION_ELIGIBILITY_NO ;
37533752 }
3754- if (params .audioOffloadModePreference == AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED
3753+ if (params .audioOffloadPreferences . audioOffloadMode == AUDIO_OFFLOAD_MODE_REQUIRED
37553754 && !rendererSupportsOffload (params , rendererSupport , format )) {
37563755 return SELECTION_ELIGIBILITY_NO ;
37573756 }
@@ -3761,7 +3760,7 @@ public int compareTo(AudioTrackInfo other) {
37613760 && !parameters .forceHighestSupportedBitrate
37623761 && !parameters .forceLowestBitrate
37633762 && (parameters .allowMultipleAdaptiveSelections || !hasMappedVideoTracks )
3764- && params .audioOffloadModePreference != AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED
3763+ && params .audioOffloadPreferences . audioOffloadMode != AUDIO_OFFLOAD_MODE_REQUIRED
37653764 ? SELECTION_ELIGIBILITY_ADAPTIVE
37663765 : SELECTION_ELIGIBILITY_FIXED ;
37673766 }
0 commit comments