Make some no-op refactoring in CmcdData

- Moved static fields for object type, stream type, etc. from `CmcdData.Factory` to `CmcdData`.
- Removed redundant `CmcdData` prefix from `@ObjectType` and `@StreamingFormat` annotations.

#cleanup

PiperOrigin-RevId: 705159876
This commit is contained in:
rohks 2024-12-11 10:43:20 -08:00 committed by Copybara-Service
parent 893b3775d4
commit de31a3745c
9 changed files with 82 additions and 89 deletions

View File

@ -65,36 +65,6 @@ public final class CmcdData {
/** {@link CmcdData.Factory} for {@link CmcdData} instances. */
public static final class Factory {
/** Represents the Dynamic Adaptive Streaming over HTTP (DASH) format. */
public static final String STREAMING_FORMAT_DASH = "d";
/** Represents the HTTP Live Streaming (HLS) format. */
public static final String STREAMING_FORMAT_HLS = "h";
/** Represents the Smooth Streaming (SS) format. */
public static final String STREAMING_FORMAT_SS = "s";
/** Represents the Video on Demand (VOD) stream type. */
public static final String STREAM_TYPE_VOD = "v";
/** Represents the Live Streaming stream type. */
public static final String STREAM_TYPE_LIVE = "l";
/** Represents the object type for an initialization segment in a media container. */
public static final String OBJECT_TYPE_INIT_SEGMENT = "i";
/** Represents the object type for audio-only content in a media container. */
public static final String OBJECT_TYPE_AUDIO_ONLY = "a";
/** Represents the object type for video-only content in a media container. */
public static final String OBJECT_TYPE_VIDEO_ONLY = "v";
/** Represents the object type for muxed audio and video content in a media container. */
public static final String OBJECT_TYPE_MUXED_AUDIO_AND_VIDEO = "av";
/** Represents the object type for a manifest or playlist file, in a media container. */
public static final String OBJECT_TYPE_MANIFEST = "m";
/**
* Custom key names MUST carry a hyphenated prefix to ensure that there will not be a namespace
* collision with future revisions to this specification. Clients SHOULD use a reverse-DNS
@ -103,7 +73,7 @@ public final class CmcdData {
private static final Pattern CUSTOM_KEY_NAME_PATTERN = Pattern.compile(".*-.*");
private final CmcdConfiguration cmcdConfiguration;
private final @CmcdData.StreamingFormat String streamingFormat;
private final @StreamingFormat String streamingFormat;
@Nullable private ExoTrackSelection trackSelection;
private long bufferedDurationUs;
private float playbackRate;
@ -111,7 +81,7 @@ public final class CmcdData {
private boolean didRebuffer;
private boolean isBufferEmpty;
private long chunkDurationUs;
@Nullable private @CmcdData.ObjectType String objectType;
@Nullable private @ObjectType String objectType;
@Nullable private String nextObjectRequest;
@Nullable private String nextRangeRequest;
@ -121,8 +91,7 @@ public final class CmcdData {
* @param cmcdConfiguration The {@link CmcdConfiguration} for this source.
* @param streamingFormat The streaming format of the media content.
*/
public Factory(
CmcdConfiguration cmcdConfiguration, @CmcdData.StreamingFormat String streamingFormat) {
public Factory(CmcdConfiguration cmcdConfiguration, @StreamingFormat String streamingFormat) {
this.cmcdConfiguration = cmcdConfiguration;
this.bufferedDurationUs = C.TIME_UNSET;
this.playbackRate = C.RATE_UNSET;
@ -180,7 +149,7 @@ public final class CmcdData {
* <p>Default is {@code null}.
*/
@CanIgnoreReturnValue
public Factory setObjectType(@Nullable @CmcdData.ObjectType String objectType) {
public Factory setObjectType(@Nullable @ObjectType String objectType) {
this.objectType = objectType;
return this;
}
@ -421,13 +390,13 @@ public final class CmcdData {
}
private static boolean isManifestObjectType(@Nullable @ObjectType String objectType) {
return Objects.equals(objectType, Factory.OBJECT_TYPE_MANIFEST);
return Objects.equals(objectType, OBJECT_TYPE_MANIFEST);
}
private static boolean isMediaObjectType(@Nullable @ObjectType String objectType) {
return Objects.equals(objectType, Factory.OBJECT_TYPE_AUDIO_ONLY)
|| Objects.equals(objectType, Factory.OBJECT_TYPE_VIDEO_ONLY)
|| Objects.equals(objectType, Factory.OBJECT_TYPE_MUXED_AUDIO_AND_VIDEO);
return Objects.equals(objectType, OBJECT_TYPE_AUDIO_ONLY)
|| Objects.equals(objectType, OBJECT_TYPE_VIDEO_ONLY)
|| Objects.equals(objectType, OBJECT_TYPE_MUXED_AUDIO_AND_VIDEO);
}
private void validateCustomDataListFormat(List<String> customDataList) {
@ -440,35 +409,61 @@ public final class CmcdData {
/** Indicates the streaming format used for media content. */
@Retention(RetentionPolicy.SOURCE)
@StringDef({
Factory.STREAMING_FORMAT_DASH,
Factory.STREAMING_FORMAT_HLS,
Factory.STREAMING_FORMAT_SS
})
@StringDef({STREAMING_FORMAT_DASH, STREAMING_FORMAT_HLS, STREAMING_FORMAT_SS})
@Documented
@Target(TYPE_USE)
public @interface StreamingFormat {}
/** Represents the Dynamic Adaptive Streaming over HTTP (DASH) format. */
public static final String STREAMING_FORMAT_DASH = "d";
/** Represents the HTTP Live Streaming (HLS) format. */
public static final String STREAMING_FORMAT_HLS = "h";
/** Represents the Smooth Streaming (SS) format. */
public static final String STREAMING_FORMAT_SS = "s";
/** Indicates the type of streaming for media content. */
@Retention(RetentionPolicy.SOURCE)
@StringDef({Factory.STREAM_TYPE_VOD, Factory.STREAM_TYPE_LIVE})
@StringDef({STREAM_TYPE_VOD, STREAM_TYPE_LIVE})
@Documented
@Target(TYPE_USE)
public @interface StreamType {}
/** Represents the Video on Demand (VOD) stream type. */
public static final String STREAM_TYPE_VOD = "v";
/** Represents the Live Streaming stream type. */
public static final String STREAM_TYPE_LIVE = "l";
/** Indicates the media type of current object being requested. */
@Retention(RetentionPolicy.SOURCE)
@StringDef({
Factory.OBJECT_TYPE_INIT_SEGMENT,
Factory.OBJECT_TYPE_AUDIO_ONLY,
Factory.OBJECT_TYPE_VIDEO_ONLY,
Factory.OBJECT_TYPE_MUXED_AUDIO_AND_VIDEO,
Factory.OBJECT_TYPE_MANIFEST
OBJECT_TYPE_INIT_SEGMENT,
OBJECT_TYPE_AUDIO_ONLY,
OBJECT_TYPE_VIDEO_ONLY,
OBJECT_TYPE_MUXED_AUDIO_AND_VIDEO,
OBJECT_TYPE_MANIFEST
})
@Documented
@Target(TYPE_USE)
public @interface ObjectType {}
/** Represents the object type for an initialization segment in a media container. */
public static final String OBJECT_TYPE_INIT_SEGMENT = "i";
/** Represents the object type for audio-only content in a media container. */
public static final String OBJECT_TYPE_AUDIO_ONLY = "a";
/** Represents the object type for video-only content in a media container. */
public static final String OBJECT_TYPE_VIDEO_ONLY = "v";
/** Represents the object type for muxed audio and video content in a media container. */
public static final String OBJECT_TYPE_MUXED_AUDIO_AND_VIDEO = "av";
/** Represents the object type for a manifest or playlist file, in a media container. */
public static final String OBJECT_TYPE_MANIFEST = "m";
private static final Joiner COMMA_JOINER = Joiner.on(",");
private final CmcdObject cmcdObject;

View File

@ -45,16 +45,16 @@ public class CmcdDataTest {
"Track selection must be set",
IllegalStateException.class,
() ->
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.Factory.OBJECT_TYPE_INIT_SEGMENT)
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.OBJECT_TYPE_INIT_SEGMENT)
.createCmcdData());
assertThrows(
"Buffered duration must be set",
IllegalStateException.class,
() ->
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.Factory.OBJECT_TYPE_AUDIO_ONLY)
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.OBJECT_TYPE_AUDIO_ONLY)
.setTrackSelection(trackSelection)
.setChunkDurationUs(100_000)
.createCmcdData());
@ -63,8 +63,8 @@ public class CmcdDataTest {
"Chunk duration must be set",
IllegalStateException.class,
() ->
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.Factory.OBJECT_TYPE_AUDIO_ONLY)
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.OBJECT_TYPE_AUDIO_ONLY)
.setTrackSelection(trackSelection)
.setBufferedDurationUs(100_000)
.createCmcdData());
@ -94,9 +94,9 @@ public class CmcdDataTest {
when(trackSelection.getLatestBitrateEstimate()).thenReturn(500_000L);
DataSpec dataSpec = new DataSpec.Builder().setUri(Uri.EMPTY).build();
CmcdData cmcdData =
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_DASH)
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_DASH)
.setTrackSelection(trackSelection)
.setObjectType(CmcdData.Factory.OBJECT_TYPE_AUDIO_ONLY)
.setObjectType(CmcdData.OBJECT_TYPE_AUDIO_ONLY)
.setBufferedDurationUs(1_760_000)
.setPlaybackRate(2.0f)
.setIsLive(true)
@ -144,8 +144,8 @@ public class CmcdDataTest {
when(trackSelection.getLatestBitrateEstimate()).thenReturn(500_000L);
DataSpec dataSpec = new DataSpec.Builder().setUri(Uri.EMPTY).build();
CmcdData cmcdData =
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.Factory.OBJECT_TYPE_AUDIO_ONLY)
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.OBJECT_TYPE_AUDIO_ONLY)
.setTrackSelection(trackSelection)
.setBufferedDurationUs(1_760_000)
.setPlaybackRate(2.0f)
@ -174,8 +174,8 @@ public class CmcdDataTest {
cmcdConfigurationFactory.createCmcdConfiguration(mediaItem);
DataSpec dataSpec = new DataSpec.Builder().setUri(Uri.EMPTY).build();
CmcdData cmcdData =
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.Factory.OBJECT_TYPE_MANIFEST)
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.OBJECT_TYPE_MANIFEST)
.createCmcdData();
dataSpec = cmcdData.addToDataSpec(dataSpec);
@ -199,8 +199,8 @@ public class CmcdDataTest {
cmcdConfigurationFactory.createCmcdConfiguration(mediaItem);
DataSpec dataSpec = new DataSpec.Builder().setUri(Uri.EMPTY).build();
CmcdData cmcdData =
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.Factory.OBJECT_TYPE_MANIFEST)
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.OBJECT_TYPE_MANIFEST)
.createCmcdData();
dataSpec = cmcdData.addToDataSpec(dataSpec);
@ -226,7 +226,7 @@ public class CmcdDataTest {
when(trackSelection.getLatestBitrateEstimate()).thenReturn(500_000L);
DataSpec dataSpec = new DataSpec.Builder().setUri(Uri.EMPTY).build();
CmcdData cmcdData =
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_DASH)
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_DASH)
.setTrackSelection(trackSelection)
.setPlaybackRate(2.0f)
.setIsLive(true)
@ -268,7 +268,7 @@ public class CmcdDataTest {
when(trackSelection.getLatestBitrateEstimate()).thenReturn(500_000L);
DataSpec dataSpec = new DataSpec.Builder().setUri(Uri.EMPTY).build();
CmcdData cmcdData =
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_DASH)
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_DASH)
.setTrackSelection(trackSelection)
.setPlaybackRate(2.0f)
.setIsLive(true)
@ -307,8 +307,8 @@ public class CmcdDataTest {
cmcdConfigurationFactory.createCmcdConfiguration(MediaItem.EMPTY);
DataSpec dataSpec = new DataSpec.Builder().setUri(Uri.EMPTY).build();
CmcdData cmcdData =
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.Factory.OBJECT_TYPE_MANIFEST)
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.OBJECT_TYPE_MANIFEST)
.createCmcdData();
dataSpec = cmcdData.addToDataSpec(dataSpec);
@ -347,8 +347,8 @@ public class CmcdDataTest {
cmcdConfigurationFactory.createCmcdConfiguration(MediaItem.EMPTY);
DataSpec dataSpec = new DataSpec.Builder().setUri(Uri.EMPTY).build();
CmcdData cmcdData =
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.Factory.OBJECT_TYPE_MANIFEST)
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.OBJECT_TYPE_MANIFEST)
.createCmcdData();
dataSpec = cmcdData.addToDataSpec(dataSpec);
@ -381,8 +381,8 @@ public class CmcdDataTest {
assertThrows(
IllegalStateException.class,
() ->
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.Factory.OBJECT_TYPE_MANIFEST)
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.OBJECT_TYPE_MANIFEST)
.createCmcdData());
}
}

