Commit 3f3d1fb5 by samrobinson Committed by Andrew Lewis

Change String MediaMetadata.title to CharSequence trackTitle.

PiperOrigin-RevId: 370439509
parent bc69509a
...@@ -42,19 +42,21 @@ import java.util.List; ...@@ -42,19 +42,21 @@ import java.util.List;
samples.add( samples.add(
new MediaItem.Builder() new MediaItem.Builder()
.setUri("https://storage.googleapis.com/wvmedia/clear/h264/tears/tears.mpd") .setUri("https://storage.googleapis.com/wvmedia/clear/h264/tears/tears.mpd")
.setMediaMetadata(new MediaMetadata.Builder().setTitle("Clear DASH: Tears").build()) .setMediaMetadata(
new MediaMetadata.Builder().setTrackTitle("Clear DASH: Tears").build())
.setMimeType(MIME_TYPE_DASH) .setMimeType(MIME_TYPE_DASH)
.build()); .build());
samples.add( samples.add(
new MediaItem.Builder() new MediaItem.Builder()
.setUri("https://storage.googleapis.com/shaka-demo-assets/angel-one-hls/hls.m3u8") .setUri("https://storage.googleapis.com/shaka-demo-assets/angel-one-hls/hls.m3u8")
.setMediaMetadata(new MediaMetadata.Builder().setTitle("Clear HLS: Angel one").build()) .setMediaMetadata(
new MediaMetadata.Builder().setTrackTitle("Clear HLS: Angel one").build())
.setMimeType(MIME_TYPE_HLS) .setMimeType(MIME_TYPE_HLS)
.build()); .build());
samples.add( samples.add(
new MediaItem.Builder() new MediaItem.Builder()
.setUri("https://html5demos.com/assets/dizzy.mp4") .setUri("https://html5demos.com/assets/dizzy.mp4")
.setMediaMetadata(new MediaMetadata.Builder().setTitle("Clear MP4: Dizzy").build()) .setMediaMetadata(new MediaMetadata.Builder().setTrackTitle("Clear MP4: Dizzy").build())
.setMimeType(MIME_TYPE_VIDEO_MP4) .setMimeType(MIME_TYPE_VIDEO_MP4)
.build()); .build());
...@@ -63,7 +65,7 @@ import java.util.List; ...@@ -63,7 +65,7 @@ import java.util.List;
new MediaItem.Builder() new MediaItem.Builder()
.setUri(Uri.parse("https://storage.googleapis.com/wvmedia/cenc/h264/tears/tears.mpd")) .setUri(Uri.parse("https://storage.googleapis.com/wvmedia/cenc/h264/tears/tears.mpd"))
.setMediaMetadata( .setMediaMetadata(
new MediaMetadata.Builder().setTitle("Widevine DASH cenc: Tears").build()) new MediaMetadata.Builder().setTrackTitle("Widevine DASH cenc: Tears").build())
.setMimeType(MIME_TYPE_DASH) .setMimeType(MIME_TYPE_DASH)
.setDrmUuid(C.WIDEVINE_UUID) .setDrmUuid(C.WIDEVINE_UUID)
.setDrmLicenseUri("https://proxy.uat.widevine.com/proxy?provider=widevine_test") .setDrmLicenseUri("https://proxy.uat.widevine.com/proxy?provider=widevine_test")
...@@ -72,7 +74,7 @@ import java.util.List; ...@@ -72,7 +74,7 @@ import java.util.List;
new MediaItem.Builder() new MediaItem.Builder()
.setUri("https://storage.googleapis.com/wvmedia/cbc1/h264/tears/tears_aes_cbc1.mpd") .setUri("https://storage.googleapis.com/wvmedia/cbc1/h264/tears/tears_aes_cbc1.mpd")
.setMediaMetadata( .setMediaMetadata(
new MediaMetadata.Builder().setTitle("Widevine DASH cbc1: Tears").build()) new MediaMetadata.Builder().setTrackTitle("Widevine DASH cbc1: Tears").build())
.setMimeType(MIME_TYPE_DASH) .setMimeType(MIME_TYPE_DASH)
.setDrmUuid(C.WIDEVINE_UUID) .setDrmUuid(C.WIDEVINE_UUID)
.setDrmLicenseUri("https://proxy.uat.widevine.com/proxy?provider=widevine_test") .setDrmLicenseUri("https://proxy.uat.widevine.com/proxy?provider=widevine_test")
...@@ -81,7 +83,7 @@ import java.util.List; ...@@ -81,7 +83,7 @@ import java.util.List;
new MediaItem.Builder() new MediaItem.Builder()
.setUri("https://storage.googleapis.com/wvmedia/cbcs/h264/tears/tears_aes_cbcs.mpd") .setUri("https://storage.googleapis.com/wvmedia/cbcs/h264/tears/tears_aes_cbcs.mpd")
.setMediaMetadata( .setMediaMetadata(
new MediaMetadata.Builder().setTitle("Widevine DASH cbcs: Tears").build()) new MediaMetadata.Builder().setTrackTitle("Widevine DASH cbcs: Tears").build())
.setMimeType(MIME_TYPE_DASH) .setMimeType(MIME_TYPE_DASH)
.setDrmUuid(C.WIDEVINE_UUID) .setDrmUuid(C.WIDEVINE_UUID)
.setDrmLicenseUri("https://proxy.uat.widevine.com/proxy?provider=widevine_test") .setDrmLicenseUri("https://proxy.uat.widevine.com/proxy?provider=widevine_test")
......
...@@ -211,7 +211,7 @@ public class MainActivity extends AppCompatActivity ...@@ -211,7 +211,7 @@ public class MainActivity extends AppCompatActivity
holder.item = Assertions.checkNotNull(playerManager.getItem(position)); holder.item = Assertions.checkNotNull(playerManager.getItem(position));
TextView view = holder.textView; TextView view = holder.textView;
view.setText(holder.item.mediaMetadata.title); view.setText(holder.item.mediaMetadata.trackTitle);
// TODO: Solve coloring using the theme's ColorStateList. // TODO: Solve coloring using the theme's ColorStateList.
view.setTextColor( view.setTextColor(
ColorUtils.setAlphaComponent( ColorUtils.setAlphaComponent(
...@@ -308,7 +308,7 @@ public class MainActivity extends AppCompatActivity ...@@ -308,7 +308,7 @@ public class MainActivity extends AppCompatActivity
@NonNull @NonNull
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View view = super.getView(position, convertView, parent); View view = super.getView(position, convertView, parent);
((TextView) view).setText(Util.castNonNull(getItem(position)).mediaMetadata.title); ((TextView) view).setText(Util.castNonNull(getItem(position)).mediaMetadata.trackTitle);
return view; return view;
} }
} }
......
...@@ -363,7 +363,8 @@ public class DownloadTracker { ...@@ -363,7 +363,8 @@ public class DownloadTracker {
private DownloadRequest buildDownloadRequest() { private DownloadRequest buildDownloadRequest() {
return downloadHelper return downloadHelper
.getDownloadRequest(Util.getUtf8Bytes(checkNotNull(mediaItem.mediaMetadata.title))) .getDownloadRequest(
Util.getUtf8Bytes(checkNotNull(mediaItem.mediaMetadata.trackTitle.toString())))
.copyWithKeySetId(keySetId); .copyWithKeySetId(keySetId);
} }
} }
......
...@@ -90,8 +90,8 @@ public class IntentUtil { ...@@ -90,8 +90,8 @@ public class IntentUtil {
MediaItem mediaItem = mediaItems.get(0); MediaItem mediaItem = mediaItems.get(0);
MediaItem.PlaybackProperties playbackProperties = checkNotNull(mediaItem.playbackProperties); MediaItem.PlaybackProperties playbackProperties = checkNotNull(mediaItem.playbackProperties);
intent.setAction(ACTION_VIEW).setData(mediaItem.playbackProperties.uri); intent.setAction(ACTION_VIEW).setData(mediaItem.playbackProperties.uri);
if (mediaItem.mediaMetadata.title != null) { if (mediaItem.mediaMetadata.trackTitle != null) {
intent.putExtra(TITLE_EXTRA, mediaItem.mediaMetadata.title); intent.putExtra(TITLE_EXTRA, mediaItem.mediaMetadata.trackTitle);
} }
addPlaybackPropertiesToIntent(playbackProperties, intent, /* extrasKeySuffix= */ ""); addPlaybackPropertiesToIntent(playbackProperties, intent, /* extrasKeySuffix= */ "");
addClippingPropertiesToIntent( addClippingPropertiesToIntent(
...@@ -106,8 +106,8 @@ public class IntentUtil { ...@@ -106,8 +106,8 @@ public class IntentUtil {
addPlaybackPropertiesToIntent(playbackProperties, intent, /* extrasKeySuffix= */ "_" + i); addPlaybackPropertiesToIntent(playbackProperties, intent, /* extrasKeySuffix= */ "_" + i);
addClippingPropertiesToIntent( addClippingPropertiesToIntent(
mediaItem.clippingProperties, intent, /* extrasKeySuffix= */ "_" + i); mediaItem.clippingProperties, intent, /* extrasKeySuffix= */ "_" + i);
if (mediaItem.mediaMetadata.title != null) { if (mediaItem.mediaMetadata.trackTitle != null) {
intent.putExtra(TITLE_EXTRA + ("_" + i), mediaItem.mediaMetadata.title); intent.putExtra(TITLE_EXTRA + ("_" + i), mediaItem.mediaMetadata.trackTitle);
} }
} }
} }
...@@ -121,7 +121,7 @@ public class IntentUtil { ...@@ -121,7 +121,7 @@ public class IntentUtil {
new MediaItem.Builder() new MediaItem.Builder()
.setUri(uri) .setUri(uri)
.setMimeType(mimeType) .setMimeType(mimeType)
.setMediaMetadata(new MediaMetadata.Builder().setTitle(title).build()) .setMediaMetadata(new MediaMetadata.Builder().setTrackTitle(title).build())
.setAdTagUri(intent.getStringExtra(AD_TAG_URI_EXTRA + extrasKeySuffix)) .setAdTagUri(intent.getStringExtra(AD_TAG_URI_EXTRA + extrasKeySuffix))
.setSubtitles(createSubtitlesFromIntent(intent, extrasKeySuffix)) .setSubtitles(createSubtitlesFromIntent(intent, extrasKeySuffix))
.setClipStartPositionMs( .setClipStartPositionMs(
......
...@@ -433,7 +433,7 @@ public class SampleChooserActivity extends AppCompatActivity ...@@ -433,7 +433,7 @@ public class SampleChooserActivity extends AppCompatActivity
Util.getAdaptiveMimeTypeForContentType(Util.inferContentType(uri, extension)); Util.getAdaptiveMimeTypeForContentType(Util.inferContentType(uri, extension));
mediaItem mediaItem
.setUri(uri) .setUri(uri)
.setMediaMetadata(new MediaMetadata.Builder().setTitle(title).build()) .setMediaMetadata(new MediaMetadata.Builder().setTrackTitle(title).build())
.setMimeType(adaptiveMimeType); .setMimeType(adaptiveMimeType);
if (subtitleUri != null) { if (subtitleUri != null) {
MediaItem.Subtitle subtitle = MediaItem.Subtitle subtitle =
......
...@@ -30,17 +30,24 @@ public final class MediaMetadata implements Bundleable { ...@@ -30,17 +30,24 @@ public final class MediaMetadata implements Bundleable {
/** A builder for {@link MediaMetadata} instances. */ /** A builder for {@link MediaMetadata} instances. */
public static final class Builder { public static final class Builder {
@Nullable private String title; @Nullable private CharSequence trackTitle;
public Builder() {} public Builder() {}
private Builder(MediaMetadata mediaMetadata) { private Builder(MediaMetadata mediaMetadata) {
this.title = mediaMetadata.title; this.trackTitle = mediaMetadata.trackTitle;
} }
/** Sets the optional title. */ /** @deprecated Use {@link #setTrackTitle(CharSequence)} instead. */
@Deprecated
public Builder setTitle(@Nullable String title) { public Builder setTitle(@Nullable String title) {
this.title = title; this.trackTitle = title;
return this;
}
/** Sets the optional track title. */
public Builder setTrackTitle(@Nullable CharSequence trackTitle) {
this.trackTitle = trackTitle;
return this; return this;
} }
...@@ -70,11 +77,15 @@ public final class MediaMetadata implements Bundleable { ...@@ -70,11 +77,15 @@ public final class MediaMetadata implements Bundleable {
/** Empty {@link MediaMetadata}. */ /** Empty {@link MediaMetadata}. */
public static final MediaMetadata EMPTY = new MediaMetadata.Builder().build(); public static final MediaMetadata EMPTY = new MediaMetadata.Builder().build();
/** Optional title. */ /** @deprecated Use {@link #trackTitle} instead. */
@Nullable public final String title; @Deprecated @Nullable public final String title;
/** Optional track title. */
@Nullable public final CharSequence trackTitle;
private MediaMetadata(Builder builder) { private MediaMetadata(Builder builder) {
this.title = builder.title; this.title = builder.trackTitle != null ? builder.trackTitle.toString() : null;
this.trackTitle = builder.trackTitle;
} }
/** Returns a new {@link Builder} instance with the current {@link MediaMetadata} fields. */ /** Returns a new {@link Builder} instance with the current {@link MediaMetadata} fields. */
...@@ -92,34 +103,36 @@ public final class MediaMetadata implements Bundleable { ...@@ -92,34 +103,36 @@ public final class MediaMetadata implements Bundleable {
} }
MediaMetadata other = (MediaMetadata) obj; MediaMetadata other = (MediaMetadata) obj;
return Util.areEqual(title, other.title); return Util.areEqual(trackTitle, other.trackTitle);
} }
@Override @Override
public int hashCode() { public int hashCode() {
return title == null ? 0 : title.hashCode(); return trackTitle == null ? 0 : trackTitle.hashCode();
} }
// Bundleable implementation. // Bundleable implementation.
@Documented @Documented
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
@IntDef({FIELD_TITLE}) @IntDef({FIELD_TRACK_TITLE})
private @interface FieldNumber {} private @interface FieldNumber {}
private static final int FIELD_TITLE = 0; private static final int FIELD_TRACK_TITLE = 0;
@Override @Override
public Bundle toBundle() { public Bundle toBundle() {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putString(keyForField(FIELD_TITLE), title); bundle.putCharSequence(keyForField(FIELD_TRACK_TITLE), trackTitle);
return bundle; return bundle;
} }
/** Object that can restore {@link MediaMetadata} from a {@link Bundle}. */ /** Object that can restore {@link MediaMetadata} from a {@link Bundle}. */
public static final Creator<MediaMetadata> CREATOR = public static final Creator<MediaMetadata> CREATOR =
bundle -> bundle ->
new MediaMetadata.Builder().setTitle(bundle.getString(keyForField(FIELD_TITLE))).build(); new MediaMetadata.Builder()
.setTrackTitle(bundle.getCharSequence(keyForField(FIELD_TRACK_TITLE)))
.build();
private static String keyForField(@FieldNumber int field) { private static String keyForField(@FieldNumber int field) {
return Integer.toString(field, Character.MAX_RADIX); return Integer.toString(field, Character.MAX_RADIX);
......
...@@ -46,7 +46,7 @@ public final class TextInformationFrame extends Id3Frame { ...@@ -46,7 +46,7 @@ public final class TextInformationFrame extends Id3Frame {
switch (id) { switch (id) {
case "TT2": case "TT2":
case "TIT2": case "TIT2":
builder.setTitle(value); builder.setTrackTitle(value);
break; break;
default: default:
break; break;
......
...@@ -299,7 +299,7 @@ public class MediaItemTest { ...@@ -299,7 +299,7 @@ public class MediaItemTest {
@Test @Test
public void builderSetMediaMetadata_setsMetadata() { public void builderSetMediaMetadata_setsMetadata() {
MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTitle("title").build(); MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTrackTitle("title").build();
MediaItem mediaItem = MediaItem mediaItem =
new MediaItem.Builder().setUri(URI_STRING).setMediaMetadata(mediaMetadata).build(); new MediaItem.Builder().setUri(URI_STRING).setMediaMetadata(mediaMetadata).build();
...@@ -368,7 +368,7 @@ public class MediaItemTest { ...@@ -368,7 +368,7 @@ public class MediaItemTest {
.setDrmSessionForClearTypes(Collections.singletonList(C.TRACK_TYPE_AUDIO)) .setDrmSessionForClearTypes(Collections.singletonList(C.TRACK_TYPE_AUDIO))
.setDrmKeySetId(new byte[] {1, 2, 3}) .setDrmKeySetId(new byte[] {1, 2, 3})
.setMediaId("mediaId") .setMediaId("mediaId")
.setMediaMetadata(new MediaMetadata.Builder().setTitle("title").build()) .setMediaMetadata(new MediaMetadata.Builder().setTrackTitle("title").build())
.setMimeType(MimeTypes.APPLICATION_MP4) .setMimeType(MimeTypes.APPLICATION_MP4)
.setUri(URI_STRING) .setUri(URI_STRING)
.setStreamKeys(Collections.singletonList(new StreamKey(1, 0, 0))) .setStreamKeys(Collections.singletonList(new StreamKey(1, 0, 0)))
...@@ -404,7 +404,7 @@ public class MediaItemTest { ...@@ -404,7 +404,7 @@ public class MediaItemTest {
.setLiveMaxOffsetMs(4_444) .setLiveMaxOffsetMs(4_444)
.setLiveMinPlaybackSpeed(.9f) .setLiveMinPlaybackSpeed(.9f)
.setLiveMaxPlaybackSpeed(1.1f) .setLiveMaxPlaybackSpeed(1.1f)
.setMediaMetadata(new MediaMetadata.Builder().setTitle("title").build()) .setMediaMetadata(new MediaMetadata.Builder().setTrackTitle("title").build())
.setClipStartPositionMs(100) .setClipStartPositionMs(100)
.setClipEndPositionMs(1_000) .setClipEndPositionMs(1_000)
.setClipRelativeToDefaultPosition(true) .setClipRelativeToDefaultPosition(true)
......
...@@ -31,21 +31,21 @@ public class MediaMetadataTest { ...@@ -31,21 +31,21 @@ public class MediaMetadataTest {
public void builder_minimal_correctDefaults() { public void builder_minimal_correctDefaults() {
MediaMetadata mediaMetadata = new MediaMetadata.Builder().build(); MediaMetadata mediaMetadata = new MediaMetadata.Builder().build();
assertThat(mediaMetadata.title).isNull(); assertThat(mediaMetadata.trackTitle).isNull();
} }
@Test @Test
public void builderSetTitle_setsTitle() { public void builderSetsTrackTitle_setsTrackTitle() {
String title = "title"; String title = "title";
MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTitle(title).build(); MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTrackTitle(title).build();
assertThat(mediaMetadata.title).isEqualTo(title); assertThat(mediaMetadata.trackTitle.toString()).isEqualTo(title);
} }
@Test @Test
public void roundTripViaBundle_yieldsEqualInstance() { public void roundTripViaBundle_yieldsEqualInstance() {
MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTitle("title").build(); MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTrackTitle("title").build();
assertThat(MediaMetadata.CREATOR.fromBundle(mediaMetadata.toBundle())).isEqualTo(mediaMetadata); assertThat(MediaMetadata.CREATOR.fromBundle(mediaMetadata.toBundle())).isEqualTo(mediaMetadata);
} }
...@@ -58,6 +58,6 @@ public class MediaMetadataTest { ...@@ -58,6 +58,6 @@ public class MediaMetadataTest {
MediaMetadata.Builder builder = MediaMetadata.EMPTY.buildUpon(); MediaMetadata.Builder builder = MediaMetadata.EMPTY.buildUpon();
entry.populateMediaMetadata(builder); entry.populateMediaMetadata(builder);
assertThat(builder.build().title).isEqualTo(title); assertThat(builder.build().trackTitle.toString()).isEqualTo(title);
} }
} }
...@@ -56,7 +56,7 @@ public final class IcyInfo implements Metadata.Entry { ...@@ -56,7 +56,7 @@ public final class IcyInfo implements Metadata.Entry {
@Override @Override
public void populateMediaMetadata(MediaMetadata.Builder builder) { public void populateMediaMetadata(MediaMetadata.Builder builder) {
if (title != null) { if (title != null) {
builder.setTitle(title); builder.setTrackTitle(title);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment