Merge pull request #2386 from DolbyLaboratories:dlb/cmcd/nullable-configuration

PiperOrigin-RevId: 753210729
This commit is contained in:
Copybara-Service 2025-04-30 10:04:01 -07:00
commit acdc71bb63
4 changed files with 19 additions and 2 deletions

View File

@ -14,6 +14,9 @@
* Fix memory leak in `MergingMediaSource`, for example used when * Fix memory leak in `MergingMediaSource`, for example used when
sideloading subtitles sideloading subtitles
([#2338](https://github.com/androidx/media/issues/2338)). ([#2338](https://github.com/androidx/media/issues/2338)).
* Allow `CmcdConfiguration.Factory` to return `null` to disable CMCD
logging for specific media items
([#2386](https://github.com/androidx/media/pull/2386)).
* Transformer: * Transformer:
* Filling an initial gap (added via `addGap()`) with silent audio now * Filling an initial gap (added via `addGap()`) with silent audio now
requires explicitly setting `experimentalSetForceAudioTrack(true)` in requires explicitly setting `experimentalSetForceAudioTrack(true)` in

View File

@ -127,8 +127,9 @@ public final class CmcdConfiguration {
* Creates a {@link CmcdConfiguration} based on the provided {@link MediaItem}. * Creates a {@link CmcdConfiguration} based on the provided {@link MediaItem}.
* *
* @param mediaItem The {@link MediaItem} from which to create the CMCD configuration. * @param mediaItem The {@link MediaItem} from which to create the CMCD configuration.
* @return A {@link CmcdConfiguration} instance. * @return A {@link CmcdConfiguration} instance, or {@code null} to disable CMCD logging.
*/ */
@Nullable
CmcdConfiguration createCmcdConfiguration(MediaItem mediaItem); CmcdConfiguration createCmcdConfiguration(MediaItem mediaItem);
/** /**

View File

@ -18,6 +18,7 @@ package androidx.media3.exoplayer.upstream;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertThrows;
import androidx.annotation.Nullable;
import androidx.media3.common.C; import androidx.media3.common.C;
import androidx.media3.common.MediaItem; import androidx.media3.common.MediaItem;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
@ -134,4 +135,16 @@ public class CmcdConfigurationTest {
/* throughputKbps= */ 100)) /* throughputKbps= */ 100))
.isEqualTo(200); .isEqualTo(200);
} }
@Test
public void customFactory_returnsNull() {
CmcdConfiguration.Factory cmcdConfigurationFactory = mediaItem -> null;
MediaItem mediaItem = new MediaItem.Builder().setMediaId(TEST_MEDIA_ID).build();
@Nullable
CmcdConfiguration cmcdConfiguration =
cmcdConfigurationFactory.createCmcdConfiguration(mediaItem);
assertThat(cmcdConfiguration).isNull();
}
} }

View File

@ -113,7 +113,7 @@ public final class DashMediaSource extends BaseMediaSource {
private final DashChunkSource.Factory chunkSourceFactory; private final DashChunkSource.Factory chunkSourceFactory;
@Nullable private final DataSource.Factory manifestDataSourceFactory; @Nullable private final DataSource.Factory manifestDataSourceFactory;
private CmcdConfiguration.Factory cmcdConfigurationFactory; @Nullable private CmcdConfiguration.Factory cmcdConfigurationFactory;
private DrmSessionManagerProvider drmSessionManagerProvider; private DrmSessionManagerProvider drmSessionManagerProvider;
private CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory; private CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory;
private LoadErrorHandlingPolicy loadErrorHandlingPolicy; private LoadErrorHandlingPolicy loadErrorHandlingPolicy;