View File

@ -1105,8 +1105,8 @@ public final class DashMediaSource extends BaseMediaSource {
new DataSpec.Builder().setUri(manifestUri).setFlags(DataSpec.FLAG_ALLOW_GZIP).build();
if (cmcdConfiguration != null) {
CmcdData.Factory cmcdDataFactory =
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.Factory.OBJECT_TYPE_MANIFEST);
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_DASH)
.setObjectType(CmcdData.OBJECT_TYPE_MANIFEST);
if (manifest != null) {
cmcdDataFactory.setIsLive(manifest.dynamic);
}

View File

@ -421,7 +421,7 @@ public class DefaultDashChunkSource implements DashChunkSource {
CmcdData.Factory cmcdDataFactory =
cmcdConfiguration == null
? null
: new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_DASH)
: new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_DASH)
.setTrackSelection(trackSelection)
.setBufferedDurationUs(max(0, bufferedDurationUs))
.setPlaybackRate(loadingInfo.playbackSpeed)
@ -747,7 +747,7 @@ public class DefaultDashChunkSource implements DashChunkSource {
/* httpRequestHeaders= */ ImmutableMap.of());
if (cmcdDataFactory != null) {
CmcdData cmcdData =
cmcdDataFactory.setObjectType(CmcdData.Factory.OBJECT_TYPE_INIT_SEGMENT).createCmcdData();
cmcdDataFactory.setObjectType(CmcdData.OBJECT_TYPE_INIT_SEGMENT).createCmcdData();
dataSpec = cmcdData.addToDataSpec(dataSpec);
}

