Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
223cc5f1
authored
Jul 23, 2019
by
olly
Committed by
Oliver Woodman
Jul 23, 2019
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Cast extension: Remove unused parts of MediaItem
PiperOrigin-RevId: 259586520
parent
2c318d7b
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
18 additions
and
198 deletions
demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/MainActivity.java
extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/MediaItem.java
extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/MediaItemTest.java
demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/MainActivity.java
View file @
223cc5f1
...
@@ -51,8 +51,6 @@ import java.util.Collections;
...
@@ -51,8 +51,6 @@ import java.util.Collections;
public
class
MainActivity
extends
AppCompatActivity
public
class
MainActivity
extends
AppCompatActivity
implements
OnClickListener
,
PlayerManager
.
Listener
{
implements
OnClickListener
,
PlayerManager
.
Listener
{
private
final
MediaItem
.
Builder
mediaItemBuilder
;
private
PlayerView
localPlayerView
;
private
PlayerView
localPlayerView
;
private
PlayerControlView
castControlView
;
private
PlayerControlView
castControlView
;
private
PlayerManager
playerManager
;
private
PlayerManager
playerManager
;
...
@@ -60,10 +58,6 @@ public class MainActivity extends AppCompatActivity
...
@@ -60,10 +58,6 @@ public class MainActivity extends AppCompatActivity
private
MediaQueueListAdapter
mediaQueueListAdapter
;
private
MediaQueueListAdapter
mediaQueueListAdapter
;
private
CastContext
castContext
;
private
CastContext
castContext
;
public
MainActivity
()
{
mediaItemBuilder
=
new
MediaItem
.
Builder
();
}
// Activity lifecycle methods.
// Activity lifecycle methods.
@Override
@Override
...
@@ -179,8 +173,8 @@ public class MainActivity extends AppCompatActivity
...
@@ -179,8 +173,8 @@ public class MainActivity extends AppCompatActivity
sampleList
.
setOnItemClickListener
(
sampleList
.
setOnItemClickListener
(
(
parent
,
view
,
position
,
id
)
->
{
(
parent
,
view
,
position
,
id
)
->
{
DemoUtil
.
Sample
sample
=
DemoUtil
.
SAMPLES
.
get
(
position
);
DemoUtil
.
Sample
sample
=
DemoUtil
.
SAMPLES
.
get
(
position
);
mediaItemBuilder
MediaItem
.
Builder
mediaItemBuilder
=
.
clea
r
()
new
MediaItem
.
Builde
r
()
.
setMedia
(
sample
.
uri
)
.
setMedia
(
sample
.
uri
)
.
setTitle
(
sample
.
name
)
.
setTitle
(
sample
.
name
)
.
setMimeType
(
sample
.
mimeType
);
.
setMimeType
(
sample
.
mimeType
);
...
...
extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/MediaItem.java
View file @
223cc5f1
...
@@ -17,8 +17,6 @@ package com.google.android.exoplayer2.ext.cast;
...
@@ -17,8 +17,6 @@ package com.google.android.exoplayer2.ext.cast;
import
android.net.Uri
;
import
android.net.Uri
;
import
androidx.annotation.Nullable
;
import
androidx.annotation.Nullable
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.util.Assertions
;
import
com.google.android.exoplayer2.util.Util
;
import
com.google.android.exoplayer2.util.Util
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.Collections
;
...
@@ -26,8 +24,6 @@ import java.util.HashMap;
...
@@ -26,8 +24,6 @@ import java.util.HashMap;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.UUID
;
import
java.util.UUID
;
import
org.checkerframework.checker.initialization.qual.UnknownInitialization
;
import
org.checkerframework.checker.nullness.qual.EnsuresNonNull
;
/** Representation of an item that can be played by a media player. */
/** Representation of an item that can be played by a media player. */
public
final
class
MediaItem
{
public
final
class
MediaItem
{
...
@@ -35,25 +31,16 @@ public final class MediaItem {
...
@@ -35,25 +31,16 @@ public final class MediaItem {
/** A builder for {@link MediaItem} instances. */
/** A builder for {@link MediaItem} instances. */
public
static
final
class
Builder
{
public
static
final
class
Builder
{
@Nullable
private
UUID
uuid
;
private
String
title
;
private
String
title
;
private
String
description
;
private
MediaItem
.
UriBundle
media
;
private
MediaItem
.
UriBundle
media
;
@Nullable
private
Object
attachment
;
private
List
<
MediaItem
.
DrmScheme
>
drmSchemes
;
private
List
<
MediaItem
.
DrmScheme
>
drmSchemes
;
private
long
startPositionUs
;
private
long
endPositionUs
;
private
String
mimeType
;
private
String
mimeType
;
/** Creates an builder with default field values. */
public
Builder
()
{
public
Builder
()
{
clearInternal
();
title
=
""
;
}
media
=
UriBundle
.
EMPTY
;
drmSchemes
=
Collections
.
emptyList
();
/** See {@link MediaItem#uuid}. */
mimeType
=
""
;
public
Builder
setUuid
(
UUID
uuid
)
{
this
.
uuid
=
uuid
;
return
this
;
}
}
/** See {@link MediaItem#title}. */
/** See {@link MediaItem#title}. */
...
@@ -62,12 +49,6 @@ public final class MediaItem {
...
@@ -62,12 +49,6 @@ public final class MediaItem {
return
this
;
return
this
;
}
}
/** See {@link MediaItem#description}. */
public
Builder
setDescription
(
String
description
)
{
this
.
description
=
description
;
return
this
;
}
/** Equivalent to {@link #setMedia(UriBundle) setMedia(new UriBundle(Uri.parse(uri)))}. */
/** Equivalent to {@link #setMedia(UriBundle) setMedia(new UriBundle(Uri.parse(uri)))}. */
public
Builder
setMedia
(
String
uri
)
{
public
Builder
setMedia
(
String
uri
)
{
return
setMedia
(
new
UriBundle
(
Uri
.
parse
(
uri
)));
return
setMedia
(
new
UriBundle
(
Uri
.
parse
(
uri
)));
...
@@ -79,84 +60,26 @@ public final class MediaItem {
...
@@ -79,84 +60,26 @@ public final class MediaItem {
return
this
;
return
this
;
}
}
/** See {@link MediaItem#attachment}. */
public
Builder
setAttachment
(
Object
attachment
)
{
this
.
attachment
=
attachment
;
return
this
;
}
/** See {@link MediaItem#drmSchemes}. */
/** See {@link MediaItem#drmSchemes}. */
public
Builder
setDrmSchemes
(
List
<
MediaItem
.
DrmScheme
>
drmSchemes
)
{
public
Builder
setDrmSchemes
(
List
<
MediaItem
.
DrmScheme
>
drmSchemes
)
{
this
.
drmSchemes
=
Collections
.
unmodifiableList
(
new
ArrayList
<>(
drmSchemes
));
this
.
drmSchemes
=
Collections
.
unmodifiableList
(
new
ArrayList
<>(
drmSchemes
));
return
this
;
return
this
;
}
}
/** See {@link MediaItem#startPositionUs}. */
public
Builder
setStartPositionUs
(
long
startPositionUs
)
{
this
.
startPositionUs
=
startPositionUs
;
return
this
;
}
/** See {@link MediaItem#endPositionUs}. */
public
Builder
setEndPositionUs
(
long
endPositionUs
)
{
Assertions
.
checkArgument
(
endPositionUs
!=
C
.
TIME_END_OF_SOURCE
);
this
.
endPositionUs
=
endPositionUs
;
return
this
;
}
/** See {@link MediaItem#mimeType}. */
/** See {@link MediaItem#mimeType}. */
public
Builder
setMimeType
(
String
mimeType
)
{
public
Builder
setMimeType
(
String
mimeType
)
{
this
.
mimeType
=
mimeType
;
this
.
mimeType
=
mimeType
;
return
this
;
return
this
;
}
}
/**
/** Returns a new {@link MediaItem} instance with the current builder values. */
* Equivalent to {@link #build()}, except it also calls {@link #clear()} after creating the
* {@link MediaItem}.
*/
public
MediaItem
buildAndClear
()
{
MediaItem
item
=
build
();
clearInternal
();
return
item
;
}
/** Returns the builder to default values. */
public
Builder
clear
()
{
clearInternal
();
return
this
;
}
/**
* Returns a new {@link MediaItem} instance with the current builder values. This method also
* clears any values passed to {@link #setUuid(UUID)}.
*/
public
MediaItem
build
()
{
public
MediaItem
build
()
{
UUID
uuid
=
this
.
uuid
;
this
.
uuid
=
null
;
return
new
MediaItem
(
return
new
MediaItem
(
uuid
!=
null
?
uuid
:
UUID
.
randomUUID
(),
title
,
title
,
description
,
media
,
media
,
attachment
,
drmSchemes
,
drmSchemes
,
startPositionUs
,
endPositionUs
,
mimeType
);
mimeType
);
}
}
@EnsuresNonNull
({
"title"
,
"description"
,
"media"
,
"drmSchemes"
,
"mimeType"
})
private
void
clearInternal
(
@UnknownInitialization
Builder
this
)
{
uuid
=
null
;
title
=
""
;
description
=
""
;
media
=
UriBundle
.
EMPTY
;
attachment
=
null
;
drmSchemes
=
Collections
.
emptyList
();
startPositionUs
=
C
.
TIME_UNSET
;
endPositionUs
=
C
.
TIME_UNSET
;
mimeType
=
""
;
}
}
}
/** Bundles a resource's URI with headers to attach to any request to that URI. */
/** Bundles a resource's URI with headers to attach to any request to that URI. */
...
@@ -259,50 +182,21 @@ public final class MediaItem {
...
@@ -259,50 +182,21 @@ public final class MediaItem {
}
}
}
}
/**
* A UUID that identifies this item, potentially across different devices. The default value is
* obtained by calling {@link UUID#randomUUID()}.
*/
public
final
UUID
uuid
;
/** The title of the item. The default value is an empty string. */
/** The title of the item. The default value is an empty string. */
public
final
String
title
;
public
final
String
title
;
/** A description for the item. The default value is an empty string. */
public
final
String
description
;
/**
/**
* A {@link UriBundle} to fetch the media content. The default value is {@link UriBundle#EMPTY}.
* A {@link UriBundle} to fetch the media content. The default value is {@link UriBundle#EMPTY}.
*/
*/
public
final
UriBundle
media
;
public
final
UriBundle
media
;
/**
/**
* An optional opaque object to attach to the media item. Handling of this attachment is
* implementation specific. The default value is null.
*/
@Nullable
public
final
Object
attachment
;
/**
* Immutable list of {@link DrmScheme} instances sorted in decreasing order of preference. The
* Immutable list of {@link DrmScheme} instances sorted in decreasing order of preference. The
* default value is an empty list.
* default value is an empty list.
*/
*/
public
final
List
<
DrmScheme
>
drmSchemes
;
public
final
List
<
DrmScheme
>
drmSchemes
;
/**
/**
* The position in microseconds at which playback of this media item should start. {@link
* C#TIME_UNSET} if playback should start at the default position. The default value is {@link
* C#TIME_UNSET}.
*/
public
final
long
startPositionUs
;
/**
* The position in microseconds at which playback of this media item should end. {@link
* C#TIME_UNSET} if playback should end at the end of the media. The default value is {@link
* C#TIME_UNSET}.
*/
public
final
long
endPositionUs
;
/**
* The mime type of this media item. The default value is an empty string.
* The mime type of this media item. The default value is an empty string.
*
*
* <p>The usage of this mime type is optional and player implementation specific.
* <p>The usage of this mime type is optional and player implementation specific.
...
@@ -320,49 +214,29 @@ public final class MediaItem {
...
@@ -320,49 +214,29 @@ public final class MediaItem {
return
false
;
return
false
;
}
}
MediaItem
mediaItem
=
(
MediaItem
)
other
;
MediaItem
mediaItem
=
(
MediaItem
)
other
;
return
startPositionUs
==
mediaItem
.
startPositionUs
return
title
.
equals
(
mediaItem
.
title
)
&&
endPositionUs
==
mediaItem
.
endPositionUs
&&
uuid
.
equals
(
mediaItem
.
uuid
)
&&
title
.
equals
(
mediaItem
.
title
)
&&
description
.
equals
(
mediaItem
.
description
)
&&
media
.
equals
(
mediaItem
.
media
)
&&
media
.
equals
(
mediaItem
.
media
)
&&
Util
.
areEqual
(
attachment
,
mediaItem
.
attachment
)
&&
drmSchemes
.
equals
(
mediaItem
.
drmSchemes
)
&&
drmSchemes
.
equals
(
mediaItem
.
drmSchemes
)
&&
mimeType
.
equals
(
mediaItem
.
mimeType
);
&&
mimeType
.
equals
(
mediaItem
.
mimeType
);
}
}
@Override
@Override
public
int
hashCode
()
{
public
int
hashCode
()
{
int
result
=
uuid
.
hashCode
();
int
result
=
title
.
hashCode
();
result
=
31
*
result
+
title
.
hashCode
();
result
=
31
*
result
+
description
.
hashCode
();
result
=
31
*
result
+
media
.
hashCode
();
result
=
31
*
result
+
media
.
hashCode
();
result
=
31
*
result
+
(
attachment
!=
null
?
attachment
.
hashCode
()
:
0
);
result
=
31
*
result
+
drmSchemes
.
hashCode
();
result
=
31
*
result
+
drmSchemes
.
hashCode
();
result
=
31
*
result
+
(
int
)
(
startPositionUs
^
(
startPositionUs
>>>
32
));
result
=
31
*
result
+
(
int
)
(
endPositionUs
^
(
endPositionUs
>>>
32
));
result
=
31
*
result
+
mimeType
.
hashCode
();
result
=
31
*
result
+
mimeType
.
hashCode
();
return
result
;
return
result
;
}
}
private
MediaItem
(
private
MediaItem
(
UUID
uuid
,
String
title
,
String
title
,
String
description
,
UriBundle
media
,
UriBundle
media
,
@Nullable
Object
attachment
,
List
<
DrmScheme
>
drmSchemes
,
List
<
DrmScheme
>
drmSchemes
,
long
startPositionUs
,
long
endPositionUs
,
String
mimeType
)
{
String
mimeType
)
{
this
.
uuid
=
uuid
;
this
.
title
=
title
;
this
.
title
=
title
;
this
.
description
=
description
;
this
.
media
=
media
;
this
.
media
=
media
;
this
.
attachment
=
attachment
;
this
.
drmSchemes
=
drmSchemes
;
this
.
drmSchemes
=
drmSchemes
;
this
.
startPositionUs
=
startPositionUs
;
this
.
endPositionUs
=
endPositionUs
;
this
.
mimeType
=
mimeType
;
this
.
mimeType
=
mimeType
;
}
}
}
}
extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/MediaItemTest.java
View file @
223cc5f1
...
@@ -24,7 +24,6 @@ import com.google.android.exoplayer2.util.MimeTypes;
...
@@ -24,7 +24,6 @@ import com.google.android.exoplayer2.util.MimeTypes;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.UUID
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runner.RunWith
;
...
@@ -33,31 +32,15 @@ import org.junit.runner.RunWith;
...
@@ -33,31 +32,15 @@ import org.junit.runner.RunWith;
public
class
MediaItemTest
{
public
class
MediaItemTest
{
@Test
@Test
public
void
buildMediaItem_resetsUuid
()
{
MediaItem
.
Builder
builder
=
new
MediaItem
.
Builder
();
UUID
uuid
=
new
UUID
(
1
,
1
);
MediaItem
item1
=
builder
.
setUuid
(
uuid
).
build
();
MediaItem
item2
=
builder
.
build
();
MediaItem
item3
=
builder
.
build
();
assertThat
(
item1
.
uuid
).
isEqualTo
(
uuid
);
assertThat
(
item2
.
uuid
).
isNotEqualTo
(
uuid
);
assertThat
(
item3
.
uuid
).
isNotEqualTo
(
item2
.
uuid
);
assertThat
(
item3
.
uuid
).
isNotEqualTo
(
uuid
);
}
@Test
public
void
buildMediaItem_doesNotChangeState
()
{
public
void
buildMediaItem_doesNotChangeState
()
{
MediaItem
.
Builder
builder
=
new
MediaItem
.
Builder
();
MediaItem
.
Builder
builder
=
new
MediaItem
.
Builder
();
MediaItem
item1
=
MediaItem
item1
=
builder
builder
.
setUuid
(
new
UUID
(
0
,
1
))
.
setMedia
(
"http://example.com"
)
.
setMedia
(
"http://example.com"
)
.
setTitle
(
"title"
)
.
setTitle
(
"title"
)
.
setMimeType
(
MimeTypes
.
AUDIO_MP4
)
.
setMimeType
(
MimeTypes
.
AUDIO_MP4
)
.
setStartPositionUs
(
3
)
.
setEndPositionUs
(
4
)
.
build
();
.
build
();
MediaItem
item2
=
builder
.
setUuid
(
new
UUID
(
0
,
1
)).
build
();
MediaItem
item2
=
builder
.
build
();
assertThat
(
item1
).
isEqualTo
(
item2
);
assertThat
(
item1
).
isEqualTo
(
item2
);
}
}
...
@@ -67,62 +50,31 @@ public class MediaItemTest {
...
@@ -67,62 +50,31 @@ public class MediaItemTest {
}
}
@Test
@Test
public
void
buildAndClear_assertDefaultValues
()
{
MediaItem
.
Builder
builder
=
new
MediaItem
.
Builder
();
builder
.
setMedia
(
"http://example.com"
)
.
setTitle
(
"title"
)
.
setMimeType
(
MimeTypes
.
AUDIO_MP4
)
.
setStartPositionUs
(
3
)
.
setEndPositionUs
(
4
)
.
buildAndClear
();
assertDefaultValues
(
builder
.
build
());
}
@Test
public
void
equals_withEqualDrmSchemes_returnsTrue
()
{
public
void
equals_withEqualDrmSchemes_returnsTrue
()
{
MediaItem
.
Builder
builder
=
new
MediaItem
.
Builder
();
MediaItem
.
Builder
builder
1
=
new
MediaItem
.
Builder
();
MediaItem
mediaItem1
=
MediaItem
mediaItem1
=
builder
builder1
.
setMedia
(
"www.google.com"
).
setDrmSchemes
(
createDummyDrmSchemes
(
1
)).
build
();
.
setUuid
(
new
UUID
(
0
,
1
))
MediaItem
.
Builder
builder2
=
new
MediaItem
.
Builder
();
.
setMedia
(
"www.google.com"
)
.
setDrmSchemes
(
createDummyDrmSchemes
(
1
))
.
buildAndClear
();
MediaItem
mediaItem2
=
MediaItem
mediaItem2
=
builder
builder2
.
setMedia
(
"www.google.com"
).
setDrmSchemes
(
createDummyDrmSchemes
(
1
)).
build
();
.
setUuid
(
new
UUID
(
0
,
1
))
.
setMedia
(
"www.google.com"
)
.
setDrmSchemes
(
createDummyDrmSchemes
(
1
))
.
buildAndClear
();
assertThat
(
mediaItem1
).
isEqualTo
(
mediaItem2
);
assertThat
(
mediaItem1
).
isEqualTo
(
mediaItem2
);
}
}
@Test
@Test
public
void
equals_withDifferentDrmRequestHeaders_returnsFalse
()
{
public
void
equals_withDifferentDrmRequestHeaders_returnsFalse
()
{
MediaItem
.
Builder
builder
=
new
MediaItem
.
Builder
();
MediaItem
.
Builder
builder
1
=
new
MediaItem
.
Builder
();
MediaItem
mediaItem1
=
MediaItem
mediaItem1
=
builder
builder1
.
setMedia
(
"www.google.com"
).
setDrmSchemes
(
createDummyDrmSchemes
(
1
)).
build
();
.
setUuid
(
new
UUID
(
0
,
1
))
MediaItem
.
Builder
builder2
=
new
MediaItem
.
Builder
();
.
setMedia
(
"www.google.com"
)
.
setDrmSchemes
(
createDummyDrmSchemes
(
1
))
.
buildAndClear
();
MediaItem
mediaItem2
=
MediaItem
mediaItem2
=
builder
builder2
.
setMedia
(
"www.google.com"
).
setDrmSchemes
(
createDummyDrmSchemes
(
2
)).
build
();
.
setUuid
(
new
UUID
(
0
,
1
))
.
setMedia
(
"www.google.com"
)
.
setDrmSchemes
(
createDummyDrmSchemes
(
2
))
.
buildAndClear
();
assertThat
(
mediaItem1
).
isNotEqualTo
(
mediaItem2
);
assertThat
(
mediaItem1
).
isNotEqualTo
(
mediaItem2
);
}
}
private
static
void
assertDefaultValues
(
MediaItem
item
)
{
private
static
void
assertDefaultValues
(
MediaItem
item
)
{
assertThat
(
item
.
title
).
isEmpty
();
assertThat
(
item
.
title
).
isEmpty
();
assertThat
(
item
.
description
).
isEmpty
();
assertThat
(
item
.
media
.
uri
).
isEqualTo
(
Uri
.
EMPTY
);
assertThat
(
item
.
media
.
uri
).
isEqualTo
(
Uri
.
EMPTY
);
assertThat
(
item
.
attachment
).
isNull
();
assertThat
(
item
.
drmSchemes
).
isEmpty
();
assertThat
(
item
.
drmSchemes
).
isEmpty
();
assertThat
(
item
.
startPositionUs
).
isEqualTo
(
C
.
TIME_UNSET
);
assertThat
(
item
.
endPositionUs
).
isEqualTo
(
C
.
TIME_UNSET
);
assertThat
(
item
.
mimeType
).
isEmpty
();
assertThat
(
item
.
mimeType
).
isEmpty
();
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment