Skip to content

Commit acdc71b

Browse files
Merge pull request #2386 from DolbyLaboratories:dlb/cmcd/nullable-configuration
PiperOrigin-RevId: 753210729
2 parents bfb8c5c + a019de8 commit acdc71b

File tree

4 files changed

+19
-2
lines changed

4 files changed

+19
-2
lines changed

‎RELEASENOTES.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
* Fix memory leak in `MergingMediaSource`, for example used when
1515
sideloading subtitles
1616
([#2338](https://github.com/androidx/media/issues/2338)).
17+
* Allow `CmcdConfiguration.Factory` to return `null` to disable CMCD
18+
logging for specific media items
19+
([#2386](https://github.com/androidx/media/pull/2386)).
1720
* Transformer:
1821
* Filling an initial gap (added via `addGap()`) with silent audio now
1922
requires explicitly setting `experimentalSetForceAudioTrack(true)` in

‎libraries/exoplayer/src/main/java/androidx/media3/exoplayer/upstream/CmcdConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,9 @@ public interface Factory {
127127
* Creates a {@link CmcdConfiguration} based on the provided {@link MediaItem}.
128128
*
129129
* @param mediaItem The {@link MediaItem} from which to create the CMCD configuration.
130-
* @return A {@link CmcdConfiguration} instance.
130+
* @return A {@link CmcdConfiguration} instance, or {@code null} to disable CMCD logging.
131131
*/
132+
@Nullable
132133
CmcdConfiguration createCmcdConfiguration(MediaItem mediaItem);
133134

134135
/**

‎libraries/exoplayer/src/test/java/androidx/media3/exoplayer/upstream/CmcdConfigurationTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static com.google.common.truth.Truth.assertThat;
1919
import static org.junit.Assert.assertThrows;
2020

21+
import androidx.annotation.Nullable;
2122
import androidx.media3.common.C;
2223
import androidx.media3.common.MediaItem;
2324
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -134,4 +135,16 @@ public int getRequestedMaximumThroughputKbps(int throughputKbps) {
134135
/* throughputKbps= */ 100))
135136
.isEqualTo(200);
136137
}
138+
139+
@Test
140+
public void customFactory_returnsNull() {
141+
CmcdConfiguration.Factory cmcdConfigurationFactory = mediaItem -> null;
142+
MediaItem mediaItem = new MediaItem.Builder().setMediaId(TEST_MEDIA_ID).build();
143+
144+
@Nullable
145+
CmcdConfiguration cmcdConfiguration =
146+
cmcdConfigurationFactory.createCmcdConfiguration(mediaItem);
147+
148+
assertThat(cmcdConfiguration).isNull();
149+
}
137150
}

‎libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DashMediaSource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public static final class Factory implements MediaSourceFactory {
113113
private final DashChunkSource.Factory chunkSourceFactory;
114114
@Nullable private final DataSource.Factory manifestDataSourceFactory;
115115

116-
private CmcdConfiguration.Factory cmcdConfigurationFactory;
116+
@Nullable private CmcdConfiguration.Factory cmcdConfigurationFactory;
117117
private DrmSessionManagerProvider drmSessionManagerProvider;
118118
private CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory;
119119
private LoadErrorHandlingPolicy loadErrorHandlingPolicy;

0 commit comments

Comments
 (0)