View File

@ -507,7 +507,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
@Nullable CmcdData.Factory cmcdDataFactory = null;
if (cmcdConfiguration != null) {
cmcdDataFactory =
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_HLS)
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_HLS)
.setTrackSelection(trackSelection)
.setBufferedDurationUs(max(0, bufferedDurationUs))
.setPlaybackRate(loadingInfo.playbackSpeed)
@ -516,7 +516,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
.setIsBufferEmpty(queue.isEmpty())
.setObjectType(
getIsMuxedAudioAndVideo()
? CmcdData.Factory.OBJECT_TYPE_MUXED_AUDIO_AND_VIDEO
? CmcdData.OBJECT_TYPE_MUXED_AUDIO_AND_VIDEO
: CmcdData.Factory.getObjectType(trackSelection));
long nextMediaSequence =
segmentBaseHolder.partIndex == C.INDEX_UNSET
@ -930,7 +930,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
new DataSpec.Builder().setUri(keyUri).setFlags(DataSpec.FLAG_ALLOW_GZIP).build();
if (cmcdDataFactory != null) {
if (isInitSegment) {
cmcdDataFactory.setObjectType(CmcdData.Factory.OBJECT_TYPE_INIT_SEGMENT);
cmcdDataFactory.setObjectType(CmcdData.OBJECT_TYPE_INIT_SEGMENT);
}
CmcdData cmcdData = cmcdDataFactory.createCmcdData();
dataSpec = cmcdData.addToDataSpec(dataSpec);

View File

@ -146,9 +146,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
.build();
if (cmcdDataFactory != null) {
CmcdData cmcdData =
cmcdDataFactory
.setObjectType(CmcdData.Factory.OBJECT_TYPE_INIT_SEGMENT)
.createCmcdData();
cmcdDataFactory.setObjectType(CmcdData.OBJECT_TYPE_INIT_SEGMENT).createCmcdData();
initDataSpec = cmcdData.addToDataSpec(initDataSpec);
}

View File

@ -150,8 +150,8 @@ public final class DefaultHlsPlaylistTracker
.build();
if (cmcdConfiguration != null) {
CmcdData cmcdData =
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_HLS)
.setObjectType(CmcdData.Factory.OBJECT_TYPE_MANIFEST)
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_HLS)
.setObjectType(CmcdData.OBJECT_TYPE_MANIFEST)
.createCmcdData();
cmcdData.addToDataSpec(dataSpec);
}
@ -791,8 +791,8 @@ public final class DefaultHlsPlaylistTracker
.build();
if (cmcdConfiguration != null) {
CmcdData.Factory cmcdDataFactory =
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_HLS)
.setObjectType(CmcdData.Factory.OBJECT_TYPE_MANIFEST);
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_HLS)
.setObjectType(CmcdData.OBJECT_TYPE_MANIFEST);
if (primaryMediaPlaylistSnapshot != null) {
cmcdDataFactory.setIsLive(!primaryMediaPlaylistSnapshot.hasEndTag);
}

View File

@ -360,7 +360,7 @@ public class DefaultSsChunkSource implements SsChunkSource {
@Nullable CmcdData.Factory cmcdDataFactory = null;
if (cmcdConfiguration != null) {
cmcdDataFactory =
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_SS)
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_SS)
.setTrackSelection(trackSelection)
.setBufferedDurationUs(max(0, bufferedDurationUs))
.setPlaybackRate(loadingInfo.playbackSpeed)

View File

@ -682,8 +682,8 @@ public final class SsMediaSource extends BaseMediaSource
new DataSpec.Builder().setUri(manifestUri).setFlags(DataSpec.FLAG_ALLOW_GZIP).build();
if (cmcdConfiguration != null) {
CmcdData.Factory cmcdDataFactory =
new CmcdData.Factory(cmcdConfiguration, CmcdData.Factory.STREAMING_FORMAT_SS)
.setObjectType(CmcdData.Factory.OBJECT_TYPE_MANIFEST);
new CmcdData.Factory(cmcdConfiguration, CmcdData.STREAMING_FORMAT_SS)
.setObjectType(CmcdData.OBJECT_TYPE_MANIFEST);
if (manifest != null) {
cmcdDataFactory.setIsLive(manifest.isLive);
}