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
d77d661e
authored
Jul 29, 2019
by
olly
Committed by
Oliver Woodman
Jul 29, 2019
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Default viewport constraints to match primary display
PiperOrigin-RevId: 260479923
parent
7703676c
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
255 additions
and
127 deletions
RELEASENOTES.md
demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/PlayerManager.java
demos/gvr/src/main/java/com/google/android/exoplayer2/gvrdemo/PlayerActivity.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java
extensions/flac/src/androidTest/java/com/google/android/exoplayer2/ext/flac/FlacPlaybackTest.java
extensions/opus/src/androidTest/java/com/google/android/exoplayer2/ext/opus/OpusPlaybackTest.java
extensions/vp9/src/androidTest/java/com/google/android/exoplayer2/ext/vp9/VpxPlaybackTest.java
library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerFactory.java
library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java
library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java
library/core/src/test/java/com/google/android/exoplayer2/offline/DownloadHelperTest.java
library/core/src/test/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelectorTest.java
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/offline/DownloadHelperTest.java
library/hls/src/test/java/com/google/android/exoplayer2/source/hls/offline/DownloadHelperTest.java
library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/offline/DownloadHelperTest.java
playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java
testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java
testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoPlayerTestRunner.java
RELEASENOTES.md
View file @
d77d661e
...
@@ -2,6 +2,8 @@
...
@@ -2,6 +2,8 @@
### dev-v2 (not yet released) ###
### dev-v2 (not yet released) ###
*
Update
`DefaultTrackSelector`
to apply a viewport constraint for the default
display by default.
*
Add
`PlaybackStatsListener`
to collect
`PlaybackStats`
for playbacks analysis
*
Add
`PlaybackStatsListener`
to collect
`PlaybackStats`
for playbacks analysis
and analytics reporting (TODO: link to developer guide page/blog post).
and analytics reporting (TODO: link to developer guide page/blog post).
*
Add basic DRM support to the Cast demo app.
*
Add basic DRM support to the Cast demo app.
...
...
demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/PlayerManager.java
View file @
d77d661e
...
@@ -21,13 +21,11 @@ import androidx.annotation.Nullable;
...
@@ -21,13 +21,11 @@ import androidx.annotation.Nullable;
import
android.view.KeyEvent
;
import
android.view.KeyEvent
;
import
android.view.View
;
import
android.view.View
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.DefaultRenderersFactory
;
import
com.google.android.exoplayer2.ExoPlayerFactory
;
import
com.google.android.exoplayer2.ExoPlayerFactory
;
import
com.google.android.exoplayer2.Player
;
import
com.google.android.exoplayer2.Player
;
import
com.google.android.exoplayer2.Player.DiscontinuityReason
;
import
com.google.android.exoplayer2.Player.DiscontinuityReason
;
import
com.google.android.exoplayer2.Player.EventListener
;
import
com.google.android.exoplayer2.Player.EventListener
;
import
com.google.android.exoplayer2.Player.TimelineChangeReason
;
import
com.google.android.exoplayer2.Player.TimelineChangeReason
;
import
com.google.android.exoplayer2.RenderersFactory
;
import
com.google.android.exoplayer2.SimpleExoPlayer
;
import
com.google.android.exoplayer2.SimpleExoPlayer
;
import
com.google.android.exoplayer2.Timeline
;
import
com.google.android.exoplayer2.Timeline
;
import
com.google.android.exoplayer2.Timeline.Period
;
import
com.google.android.exoplayer2.Timeline.Period
;
...
@@ -40,7 +38,6 @@ import com.google.android.exoplayer2.source.ProgressiveMediaSource;
...
@@ -40,7 +38,6 @@ import com.google.android.exoplayer2.source.ProgressiveMediaSource;
import
com.google.android.exoplayer2.source.dash.DashMediaSource
;
import
com.google.android.exoplayer2.source.dash.DashMediaSource
;
import
com.google.android.exoplayer2.source.hls.HlsMediaSource
;
import
com.google.android.exoplayer2.source.hls.HlsMediaSource
;
import
com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource
;
import
com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource
;
import
com.google.android.exoplayer2.trackselection.DefaultTrackSelector
;
import
com.google.android.exoplayer2.ui.PlayerControlView
;
import
com.google.android.exoplayer2.ui.PlayerControlView
;
import
com.google.android.exoplayer2.ui.PlayerView
;
import
com.google.android.exoplayer2.ui.PlayerView
;
import
com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory
;
import
com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory
;
...
@@ -99,9 +96,7 @@ import org.json.JSONObject;
...
@@ -99,9 +96,7 @@ import org.json.JSONObject;
currentItemIndex
=
C
.
INDEX_UNSET
;
currentItemIndex
=
C
.
INDEX_UNSET
;
concatenatingMediaSource
=
new
ConcatenatingMediaSource
();
concatenatingMediaSource
=
new
ConcatenatingMediaSource
();
DefaultTrackSelector
trackSelector
=
new
DefaultTrackSelector
();
exoPlayer
=
ExoPlayerFactory
.
newSimpleInstance
(
context
);
RenderersFactory
renderersFactory
=
new
DefaultRenderersFactory
(
context
);
exoPlayer
=
ExoPlayerFactory
.
newSimpleInstance
(
context
,
renderersFactory
,
trackSelector
);
exoPlayer
.
addListener
(
this
);
exoPlayer
.
addListener
(
this
);
localPlayerView
.
setPlayer
(
exoPlayer
);
localPlayerView
.
setPlayer
(
exoPlayer
);
...
...
demos/gvr/src/main/java/com/google/android/exoplayer2/gvrdemo/PlayerActivity.java
View file @
d77d661e
...
@@ -35,7 +35,6 @@ import com.google.android.exoplayer2.source.TrackGroupArray;
...
@@ -35,7 +35,6 @@ import com.google.android.exoplayer2.source.TrackGroupArray;
import
com.google.android.exoplayer2.source.dash.DashMediaSource
;
import
com.google.android.exoplayer2.source.dash.DashMediaSource
;
import
com.google.android.exoplayer2.source.hls.HlsMediaSource
;
import
com.google.android.exoplayer2.source.hls.HlsMediaSource
;
import
com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource
;
import
com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource
;
import
com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection
;
import
com.google.android.exoplayer2.trackselection.DefaultTrackSelector
;
import
com.google.android.exoplayer2.trackselection.DefaultTrackSelector
;
import
com.google.android.exoplayer2.trackselection.MappingTrackSelector.MappedTrackInfo
;
import
com.google.android.exoplayer2.trackselection.MappingTrackSelector.MappedTrackInfo
;
import
com.google.android.exoplayer2.trackselection.TrackSelectionArray
;
import
com.google.android.exoplayer2.trackselection.TrackSelectionArray
;
...
@@ -135,7 +134,7 @@ public class PlayerActivity extends GvrPlayerActivity implements PlaybackPrepare
...
@@ -135,7 +134,7 @@ public class PlayerActivity extends GvrPlayerActivity implements PlaybackPrepare
DefaultRenderersFactory
renderersFactory
=
new
DefaultRenderersFactory
(
this
);
DefaultRenderersFactory
renderersFactory
=
new
DefaultRenderersFactory
(
this
);
trackSelector
=
new
DefaultTrackSelector
(
new
AdaptiveTrackSelection
.
Factory
()
);
trackSelector
=
new
DefaultTrackSelector
(
/* context= */
this
);
lastSeenTrackGroupArray
=
null
;
lastSeenTrackGroupArray
=
null
;
player
=
player
=
...
...
demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java
View file @
d77d661e
...
@@ -30,6 +30,7 @@ import com.google.android.exoplayer2.offline.DownloadIndex;
...
@@ -30,6 +30,7 @@ import com.google.android.exoplayer2.offline.DownloadIndex;
import
com.google.android.exoplayer2.offline.DownloadManager
;
import
com.google.android.exoplayer2.offline.DownloadManager
;
import
com.google.android.exoplayer2.offline.DownloadRequest
;
import
com.google.android.exoplayer2.offline.DownloadRequest
;
import
com.google.android.exoplayer2.offline.DownloadService
;
import
com.google.android.exoplayer2.offline.DownloadService
;
import
com.google.android.exoplayer2.trackselection.DefaultTrackSelector
;
import
com.google.android.exoplayer2.trackselection.MappingTrackSelector.MappedTrackInfo
;
import
com.google.android.exoplayer2.trackselection.MappingTrackSelector.MappedTrackInfo
;
import
com.google.android.exoplayer2.upstream.DataSource
;
import
com.google.android.exoplayer2.upstream.DataSource
;
import
com.google.android.exoplayer2.util.Log
;
import
com.google.android.exoplayer2.util.Log
;
...
@@ -55,6 +56,7 @@ public class DownloadTracker {
...
@@ -55,6 +56,7 @@ public class DownloadTracker {
private
final
CopyOnWriteArraySet
<
Listener
>
listeners
;
private
final
CopyOnWriteArraySet
<
Listener
>
listeners
;
private
final
HashMap
<
Uri
,
Download
>
downloads
;
private
final
HashMap
<
Uri
,
Download
>
downloads
;
private
final
DownloadIndex
downloadIndex
;
private
final
DownloadIndex
downloadIndex
;
private
final
DefaultTrackSelector
.
Parameters
trackSelectorParameters
;
@Nullable
private
StartDownloadDialogHelper
startDownloadDialogHelper
;
@Nullable
private
StartDownloadDialogHelper
startDownloadDialogHelper
;
...
@@ -65,6 +67,7 @@ public class DownloadTracker {
...
@@ -65,6 +67,7 @@ public class DownloadTracker {
listeners
=
new
CopyOnWriteArraySet
<>();
listeners
=
new
CopyOnWriteArraySet
<>();
downloads
=
new
HashMap
<>();
downloads
=
new
HashMap
<>();
downloadIndex
=
downloadManager
.
getDownloadIndex
();
downloadIndex
=
downloadManager
.
getDownloadIndex
();
trackSelectorParameters
=
DownloadHelper
.
getDefaultTrackSelectorParameters
(
context
);
downloadManager
.
addListener
(
new
DownloadManagerListener
());
downloadManager
.
addListener
(
new
DownloadManagerListener
());
loadDownloads
();
loadDownloads
();
}
}
...
@@ -123,13 +126,13 @@ public class DownloadTracker {
...
@@ -123,13 +126,13 @@ public class DownloadTracker {
int
type
=
Util
.
inferContentType
(
uri
,
extension
);
int
type
=
Util
.
inferContentType
(
uri
,
extension
);
switch
(
type
)
{
switch
(
type
)
{
case
C
.
TYPE_DASH
:
case
C
.
TYPE_DASH
:
return
DownloadHelper
.
forDash
(
uri
,
dataSourceFactory
,
renderersFactory
);
return
DownloadHelper
.
forDash
(
context
,
uri
,
dataSourceFactory
,
renderersFactory
);
case
C
.
TYPE_SS
:
case
C
.
TYPE_SS
:
return
DownloadHelper
.
forSmoothStreaming
(
uri
,
dataSourceFactory
,
renderersFactory
);
return
DownloadHelper
.
forSmoothStreaming
(
context
,
uri
,
dataSourceFactory
,
renderersFactory
);
case
C
.
TYPE_HLS
:
case
C
.
TYPE_HLS
:
return
DownloadHelper
.
forHls
(
uri
,
dataSourceFactory
,
renderersFactory
);
return
DownloadHelper
.
forHls
(
context
,
uri
,
dataSourceFactory
,
renderersFactory
);
case
C
.
TYPE_OTHER
:
case
C
.
TYPE_OTHER
:
return
DownloadHelper
.
forProgressive
(
uri
);
return
DownloadHelper
.
forProgressive
(
context
,
uri
);
default
:
default
:
throw
new
IllegalStateException
(
"Unsupported type: "
+
type
);
throw
new
IllegalStateException
(
"Unsupported type: "
+
type
);
}
}
...
@@ -202,7 +205,7 @@ public class DownloadTracker {
...
@@ -202,7 +205,7 @@ public class DownloadTracker {
TrackSelectionDialog
.
createForMappedTrackInfoAndParameters
(
TrackSelectionDialog
.
createForMappedTrackInfoAndParameters
(
/* titleId= */
R
.
string
.
exo_download_description
,
/* titleId= */
R
.
string
.
exo_download_description
,
mappedTrackInfo
,
mappedTrackInfo
,
/* initialParameters= */
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS
,
trackSelectorParameters
,
/* allowAdaptiveSelections =*/
false
,
/* allowAdaptiveSelections =*/
false
,
/* allowMultipleOverrides= */
true
,
/* allowMultipleOverrides= */
true
,
/* onClickListener= */
this
,
/* onClickListener= */
this
,
...
@@ -212,9 +215,7 @@ public class DownloadTracker {
...
@@ -212,9 +215,7 @@ public class DownloadTracker {
@Override
@Override
public
void
onPrepareError
(
DownloadHelper
helper
,
IOException
e
)
{
public
void
onPrepareError
(
DownloadHelper
helper
,
IOException
e
)
{
Toast
.
makeText
(
Toast
.
makeText
(
context
,
R
.
string
.
download_start_error
,
Toast
.
LENGTH_LONG
).
show
();
context
.
getApplicationContext
(),
R
.
string
.
download_start_error
,
Toast
.
LENGTH_LONG
)
.
show
();
Log
.
e
(
TAG
,
"Failed to start download"
,
e
);
Log
.
e
(
TAG
,
"Failed to start download"
,
e
);
}
}
...
@@ -229,7 +230,7 @@ public class DownloadTracker {
...
@@ -229,7 +230,7 @@ public class DownloadTracker {
downloadHelper
.
addTrackSelectionForSingleRenderer
(
downloadHelper
.
addTrackSelectionForSingleRenderer
(
periodIndex
,
periodIndex
,
/* rendererIndex= */
i
,
/* rendererIndex= */
i
,
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS
,
trackSelectorParameters
,
trackSelectionDialog
.
getOverrides
(
/* rendererIndex= */
i
));
trackSelectionDialog
.
getOverrides
(
/* rendererIndex= */
i
));
}
}
}
}
...
...
demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java
View file @
d77d661e
...
@@ -195,7 +195,7 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -195,7 +195,7 @@ public class PlayerActivity extends AppCompatActivity
startWindow
=
savedInstanceState
.
getInt
(
KEY_WINDOW
);
startWindow
=
savedInstanceState
.
getInt
(
KEY_WINDOW
);
startPosition
=
savedInstanceState
.
getLong
(
KEY_POSITION
);
startPosition
=
savedInstanceState
.
getLong
(
KEY_POSITION
);
}
else
{
}
else
{
trackSelectorParameters
=
new
DefaultTrackSelector
.
ParametersBuilder
().
build
(
);
trackSelectorParameters
=
DefaultTrackSelector
.
Parameters
.
getDefaults
(
/* context= */
this
);
clearStartPosition
();
clearStartPosition
();
}
}
}
}
...
@@ -411,7 +411,7 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -411,7 +411,7 @@ public class PlayerActivity extends AppCompatActivity
RenderersFactory
renderersFactory
=
RenderersFactory
renderersFactory
=
((
DemoApplication
)
getApplication
()).
buildRenderersFactory
(
preferExtensionDecoders
);
((
DemoApplication
)
getApplication
()).
buildRenderersFactory
(
preferExtensionDecoders
);
trackSelector
=
new
DefaultTrackSelector
(
trackSelectionFactory
);
trackSelector
=
new
DefaultTrackSelector
(
/* context= */
this
,
trackSelectionFactory
);
trackSelector
.
setParameters
(
trackSelectorParameters
);
trackSelector
.
setParameters
(
trackSelectorParameters
);
lastSeenTrackGroupArray
=
null
;
lastSeenTrackGroupArray
=
null
;
...
...
extensions/flac/src/androidTest/java/com/google/android/exoplayer2/ext/flac/FlacPlaybackTest.java
View file @
d77d661e
...
@@ -82,7 +82,7 @@ public class FlacPlaybackTest {
...
@@ -82,7 +82,7 @@ public class FlacPlaybackTest {
public
void
run
()
{
public
void
run
()
{
Looper
.
prepare
();
Looper
.
prepare
();
LibflacAudioRenderer
audioRenderer
=
new
LibflacAudioRenderer
();
LibflacAudioRenderer
audioRenderer
=
new
LibflacAudioRenderer
();
DefaultTrackSelector
trackSelector
=
new
DefaultTrackSelector
();
DefaultTrackSelector
trackSelector
=
new
DefaultTrackSelector
(
context
);
player
=
ExoPlayerFactory
.
newInstance
(
context
,
new
Renderer
[]
{
audioRenderer
},
trackSelector
);
player
=
ExoPlayerFactory
.
newInstance
(
context
,
new
Renderer
[]
{
audioRenderer
},
trackSelector
);
player
.
addListener
(
this
);
player
.
addListener
(
this
);
MediaSource
mediaSource
=
MediaSource
mediaSource
=
...
...
extensions/opus/src/androidTest/java/com/google/android/exoplayer2/ext/opus/OpusPlaybackTest.java
View file @
d77d661e
...
@@ -82,7 +82,7 @@ public class OpusPlaybackTest {
...
@@ -82,7 +82,7 @@ public class OpusPlaybackTest {
public
void
run
()
{
public
void
run
()
{
Looper
.
prepare
();
Looper
.
prepare
();
LibopusAudioRenderer
audioRenderer
=
new
LibopusAudioRenderer
();
LibopusAudioRenderer
audioRenderer
=
new
LibopusAudioRenderer
();
DefaultTrackSelector
trackSelector
=
new
DefaultTrackSelector
();
DefaultTrackSelector
trackSelector
=
new
DefaultTrackSelector
(
context
);
player
=
ExoPlayerFactory
.
newInstance
(
context
,
new
Renderer
[]
{
audioRenderer
},
trackSelector
);
player
=
ExoPlayerFactory
.
newInstance
(
context
,
new
Renderer
[]
{
audioRenderer
},
trackSelector
);
player
.
addListener
(
this
);
player
.
addListener
(
this
);
MediaSource
mediaSource
=
MediaSource
mediaSource
=
...
...
extensions/vp9/src/androidTest/java/com/google/android/exoplayer2/ext/vp9/VpxPlaybackTest.java
View file @
d77d661e
...
@@ -115,7 +115,7 @@ public class VpxPlaybackTest {
...
@@ -115,7 +115,7 @@ public class VpxPlaybackTest {
public
void
run
()
{
public
void
run
()
{
Looper
.
prepare
();
Looper
.
prepare
();
LibvpxVideoRenderer
videoRenderer
=
new
LibvpxVideoRenderer
(
0
);
LibvpxVideoRenderer
videoRenderer
=
new
LibvpxVideoRenderer
(
0
);
DefaultTrackSelector
trackSelector
=
new
DefaultTrackSelector
();
DefaultTrackSelector
trackSelector
=
new
DefaultTrackSelector
(
context
);
player
=
ExoPlayerFactory
.
newInstance
(
context
,
new
Renderer
[]
{
videoRenderer
},
trackSelector
);
player
=
ExoPlayerFactory
.
newInstance
(
context
,
new
Renderer
[]
{
videoRenderer
},
trackSelector
);
player
.
addListener
(
this
);
player
.
addListener
(
this
);
MediaSource
mediaSource
=
MediaSource
mediaSource
=
...
...
library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerFactory.java
View file @
d77d661e
...
@@ -102,7 +102,7 @@ public final class ExoPlayerFactory {
...
@@ -102,7 +102,7 @@ public final class ExoPlayerFactory {
* @param context A {@link Context}.
* @param context A {@link Context}.
*/
*/
public
static
SimpleExoPlayer
newSimpleInstance
(
Context
context
)
{
public
static
SimpleExoPlayer
newSimpleInstance
(
Context
context
)
{
return
newSimpleInstance
(
context
,
new
DefaultTrackSelector
());
return
newSimpleInstance
(
context
,
new
DefaultTrackSelector
(
context
));
}
}
/**
/**
...
...
library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java
View file @
d77d661e
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
*/
*/
package
com
.
google
.
android
.
exoplayer2
.
offline
;
package
com
.
google
.
android
.
exoplayer2
.
offline
;
import
android.content.Context
;
import
android.net.Uri
;
import
android.net.Uri
;
import
android.os.Handler
;
import
android.os.Handler
;
import
android.os.HandlerThread
;
import
android.os.HandlerThread
;
...
@@ -82,12 +83,25 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
...
@@ -82,12 +83,25 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
*/
*/
public
final
class
DownloadHelper
{
public
final
class
DownloadHelper
{
/** Default track selection parameters for downloading, but without any viewport constraints. */
public
static
final
Parameters
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
=
Parameters
.
DEFAULT_WITHOUT_VIEWPORT
.
buildUpon
().
setForceHighestSupportedBitrate
(
true
).
build
();
/**
/**
*
The default parameters used for track selection for downloading. This default selects the
*
@deprecated This instance does not have viewport constraints configured for the primary
*
highest bitrate audio and video tracks which are supported by the renderers
.
*
display. Use {@link #getDefaultTrackSelectorParameters(Context)} instead
.
*/
*/
@Deprecated
public
static
final
DefaultTrackSelector
.
Parameters
DEFAULT_TRACK_SELECTOR_PARAMETERS
=
public
static
final
DefaultTrackSelector
.
Parameters
DEFAULT_TRACK_SELECTOR_PARAMETERS
=
new
DefaultTrackSelector
.
ParametersBuilder
().
setForceHighestSupportedBitrate
(
true
).
build
();
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
;
/** Returns the default parameters used for track selection for downloading. */
public
static
DefaultTrackSelector
.
Parameters
getDefaultTrackSelectorParameters
(
Context
context
)
{
return
Parameters
.
getDefaults
(
context
)
.
buildUpon
()
.
setForceHighestSupportedBitrate
(
true
)
.
build
();
}
/** A callback to be notified when the {@link DownloadHelper} is prepared. */
/** A callback to be notified when the {@link DownloadHelper} is prepared. */
public
interface
Callback
{
public
interface
Callback
{
...
@@ -120,36 +134,70 @@ public final class DownloadHelper {
...
@@ -120,36 +134,70 @@ public final class DownloadHelper {
private
static
final
Constructor
<?
extends
MediaSourceFactory
>
HLS_FACTORY_CONSTRUCTOR
=
private
static
final
Constructor
<?
extends
MediaSourceFactory
>
HLS_FACTORY_CONSTRUCTOR
=
getConstructor
(
"com.google.android.exoplayer2.source.hls.HlsMediaSource$Factory"
);
getConstructor
(
"com.google.android.exoplayer2.source.hls.HlsMediaSource$Factory"
);
/** @deprecated Use {@link #forProgressive(Context, Uri)} */
@Deprecated
@SuppressWarnings
(
"deprecation"
)
public
static
DownloadHelper
forProgressive
(
Uri
uri
)
{
return
forProgressive
(
uri
,
/* cacheKey= */
null
);
}
/**
/**
* Creates a {@link DownloadHelper} for progressive streams.
* Creates a {@link DownloadHelper} for progressive streams.
*
*
* @param context Any {@link Context}.
* @param uri A stream {@link Uri}.
* @param uri A stream {@link Uri}.
* @return A {@link DownloadHelper} for progressive streams.
* @return A {@link DownloadHelper} for progressive streams.
*/
*/
public
static
DownloadHelper
forProgressive
(
Uri
uri
)
{
public
static
DownloadHelper
forProgressive
(
Context
context
,
Uri
uri
)
{
return
forProgressive
(
uri
,
/* cacheKey= */
null
);
return
forProgressive
(
context
,
uri
,
/* cacheKey= */
null
);
}
/** @deprecated Use {@link #forProgressive(Context, Uri, String)} */
@Deprecated
public
static
DownloadHelper
forProgressive
(
Uri
uri
,
@Nullable
String
cacheKey
)
{
return
new
DownloadHelper
(
DownloadRequest
.
TYPE_PROGRESSIVE
,
uri
,
cacheKey
,
/* mediaSource= */
null
,
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
,
/* rendererCapabilities= */
new
RendererCapabilities
[
0
]);
}
}
/**
/**
* Creates a {@link DownloadHelper} for progressive streams.
* Creates a {@link DownloadHelper} for progressive streams.
*
*
* @param context Any {@link Context}.
* @param uri A stream {@link Uri}.
* @param uri A stream {@link Uri}.
* @param cacheKey An optional cache key.
* @param cacheKey An optional cache key.
* @return A {@link DownloadHelper} for progressive streams.
* @return A {@link DownloadHelper} for progressive streams.
*/
*/
public
static
DownloadHelper
forProgressive
(
Uri
uri
,
@Nullable
String
cacheKey
)
{
public
static
DownloadHelper
forProgressive
(
Context
context
,
Uri
uri
,
@Nullable
String
cacheKey
)
{
return
new
DownloadHelper
(
return
new
DownloadHelper
(
DownloadRequest
.
TYPE_PROGRESSIVE
,
DownloadRequest
.
TYPE_PROGRESSIVE
,
uri
,
uri
,
cacheKey
,
cacheKey
,
/* mediaSource= */
null
,
/* mediaSource= */
null
,
DEFAULT_TRACK_SELECTOR_PARAMETERS
,
getDefaultTrackSelectorParameters
(
context
)
,
/* rendererCapabilities= */
new
RendererCapabilities
[
0
]);
/* rendererCapabilities= */
new
RendererCapabilities
[
0
]);
}
}
/** @deprecated Use {@link #forDash(Context, Uri, Factory, RenderersFactory)} */
@Deprecated
public
static
DownloadHelper
forDash
(
Uri
uri
,
DataSource
.
Factory
dataSourceFactory
,
RenderersFactory
renderersFactory
)
{
return
forDash
(
uri
,
dataSourceFactory
,
renderersFactory
,
/* drmSessionManager= */
null
,
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
);
}
/**
/**
* Creates a {@link DownloadHelper} for DASH streams.
* Creates a {@link DownloadHelper} for DASH streams.
*
*
* @param context Any {@link Context}.
* @param uri A manifest {@link Uri}.
* @param uri A manifest {@link Uri}.
* @param dataSourceFactory A {@link DataSource.Factory} used to load the manifest.
* @param dataSourceFactory A {@link DataSource.Factory} used to load the manifest.
* @param renderersFactory A {@link RenderersFactory} creating the renderers for which tracks are
* @param renderersFactory A {@link RenderersFactory} creating the renderers for which tracks are
...
@@ -158,13 +206,16 @@ public final class DownloadHelper {
...
@@ -158,13 +206,16 @@ public final class DownloadHelper {
* @throws IllegalStateException If the DASH module is missing.
* @throws IllegalStateException If the DASH module is missing.
*/
*/
public
static
DownloadHelper
forDash
(
public
static
DownloadHelper
forDash
(
Uri
uri
,
DataSource
.
Factory
dataSourceFactory
,
RenderersFactory
renderersFactory
)
{
Context
context
,
Uri
uri
,
DataSource
.
Factory
dataSourceFactory
,
RenderersFactory
renderersFactory
)
{
return
forDash
(
return
forDash
(
uri
,
uri
,
dataSourceFactory
,
dataSourceFactory
,
renderersFactory
,
renderersFactory
,
/* drmSessionManager= */
null
,
/* drmSessionManager= */
null
,
DEFAULT_TRACK_SELECTOR_PARAMETERS
);
getDefaultTrackSelectorParameters
(
context
)
);
}
}
/**
/**
...
@@ -197,9 +248,22 @@ public final class DownloadHelper {
...
@@ -197,9 +248,22 @@ public final class DownloadHelper {
Util
.
getRendererCapabilities
(
renderersFactory
,
drmSessionManager
));
Util
.
getRendererCapabilities
(
renderersFactory
,
drmSessionManager
));
}
}
/** @deprecated Use {@link #forHls(Context, Uri, Factory, RenderersFactory)} */
@Deprecated
public
static
DownloadHelper
forHls
(
Uri
uri
,
DataSource
.
Factory
dataSourceFactory
,
RenderersFactory
renderersFactory
)
{
return
forHls
(
uri
,
dataSourceFactory
,
renderersFactory
,
/* drmSessionManager= */
null
,
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
);
}
/**
/**
* Creates a {@link DownloadHelper} for HLS streams.
* Creates a {@link DownloadHelper} for HLS streams.
*
*
* @param context Any {@link Context}.
* @param uri A playlist {@link Uri}.
* @param uri A playlist {@link Uri}.
* @param dataSourceFactory A {@link DataSource.Factory} used to load the playlist.
* @param dataSourceFactory A {@link DataSource.Factory} used to load the playlist.
* @param renderersFactory A {@link RenderersFactory} creating the renderers for which tracks are
* @param renderersFactory A {@link RenderersFactory} creating the renderers for which tracks are
...
@@ -208,13 +272,16 @@ public final class DownloadHelper {
...
@@ -208,13 +272,16 @@ public final class DownloadHelper {
* @throws IllegalStateException If the HLS module is missing.
* @throws IllegalStateException If the HLS module is missing.
*/
*/
public
static
DownloadHelper
forHls
(
public
static
DownloadHelper
forHls
(
Uri
uri
,
DataSource
.
Factory
dataSourceFactory
,
RenderersFactory
renderersFactory
)
{
Context
context
,
Uri
uri
,
DataSource
.
Factory
dataSourceFactory
,
RenderersFactory
renderersFactory
)
{
return
forHls
(
return
forHls
(
uri
,
uri
,
dataSourceFactory
,
dataSourceFactory
,
renderersFactory
,
renderersFactory
,
/* drmSessionManager= */
null
,
/* drmSessionManager= */
null
,
DEFAULT_TRACK_SELECTOR_PARAMETERS
);
getDefaultTrackSelectorParameters
(
context
)
);
}
}
/**
/**
...
@@ -247,9 +314,22 @@ public final class DownloadHelper {
...
@@ -247,9 +314,22 @@ public final class DownloadHelper {
Util
.
getRendererCapabilities
(
renderersFactory
,
drmSessionManager
));
Util
.
getRendererCapabilities
(
renderersFactory
,
drmSessionManager
));
}
}
/** @deprecated Use {@link #forSmoothStreaming(Context, Uri, Factory, RenderersFactory)} */
@Deprecated
public
static
DownloadHelper
forSmoothStreaming
(
Uri
uri
,
DataSource
.
Factory
dataSourceFactory
,
RenderersFactory
renderersFactory
)
{
return
forSmoothStreaming
(
uri
,
dataSourceFactory
,
renderersFactory
,
/* drmSessionManager= */
null
,
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
);
}
/**
/**
* Creates a {@link DownloadHelper} for SmoothStreaming streams.
* Creates a {@link DownloadHelper} for SmoothStreaming streams.
*
*
* @param context Any {@link Context}.
* @param uri A manifest {@link Uri}.
* @param uri A manifest {@link Uri}.
* @param dataSourceFactory A {@link DataSource.Factory} used to load the manifest.
* @param dataSourceFactory A {@link DataSource.Factory} used to load the manifest.
* @param renderersFactory A {@link RenderersFactory} creating the renderers for which tracks are
* @param renderersFactory A {@link RenderersFactory} creating the renderers for which tracks are
...
@@ -258,13 +338,16 @@ public final class DownloadHelper {
...
@@ -258,13 +338,16 @@ public final class DownloadHelper {
* @throws IllegalStateException If the SmoothStreaming module is missing.
* @throws IllegalStateException If the SmoothStreaming module is missing.
*/
*/
public
static
DownloadHelper
forSmoothStreaming
(
public
static
DownloadHelper
forSmoothStreaming
(
Uri
uri
,
DataSource
.
Factory
dataSourceFactory
,
RenderersFactory
renderersFactory
)
{
Context
context
,
Uri
uri
,
DataSource
.
Factory
dataSourceFactory
,
RenderersFactory
renderersFactory
)
{
return
forSmoothStreaming
(
return
forSmoothStreaming
(
uri
,
uri
,
dataSourceFactory
,
dataSourceFactory
,
renderersFactory
,
renderersFactory
,
/* drmSessionManager= */
null
,
/* drmSessionManager= */
null
,
DEFAULT_TRACK_SELECTOR_PARAMETERS
);
getDefaultTrackSelectorParameters
(
context
)
);
}
}
/**
/**
...
@@ -370,10 +453,10 @@ public final class DownloadHelper {
...
@@ -370,10 +453,10 @@ public final class DownloadHelper {
this
.
uri
=
uri
;
this
.
uri
=
uri
;
this
.
cacheKey
=
cacheKey
;
this
.
cacheKey
=
cacheKey
;
this
.
mediaSource
=
mediaSource
;
this
.
mediaSource
=
mediaSource
;
this
.
trackSelector
=
new
DefaultTrackSelector
(
new
DownloadTrackSelection
.
Factory
());
this
.
trackSelector
=
new
DefaultTrackSelector
(
trackSelectorParameters
,
new
DownloadTrackSelection
.
Factory
());
this
.
rendererCapabilities
=
rendererCapabilities
;
this
.
rendererCapabilities
=
rendererCapabilities
;
this
.
scratchSet
=
new
SparseIntArray
();
this
.
scratchSet
=
new
SparseIntArray
();
trackSelector
.
setParameters
(
trackSelectorParameters
);
trackSelector
.
init
(
/* listener= */
()
->
{},
new
DummyBandwidthMeter
());
trackSelector
.
init
(
/* listener= */
()
->
{},
new
DummyBandwidthMeter
());
callbackHandler
=
new
Handler
(
Util
.
getLooper
());
callbackHandler
=
new
Handler
(
Util
.
getLooper
());
window
=
new
Timeline
.
Window
();
window
=
new
Timeline
.
Window
();
...
...
library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java
View file @
d77d661e
...
@@ -186,9 +186,22 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -186,9 +186,22 @@ public class DefaultTrackSelector extends MappingTrackSelector {
private
final
SparseArray
<
Map
<
TrackGroupArray
,
SelectionOverride
>>
selectionOverrides
;
private
final
SparseArray
<
Map
<
TrackGroupArray
,
SelectionOverride
>>
selectionOverrides
;
private
final
SparseBooleanArray
rendererDisabledFlags
;
private
final
SparseBooleanArray
rendererDisabledFlags
;
/** Creates a builder with default initial values. */
/**
* @deprecated Initial viewport constraints will not be set based on the primary display when
* using this constructor. Use {@link #ParametersBuilder(Context)} instead.
*/
@Deprecated
public
ParametersBuilder
()
{
public
ParametersBuilder
()
{
this
(
Parameters
.
DEFAULT
);
this
(
Parameters
.
DEFAULT_WITHOUT_VIEWPORT
);
}
/**
* Creates a builder with default initial values.
*
* @param context Any context.
*/
public
ParametersBuilder
(
Context
context
)
{
this
(
Parameters
.
getDefaults
(
context
));
}
}
/**
/**
...
@@ -656,8 +669,22 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -656,8 +669,22 @@ public class DefaultTrackSelector extends MappingTrackSelector {
*/
*/
public
static
final
class
Parameters
extends
TrackSelectionParameters
{
public
static
final
class
Parameters
extends
TrackSelectionParameters
{
/** An instance with default values. */
/** An instance with default values, except without any viewport constraints. */
public
static
final
Parameters
DEFAULT
=
new
Parameters
();
public
static
final
Parameters
DEFAULT_WITHOUT_VIEWPORT
=
new
Parameters
();
/**
* @deprecated This instance does not have viewport constraints configured for the primary
* display. Use {@link #getDefaults(Context)} instead.
*/
@Deprecated
public
static
final
Parameters
DEFAULT
=
DEFAULT_WITHOUT_VIEWPORT
;
/** Returns an instance configured with default values. */
public
static
Parameters
getDefaults
(
Context
context
)
{
return
DEFAULT_WITHOUT_VIEWPORT
.
buildUpon
()
.
setViewportSizeToPhysicalDisplaySize
(
context
,
/* viewportOrientationMayChange= */
true
)
.
build
();
}
// Video
// Video
/**
/**
...
@@ -707,14 +734,14 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -707,14 +734,14 @@ public class DefaultTrackSelector extends MappingTrackSelector {
public
final
boolean
allowVideoNonSeamlessAdaptiveness
;
public
final
boolean
allowVideoNonSeamlessAdaptiveness
;
/**
/**
* Viewport width in pixels. Constrains video track selections for adaptive content so that only
* Viewport width in pixels. Constrains video track selections for adaptive content so that only
* tracks suitable for the viewport are selected. The default value is
{@link Integer#MAX_VALUE}
* tracks suitable for the viewport are selected. The default value is
the physical width of the
*
(i.e. no constraint)
.
*
primary display, in pixels
.
*/
*/
public
final
int
viewportWidth
;
public
final
int
viewportWidth
;
/**
/**
* Viewport height in pixels. Constrains video track selections for adaptive content so that
* Viewport height in pixels. Constrains video track selections for adaptive content so that
* only tracks suitable for the viewport are selected. The default value is
{@link
* only tracks suitable for the viewport are selected. The default value is
the physical height
*
Integer#MAX_VALUE} (i.e. no constraint)
.
*
of the primary display, in pixels
.
*/
*/
public
final
int
viewportHeight
;
public
final
int
viewportHeight
;
/**
/**
...
@@ -1284,13 +1311,16 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -1284,13 +1311,16 @@ public class DefaultTrackSelector extends MappingTrackSelector {
private
boolean
allowMultipleAdaptiveSelections
;
private
boolean
allowMultipleAdaptiveSelections
;
/** @deprecated Use {@link #DefaultTrackSelector(Context)} instead. */
@Deprecated
@SuppressWarnings
(
"deprecation"
)
public
DefaultTrackSelector
()
{
public
DefaultTrackSelector
()
{
this
(
new
AdaptiveTrackSelection
.
Factory
());
this
(
new
AdaptiveTrackSelection
.
Factory
());
}
}
/**
/**
* @deprecated Use {@link #DefaultTrackSelector(
)} instead. Custom
bandwidth meter should be
* @deprecated Use {@link #DefaultTrackSelector(
Context)} instead. The
bandwidth meter should be
*
directly passed
to the player in {@link ExoPlayerFactory}.
*
passed directly
to the player in {@link ExoPlayerFactory}.
*/
*/
@Deprecated
@Deprecated
@SuppressWarnings
(
"deprecation"
)
@SuppressWarnings
(
"deprecation"
)
...
@@ -1298,10 +1328,32 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -1298,10 +1328,32 @@ public class DefaultTrackSelector extends MappingTrackSelector {
this
(
new
AdaptiveTrackSelection
.
Factory
(
bandwidthMeter
));
this
(
new
AdaptiveTrackSelection
.
Factory
(
bandwidthMeter
));
}
}
/** @param trackSelectionFactory A factory for {@link TrackSelection}s. */
/** @deprecated Use {@link #DefaultTrackSelector(Context, TrackSelection.Factory)}. */
@Deprecated
public
DefaultTrackSelector
(
TrackSelection
.
Factory
trackSelectionFactory
)
{
public
DefaultTrackSelector
(
TrackSelection
.
Factory
trackSelectionFactory
)
{
this
(
Parameters
.
DEFAULT_WITHOUT_VIEWPORT
,
trackSelectionFactory
);
}
/** @param context Any {@link Context}. */
public
DefaultTrackSelector
(
Context
context
)
{
this
(
context
,
new
AdaptiveTrackSelection
.
Factory
());
}
/**
* @param context Any {@link Context}.
* @param trackSelectionFactory A factory for {@link TrackSelection}s.
*/
public
DefaultTrackSelector
(
Context
context
,
TrackSelection
.
Factory
trackSelectionFactory
)
{
this
(
Parameters
.
getDefaults
(
context
),
trackSelectionFactory
);
}
/**
* @param parameters Initial {@link Parameters}.
* @param trackSelectionFactory A factory for {@link TrackSelection}s.
*/
public
DefaultTrackSelector
(
Parameters
parameters
,
TrackSelection
.
Factory
trackSelectionFactory
)
{
this
.
trackSelectionFactory
=
trackSelectionFactory
;
this
.
trackSelectionFactory
=
trackSelectionFactory
;
parametersReference
=
new
AtomicReference
<>(
Parameters
.
DEFAULT
);
parametersReference
=
new
AtomicReference
<>(
parameters
);
}
}
/**
/**
...
...
library/core/src/test/java/com/google/android/exoplayer2/offline/DownloadHelperTest.java
View file @
d77d661e
...
@@ -19,6 +19,7 @@ import static com.google.common.truth.Truth.assertThat;
...
@@ -19,6 +19,7 @@ import static com.google.common.truth.Truth.assertThat;
import
static
org
.
robolectric
.
shadows
.
ShadowBaseLooper
.
shadowMainLooper
;
import
static
org
.
robolectric
.
shadows
.
ShadowBaseLooper
.
shadowMainLooper
;
import
android.net.Uri
;
import
android.net.Uri
;
import
androidx.test.core.app.ApplicationProvider
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.Format
;
import
com.google.android.exoplayer2.Format
;
...
@@ -36,7 +37,6 @@ import com.google.android.exoplayer2.testutil.FakeRenderer;
...
@@ -36,7 +37,6 @@ import com.google.android.exoplayer2.testutil.FakeRenderer;
import
com.google.android.exoplayer2.testutil.FakeTimeline
;
import
com.google.android.exoplayer2.testutil.FakeTimeline
;
import
com.google.android.exoplayer2.testutil.FakeTimeline.TimelineWindowDefinition
;
import
com.google.android.exoplayer2.testutil.FakeTimeline.TimelineWindowDefinition
;
import
com.google.android.exoplayer2.trackselection.DefaultTrackSelector
;
import
com.google.android.exoplayer2.trackselection.DefaultTrackSelector
;
import
com.google.android.exoplayer2.trackselection.DefaultTrackSelector.ParametersBuilder
;
import
com.google.android.exoplayer2.trackselection.MappingTrackSelector.MappedTrackInfo
;
import
com.google.android.exoplayer2.trackselection.MappingTrackSelector.MappedTrackInfo
;
import
com.google.android.exoplayer2.trackselection.TrackSelection
;
import
com.google.android.exoplayer2.trackselection.TrackSelection
;
import
com.google.android.exoplayer2.upstream.Allocator
;
import
com.google.android.exoplayer2.upstream.Allocator
;
...
@@ -113,7 +113,7 @@ public class DownloadHelperTest {
...
@@ -113,7 +113,7 @@ public class DownloadHelperTest {
testUri
,
testUri
,
TEST_CACHE_KEY
,
TEST_CACHE_KEY
,
new
TestMediaSource
(),
new
TestMediaSource
(),
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS
,
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS
_WITHOUT_VIEWPORT
,
Util
.
getRendererCapabilities
(
renderersFactory
,
/* drmSessionManager= */
null
));
Util
.
getRendererCapabilities
(
renderersFactory
,
/* drmSessionManager= */
null
));
}
}
...
@@ -244,7 +244,7 @@ public class DownloadHelperTest {
...
@@ -244,7 +244,7 @@ public class DownloadHelperTest {
throws
Exception
{
throws
Exception
{
prepareDownloadHelper
(
downloadHelper
);
prepareDownloadHelper
(
downloadHelper
);
DefaultTrackSelector
.
Parameters
parameters
=
DefaultTrackSelector
.
Parameters
parameters
=
new
ParametersBuilder
(
)
new
DefaultTrackSelector
.
ParametersBuilder
(
ApplicationProvider
.
getApplicationContext
()
)
.
setPreferredAudioLanguage
(
"ZH"
)
.
setPreferredAudioLanguage
(
"ZH"
)
.
setPreferredTextLanguage
(
"ZH"
)
.
setPreferredTextLanguage
(
"ZH"
)
.
setRendererDisabled
(
/* rendererIndex= */
2
,
true
)
.
setRendererDisabled
(
/* rendererIndex= */
2
,
true
)
...
@@ -281,7 +281,7 @@ public class DownloadHelperTest {
...
@@ -281,7 +281,7 @@ public class DownloadHelperTest {
// Select parameters to require some merging of track groups because the new parameters add
// Select parameters to require some merging of track groups because the new parameters add
// all video tracks to initial video single track selection.
// all video tracks to initial video single track selection.
DefaultTrackSelector
.
Parameters
parameters
=
DefaultTrackSelector
.
Parameters
parameters
=
new
ParametersBuilder
(
)
new
DefaultTrackSelector
.
ParametersBuilder
(
ApplicationProvider
.
getApplicationContext
()
)
.
setPreferredAudioLanguage
(
"ZH"
)
.
setPreferredAudioLanguage
(
"ZH"
)
.
setPreferredTextLanguage
(
"US"
)
.
setPreferredTextLanguage
(
"US"
)
.
build
();
.
build
();
...
@@ -385,7 +385,7 @@ public class DownloadHelperTest {
...
@@ -385,7 +385,7 @@ public class DownloadHelperTest {
// Ensure we have track groups with multiple indices, renderers with multiple track groups and
// Ensure we have track groups with multiple indices, renderers with multiple track groups and
// also renderers without any track groups.
// also renderers without any track groups.
DefaultTrackSelector
.
Parameters
parameters
=
DefaultTrackSelector
.
Parameters
parameters
=
new
ParametersBuilder
(
)
new
DefaultTrackSelector
.
ParametersBuilder
(
ApplicationProvider
.
getApplicationContext
()
)
.
setPreferredAudioLanguage
(
"ZH"
)
.
setPreferredAudioLanguage
(
"ZH"
)
.
setPreferredTextLanguage
(
"US"
)
.
setPreferredTextLanguage
(
"US"
)
.
build
();
.
build
();
...
...
library/core/src/test/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelectorTest.java
View file @
d77d661e
...
@@ -27,9 +27,11 @@ import static org.mockito.Mockito.verify;
...
@@ -27,9 +27,11 @@ import static org.mockito.Mockito.verify;
import
static
org
.
mockito
.
Mockito
.
when
;
import
static
org
.
mockito
.
Mockito
.
when
;
import
static
org
.
mockito
.
MockitoAnnotations
.
initMocks
;
import
static
org
.
mockito
.
MockitoAnnotations
.
initMocks
;
import
android.content.Context
;
import
android.os.Parcel
;
import
android.os.Parcel
;
import
android.util.SparseArray
;
import
android.util.SparseArray
;
import
android.util.SparseBooleanArray
;
import
android.util.SparseBooleanArray
;
import
androidx.test.core.app.ApplicationProvider
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.ExoPlaybackException
;
import
com.google.android.exoplayer2.ExoPlaybackException
;
...
@@ -97,6 +99,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -97,6 +99,7 @@ public final class DefaultTrackSelectorTest {
@Mock
private
InvalidationListener
invalidationListener
;
@Mock
private
InvalidationListener
invalidationListener
;
@Mock
private
BandwidthMeter
bandwidthMeter
;
@Mock
private
BandwidthMeter
bandwidthMeter
;
private
Parameters
defaultParameters
;
private
DefaultTrackSelector
trackSelector
;
private
DefaultTrackSelector
trackSelector
;
@BeforeClass
@BeforeClass
...
@@ -108,7 +111,9 @@ public final class DefaultTrackSelectorTest {
...
@@ -108,7 +111,9 @@ public final class DefaultTrackSelectorTest {
public
void
setUp
()
{
public
void
setUp
()
{
initMocks
(
this
);
initMocks
(
this
);
when
(
bandwidthMeter
.
getBitrateEstimate
()).
thenReturn
(
1000000L
);
when
(
bandwidthMeter
.
getBitrateEstimate
()).
thenReturn
(
1000000L
);
trackSelector
=
new
DefaultTrackSelector
();
Context
context
=
ApplicationProvider
.
getApplicationContext
();
defaultParameters
=
Parameters
.
getDefaults
(
context
);
trackSelector
=
new
DefaultTrackSelector
(
context
);
trackSelector
.
init
(
invalidationListener
,
bandwidthMeter
);
trackSelector
.
init
(
invalidationListener
,
bandwidthMeter
);
}
}
...
@@ -234,7 +239,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -234,7 +239,7 @@ public final class DefaultTrackSelectorTest {
/** Tests disabling a renderer. */
/** Tests disabling a renderer. */
@Test
@Test
public
void
testSelectTracksWithDisabledRenderer
()
throws
ExoPlaybackException
{
public
void
testSelectTracksWithDisabledRenderer
()
throws
ExoPlaybackException
{
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setRendererDisabled
(
1
,
true
));
trackSelector
.
setParameters
(
defaultParameters
.
buildUpon
().
setRendererDisabled
(
1
,
true
));
TrackSelectorResult
result
=
TrackSelectorResult
result
=
trackSelector
.
selectTracks
(
RENDERER_CAPABILITIES
,
TRACK_GROUPS
,
periodId
,
TIMELINE
);
trackSelector
.
selectTracks
(
RENDERER_CAPABILITIES
,
TRACK_GROUPS
,
periodId
,
TIMELINE
);
assertSelections
(
result
,
new
TrackSelection
[]
{
TRACK_SELECTIONS
[
0
],
null
});
assertSelections
(
result
,
new
TrackSelection
[]
{
TRACK_SELECTIONS
[
0
],
null
});
...
@@ -271,7 +276,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -271,7 +276,7 @@ public final class DefaultTrackSelectorTest {
/** Tests disabling a no-sample renderer. */
/** Tests disabling a no-sample renderer. */
@Test
@Test
public
void
testSelectTracksWithDisabledNoSampleRenderer
()
throws
ExoPlaybackException
{
public
void
testSelectTracksWithDisabledNoSampleRenderer
()
throws
ExoPlaybackException
{
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setRendererDisabled
(
1
,
true
));
trackSelector
.
setParameters
(
defaultParameters
.
buildUpon
().
setRendererDisabled
(
1
,
true
));
TrackSelectorResult
result
=
TrackSelectorResult
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
RENDERER_CAPABILITIES_WITH_NO_SAMPLE_RENDERER
,
TRACK_GROUPS
,
periodId
,
TIMELINE
);
RENDERER_CAPABILITIES_WITH_NO_SAMPLE_RENDERER
,
TRACK_GROUPS
,
periodId
,
TIMELINE
);
...
@@ -281,14 +286,13 @@ public final class DefaultTrackSelectorTest {
...
@@ -281,14 +286,13 @@ public final class DefaultTrackSelectorTest {
}
}
/**
/**
* Tests that track selector will not call
* Tests that track selector will not call
{@link
*
{@link InvalidationListener#onTrackSelectionsInvalidated()} when it's set with default
*
InvalidationListener#onTrackSelectionsInvalidated()} when it's set with default values of
*
values of
{@link Parameters}.
* {@link Parameters}.
*/
*/
@Test
@Test
public
void
testSetParameterWithDefaultParametersDoesNotNotifyInvalidationListener
()
public
void
testSetParameterWithDefaultParametersDoesNotNotifyInvalidationListener
()
{
throws
Exception
{
trackSelector
.
setParameters
(
defaultParameters
);
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
);
verify
(
invalidationListener
,
never
()).
onTrackSelectionsInvalidated
();
verify
(
invalidationListener
,
never
()).
onTrackSelectionsInvalidated
();
}
}
...
@@ -297,24 +301,22 @@ public final class DefaultTrackSelectorTest {
...
@@ -297,24 +301,22 @@ public final class DefaultTrackSelectorTest {
* when it's set with non-default values of {@link Parameters}.
* when it's set with non-default values of {@link Parameters}.
*/
*/
@Test
@Test
public
void
testSetParameterWithNonDefaultParameterNotifyInvalidationListener
()
public
void
testSetParameterWithNonDefaultParameterNotifyInvalidationListener
()
{
throws
Exception
{
ParametersBuilder
builder
=
defaultParameters
.
buildUpon
().
setPreferredAudioLanguage
(
"eng"
);
Parameters
parameters
=
Parameters
.
DEFAULT
.
buildUpon
().
setPreferredAudioLanguage
(
"eng"
).
build
();
trackSelector
.
setParameters
(
builder
);
trackSelector
.
setParameters
(
parameters
);
verify
(
invalidationListener
).
onTrackSelectionsInvalidated
();
verify
(
invalidationListener
).
onTrackSelectionsInvalidated
();
}
}
/**
/**
* Tests that track selector will not call
* Tests that track selector will not call
{@link
*
{@link InvalidationListener#onTrackSelectionsInvalidated()} again when it's set with
*
InvalidationListener#onTrackSelectionsInvalidated()} again when it's set with the same values
*
the same values
of {@link Parameters}.
* of {@link Parameters}.
*/
*/
@Test
@Test
public
void
testSetParameterWithSameParametersDoesNotNotifyInvalidationListenerAgain
()
public
void
testSetParameterWithSameParametersDoesNotNotifyInvalidationListenerAgain
()
{
throws
Exception
{
ParametersBuilder
builder
=
defaultParameters
.
buildUpon
().
setPreferredAudioLanguage
(
"eng"
);
ParametersBuilder
builder
=
Parameters
.
DEFAULT
.
buildUpon
().
setPreferredAudioLanguage
(
"eng"
);
trackSelector
.
setParameters
(
builder
);
trackSelector
.
setParameters
(
builder
.
build
());
trackSelector
.
setParameters
(
builder
);
trackSelector
.
setParameters
(
builder
.
build
());
verify
(
invalidationListener
,
times
(
1
)).
onTrackSelectionsInvalidated
();
verify
(
invalidationListener
,
times
(
1
)).
onTrackSelectionsInvalidated
();
}
}
...
@@ -426,8 +428,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -426,8 +428,7 @@ public final class DefaultTrackSelectorTest {
Format
.
NO_VALUE
,
2
,
44100
,
null
,
null
,
0
,
"eng"
);
Format
.
NO_VALUE
,
2
,
44100
,
null
,
null
,
0
,
"eng"
);
TrackGroupArray
trackGroups
=
wrapFormats
(
frAudioFormat
,
enAudioFormat
);
TrackGroupArray
trackGroups
=
wrapFormats
(
frAudioFormat
,
enAudioFormat
);
trackSelector
.
setParameters
(
trackSelector
.
setParameters
(
defaultParameters
.
buildUpon
().
setPreferredAudioLanguage
(
"eng"
));
Parameters
.
DEFAULT
.
buildUpon
().
setPreferredAudioLanguage
(
"eng"
).
build
());
TrackSelectorResult
result
=
TrackSelectorResult
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
new
RendererCapabilities
[]
{
ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES
},
new
RendererCapabilities
[]
{
ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES
},
...
@@ -452,8 +453,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -452,8 +453,7 @@ public final class DefaultTrackSelectorTest {
Format
.
NO_VALUE
,
2
,
44100
,
null
,
null
,
0
,
"eng"
);
Format
.
NO_VALUE
,
2
,
44100
,
null
,
null
,
0
,
"eng"
);
TrackGroupArray
trackGroups
=
wrapFormats
(
frAudioFormat
,
enAudioFormat
);
TrackGroupArray
trackGroups
=
wrapFormats
(
frAudioFormat
,
enAudioFormat
);
trackSelector
.
setParameters
(
trackSelector
.
setParameters
(
defaultParameters
.
buildUpon
().
setPreferredAudioLanguage
(
"eng"
));
Parameters
.
DEFAULT
.
buildUpon
().
setPreferredAudioLanguage
(
"eng"
).
build
());
TrackSelectorResult
result
=
TrackSelectorResult
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
new
RendererCapabilities
[]
{
ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES
},
new
RendererCapabilities
[]
{
ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES
},
...
@@ -523,7 +523,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -523,7 +523,7 @@ public final class DefaultTrackSelectorTest {
TrackGroupArray
trackGroups
=
singleTrackGroup
(
audioFormat
);
TrackGroupArray
trackGroups
=
singleTrackGroup
(
audioFormat
);
trackSelector
.
setParameters
(
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setExceedRendererCapabilitiesIfNecessary
(
false
).
build
(
));
defaultParameters
.
buildUpon
().
setExceedRendererCapabilitiesIfNecessary
(
false
));
TrackSelectorResult
result
=
TrackSelectorResult
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
new
RendererCapabilities
[]
{
ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES
},
new
RendererCapabilities
[]
{
ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES
},
...
@@ -605,8 +605,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -605,8 +605,7 @@ public final class DefaultTrackSelectorTest {
RendererCapabilities
mappedAudioRendererCapabilities
=
RendererCapabilities
mappedAudioRendererCapabilities
=
new
FakeMappedRendererCapabilities
(
C
.
TRACK_TYPE_AUDIO
,
mappedCapabilities
);
new
FakeMappedRendererCapabilities
(
C
.
TRACK_TYPE_AUDIO
,
mappedCapabilities
);
trackSelector
.
setParameters
(
trackSelector
.
setParameters
(
defaultParameters
.
buildUpon
().
setPreferredAudioLanguage
(
"eng"
));
Parameters
.
DEFAULT
.
buildUpon
().
setPreferredAudioLanguage
(
"eng"
).
build
());
TrackSelectorResult
result
=
TrackSelectorResult
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
new
RendererCapabilities
[]
{
mappedAudioRendererCapabilities
},
new
RendererCapabilities
[]
{
mappedAudioRendererCapabilities
},
...
@@ -648,8 +647,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -648,8 +647,7 @@ public final class DefaultTrackSelectorTest {
RendererCapabilities
mappedAudioRendererCapabilities
=
RendererCapabilities
mappedAudioRendererCapabilities
=
new
FakeMappedRendererCapabilities
(
C
.
TRACK_TYPE_AUDIO
,
mappedCapabilities
);
new
FakeMappedRendererCapabilities
(
C
.
TRACK_TYPE_AUDIO
,
mappedCapabilities
);
trackSelector
.
setParameters
(
trackSelector
.
setParameters
(
defaultParameters
.
buildUpon
().
setPreferredAudioLanguage
(
"eng"
));
Parameters
.
DEFAULT
.
buildUpon
().
setPreferredAudioLanguage
(
"eng"
).
build
());
TrackSelectorResult
result
=
TrackSelectorResult
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
new
RendererCapabilities
[]
{
mappedAudioRendererCapabilities
},
new
RendererCapabilities
[]
{
mappedAudioRendererCapabilities
},
...
@@ -983,10 +981,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -983,10 +981,7 @@ public final class DefaultTrackSelectorTest {
// selected.
// selected.
trackGroups
=
wrapFormats
(
defaultOnly
,
noFlag
,
forcedOnly
,
forcedDefault
);
trackGroups
=
wrapFormats
(
defaultOnly
,
noFlag
,
forcedOnly
,
forcedDefault
);
trackSelector
.
setParameters
(
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
defaultParameters
.
buildUpon
().
setDisabledTextTrackSelectionFlags
(
C
.
SELECTION_FLAG_DEFAULT
));
.
buildUpon
()
.
setDisabledTextTrackSelectionFlags
(
C
.
SELECTION_FLAG_DEFAULT
)
.
build
());
result
=
trackSelector
.
selectTracks
(
textRendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
result
=
trackSelector
.
selectTracks
(
textRendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
assertNoSelection
(
result
.
selections
.
get
(
0
));
assertNoSelection
(
result
.
selections
.
get
(
0
));
...
@@ -997,15 +992,14 @@ public final class DefaultTrackSelectorTest {
...
@@ -997,15 +992,14 @@ public final class DefaultTrackSelectorTest {
trackSelector
trackSelector
.
getParameters
()
.
getParameters
()
.
buildUpon
()
.
buildUpon
()
.
setDisabledTextTrackSelectionFlags
(
C
.
SELECTION_FLAG_DEFAULT
|
C
.
SELECTION_FLAG_FORCED
)
.
setDisabledTextTrackSelectionFlags
(
.
build
(
));
C
.
SELECTION_FLAG_DEFAULT
|
C
.
SELECTION_FLAG_FORCED
));
result
=
trackSelector
.
selectTracks
(
textRendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
result
=
trackSelector
.
selectTracks
(
textRendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
assertNoSelection
(
result
.
selections
.
get
(
0
));
assertNoSelection
(
result
.
selections
.
get
(
0
));
// There is a preferred language, so a language-matching track flagged as default should
// There is a preferred language, so a language-matching track flagged as default should
// be selected, and the one without forced flag should be preferred.
// be selected, and the one without forced flag should be preferred.
trackSelector
.
setParameters
(
trackSelector
.
setParameters
(
defaultParameters
.
buildUpon
().
setPreferredTextLanguage
(
"eng"
));
Parameters
.
DEFAULT
.
buildUpon
().
setPreferredTextLanguage
(
"eng"
).
build
());
result
=
trackSelector
.
selectTracks
(
textRendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
result
=
trackSelector
.
selectTracks
(
textRendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
assertFixedSelection
(
result
.
selections
.
get
(
0
),
trackGroups
,
defaultOnly
);
assertFixedSelection
(
result
.
selections
.
get
(
0
),
trackGroups
,
defaultOnly
);
...
@@ -1017,8 +1011,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -1017,8 +1011,7 @@ public final class DefaultTrackSelectorTest {
trackSelector
trackSelector
.
getParameters
()
.
getParameters
()
.
buildUpon
()
.
buildUpon
()
.
setDisabledTextTrackSelectionFlags
(
C
.
SELECTION_FLAG_DEFAULT
)
.
setDisabledTextTrackSelectionFlags
(
C
.
SELECTION_FLAG_DEFAULT
));
.
build
());
result
=
trackSelector
.
selectTracks
(
textRendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
result
=
trackSelector
.
selectTracks
(
textRendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
assertFixedSelection
(
result
.
selections
.
get
(
0
),
trackGroups
,
noFlag
);
assertFixedSelection
(
result
.
selections
.
get
(
0
),
trackGroups
,
noFlag
);
}
}
...
@@ -1100,12 +1093,12 @@ public final class DefaultTrackSelectorTest {
...
@@ -1100,12 +1093,12 @@ public final class DefaultTrackSelectorTest {
assertNoSelection
(
result
.
selections
.
get
(
0
));
assertNoSelection
(
result
.
selections
.
get
(
0
));
trackSelector
.
setParameters
(
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setSelectUndeterminedTextLanguage
(
true
).
build
(
));
defaultParameters
.
buildUpon
().
setSelectUndeterminedTextLanguage
(
true
));
result
=
trackSelector
.
selectTracks
(
textRendererCapabilites
,
trackGroups
,
periodId
,
TIMELINE
);
result
=
trackSelector
.
selectTracks
(
textRendererCapabilites
,
trackGroups
,
periodId
,
TIMELINE
);
assertFixedSelection
(
result
.
selections
.
get
(
0
),
trackGroups
,
undeterminedUnd
);
assertFixedSelection
(
result
.
selections
.
get
(
0
),
trackGroups
,
undeterminedUnd
);
ParametersBuilder
builder
=
Parameters
.
DEFAULT
.
buildUpon
().
setPreferredTextLanguage
(
"spa"
);
ParametersBuilder
builder
=
defaultParameters
.
buildUpon
().
setPreferredTextLanguage
(
"spa"
);
trackSelector
.
setParameters
(
builder
.
build
()
);
trackSelector
.
setParameters
(
builder
);
result
=
trackSelector
.
selectTracks
(
textRendererCapabilites
,
trackGroups
,
periodId
,
TIMELINE
);
result
=
trackSelector
.
selectTracks
(
textRendererCapabilites
,
trackGroups
,
periodId
,
TIMELINE
);
assertFixedSelection
(
result
.
selections
.
get
(
0
),
trackGroups
,
spanish
);
assertFixedSelection
(
result
.
selections
.
get
(
0
),
trackGroups
,
spanish
);
...
@@ -1114,7 +1107,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -1114,7 +1107,7 @@ public final class DefaultTrackSelectorTest {
result
=
trackSelector
.
selectTracks
(
textRendererCapabilites
,
trackGroups
,
periodId
,
TIMELINE
);
result
=
trackSelector
.
selectTracks
(
textRendererCapabilites
,
trackGroups
,
periodId
,
TIMELINE
);
assertNoSelection
(
result
.
selections
.
get
(
0
));
assertNoSelection
(
result
.
selections
.
get
(
0
));
trackSelector
.
setParameters
(
builder
.
setSelectUndeterminedTextLanguage
(
true
)
.
build
()
);
trackSelector
.
setParameters
(
builder
.
setSelectUndeterminedTextLanguage
(
true
));
result
=
trackSelector
.
selectTracks
(
textRendererCapabilites
,
trackGroups
,
periodId
,
TIMELINE
);
result
=
trackSelector
.
selectTracks
(
textRendererCapabilites
,
trackGroups
,
periodId
,
TIMELINE
);
assertFixedSelection
(
result
.
selections
.
get
(
0
),
trackGroups
,
undeterminedUnd
);
assertFixedSelection
(
result
.
selections
.
get
(
0
),
trackGroups
,
undeterminedUnd
);
...
@@ -1158,13 +1151,13 @@ public final class DefaultTrackSelectorTest {
...
@@ -1158,13 +1151,13 @@ public final class DefaultTrackSelectorTest {
assertNoSelection
(
result
.
selections
.
get
(
1
));
assertNoSelection
(
result
.
selections
.
get
(
1
));
// Explicit language preference for english. First renderer should be used.
// Explicit language preference for english. First renderer should be used.
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setPreferredTextLanguage
(
"en"
));
trackSelector
.
setParameters
(
defaultParameters
.
buildUpon
().
setPreferredTextLanguage
(
"en"
));
result
=
trackSelector
.
selectTracks
(
rendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
result
=
trackSelector
.
selectTracks
(
rendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
assertFixedSelection
(
result
.
selections
.
get
(
0
),
trackGroups
,
english
);
assertFixedSelection
(
result
.
selections
.
get
(
0
),
trackGroups
,
english
);
assertNoSelection
(
result
.
selections
.
get
(
1
));
assertNoSelection
(
result
.
selections
.
get
(
1
));
// Explicit language preference for German. Second renderer should be used.
// Explicit language preference for German. Second renderer should be used.
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setPreferredTextLanguage
(
"de"
));
trackSelector
.
setParameters
(
defaultParameters
.
buildUpon
().
setPreferredTextLanguage
(
"de"
));
result
=
trackSelector
.
selectTracks
(
rendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
result
=
trackSelector
.
selectTracks
(
rendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
assertNoSelection
(
result
.
selections
.
get
(
0
));
assertNoSelection
(
result
.
selections
.
get
(
0
));
assertFixedSelection
(
result
.
selections
.
get
(
1
),
trackGroups
,
german
);
assertFixedSelection
(
result
.
selections
.
get
(
1
),
trackGroups
,
german
);
...
@@ -1190,7 +1183,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -1190,7 +1183,7 @@ public final class DefaultTrackSelectorTest {
RendererCapabilities
mappedAudioRendererCapabilities
=
RendererCapabilities
mappedAudioRendererCapabilities
=
new
FakeMappedRendererCapabilities
(
C
.
TRACK_TYPE_AUDIO
,
mappedCapabilities
);
new
FakeMappedRendererCapabilities
(
C
.
TRACK_TYPE_AUDIO
,
mappedCapabilities
);
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setForceLowestBitrate
(
true
).
build
(
));
trackSelector
.
setParameters
(
defaultParameters
.
buildUpon
().
setForceLowestBitrate
(
true
));
TrackSelectorResult
result
=
TrackSelectorResult
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
new
RendererCapabilities
[]
{
mappedAudioRendererCapabilities
},
new
RendererCapabilities
[]
{
mappedAudioRendererCapabilities
},
...
@@ -1221,7 +1214,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -1221,7 +1214,7 @@ public final class DefaultTrackSelectorTest {
new
FakeMappedRendererCapabilities
(
C
.
TRACK_TYPE_AUDIO
,
mappedCapabilities
);
new
FakeMappedRendererCapabilities
(
C
.
TRACK_TYPE_AUDIO
,
mappedCapabilities
);
trackSelector
.
setParameters
(
trackSelector
.
setParameters
(
new
ParametersBuilder
().
setForceHighestSupportedBitrate
(
true
).
build
(
));
defaultParameters
.
buildUpon
().
setForceHighestSupportedBitrate
(
true
));
TrackSelectorResult
result
=
TrackSelectorResult
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
new
RendererCapabilities
[]
{
mappedAudioRendererCapabilities
},
new
RendererCapabilities
[]
{
mappedAudioRendererCapabilities
},
...
@@ -1269,7 +1262,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -1269,7 +1262,7 @@ public final class DefaultTrackSelectorTest {
// If we explicitly enable mixed sample rate adaptiveness, expect an adaptive selection.
// If we explicitly enable mixed sample rate adaptiveness, expect an adaptive selection.
trackSelector
.
setParameters
(
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setAllowAudioMixedSampleRateAdaptiveness
(
true
));
defaultParameters
.
buildUpon
().
setAllowAudioMixedSampleRateAdaptiveness
(
true
));
result
=
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
new
RendererCapabilities
[]
{
AUDIO_CAPABILITIES
},
trackGroups
,
periodId
,
TIMELINE
);
new
RendererCapabilities
[]
{
AUDIO_CAPABILITIES
},
trackGroups
,
periodId
,
TIMELINE
);
...
@@ -1301,7 +1294,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -1301,7 +1294,7 @@ public final class DefaultTrackSelectorTest {
// If we explicitly enable mixed mime type adaptiveness, expect an adaptive selection.
// If we explicitly enable mixed mime type adaptiveness, expect an adaptive selection.
trackSelector
.
setParameters
(
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setAllowAudioMixedMimeTypeAdaptiveness
(
true
));
defaultParameters
.
buildUpon
().
setAllowAudioMixedMimeTypeAdaptiveness
(
true
));
result
=
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
new
RendererCapabilities
[]
{
AUDIO_CAPABILITIES
},
trackGroups
,
periodId
,
TIMELINE
);
new
RendererCapabilities
[]
{
AUDIO_CAPABILITIES
},
trackGroups
,
periodId
,
TIMELINE
);
...
@@ -1335,7 +1328,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -1335,7 +1328,7 @@ public final class DefaultTrackSelectorTest {
// If we constrain the channel count to 4 we expect a fixed selection containing the track with
// If we constrain the channel count to 4 we expect a fixed selection containing the track with
// fewer channels.
// fewer channels.
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setMaxAudioChannelCount
(
4
));
trackSelector
.
setParameters
(
defaultParameters
.
buildUpon
().
setMaxAudioChannelCount
(
4
));
result
=
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
new
RendererCapabilities
[]
{
AUDIO_CAPABILITIES
},
trackGroups
,
periodId
,
TIMELINE
);
new
RendererCapabilities
[]
{
AUDIO_CAPABILITIES
},
trackGroups
,
periodId
,
TIMELINE
);
...
@@ -1344,7 +1337,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -1344,7 +1337,7 @@ public final class DefaultTrackSelectorTest {
// If we constrain the channel count to 2 we expect a fixed selection containing the track with
// If we constrain the channel count to 2 we expect a fixed selection containing the track with
// fewer channels.
// fewer channels.
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setMaxAudioChannelCount
(
2
));
trackSelector
.
setParameters
(
defaultParameters
.
buildUpon
().
setMaxAudioChannelCount
(
2
));
result
=
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
new
RendererCapabilities
[]
{
AUDIO_CAPABILITIES
},
trackGroups
,
periodId
,
TIMELINE
);
new
RendererCapabilities
[]
{
AUDIO_CAPABILITIES
},
trackGroups
,
periodId
,
TIMELINE
);
...
@@ -1353,7 +1346,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -1353,7 +1346,7 @@ public final class DefaultTrackSelectorTest {
// If we constrain the channel count to 1 we expect a fixed selection containing the track with
// If we constrain the channel count to 1 we expect a fixed selection containing the track with
// fewer channels.
// fewer channels.
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setMaxAudioChannelCount
(
1
));
trackSelector
.
setParameters
(
defaultParameters
.
buildUpon
().
setMaxAudioChannelCount
(
1
));
result
=
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
new
RendererCapabilities
[]
{
AUDIO_CAPABILITIES
},
trackGroups
,
periodId
,
TIMELINE
);
new
RendererCapabilities
[]
{
AUDIO_CAPABILITIES
},
trackGroups
,
periodId
,
TIMELINE
);
...
@@ -1362,7 +1355,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -1362,7 +1355,7 @@ public final class DefaultTrackSelectorTest {
// If we disable exceeding of constraints we expect no selection.
// If we disable exceeding of constraints we expect no selection.
trackSelector
.
setParameters
(
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
defaultParameters
.
buildUpon
()
.
buildUpon
()
.
setMaxAudioChannelCount
(
1
)
.
setMaxAudioChannelCount
(
1
)
.
setExceedAudioConstraintsIfNecessary
(
false
));
.
setExceedAudioConstraintsIfNecessary
(
false
));
...
@@ -1424,13 +1417,13 @@ public final class DefaultTrackSelectorTest {
...
@@ -1424,13 +1417,13 @@ public final class DefaultTrackSelectorTest {
assertNoSelection
(
result
.
selections
.
get
(
1
));
assertNoSelection
(
result
.
selections
.
get
(
1
));
// Explicit language preference for english. First renderer should be used.
// Explicit language preference for english. First renderer should be used.
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setPreferredAudioLanguage
(
"en"
));
trackSelector
.
setParameters
(
defaultParameters
.
buildUpon
().
setPreferredAudioLanguage
(
"en"
));
result
=
trackSelector
.
selectTracks
(
rendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
result
=
trackSelector
.
selectTracks
(
rendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
assertFixedSelection
(
result
.
selections
.
get
(
0
),
trackGroups
,
english
);
assertFixedSelection
(
result
.
selections
.
get
(
0
),
trackGroups
,
english
);
assertNoSelection
(
result
.
selections
.
get
(
1
));
assertNoSelection
(
result
.
selections
.
get
(
1
));
// Explicit language preference for German. Second renderer should be used.
// Explicit language preference for German. Second renderer should be used.
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setPreferredAudioLanguage
(
"de"
));
trackSelector
.
setParameters
(
defaultParameters
.
buildUpon
().
setPreferredAudioLanguage
(
"de"
));
result
=
trackSelector
.
selectTracks
(
rendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
result
=
trackSelector
.
selectTracks
(
rendererCapabilities
,
trackGroups
,
periodId
,
TIMELINE
);
assertNoSelection
(
result
.
selections
.
get
(
0
));
assertNoSelection
(
result
.
selections
.
get
(
0
));
assertFixedSelection
(
result
.
selections
.
get
(
1
),
trackGroups
,
german
);
assertFixedSelection
(
result
.
selections
.
get
(
1
),
trackGroups
,
german
);
...
@@ -1456,7 +1449,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -1456,7 +1449,7 @@ public final class DefaultTrackSelectorTest {
// Should do non-seamless adaptiveness by default, so expect an adaptive selection.
// Should do non-seamless adaptiveness by default, so expect an adaptive selection.
TrackGroupArray
trackGroups
=
singleTrackGroup
(
buildVideoFormat
(
"0"
),
buildVideoFormat
(
"1"
));
TrackGroupArray
trackGroups
=
singleTrackGroup
(
buildVideoFormat
(
"0"
),
buildVideoFormat
(
"1"
));
trackSelector
.
setParameters
(
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setAllowVideoNonSeamlessAdaptiveness
(
true
));
defaultParameters
.
buildUpon
().
setAllowVideoNonSeamlessAdaptiveness
(
true
));
TrackSelectorResult
result
=
TrackSelectorResult
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
new
RendererCapabilities
[]
{
nonSeamlessVideoCapabilities
},
new
RendererCapabilities
[]
{
nonSeamlessVideoCapabilities
},
...
@@ -1468,7 +1461,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -1468,7 +1461,7 @@ public final class DefaultTrackSelectorTest {
// If we explicitly disable non-seamless adaptiveness, expect a fixed selection.
// If we explicitly disable non-seamless adaptiveness, expect a fixed selection.
trackSelector
.
setParameters
(
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setAllowVideoNonSeamlessAdaptiveness
(
false
));
defaultParameters
.
buildUpon
().
setAllowVideoNonSeamlessAdaptiveness
(
false
));
result
=
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
new
RendererCapabilities
[]
{
nonSeamlessVideoCapabilities
},
new
RendererCapabilities
[]
{
nonSeamlessVideoCapabilities
},
...
@@ -1503,7 +1496,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -1503,7 +1496,7 @@ public final class DefaultTrackSelectorTest {
// If we explicitly enable mixed mime type adaptiveness, expect an adaptive selection.
// If we explicitly enable mixed mime type adaptiveness, expect an adaptive selection.
trackSelector
.
setParameters
(
trackSelector
.
setParameters
(
Parameters
.
DEFAULT
.
buildUpon
().
setAllowVideoMixedMimeTypeAdaptiveness
(
true
));
defaultParameters
.
buildUpon
().
setAllowVideoMixedMimeTypeAdaptiveness
(
true
));
result
=
result
=
trackSelector
.
selectTracks
(
trackSelector
.
selectTracks
(
new
RendererCapabilities
[]
{
VIDEO_CAPABILITIES
},
trackGroups
,
periodId
,
TIMELINE
);
new
RendererCapabilities
[]
{
VIDEO_CAPABILITIES
},
trackGroups
,
periodId
,
TIMELINE
);
...
@@ -1760,13 +1753,13 @@ public final class DefaultTrackSelectorTest {
...
@@ -1760,13 +1753,13 @@ public final class DefaultTrackSelectorTest {
}
}
@Override
@Override
public
int
supportsFormat
(
Format
format
)
throws
ExoPlaybackException
{
public
int
supportsFormat
(
Format
format
)
{
return
MimeTypes
.
getTrackType
(
format
.
sampleMimeType
)
==
trackType
return
MimeTypes
.
getTrackType
(
format
.
sampleMimeType
)
==
trackType
?
(
supportValue
)
:
FORMAT_UNSUPPORTED_TYPE
;
?
(
supportValue
)
:
FORMAT_UNSUPPORTED_TYPE
;
}
}
@Override
@Override
public
int
supportsMixedMimeTypeAdaptation
()
throws
ExoPlaybackException
{
public
int
supportsMixedMimeTypeAdaptation
()
{
return
ADAPTIVE_SEAMLESS
;
return
ADAPTIVE_SEAMLESS
;
}
}
...
@@ -1801,14 +1794,14 @@ public final class DefaultTrackSelectorTest {
...
@@ -1801,14 +1794,14 @@ public final class DefaultTrackSelectorTest {
}
}
@Override
@Override
public
int
supportsFormat
(
Format
format
)
throws
ExoPlaybackException
{
public
int
supportsFormat
(
Format
format
)
{
return
format
.
id
!=
null
&&
formatToCapability
.
containsKey
(
format
.
id
)
return
format
.
id
!=
null
&&
formatToCapability
.
containsKey
(
format
.
id
)
?
formatToCapability
.
get
(
format
.
id
)
?
formatToCapability
.
get
(
format
.
id
)
:
FORMAT_UNSUPPORTED_TYPE
;
:
FORMAT_UNSUPPORTED_TYPE
;
}
}
@Override
@Override
public
int
supportsMixedMimeTypeAdaptation
()
throws
ExoPlaybackException
{
public
int
supportsMixedMimeTypeAdaptation
()
{
return
ADAPTIVE_SEAMLESS
;
return
ADAPTIVE_SEAMLESS
;
}
}
...
...
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/offline/DownloadHelperTest.java
View file @
d77d661e
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
package
com
.
google
.
android
.
exoplayer2
.
source
.
dash
.
offline
;
package
com
.
google
.
android
.
exoplayer2
.
source
.
dash
.
offline
;
import
android.net.Uri
;
import
android.net.Uri
;
import
androidx.test.core.app.ApplicationProvider
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
com.google.android.exoplayer2.Renderer
;
import
com.google.android.exoplayer2.Renderer
;
import
com.google.android.exoplayer2.drm.DrmSessionManager
;
import
com.google.android.exoplayer2.drm.DrmSessionManager
;
...
@@ -31,6 +32,7 @@ public final class DownloadHelperTest {
...
@@ -31,6 +32,7 @@ public final class DownloadHelperTest {
@Test
@Test
public
void
staticDownloadHelperForDash_doesNotThrow
()
{
public
void
staticDownloadHelperForDash_doesNotThrow
()
{
DownloadHelper
.
forDash
(
DownloadHelper
.
forDash
(
ApplicationProvider
.
getApplicationContext
(),
Uri
.
parse
(
"http://uri"
),
Uri
.
parse
(
"http://uri"
),
new
FakeDataSource
.
Factory
(),
new
FakeDataSource
.
Factory
(),
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
,
drm
)
->
new
Renderer
[
0
]);
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
,
drm
)
->
new
Renderer
[
0
]);
...
@@ -39,6 +41,6 @@ public final class DownloadHelperTest {
...
@@ -39,6 +41,6 @@ public final class DownloadHelperTest {
new
FakeDataSource
.
Factory
(),
new
FakeDataSource
.
Factory
(),
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
,
drm
)
->
new
Renderer
[
0
],
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
,
drm
)
->
new
Renderer
[
0
],
/* drmSessionManager= */
DrmSessionManager
.
getDummyDrmSessionManager
(),
/* drmSessionManager= */
DrmSessionManager
.
getDummyDrmSessionManager
(),
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS
);
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS
_WITHOUT_VIEWPORT
);
}
}
}
}
library/hls/src/test/java/com/google/android/exoplayer2/source/hls/offline/DownloadHelperTest.java
View file @
d77d661e
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
package
com
.
google
.
android
.
exoplayer2
.
source
.
hls
.
offline
;
package
com
.
google
.
android
.
exoplayer2
.
source
.
hls
.
offline
;
import
android.net.Uri
;
import
android.net.Uri
;
import
androidx.test.core.app.ApplicationProvider
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
com.google.android.exoplayer2.Renderer
;
import
com.google.android.exoplayer2.Renderer
;
import
com.google.android.exoplayer2.offline.DownloadHelper
;
import
com.google.android.exoplayer2.offline.DownloadHelper
;
...
@@ -30,6 +31,7 @@ public final class DownloadHelperTest {
...
@@ -30,6 +31,7 @@ public final class DownloadHelperTest {
@Test
@Test
public
void
staticDownloadHelperForHls_doesNotThrow
()
{
public
void
staticDownloadHelperForHls_doesNotThrow
()
{
DownloadHelper
.
forHls
(
DownloadHelper
.
forHls
(
ApplicationProvider
.
getApplicationContext
(),
Uri
.
parse
(
"http://uri"
),
Uri
.
parse
(
"http://uri"
),
new
FakeDataSource
.
Factory
(),
new
FakeDataSource
.
Factory
(),
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
,
drm
)
->
new
Renderer
[
0
]);
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
,
drm
)
->
new
Renderer
[
0
]);
...
@@ -38,6 +40,6 @@ public final class DownloadHelperTest {
...
@@ -38,6 +40,6 @@ public final class DownloadHelperTest {
new
FakeDataSource
.
Factory
(),
new
FakeDataSource
.
Factory
(),
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
,
drm
)
->
new
Renderer
[
0
],
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
,
drm
)
->
new
Renderer
[
0
],
/* drmSessionManager= */
null
,
/* drmSessionManager= */
null
,
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS
);
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS
_WITHOUT_VIEWPORT
);
}
}
}
}
library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/offline/DownloadHelperTest.java
View file @
d77d661e
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
package
com
.
google
.
android
.
exoplayer2
.
source
.
smoothstreaming
.
offline
;
package
com
.
google
.
android
.
exoplayer2
.
source
.
smoothstreaming
.
offline
;
import
android.net.Uri
;
import
android.net.Uri
;
import
androidx.test.core.app.ApplicationProvider
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
com.google.android.exoplayer2.Renderer
;
import
com.google.android.exoplayer2.Renderer
;
import
com.google.android.exoplayer2.offline.DownloadHelper
;
import
com.google.android.exoplayer2.offline.DownloadHelper
;
...
@@ -30,6 +31,7 @@ public final class DownloadHelperTest {
...
@@ -30,6 +31,7 @@ public final class DownloadHelperTest {
@Test
@Test
public
void
staticDownloadHelperForSmoothStreaming_doesNotThrow
()
{
public
void
staticDownloadHelperForSmoothStreaming_doesNotThrow
()
{
DownloadHelper
.
forSmoothStreaming
(
DownloadHelper
.
forSmoothStreaming
(
ApplicationProvider
.
getApplicationContext
(),
Uri
.
parse
(
"http://uri"
),
Uri
.
parse
(
"http://uri"
),
new
FakeDataSource
.
Factory
(),
new
FakeDataSource
.
Factory
(),
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
,
drm
)
->
new
Renderer
[
0
]);
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
,
drm
)
->
new
Renderer
[
0
]);
...
@@ -38,6 +40,6 @@ public final class DownloadHelperTest {
...
@@ -38,6 +40,6 @@ public final class DownloadHelperTest {
new
FakeDataSource
.
Factory
(),
new
FakeDataSource
.
Factory
(),
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
,
drm
)
->
new
Renderer
[
0
],
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
,
drm
)
->
new
Renderer
[
0
],
/* drmSessionManager= */
null
,
/* drmSessionManager= */
null
,
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS
);
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS
_WITHOUT_VIEWPORT
);
}
}
}
}
playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java
View file @
d77d661e
...
@@ -24,7 +24,6 @@ import android.net.Uri;
...
@@ -24,7 +24,6 @@ import android.net.Uri;
import
android.view.Surface
;
import
android.view.Surface
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.DefaultLoadControl
;
import
com.google.android.exoplayer2.DefaultLoadControl
;
import
com.google.android.exoplayer2.ExoPlaybackException
;
import
com.google.android.exoplayer2.ExoPlayerFactory
;
import
com.google.android.exoplayer2.ExoPlayerFactory
;
import
com.google.android.exoplayer2.Format
;
import
com.google.android.exoplayer2.Format
;
import
com.google.android.exoplayer2.RendererCapabilities
;
import
com.google.android.exoplayer2.RendererCapabilities
;
...
@@ -385,8 +384,7 @@ public final class DashTestRunner {
...
@@ -385,8 +384,7 @@ public final class DashTestRunner {
MappedTrackInfo
mappedTrackInfo
,
MappedTrackInfo
mappedTrackInfo
,
int
[][][]
rendererFormatSupports
,
int
[][][]
rendererFormatSupports
,
int
[]
rendererMixedMimeTypeAdaptationSupports
,
int
[]
rendererMixedMimeTypeAdaptationSupports
,
Parameters
parameters
)
Parameters
parameters
)
{
throws
ExoPlaybackException
{
Assertions
.
checkState
(
Assertions
.
checkState
(
mappedTrackInfo
.
getRendererType
(
VIDEO_RENDERER_INDEX
)
==
C
.
TRACK_TYPE_VIDEO
);
mappedTrackInfo
.
getRendererType
(
VIDEO_RENDERER_INDEX
)
==
C
.
TRACK_TYPE_VIDEO
);
Assertions
.
checkState
(
Assertions
.
checkState
(
...
...
testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java
View file @
d77d661e
...
@@ -37,7 +37,6 @@ import com.google.android.exoplayer2.drm.DrmSessionManager;
...
@@ -37,7 +37,6 @@ import com.google.android.exoplayer2.drm.DrmSessionManager;
import
com.google.android.exoplayer2.drm.FrameworkMediaCrypto
;
import
com.google.android.exoplayer2.drm.FrameworkMediaCrypto
;
import
com.google.android.exoplayer2.source.MediaSource
;
import
com.google.android.exoplayer2.source.MediaSource
;
import
com.google.android.exoplayer2.testutil.HostActivity.HostedTest
;
import
com.google.android.exoplayer2.testutil.HostActivity.HostedTest
;
import
com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection
;
import
com.google.android.exoplayer2.trackselection.DefaultTrackSelector
;
import
com.google.android.exoplayer2.trackselection.DefaultTrackSelector
;
import
com.google.android.exoplayer2.trackselection.MappingTrackSelector
;
import
com.google.android.exoplayer2.trackselection.MappingTrackSelector
;
import
com.google.android.exoplayer2.util.Clock
;
import
com.google.android.exoplayer2.util.Clock
;
...
@@ -238,7 +237,7 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest {
...
@@ -238,7 +237,7 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest {
}
}
protected
DefaultTrackSelector
buildTrackSelector
(
HostActivity
host
)
{
protected
DefaultTrackSelector
buildTrackSelector
(
HostActivity
host
)
{
return
new
DefaultTrackSelector
(
new
AdaptiveTrackSelection
.
Factory
()
);
return
new
DefaultTrackSelector
(
host
);
}
}
protected
SimpleExoPlayer
buildExoPlayer
(
protected
SimpleExoPlayer
buildExoPlayer
(
...
...
testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoPlayerTestRunner.java
View file @
d77d661e
...
@@ -284,7 +284,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
...
@@ -284,7 +284,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
supportedFormats
=
new
Format
[]
{
VIDEO_FORMAT
};
supportedFormats
=
new
Format
[]
{
VIDEO_FORMAT
};
}
}
if
(
trackSelector
==
null
)
{
if
(
trackSelector
==
null
)
{
trackSelector
=
new
DefaultTrackSelector
();
trackSelector
=
new
DefaultTrackSelector
(
context
);
}
}
if
(
bandwidthMeter
==
null
)
{
if
(
bandwidthMeter
==
null
)
{
bandwidthMeter
=
new
DefaultBandwidthMeter
.
Builder
(
context
).
build
();
bandwidthMeter
=
new
DefaultBandwidthMeter
.
Builder
(
context
).
build
();
...
...
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