mirror of
https://github.com/samsonjs/media.git
synced 2026-04-07 11:35:46 +00:00
commit
03569f9e65
825 changed files with 56697 additions and 15920 deletions
1
.github/ISSUE_TEMPLATE/bug.yml
vendored
1
.github/ISSUE_TEMPLATE/bug.yml
vendored
|
|
@ -18,6 +18,7 @@ body:
|
|||
label: ExoPlayer Version
|
||||
description: What version of ExoPlayer are you using?
|
||||
options:
|
||||
- 2.18.0
|
||||
- 2.17.1
|
||||
- 2.17.0
|
||||
- 2.16.1
|
||||
|
|
|
|||
189
RELEASENOTES.md
189
RELEASENOTES.md
|
|
@ -1,5 +1,194 @@
|
|||
# Release notes
|
||||
|
||||
### 2.18.0 (2022-06-16)
|
||||
|
||||
This release corresponds to the
|
||||
[AndroidX media3 1.0.0-beta01 release](https://github.com/androidx/media/releases/tag/1.0.0-beta01).
|
||||
|
||||
* Core library:
|
||||
* Enable support for Android platform diagnostics via
|
||||
`MediaMetricsManager`. ExoPlayer will forward playback events and
|
||||
performance data to the platform, which helps to provide system
|
||||
performance and debugging information on the device. This data may also
|
||||
be collected by Google
|
||||
[if sharing usage and diagnostics data is enabled](https://support.google.com/accounts/answer/6078260)
|
||||
by the user of the device. Apps can opt-out of contributing to platform
|
||||
diagnostics for ExoPlayer with
|
||||
`ExoPlayer.Builder.setUsePlatformDiagnostics(false)`.
|
||||
* Fix bug that tracks are reset too often when using `MergingMediaSource`,
|
||||
for example when side-loading subtitles and changing the selected
|
||||
subtitle mid-playback
|
||||
([#10248](https://github.com/google/ExoPlayer/issues/10248)).
|
||||
* Stop detecting 5G-NSA network type on API 29 and 30. These playbacks
|
||||
will assume a 4G network.
|
||||
* Disallow passing `null` to
|
||||
`MediaSource.Factory.setDrmSessionManagerProvider` and
|
||||
`MediaSource.Factory.setLoadErrorHandlingPolicy`. Instances of
|
||||
`DefaultDrmSessionManagerProvider` and `DefaultLoadErrorHandlingPolicy`
|
||||
can be passed explicitly if required.
|
||||
* Add `MediaItem.RequestMetadata` to represent metadata needed to play
|
||||
media when the exact `LocalConfiguration` is not known. Also remove
|
||||
`MediaMetadata.mediaUrl` as this is now included in `RequestMetadata`.
|
||||
* Add `Player.Command.COMMAND_SET_MEDIA_ITEM` to enable players to allow
|
||||
setting a single item.
|
||||
* Track selection:
|
||||
* Flatten `TrackSelectionOverrides` class into `TrackSelectionParameters`,
|
||||
and promote `TrackSelectionOverride` to a top level class.
|
||||
* Rename `TracksInfo` to `Tracks` and `TracksInfo.TrackGroupInfo` to
|
||||
`Tracks.Group`. `Player.getCurrentTracksInfo` and
|
||||
`Player.Listener.onTracksInfoChanged` have also been renamed to
|
||||
`Player.getCurrentTracks` and `Player.Listener.onTracksChanged`.
|
||||
* Change `DefaultTrackSelector.buildUponParameters` and
|
||||
`DefaultTrackSelector.Parameters.buildUpon` to return
|
||||
`DefaultTrackSelector.Parameters.Builder` instead of the deprecated
|
||||
`DefaultTrackSelector.ParametersBuilder`.
|
||||
* Add
|
||||
`DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities`
|
||||
which is enabled by default. When enabled, the `DefaultTrackSelector`
|
||||
will prefer audio tracks whose channel count does not exceed the device
|
||||
output capabilities. On handheld devices, the `DefaultTrackSelector`
|
||||
will prefer stereo/mono over multichannel audio formats, unless the
|
||||
multichannel format can be
|
||||
[Spatialized](https://developer.android.com/reference/android/media/Spatializer)
|
||||
(Android 12L+) or is a Dolby surround sound format. In addition, on
|
||||
devices that support audio spatialization, the `DefaultTrackSelector`
|
||||
will monitor for changes in the
|
||||
[Spatializer properties](https://developer.android.com/reference/android/media/Spatializer.OnSpatializerStateChangedListener)
|
||||
and trigger a new track selection upon these. Devices with a
|
||||
`television`
|
||||
[UI mode](https://developer.android.com/guide/topics/resources/providing-resources#UiModeQualifier)
|
||||
are excluded from these constraints and the format with the highest
|
||||
channel count will be preferred. To enable this feature, the
|
||||
`DefaultTrackSelector` instance must be constructed with a `Context`.
|
||||
* Video:
|
||||
* Rename `DummySurface` to `PlaceholderSurface`.
|
||||
* Add AV1 support to the `MediaCodecVideoRenderer.getCodecMaxInputSize`.
|
||||
* Audio:
|
||||
* Use LG AC3 audio decoder advertising non-standard MIME type.
|
||||
* Change the return type of `AudioAttributes.getAudioAttributesV21()` from
|
||||
`android.media.AudioAttributes` to a new `AudioAttributesV21` wrapper
|
||||
class, to prevent slow ART verification on API < 21.
|
||||
* Query the platform (API 29+) or assume the audio encoding channel count
|
||||
for audio passthrough when the format audio channel count is unset,
|
||||
which occurs with HLS chunkless preparation
|
||||
([10204](https://github.com/google/ExoPlayer/issues/10204)).
|
||||
* Configure `AudioTrack` with channel mask
|
||||
`AudioFormat.CHANNEL_OUT_7POINT1POINT4` if the decoder outputs 12
|
||||
channel PCM audio
|
||||
([#10322](#https://github.com/google/ExoPlayer/pull/10322).
|
||||
* DRM
|
||||
* Ensure the DRM session is always correctly updated when seeking
|
||||
immediately after a format change
|
||||
([10274](https://github.com/google/ExoPlayer/issues/10274)).
|
||||
* Text:
|
||||
* Change `Player.getCurrentCues()` to return `CueGroup` instead of
|
||||
`List<Cue>`.
|
||||
* SSA: Support `OutlineColour` style setting when `BorderStyle == 3` (i.e.
|
||||
`OutlineColour` sets the background of the cue)
|
||||
([#8435](https://github.com/google/ExoPlayer/issues/8435)).
|
||||
* CEA-708: Parse data into multiple service blocks and ignore blocks not
|
||||
associated with the currently selected service number.
|
||||
* Remove `RawCcExtractor`, which was only used to handle a Google-internal
|
||||
subtitle format.
|
||||
* Extractors:
|
||||
* Matroska: Parse `DiscardPadding` for Opus tracks.
|
||||
* MP4: Parse bitrates from `esds` boxes.
|
||||
* Ogg: Allow duplicate Opus ID and comment headers
|
||||
([#10038](https://github.com/google/ExoPlayer/issues/10038)).
|
||||
* UI:
|
||||
* Fix delivery of events to `OnClickListener`s set on `StyledPlayerView`
|
||||
and `PlayerView`, in the case that `useController=false`
|
||||
([#9605](https://github.com/google/ExoPlayer/issues/9605)). Also fix
|
||||
delivery of events to `OnLongClickListener` for all view configurations.
|
||||
* Fix incorrectly treating a sequence of touch events that exit the bounds
|
||||
of `StyledPlayerView` and `PlayerView` before `ACTION_UP` as a click
|
||||
([#9861](https://github.com/google/ExoPlayer/issues/9861)).
|
||||
* Fix `PlayerView` accessibility issue where tapping might toggle playback
|
||||
rather than hiding the controls
|
||||
([#8627](https://github.com/google/ExoPlayer/issues/8627)).
|
||||
* Rewrite `TrackSelectionView` and `TrackSelectionDialogBuilder` to work
|
||||
with the `Player` interface rather than `ExoPlayer`. This allows the
|
||||
views to be used with other `Player` implementations, and removes the
|
||||
dependency from the UI module to the ExoPlayer module. This is a
|
||||
breaking change.
|
||||
* Don't show forced text tracks in the `PlayerView` track selector, and
|
||||
keep a suitable forced text track selected if "None" is selected
|
||||
([#9432](https://github.com/google/ExoPlayer/issues/9432)).
|
||||
* DASH:
|
||||
* Parse channel count from DTS `AudioChannelConfiguration` elements. This
|
||||
re-enables audio passthrough for DTS streams
|
||||
([#10159](https://github.com/google/ExoPlayer/issues/10159)).
|
||||
* Disallow passing `null` to
|
||||
`DashMediaSource.Factory.setCompositeSequenceableLoaderFactory`.
|
||||
Instances of `DefaultCompositeSequenceableLoaderFactory` can be passed
|
||||
explicitly if required.
|
||||
* HLS:
|
||||
* Fallback to chunkful preparation if the playlist CODECS attribute does
|
||||
not contain the audio codec
|
||||
([#10065](https://github.com/google/ExoPlayer/issues/10065)).
|
||||
* Disallow passing `null` to
|
||||
`HlsMediaSource.Factory.setCompositeSequenceableLoaderFactory`,
|
||||
`HlsMediaSource.Factory.setPlaylistParserFactory`, and
|
||||
`HlsMediaSource.Factory.setPlaylistTrackerFactory`. Instances of
|
||||
`DefaultCompositeSequenceableLoaderFactory`,
|
||||
`DefaultHlsPlaylistParserFactory`, or a reference to
|
||||
`DefaultHlsPlaylistTracker.FACTORY` can be passed explicitly if
|
||||
required.
|
||||
* Smooth Streaming:
|
||||
* Disallow passing `null` to
|
||||
`SsMediaSource.Factory.setCompositeSequenceableLoaderFactory`. Instances
|
||||
of `DefaultCompositeSequenceableLoaderFactory` can be passed explicitly
|
||||
if required.
|
||||
* RTSP:
|
||||
* Add RTP reader for MPEG4
|
||||
([#35](https://github.com/androidx/media/pull/35)).
|
||||
* Add RTP reader for HEVC
|
||||
([#36](https://github.com/androidx/media/pull/36)).
|
||||
* Add RTP reader for AMR. Currently only mono-channel, non-interleaved AMR
|
||||
streams are supported. Compound AMR RTP payload is not supported.
|
||||
([#46](https://github.com/androidx/media/pull/46))
|
||||
* Add RTP reader for VP8
|
||||
([#47](https://github.com/androidx/media/pull/47)).
|
||||
* Add RTP reader for WAV
|
||||
([#56](https://github.com/androidx/media/pull/56)).
|
||||
* Fix RTSP basic authorization header.
|
||||
([#9544](https://github.com/google/ExoPlayer/issues/9544)).
|
||||
* Stop checking mandatory SDP fields as ExoPlayer doesn't need them
|
||||
([#10049](https://github.com/google/ExoPlayer/issues/10049)).
|
||||
* Throw checked exception when parsing RTSP timing
|
||||
([#10165](https://github.com/google/ExoPlayer/issues/10165)).
|
||||
* Add RTP reader for VP9
|
||||
([#47](https://github.com/androidx/media/pull/64)).
|
||||
* Add RTP reader for OPUS
|
||||
([#53](https://github.com/androidx/media/pull/53)).
|
||||
* Data sources:
|
||||
* Rename `DummyDataSource` to `PlaceholderDataSource`.
|
||||
* Workaround OkHttp interrupt handling.
|
||||
* Ad playback / IMA:
|
||||
* Decrease ad polling rate from every 100ms to every 200ms, to line up
|
||||
with Media Rating Council (MRC) recommendations.
|
||||
* FFmpeg extension:
|
||||
* Update CMake version to `3.21.0+` to avoid a CMake bug causing
|
||||
AndroidStudio's gradle sync to fail
|
||||
([#9933](https://github.com/google/ExoPlayer/issues/9933)).
|
||||
* Remove deprecated symbols:
|
||||
* Remove `Player.Listener.onTracksChanged`. Use
|
||||
`Player.Listener.onTracksInfoChanged` instead.
|
||||
* Remove `Player.getCurrentTrackGroups` and
|
||||
`Player.getCurrentTrackSelections`. Use `Player.getCurrentTracksInfo`
|
||||
instead. You can also continue to use `ExoPlayer.getCurrentTrackGroups`
|
||||
and `ExoPlayer.getCurrentTrackSelections`, although these methods remain
|
||||
deprecated.
|
||||
* Remove `DownloadHelper`
|
||||
`DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT` and
|
||||
`DEFAULT_TRACK_SELECTOR_PARAMETERS` constants. Use
|
||||
`getDefaultTrackSelectorParameters(Context)` instead when possible, and
|
||||
`DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT` otherwise.
|
||||
* Remove constructor `DefaultTrackSelector(ExoTrackSelection.Factory)`.
|
||||
Use `DefaultTrackSelector(Context, ExoTrackSelection.Factory)` instead.
|
||||
* Remove `Transformer.Builder.setContext`. The `Context` should be passed
|
||||
to the `Transformer.Builder` constructor instead.
|
||||
|
||||
### 2.17.1 (2022-03-10)
|
||||
|
||||
This release corresponds to the
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ buildscript {
|
|||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:7.0.3'
|
||||
classpath 'com.android.tools.build:gradle:7.2.1'
|
||||
classpath 'com.google.android.gms:strict-version-matcher-plugin:1.2.2'
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,5 +29,10 @@ android {
|
|||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
testOptions.unitTests.includeAndroidResources = true
|
||||
testOptions {
|
||||
unitTests.all {
|
||||
jvmArgs "-Xmx2g"
|
||||
}
|
||||
unitTests.includeAndroidResources true
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,21 +13,21 @@
|
|||
// limitations under the License.
|
||||
project.ext {
|
||||
// ExoPlayer version and version code.
|
||||
releaseVersion = '2.17.1'
|
||||
releaseVersionCode = 2_017_001
|
||||
releaseVersion = '2.18.0'
|
||||
releaseVersionCode = 2_018_000
|
||||
minSdkVersion = 16
|
||||
appTargetSdkVersion = 29
|
||||
// Upgrading this requires [Internal ref: b/193254928] to be fixed, or some
|
||||
// additional robolectric config.
|
||||
targetSdkVersion = 30
|
||||
compileSdkVersion = 31
|
||||
compileSdkVersion = 32
|
||||
dexmakerVersion = '2.28.1'
|
||||
junitVersion = '4.13.2'
|
||||
// Use the same Guava version as the Android repo:
|
||||
// https://cs.android.com/android/platform/superproject/+/master:external/guava/METADATA
|
||||
guavaVersion = '31.0.1-android'
|
||||
mockitoVersion = '3.12.4'
|
||||
robolectricVersion = '4.6.1'
|
||||
robolectricVersion = '4.8.1'
|
||||
// Keep this in sync with Google's internal Checker Framework version.
|
||||
checkerframeworkVersion = '3.13.0'
|
||||
checkerframeworkCompatVersion = '2.5.5'
|
||||
|
|
|
|||
|
|
@ -230,8 +230,8 @@ public class MainActivity extends AppCompatActivity
|
|||
@Override
|
||||
public boolean onMove(
|
||||
RecyclerView list, RecyclerView.ViewHolder origin, RecyclerView.ViewHolder target) {
|
||||
int fromPosition = origin.getAdapterPosition();
|
||||
int toPosition = target.getAdapterPosition();
|
||||
int fromPosition = origin.getBindingAdapterPosition();
|
||||
int toPosition = target.getBindingAdapterPosition();
|
||||
if (draggingFromPosition == C.INDEX_UNSET) {
|
||||
// A drag has started, but changes to the media queue will be reflected in clearView().
|
||||
draggingFromPosition = fromPosition;
|
||||
|
|
@ -243,7 +243,7 @@ public class MainActivity extends AppCompatActivity
|
|||
|
||||
@Override
|
||||
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
|
||||
int position = viewHolder.getAdapterPosition();
|
||||
int position = viewHolder.getBindingAdapterPosition();
|
||||
QueueItemViewHolder queueItemHolder = (QueueItemViewHolder) viewHolder;
|
||||
if (playerManager.removeItem(queueItemHolder.item)) {
|
||||
mediaQueueListAdapter.notifyItemRemoved(position);
|
||||
|
|
@ -282,7 +282,7 @@ public class MainActivity extends AppCompatActivity
|
|||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
playerManager.selectQueueItem(getAdapterPosition());
|
||||
playerManager.selectQueueItem(getBindingAdapterPosition());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import com.google.android.exoplayer2.Player;
|
|||
import com.google.android.exoplayer2.Player.DiscontinuityReason;
|
||||
import com.google.android.exoplayer2.Player.TimelineChangeReason;
|
||||
import com.google.android.exoplayer2.Timeline;
|
||||
import com.google.android.exoplayer2.TracksInfo;
|
||||
import com.google.android.exoplayer2.Tracks;
|
||||
import com.google.android.exoplayer2.ext.cast.CastPlayer;
|
||||
import com.google.android.exoplayer2.ext.cast.SessionAvailabilityListener;
|
||||
import com.google.android.exoplayer2.ui.StyledPlayerControlView;
|
||||
|
|
@ -57,7 +57,7 @@ import java.util.ArrayList;
|
|||
private final ArrayList<MediaItem> mediaQueue;
|
||||
private final Listener listener;
|
||||
|
||||
private TracksInfo lastSeenTrackGroupInfo;
|
||||
private Tracks lastSeenTracks;
|
||||
private int currentItemIndex;
|
||||
private Player currentPlayer;
|
||||
|
||||
|
|
@ -219,19 +219,19 @@ import java.util.ArrayList;
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onTracksInfoChanged(TracksInfo tracksInfo) {
|
||||
if (currentPlayer != localPlayer || tracksInfo == lastSeenTrackGroupInfo) {
|
||||
public void onTracksChanged(Tracks tracks) {
|
||||
if (currentPlayer != localPlayer || tracks == lastSeenTracks) {
|
||||
return;
|
||||
}
|
||||
if (!tracksInfo.isTypeSupportedOrEmpty(
|
||||
C.TRACK_TYPE_VIDEO, /* allowExceedsCapabilities= */ true)) {
|
||||
if (tracks.containsType(C.TRACK_TYPE_VIDEO)
|
||||
&& !tracks.isTypeSupported(C.TRACK_TYPE_VIDEO, /* allowExceedsCapabilities= */ true)) {
|
||||
listener.onUnsupportedTrack(C.TRACK_TYPE_VIDEO);
|
||||
}
|
||||
if (!tracksInfo.isTypeSupportedOrEmpty(
|
||||
C.TRACK_TYPE_AUDIO, /* allowExceedsCapabilities= */ true)) {
|
||||
if (tracks.containsType(C.TRACK_TYPE_AUDIO)
|
||||
&& !tracks.isTypeSupported(C.TRACK_TYPE_AUDIO, /* allowExceedsCapabilities= */ true)) {
|
||||
listener.onUnsupportedTrack(C.TRACK_TYPE_AUDIO);
|
||||
}
|
||||
lastSeenTrackGroupInfo = tracksInfo;
|
||||
lastSeenTracks = tracks;
|
||||
}
|
||||
|
||||
// CastPlayer.SessionAvailabilityListener implementation.
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ import android.graphics.drawable.BitmapDrawable;
|
|||
import android.opengl.GLES20;
|
||||
import android.opengl.GLUtils;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.util.GlProgram;
|
||||
import com.google.android.exoplayer2.util.GlUtil;
|
||||
import java.io.IOException;
|
||||
import java.util.Locale;
|
||||
|
|
@ -50,7 +51,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
|||
private final Bitmap logoBitmap;
|
||||
private final Canvas overlayCanvas;
|
||||
|
||||
private GlUtil.@MonotonicNonNull Program program;
|
||||
private @MonotonicNonNull GlProgram program;
|
||||
|
||||
private float bitmapScaleX;
|
||||
private float bitmapScaleY;
|
||||
|
|
@ -78,7 +79,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
|||
public void initialize() {
|
||||
try {
|
||||
program =
|
||||
new GlUtil.Program(
|
||||
new GlProgram(
|
||||
context,
|
||||
/* vertexShaderFilePath= */ "bitmap_overlay_video_processor_vertex.glsl",
|
||||
/* fragmentShaderFilePath= */ "bitmap_overlay_video_processor_fragment.glsl");
|
||||
|
|
@ -86,9 +87,13 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
|||
throw new IllegalStateException(e);
|
||||
}
|
||||
program.setBufferAttribute(
|
||||
"aFramePosition", GlUtil.getNormalizedCoordinateBounds(), GlUtil.RECTANGLE_VERTICES_COUNT);
|
||||
"aFramePosition",
|
||||
GlUtil.getNormalizedCoordinateBounds(),
|
||||
GlUtil.HOMOGENEOUS_COORDINATE_VECTOR_SIZE);
|
||||
program.setBufferAttribute(
|
||||
"aTexCoords", GlUtil.getTextureCoordinateBounds(), GlUtil.RECTANGLE_VERTICES_COUNT);
|
||||
"aTexCoords",
|
||||
GlUtil.getTextureCoordinateBounds(),
|
||||
GlUtil.HOMOGENEOUS_COORDINATE_VECTOR_SIZE);
|
||||
GLES20.glGenTextures(1, textures, 0);
|
||||
GLES20.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
|
||||
GLES20.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
|
||||
|
|
@ -117,9 +122,9 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
|||
GlUtil.checkGlError();
|
||||
|
||||
// Run the shader program.
|
||||
GlUtil.Program program = checkNotNull(this.program);
|
||||
program.setSamplerTexIdUniform("uTexSampler0", frameTexture, /* unit= */ 0);
|
||||
program.setSamplerTexIdUniform("uTexSampler1", textures[0], /* unit= */ 1);
|
||||
GlProgram program = checkNotNull(this.program);
|
||||
program.setSamplerTexIdUniform("uTexSampler0", frameTexture, /* texUnitIndex= */ 0);
|
||||
program.setSamplerTexIdUniform("uTexSampler1", textures[0], /* texUnitIndex= */ 1);
|
||||
program.setFloatUniform("uScaleX", bitmapScaleX);
|
||||
program.setFloatUniform("uScaleY", bitmapScaleY);
|
||||
program.setFloatsUniform("uTexTransform", transformMatrix);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import android.content.Context;
|
|||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.Toast;
|
||||
import androidx.annotation.Nullable;
|
||||
|
|
@ -38,7 +39,6 @@ import com.google.android.exoplayer2.ui.StyledPlayerView;
|
|||
import com.google.android.exoplayer2.upstream.DataSource;
|
||||
import com.google.android.exoplayer2.upstream.DefaultDataSource;
|
||||
import com.google.android.exoplayer2.upstream.DefaultHttpDataSource;
|
||||
import com.google.android.exoplayer2.upstream.HttpDataSource;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.EventLogger;
|
||||
import com.google.android.exoplayer2.util.GlUtil;
|
||||
|
|
@ -144,7 +144,7 @@ public final class MainActivity extends Activity {
|
|||
String drmScheme = Assertions.checkNotNull(intent.getStringExtra(DRM_SCHEME_EXTRA));
|
||||
String drmLicenseUrl = Assertions.checkNotNull(intent.getStringExtra(DRM_LICENSE_URL_EXTRA));
|
||||
UUID drmSchemeUuid = Assertions.checkNotNull(Util.getDrmUuid(drmScheme));
|
||||
HttpDataSource.Factory licenseDataSourceFactory = new DefaultHttpDataSource.Factory();
|
||||
DataSource.Factory licenseDataSourceFactory = new DefaultHttpDataSource.Factory();
|
||||
HttpMediaDrmCallback drmCallback =
|
||||
new HttpMediaDrmCallback(drmLicenseUrl, licenseDataSourceFactory);
|
||||
drmSessionManager =
|
||||
|
|
@ -157,13 +157,18 @@ public final class MainActivity extends Activity {
|
|||
|
||||
DataSource.Factory dataSourceFactory = new DefaultDataSource.Factory(this);
|
||||
MediaSource mediaSource;
|
||||
@C.ContentType int type = Util.inferContentType(uri, intent.getStringExtra(EXTENSION_EXTRA));
|
||||
if (type == C.TYPE_DASH) {
|
||||
@Nullable String fileExtension = intent.getStringExtra(EXTENSION_EXTRA);
|
||||
@C.ContentType
|
||||
int type =
|
||||
TextUtils.isEmpty(fileExtension)
|
||||
? Util.inferContentType(uri)
|
||||
: Util.inferContentTypeForExtension(fileExtension);
|
||||
if (type == C.CONTENT_TYPE_DASH) {
|
||||
mediaSource =
|
||||
new DashMediaSource.Factory(dataSourceFactory)
|
||||
.setDrmSessionManagerProvider(unusedMediaItem -> drmSessionManager)
|
||||
.createMediaSource(MediaItem.fromUri(uri));
|
||||
} else if (type == C.TYPE_OTHER) {
|
||||
} else if (type == C.CONTENT_TYPE_OTHER) {
|
||||
mediaSource =
|
||||
new ProgressiveMediaSource.Factory(dataSourceFactory)
|
||||
.setDrmSessionManagerProvider(unusedMediaItem -> drmSessionManager)
|
||||
|
|
@ -181,7 +186,7 @@ public final class MainActivity extends Activity {
|
|||
Assertions.checkNotNull(this.videoProcessingGLSurfaceView);
|
||||
videoProcessingGLSurfaceView.setPlayer(player);
|
||||
Assertions.checkNotNull(playerView).setPlayer(player);
|
||||
player.addAnalyticsListener(new EventLogger(/* trackSelector= */ null));
|
||||
player.addAnalyticsListener(new EventLogger());
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ import com.google.android.exoplayer2.ui.DownloadNotificationHelper;
|
|||
import com.google.android.exoplayer2.upstream.DataSource;
|
||||
import com.google.android.exoplayer2.upstream.DefaultDataSource;
|
||||
import com.google.android.exoplayer2.upstream.DefaultHttpDataSource;
|
||||
import com.google.android.exoplayer2.upstream.HttpDataSource;
|
||||
import com.google.android.exoplayer2.upstream.cache.Cache;
|
||||
import com.google.android.exoplayer2.upstream.cache.CacheDataSource;
|
||||
import com.google.android.exoplayer2.upstream.cache.NoOpCacheEvictor;
|
||||
|
|
@ -59,7 +58,7 @@ public final class DemoUtil {
|
|||
private static final String DOWNLOAD_CONTENT_DIRECTORY = "downloads";
|
||||
|
||||
private static DataSource.@MonotonicNonNull Factory dataSourceFactory;
|
||||
private static HttpDataSource.@MonotonicNonNull Factory httpDataSourceFactory;
|
||||
private static DataSource.@MonotonicNonNull Factory httpDataSourceFactory;
|
||||
private static @MonotonicNonNull DatabaseProvider databaseProvider;
|
||||
private static @MonotonicNonNull File downloadDirectory;
|
||||
private static @MonotonicNonNull Cache downloadCache;
|
||||
|
|
@ -85,7 +84,7 @@ public final class DemoUtil {
|
|||
.setExtensionRendererMode(extensionRendererMode);
|
||||
}
|
||||
|
||||
public static synchronized HttpDataSource.Factory getHttpDataSourceFactory(Context context) {
|
||||
public static synchronized DataSource.Factory getHttpDataSourceFactory(Context context) {
|
||||
if (httpDataSourceFactory == null) {
|
||||
if (USE_CRONET_FOR_NETWORKING) {
|
||||
context = context.getApplicationContext();
|
||||
|
|
|
|||
|
|
@ -15,8 +15,7 @@
|
|||
*/
|
||||
package com.google.android.exoplayer2.demo;
|
||||
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkStateNotNull;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
|
|
@ -29,6 +28,7 @@ import androidx.fragment.app.FragmentManager;
|
|||
import com.google.android.exoplayer2.Format;
|
||||
import com.google.android.exoplayer2.MediaItem;
|
||||
import com.google.android.exoplayer2.RenderersFactory;
|
||||
import com.google.android.exoplayer2.Tracks;
|
||||
import com.google.android.exoplayer2.drm.DrmInitData;
|
||||
import com.google.android.exoplayer2.drm.DrmSession;
|
||||
import com.google.android.exoplayer2.drm.DrmSessionEventListener;
|
||||
|
|
@ -43,9 +43,9 @@ import com.google.android.exoplayer2.offline.DownloadRequest;
|
|||
import com.google.android.exoplayer2.offline.DownloadService;
|
||||
import com.google.android.exoplayer2.source.TrackGroup;
|
||||
import com.google.android.exoplayer2.source.TrackGroupArray;
|
||||
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
|
||||
import com.google.android.exoplayer2.trackselection.MappingTrackSelector.MappedTrackInfo;
|
||||
import com.google.android.exoplayer2.upstream.HttpDataSource;
|
||||
import com.google.android.exoplayer2.trackselection.TrackSelectionParameters;
|
||||
import com.google.android.exoplayer2.upstream.DataSource;
|
||||
import com.google.android.exoplayer2.util.Log;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
import java.io.IOException;
|
||||
|
|
@ -65,31 +65,26 @@ public class DownloadTracker {
|
|||
private static final String TAG = "DownloadTracker";
|
||||
|
||||
private final Context context;
|
||||
private final HttpDataSource.Factory httpDataSourceFactory;
|
||||
private final DataSource.Factory dataSourceFactory;
|
||||
private final CopyOnWriteArraySet<Listener> listeners;
|
||||
private final HashMap<Uri, Download> downloads;
|
||||
private final DownloadIndex downloadIndex;
|
||||
private final DefaultTrackSelector.Parameters trackSelectorParameters;
|
||||
|
||||
@Nullable private StartDownloadDialogHelper startDownloadDialogHelper;
|
||||
|
||||
public DownloadTracker(
|
||||
Context context,
|
||||
HttpDataSource.Factory httpDataSourceFactory,
|
||||
DownloadManager downloadManager) {
|
||||
Context context, DataSource.Factory dataSourceFactory, DownloadManager downloadManager) {
|
||||
this.context = context.getApplicationContext();
|
||||
this.httpDataSourceFactory = httpDataSourceFactory;
|
||||
this.dataSourceFactory = dataSourceFactory;
|
||||
listeners = new CopyOnWriteArraySet<>();
|
||||
downloads = new HashMap<>();
|
||||
downloadIndex = downloadManager.getDownloadIndex();
|
||||
trackSelectorParameters = DownloadHelper.getDefaultTrackSelectorParameters(context);
|
||||
downloadManager.addListener(new DownloadManagerListener());
|
||||
loadDownloads();
|
||||
}
|
||||
|
||||
public void addListener(Listener listener) {
|
||||
checkNotNull(listener);
|
||||
listeners.add(listener);
|
||||
listeners.add(checkNotNull(listener));
|
||||
}
|
||||
|
||||
public void removeListener(Listener listener) {
|
||||
|
|
@ -120,8 +115,7 @@ public class DownloadTracker {
|
|||
startDownloadDialogHelper =
|
||||
new StartDownloadDialogHelper(
|
||||
fragmentManager,
|
||||
DownloadHelper.forMediaItem(
|
||||
context, mediaItem, renderersFactory, httpDataSourceFactory),
|
||||
DownloadHelper.forMediaItem(context, mediaItem, renderersFactory, dataSourceFactory),
|
||||
mediaItem);
|
||||
}
|
||||
}
|
||||
|
|
@ -159,7 +153,7 @@ public class DownloadTracker {
|
|||
|
||||
private final class StartDownloadDialogHelper
|
||||
implements DownloadHelper.Callback,
|
||||
DialogInterface.OnClickListener,
|
||||
TrackSelectionDialog.TrackSelectionListener,
|
||||
DialogInterface.OnDismissListener {
|
||||
|
||||
private final FragmentManager fragmentManager;
|
||||
|
|
@ -167,7 +161,6 @@ public class DownloadTracker {
|
|||
private final MediaItem mediaItem;
|
||||
|
||||
private TrackSelectionDialog trackSelectionDialog;
|
||||
private MappedTrackInfo mappedTrackInfo;
|
||||
private WidevineOfflineLicenseFetchTask widevineOfflineLicenseFetchTask;
|
||||
@Nullable private byte[] keySetId;
|
||||
|
||||
|
|
@ -220,7 +213,7 @@ public class DownloadTracker {
|
|||
new WidevineOfflineLicenseFetchTask(
|
||||
format,
|
||||
mediaItem.localConfiguration.drmConfiguration,
|
||||
httpDataSourceFactory,
|
||||
dataSourceFactory,
|
||||
/* dialogHelper= */ this,
|
||||
helper);
|
||||
widevineOfflineLicenseFetchTask.execute();
|
||||
|
|
@ -237,21 +230,13 @@ public class DownloadTracker {
|
|||
Log.e(TAG, logMessage, e);
|
||||
}
|
||||
|
||||
// DialogInterface.OnClickListener implementation.
|
||||
// TrackSelectionListener implementation.
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
public void onTracksSelected(TrackSelectionParameters trackSelectionParameters) {
|
||||
for (int periodIndex = 0; periodIndex < downloadHelper.getPeriodCount(); periodIndex++) {
|
||||
downloadHelper.clearTrackSelections(periodIndex);
|
||||
for (int i = 0; i < mappedTrackInfo.getRendererCount(); i++) {
|
||||
if (!trackSelectionDialog.getIsDisabled(/* rendererIndex= */ i)) {
|
||||
downloadHelper.addTrackSelectionForSingleRenderer(
|
||||
periodIndex,
|
||||
/* rendererIndex= */ i,
|
||||
trackSelectorParameters,
|
||||
trackSelectionDialog.getOverrides(/* rendererIndex= */ i));
|
||||
}
|
||||
}
|
||||
downloadHelper.addTrackSelection(periodIndex, trackSelectionParameters);
|
||||
}
|
||||
DownloadRequest downloadRequest = buildDownloadRequest();
|
||||
if (downloadRequest.streamKeys.isEmpty()) {
|
||||
|
|
@ -316,21 +301,21 @@ public class DownloadTracker {
|
|||
return;
|
||||
}
|
||||
|
||||
mappedTrackInfo = downloadHelper.getMappedTrackInfo(/* periodIndex= */ 0);
|
||||
if (!TrackSelectionDialog.willHaveContent(mappedTrackInfo)) {
|
||||
Tracks tracks = downloadHelper.getTracks(/* periodIndex= */ 0);
|
||||
if (!TrackSelectionDialog.willHaveContent(tracks)) {
|
||||
Log.d(TAG, "No dialog content. Downloading entire stream.");
|
||||
startDownload();
|
||||
downloadHelper.release();
|
||||
return;
|
||||
}
|
||||
trackSelectionDialog =
|
||||
TrackSelectionDialog.createForMappedTrackInfoAndParameters(
|
||||
TrackSelectionDialog.createForTracksAndParameters(
|
||||
/* titleId= */ R.string.exo_download_description,
|
||||
mappedTrackInfo,
|
||||
trackSelectorParameters,
|
||||
tracks,
|
||||
DownloadHelper.getDefaultTrackSelectorParameters(context),
|
||||
/* allowAdaptiveSelections= */ false,
|
||||
/* allowMultipleOverrides= */ true,
|
||||
/* onClickListener= */ this,
|
||||
/* onTracksSelectedListener= */ this,
|
||||
/* onDismissListener= */ this);
|
||||
trackSelectionDialog.show(fragmentManager, /* tag= */ null);
|
||||
}
|
||||
|
|
@ -371,7 +356,7 @@ public class DownloadTracker {
|
|||
|
||||
private final Format format;
|
||||
private final MediaItem.DrmConfiguration drmConfiguration;
|
||||
private final HttpDataSource.Factory httpDataSourceFactory;
|
||||
private final DataSource.Factory dataSourceFactory;
|
||||
private final StartDownloadDialogHelper dialogHelper;
|
||||
private final DownloadHelper downloadHelper;
|
||||
|
||||
|
|
@ -381,12 +366,12 @@ public class DownloadTracker {
|
|||
public WidevineOfflineLicenseFetchTask(
|
||||
Format format,
|
||||
MediaItem.DrmConfiguration drmConfiguration,
|
||||
HttpDataSource.Factory httpDataSourceFactory,
|
||||
DataSource.Factory dataSourceFactory,
|
||||
StartDownloadDialogHelper dialogHelper,
|
||||
DownloadHelper downloadHelper) {
|
||||
this.format = format;
|
||||
this.drmConfiguration = drmConfiguration;
|
||||
this.httpDataSourceFactory = httpDataSourceFactory;
|
||||
this.dataSourceFactory = dataSourceFactory;
|
||||
this.dialogHelper = dialogHelper;
|
||||
this.downloadHelper = downloadHelper;
|
||||
}
|
||||
|
|
@ -397,7 +382,7 @@ public class DownloadTracker {
|
|||
OfflineLicenseHelper.newWidevineInstance(
|
||||
drmConfiguration.licenseUri.toString(),
|
||||
drmConfiguration.forceDefaultLicenseUri,
|
||||
httpDataSourceFactory,
|
||||
dataSourceFactory,
|
||||
drmConfiguration.licenseRequestHeaders,
|
||||
new DrmSessionEventListener.EventDispatcher());
|
||||
try {
|
||||
|
|
@ -415,7 +400,7 @@ public class DownloadTracker {
|
|||
if (drmSessionException != null) {
|
||||
dialogHelper.onOfflineLicenseFetchedError(drmSessionException);
|
||||
} else {
|
||||
dialogHelper.onOfflineLicenseFetched(downloadHelper, checkStateNotNull(keySetId));
|
||||
dialogHelper.onOfflineLicenseFetched(downloadHelper, checkNotNull(keySetId));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,8 +15,9 @@
|
|||
*/
|
||||
package com.google.android.exoplayer2.demo;
|
||||
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkState;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
|
|
@ -26,7 +27,6 @@ import com.google.android.exoplayer2.MediaItem;
|
|||
import com.google.android.exoplayer2.MediaItem.ClippingConfiguration;
|
||||
import com.google.android.exoplayer2.MediaItem.SubtitleConfiguration;
|
||||
import com.google.android.exoplayer2.MediaMetadata;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -87,7 +87,7 @@ public class IntentUtil {
|
|||
|
||||
/** Populates the intent with the given list of {@link MediaItem media items}. */
|
||||
public static void addToIntent(List<MediaItem> mediaItems, Intent intent) {
|
||||
Assertions.checkArgument(!mediaItems.isEmpty());
|
||||
checkArgument(!mediaItems.isEmpty());
|
||||
if (mediaItems.size() == 1) {
|
||||
MediaItem mediaItem = mediaItems.get(0);
|
||||
MediaItem.LocalConfiguration localConfiguration = checkNotNull(mediaItem.localConfiguration);
|
||||
|
|
@ -178,7 +178,7 @@ public class IntentUtil {
|
|||
headers.put(keyRequestPropertiesArray[i], keyRequestPropertiesArray[i + 1]);
|
||||
}
|
||||
}
|
||||
@Nullable UUID drmUuid = Util.getDrmUuid(Util.castNonNull(drmSchemeExtra));
|
||||
@Nullable UUID drmUuid = Util.getDrmUuid(drmSchemeExtra);
|
||||
if (drmUuid != null) {
|
||||
builder.setDrmConfiguration(
|
||||
new MediaItem.DrmConfiguration.Builder(drmUuid)
|
||||
|
|
@ -189,7 +189,7 @@ public class IntentUtil {
|
|||
intent.getBooleanExtra(
|
||||
DRM_FORCE_DEFAULT_LICENSE_URI_EXTRA + extrasKeySuffix, false))
|
||||
.setLicenseRequestHeaders(headers)
|
||||
.forceSessionsForAudioAndVideoTracks(
|
||||
.setForceSessionsForAudioAndVideoTracks(
|
||||
intent.getBooleanExtra(DRM_SESSION_FOR_CLEAR_CONTENT + extrasKeySuffix, false))
|
||||
.build());
|
||||
}
|
||||
|
|
@ -242,7 +242,7 @@ public class IntentUtil {
|
|||
drmConfiguration.forcedSessionTrackTypes;
|
||||
if (!forcedDrmSessionTrackTypes.isEmpty()) {
|
||||
// Only video and audio together are supported.
|
||||
Assertions.checkState(
|
||||
checkState(
|
||||
forcedDrmSessionTrackTypes.size() == 2
|
||||
&& forcedDrmSessionTrackTypes.contains(C.TRACK_TYPE_VIDEO)
|
||||
&& forcedDrmSessionTrackTypes.contains(C.TRACK_TYPE_AUDIO));
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ package com.google.android.exoplayer2.demo;
|
|||
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.util.Pair;
|
||||
import android.view.KeyEvent;
|
||||
|
|
@ -34,8 +35,9 @@ import com.google.android.exoplayer2.MediaItem;
|
|||
import com.google.android.exoplayer2.PlaybackException;
|
||||
import com.google.android.exoplayer2.Player;
|
||||
import com.google.android.exoplayer2.RenderersFactory;
|
||||
import com.google.android.exoplayer2.TracksInfo;
|
||||
import com.google.android.exoplayer2.Tracks;
|
||||
import com.google.android.exoplayer2.audio.AudioAttributes;
|
||||
import com.google.android.exoplayer2.drm.DefaultDrmSessionManagerProvider;
|
||||
import com.google.android.exoplayer2.drm.FrameworkMediaDrm;
|
||||
import com.google.android.exoplayer2.ext.ima.ImaAdsLoader;
|
||||
import com.google.android.exoplayer2.ext.ima.ImaServerSideAdInsertionMediaSource;
|
||||
|
|
@ -45,8 +47,7 @@ import com.google.android.exoplayer2.offline.DownloadRequest;
|
|||
import com.google.android.exoplayer2.source.DefaultMediaSourceFactory;
|
||||
import com.google.android.exoplayer2.source.MediaSource;
|
||||
import com.google.android.exoplayer2.source.ads.AdsLoader;
|
||||
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
|
||||
import com.google.android.exoplayer2.ui.StyledPlayerControlView;
|
||||
import com.google.android.exoplayer2.trackselection.TrackSelectionParameters;
|
||||
import com.google.android.exoplayer2.ui.StyledPlayerView;
|
||||
import com.google.android.exoplayer2.upstream.DataSource;
|
||||
import com.google.android.exoplayer2.util.DebugTextViewHelper;
|
||||
|
|
@ -60,7 +61,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
|||
|
||||
/** An activity that plays media using {@link ExoPlayer}. */
|
||||
public class PlayerActivity extends AppCompatActivity
|
||||
implements OnClickListener, StyledPlayerControlView.VisibilityListener {
|
||||
implements OnClickListener, StyledPlayerView.ControllerVisibilityListener {
|
||||
|
||||
// Saved instance state keys.
|
||||
|
||||
|
|
@ -79,10 +80,9 @@ public class PlayerActivity extends AppCompatActivity
|
|||
private Button selectTracksButton;
|
||||
private DataSource.Factory dataSourceFactory;
|
||||
private List<MediaItem> mediaItems;
|
||||
private DefaultTrackSelector trackSelector;
|
||||
private DefaultTrackSelector.Parameters trackSelectionParameters;
|
||||
private TrackSelectionParameters trackSelectionParameters;
|
||||
private DebugTextViewHelper debugViewHelper;
|
||||
private TracksInfo lastSeenTracksInfo;
|
||||
private Tracks lastSeenTracks;
|
||||
private boolean startAutoPlay;
|
||||
private int startItemIndex;
|
||||
private long startPosition;
|
||||
|
|
@ -90,7 +90,12 @@ public class PlayerActivity extends AppCompatActivity
|
|||
// For ad playback only.
|
||||
|
||||
@Nullable private AdsLoader clientSideAdsLoader;
|
||||
|
||||
// TODO: Annotate this and serverSideAdsLoaderState below with @OptIn when it can be applied to
|
||||
// fields (needs http://r.android.com/2004032 to be released into a version of
|
||||
// androidx.annotation:annotation-experimental).
|
||||
@Nullable private ImaServerSideAdInsertionMediaSource.AdsLoader serverSideAdsLoader;
|
||||
|
||||
private ImaServerSideAdInsertionMediaSource.AdsLoader.@MonotonicNonNull State
|
||||
serverSideAdsLoaderState;
|
||||
|
||||
|
|
@ -113,22 +118,15 @@ public class PlayerActivity extends AppCompatActivity
|
|||
playerView.requestFocus();
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
// Restore as DefaultTrackSelector.Parameters in case ExoPlayer specific parameters were set.
|
||||
trackSelectionParameters =
|
||||
DefaultTrackSelector.Parameters.CREATOR.fromBundle(
|
||||
TrackSelectionParameters.fromBundle(
|
||||
savedInstanceState.getBundle(KEY_TRACK_SELECTION_PARAMETERS));
|
||||
startAutoPlay = savedInstanceState.getBoolean(KEY_AUTO_PLAY);
|
||||
startItemIndex = savedInstanceState.getInt(KEY_ITEM_INDEX);
|
||||
startPosition = savedInstanceState.getLong(KEY_POSITION);
|
||||
Bundle adsLoaderStateBundle = savedInstanceState.getBundle(KEY_SERVER_SIDE_ADS_LOADER_STATE);
|
||||
if (adsLoaderStateBundle != null) {
|
||||
serverSideAdsLoaderState =
|
||||
ImaServerSideAdInsertionMediaSource.AdsLoader.State.CREATOR.fromBundle(
|
||||
adsLoaderStateBundle);
|
||||
}
|
||||
restoreServerSideAdsLoaderState(savedInstanceState);
|
||||
} else {
|
||||
trackSelectionParameters =
|
||||
new DefaultTrackSelector.ParametersBuilder(/* context= */ this).build();
|
||||
trackSelectionParameters = new TrackSelectionParameters.Builder(/* context= */ this).build();
|
||||
clearStartPosition();
|
||||
}
|
||||
}
|
||||
|
|
@ -145,7 +143,7 @@ public class PlayerActivity extends AppCompatActivity
|
|||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
if (Util.SDK_INT > 23) {
|
||||
if (Build.VERSION.SDK_INT > 23) {
|
||||
initializePlayer();
|
||||
if (playerView != null) {
|
||||
playerView.onResume();
|
||||
|
|
@ -156,7 +154,7 @@ public class PlayerActivity extends AppCompatActivity
|
|||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
if (Util.SDK_INT <= 23 || player == null) {
|
||||
if (Build.VERSION.SDK_INT <= 23 || player == null) {
|
||||
initializePlayer();
|
||||
if (playerView != null) {
|
||||
playerView.onResume();
|
||||
|
|
@ -167,7 +165,7 @@ public class PlayerActivity extends AppCompatActivity
|
|||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
if (Util.SDK_INT <= 23) {
|
||||
if (Build.VERSION.SDK_INT <= 23) {
|
||||
if (playerView != null) {
|
||||
playerView.onPause();
|
||||
}
|
||||
|
|
@ -178,7 +176,7 @@ public class PlayerActivity extends AppCompatActivity
|
|||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
if (Util.SDK_INT > 23) {
|
||||
if (Build.VERSION.SDK_INT > 23) {
|
||||
if (playerView != null) {
|
||||
playerView.onPause();
|
||||
}
|
||||
|
|
@ -218,9 +216,7 @@ public class PlayerActivity extends AppCompatActivity
|
|||
outState.putBoolean(KEY_AUTO_PLAY, startAutoPlay);
|
||||
outState.putInt(KEY_ITEM_INDEX, startItemIndex);
|
||||
outState.putLong(KEY_POSITION, startPosition);
|
||||
if (serverSideAdsLoaderState != null) {
|
||||
outState.putBundle(KEY_SERVER_SIDE_ADS_LOADER_STATE, serverSideAdsLoaderState.toBundle());
|
||||
}
|
||||
saveServerSideAdsLoaderState(outState);
|
||||
}
|
||||
|
||||
// Activity input
|
||||
|
|
@ -237,20 +233,20 @@ public class PlayerActivity extends AppCompatActivity
|
|||
public void onClick(View view) {
|
||||
if (view == selectTracksButton
|
||||
&& !isShowingTrackSelectionDialog
|
||||
&& TrackSelectionDialog.willHaveContent(trackSelector)) {
|
||||
&& TrackSelectionDialog.willHaveContent(player)) {
|
||||
isShowingTrackSelectionDialog = true;
|
||||
TrackSelectionDialog trackSelectionDialog =
|
||||
TrackSelectionDialog.createForTrackSelector(
|
||||
trackSelector,
|
||||
TrackSelectionDialog.createForPlayer(
|
||||
player,
|
||||
/* onDismissListener= */ dismissedDialog -> isShowingTrackSelectionDialog = false);
|
||||
trackSelectionDialog.show(getSupportFragmentManager(), /* tag= */ null);
|
||||
}
|
||||
}
|
||||
|
||||
// StyledPlayerControlView.VisibilityListener implementation
|
||||
// StyledPlayerView.ControllerVisibilityListener implementation
|
||||
|
||||
@Override
|
||||
public void onVisibilityChange(int visibility) {
|
||||
public void onVisibilityChanged(int visibility) {
|
||||
debugRootView.setVisibility(visibility);
|
||||
}
|
||||
|
||||
|
|
@ -260,7 +256,9 @@ public class PlayerActivity extends AppCompatActivity
|
|||
setContentView(R.layout.player_activity);
|
||||
}
|
||||
|
||||
/** @return Whether initialization was successful. */
|
||||
/**
|
||||
* @return Whether initialization was successful.
|
||||
*/
|
||||
protected boolean initializePlayer() {
|
||||
if (player == null) {
|
||||
Intent intent = getIntent();
|
||||
|
|
@ -270,26 +268,20 @@ public class PlayerActivity extends AppCompatActivity
|
|||
return false;
|
||||
}
|
||||
|
||||
boolean preferExtensionDecoders =
|
||||
intent.getBooleanExtra(IntentUtil.PREFER_EXTENSION_DECODERS_EXTRA, false);
|
||||
RenderersFactory renderersFactory =
|
||||
DemoUtil.buildRenderersFactory(/* context= */ this, preferExtensionDecoders);
|
||||
|
||||
trackSelector = new DefaultTrackSelector(/* context= */ this);
|
||||
lastSeenTracksInfo = TracksInfo.EMPTY;
|
||||
player =
|
||||
lastSeenTracks = Tracks.EMPTY;
|
||||
ExoPlayer.Builder playerBuilder =
|
||||
new ExoPlayer.Builder(/* context= */ this)
|
||||
.setRenderersFactory(renderersFactory)
|
||||
.setMediaSourceFactory(createMediaSourceFactory())
|
||||
.setTrackSelector(trackSelector)
|
||||
.build();
|
||||
.setMediaSourceFactory(createMediaSourceFactory());
|
||||
setRenderersFactory(
|
||||
playerBuilder, intent.getBooleanExtra(IntentUtil.PREFER_EXTENSION_DECODERS_EXTRA, false));
|
||||
player = playerBuilder.build();
|
||||
player.setTrackSelectionParameters(trackSelectionParameters);
|
||||
player.addListener(new PlayerEventListener());
|
||||
player.addAnalyticsListener(new EventLogger(trackSelector));
|
||||
player.addAnalyticsListener(new EventLogger());
|
||||
player.setAudioAttributes(AudioAttributes.DEFAULT, /* handleAudioFocus= */ true);
|
||||
player.setPlayWhenReady(startAutoPlay);
|
||||
playerView.setPlayer(player);
|
||||
serverSideAdsLoader.setPlayer(player);
|
||||
configurePlayerWithServerSideAdsLoader();
|
||||
debugViewHelper = new DebugTextViewHelper(player, debugTextView);
|
||||
debugViewHelper.start();
|
||||
}
|
||||
|
|
@ -304,6 +296,10 @@ public class PlayerActivity extends AppCompatActivity
|
|||
}
|
||||
|
||||
private MediaSource.Factory createMediaSourceFactory() {
|
||||
DefaultDrmSessionManagerProvider drmSessionManagerProvider =
|
||||
new DefaultDrmSessionManagerProvider();
|
||||
drmSessionManagerProvider.setDrmHttpDataSourceFactory(
|
||||
DemoUtil.getHttpDataSourceFactory(/* context= */ this));
|
||||
ImaServerSideAdInsertionMediaSource.AdsLoader.Builder serverSideAdLoaderBuilder =
|
||||
new ImaServerSideAdInsertionMediaSource.AdsLoader.Builder(/* context= */ this, playerView);
|
||||
if (serverSideAdsLoaderState != null) {
|
||||
|
|
@ -312,13 +308,28 @@ public class PlayerActivity extends AppCompatActivity
|
|||
serverSideAdsLoader = serverSideAdLoaderBuilder.build();
|
||||
ImaServerSideAdInsertionMediaSource.Factory imaServerSideAdInsertionMediaSourceFactory =
|
||||
new ImaServerSideAdInsertionMediaSource.Factory(
|
||||
serverSideAdsLoader, new DefaultMediaSourceFactory(dataSourceFactory));
|
||||
return new DefaultMediaSourceFactory(dataSourceFactory)
|
||||
.setAdsLoaderProvider(this::getClientSideAdsLoader)
|
||||
.setAdViewProvider(playerView)
|
||||
serverSideAdsLoader,
|
||||
new DefaultMediaSourceFactory(/* context= */ this)
|
||||
.setDataSourceFactory(dataSourceFactory));
|
||||
return new DefaultMediaSourceFactory(/* context= */ this)
|
||||
.setDataSourceFactory(dataSourceFactory)
|
||||
.setDrmSessionManagerProvider(drmSessionManagerProvider)
|
||||
.setLocalAdInsertionComponents(
|
||||
this::getClientSideAdsLoader, /* adViewProvider= */ playerView)
|
||||
.setServerSideAdInsertionMediaSourceFactory(imaServerSideAdInsertionMediaSourceFactory);
|
||||
}
|
||||
|
||||
private void setRenderersFactory(
|
||||
ExoPlayer.Builder playerBuilder, boolean preferExtensionDecoders) {
|
||||
RenderersFactory renderersFactory =
|
||||
DemoUtil.buildRenderersFactory(/* context= */ this, preferExtensionDecoders);
|
||||
playerBuilder.setRenderersFactory(renderersFactory);
|
||||
}
|
||||
|
||||
private void configurePlayerWithServerSideAdsLoader() {
|
||||
serverSideAdsLoader.setPlayer(player);
|
||||
}
|
||||
|
||||
private List<MediaItem> createMediaItems(Intent intent) {
|
||||
String action = intent.getAction();
|
||||
boolean actionIsListView = IntentUtil.ACTION_VIEW_LIST.equals(action);
|
||||
|
|
@ -345,7 +356,7 @@ public class PlayerActivity extends AppCompatActivity
|
|||
|
||||
MediaItem.DrmConfiguration drmConfiguration = mediaItem.localConfiguration.drmConfiguration;
|
||||
if (drmConfiguration != null) {
|
||||
if (Util.SDK_INT < 18) {
|
||||
if (Build.VERSION.SDK_INT < 18) {
|
||||
showToast(R.string.error_drm_unsupported_before_api_18);
|
||||
finish();
|
||||
return Collections.emptyList();
|
||||
|
|
@ -372,8 +383,7 @@ public class PlayerActivity extends AppCompatActivity
|
|||
if (player != null) {
|
||||
updateTrackSelectorParameters();
|
||||
updateStartPosition();
|
||||
serverSideAdsLoaderState = serverSideAdsLoader.release();
|
||||
serverSideAdsLoader = null;
|
||||
releaseServerSideAdsLoader();
|
||||
debugViewHelper.stop();
|
||||
debugViewHelper = null;
|
||||
player.release();
|
||||
|
|
@ -388,6 +398,11 @@ public class PlayerActivity extends AppCompatActivity
|
|||
}
|
||||
}
|
||||
|
||||
private void releaseServerSideAdsLoader() {
|
||||
serverSideAdsLoaderState = serverSideAdsLoader.release();
|
||||
serverSideAdsLoader = null;
|
||||
}
|
||||
|
||||
private void releaseClientSideAdsLoader() {
|
||||
if (clientSideAdsLoader != null) {
|
||||
clientSideAdsLoader.release();
|
||||
|
|
@ -396,12 +411,24 @@ public class PlayerActivity extends AppCompatActivity
|
|||
}
|
||||
}
|
||||
|
||||
private void saveServerSideAdsLoaderState(Bundle outState) {
|
||||
if (serverSideAdsLoaderState != null) {
|
||||
outState.putBundle(KEY_SERVER_SIDE_ADS_LOADER_STATE, serverSideAdsLoaderState.toBundle());
|
||||
}
|
||||
}
|
||||
|
||||
private void restoreServerSideAdsLoaderState(Bundle savedInstanceState) {
|
||||
Bundle adsLoaderStateBundle = savedInstanceState.getBundle(KEY_SERVER_SIDE_ADS_LOADER_STATE);
|
||||
if (adsLoaderStateBundle != null) {
|
||||
serverSideAdsLoaderState =
|
||||
ImaServerSideAdInsertionMediaSource.AdsLoader.State.CREATOR.fromBundle(
|
||||
adsLoaderStateBundle);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateTrackSelectorParameters() {
|
||||
if (player != null) {
|
||||
// Until the demo app is fully migrated to TrackSelectionParameters, rely on ExoPlayer to use
|
||||
// DefaultTrackSelector by default.
|
||||
trackSelectionParameters =
|
||||
(DefaultTrackSelector.Parameters) player.getTrackSelectionParameters();
|
||||
trackSelectionParameters = player.getTrackSelectionParameters();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -422,8 +449,7 @@ public class PlayerActivity extends AppCompatActivity
|
|||
// User controls
|
||||
|
||||
private void updateButtonVisibility() {
|
||||
selectTracksButton.setEnabled(
|
||||
player != null && TrackSelectionDialog.willHaveContent(trackSelector));
|
||||
selectTracksButton.setEnabled(player != null && TrackSelectionDialog.willHaveContent(player));
|
||||
}
|
||||
|
||||
private void showControls() {
|
||||
|
|
@ -461,20 +487,20 @@ public class PlayerActivity extends AppCompatActivity
|
|||
|
||||
@Override
|
||||
@SuppressWarnings("ReferenceEquality")
|
||||
public void onTracksInfoChanged(TracksInfo tracksInfo) {
|
||||
public void onTracksChanged(Tracks tracks) {
|
||||
updateButtonVisibility();
|
||||
if (tracksInfo == lastSeenTracksInfo) {
|
||||
if (tracks == lastSeenTracks) {
|
||||
return;
|
||||
}
|
||||
if (!tracksInfo.isTypeSupportedOrEmpty(
|
||||
C.TRACK_TYPE_VIDEO, /* allowExceedsCapabilities= */ true)) {
|
||||
if (tracks.containsType(C.TRACK_TYPE_VIDEO)
|
||||
&& !tracks.isTypeSupported(C.TRACK_TYPE_VIDEO, /* allowExceedsCapabilities= */ true)) {
|
||||
showToast(R.string.error_unsupported_video);
|
||||
}
|
||||
if (!tracksInfo.isTypeSupportedOrEmpty(
|
||||
C.TRACK_TYPE_AUDIO, /* allowExceedsCapabilities= */ true)) {
|
||||
if (tracks.containsType(C.TRACK_TYPE_AUDIO)
|
||||
&& !tracks.isTypeSupported(C.TRACK_TYPE_AUDIO, /* allowExceedsCapabilities= */ true)) {
|
||||
showToast(R.string.error_unsupported_audio);
|
||||
}
|
||||
lastSeenTracksInfo = tracksInfo;
|
||||
lastSeenTracks = tracks;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -513,29 +539,31 @@ public class PlayerActivity extends AppCompatActivity
|
|||
private static List<MediaItem> createMediaItems(Intent intent, DownloadTracker downloadTracker) {
|
||||
List<MediaItem> mediaItems = new ArrayList<>();
|
||||
for (MediaItem item : IntentUtil.createMediaItemsFromIntent(intent)) {
|
||||
@Nullable
|
||||
DownloadRequest downloadRequest =
|
||||
downloadTracker.getDownloadRequest(item.localConfiguration.uri);
|
||||
if (downloadRequest != null) {
|
||||
MediaItem.Builder builder = item.buildUpon();
|
||||
builder
|
||||
.setMediaId(downloadRequest.id)
|
||||
.setUri(downloadRequest.uri)
|
||||
.setCustomCacheKey(downloadRequest.customCacheKey)
|
||||
.setMimeType(downloadRequest.mimeType)
|
||||
.setStreamKeys(downloadRequest.streamKeys);
|
||||
@Nullable
|
||||
MediaItem.DrmConfiguration drmConfiguration = item.localConfiguration.drmConfiguration;
|
||||
if (drmConfiguration != null) {
|
||||
builder.setDrmConfiguration(
|
||||
drmConfiguration.buildUpon().setKeySetId(downloadRequest.keySetId).build());
|
||||
}
|
||||
|
||||
mediaItems.add(builder.build());
|
||||
} else {
|
||||
mediaItems.add(item);
|
||||
}
|
||||
mediaItems.add(
|
||||
maybeSetDownloadProperties(
|
||||
item, downloadTracker.getDownloadRequest(item.localConfiguration.uri)));
|
||||
}
|
||||
return mediaItems;
|
||||
}
|
||||
|
||||
private static MediaItem maybeSetDownloadProperties(
|
||||
MediaItem item, @Nullable DownloadRequest downloadRequest) {
|
||||
if (downloadRequest == null) {
|
||||
return item;
|
||||
}
|
||||
MediaItem.Builder builder = item.buildUpon();
|
||||
builder
|
||||
.setMediaId(downloadRequest.id)
|
||||
.setUri(downloadRequest.uri)
|
||||
.setCustomCacheKey(downloadRequest.customCacheKey)
|
||||
.setMimeType(downloadRequest.mimeType)
|
||||
.setStreamKeys(downloadRequest.streamKeys);
|
||||
@Nullable
|
||||
MediaItem.DrmConfiguration drmConfiguration = item.localConfiguration.drmConfiguration;
|
||||
if (drmConfiguration != null) {
|
||||
builder.setDrmConfiguration(
|
||||
drmConfiguration.buildUpon().setKeySetId(downloadRequest.keySetId).build());
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@
|
|||
*/
|
||||
package com.google.android.exoplayer2.demo;
|
||||
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkArgument;
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkState;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
|
@ -27,6 +27,7 @@ import android.content.res.AssetManager;
|
|||
import android.net.Uri;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.JsonReader;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
|
|
@ -53,6 +54,7 @@ import com.google.android.exoplayer2.upstream.DataSourceUtil;
|
|||
import com.google.android.exoplayer2.upstream.DataSpec;
|
||||
import com.google.android.exoplayer2.util.Log;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import java.io.IOException;
|
||||
|
|
@ -116,8 +118,11 @@ public class SampleChooserActivity extends AppCompatActivity
|
|||
useExtensionRenderers = DemoUtil.useExtensionRenderers();
|
||||
downloadTracker = DemoUtil.getDownloadTracker(/* context= */ this);
|
||||
loadSample();
|
||||
startDownloadService();
|
||||
}
|
||||
|
||||
// Start the download service if it should be running but it's not currently.
|
||||
/** Start the download service if it should be running but it's not currently. */
|
||||
private void startDownloadService() {
|
||||
// Starting the service in the foreground causes notification flicker if there is no scheduled
|
||||
// action. Starting it in the background throws an exception if the app is in the background too
|
||||
// (e.g. if device screen is locked).
|
||||
|
|
@ -436,7 +441,10 @@ public class SampleChooserActivity extends AppCompatActivity
|
|||
} else {
|
||||
@Nullable
|
||||
String adaptiveMimeType =
|
||||
Util.getAdaptiveMimeTypeForContentType(Util.inferContentType(uri, extension));
|
||||
Util.getAdaptiveMimeTypeForContentType(
|
||||
TextUtils.isEmpty(extension)
|
||||
? Util.inferContentType(uri)
|
||||
: Util.inferContentTypeForExtension(extension));
|
||||
mediaItem
|
||||
.setUri(uri)
|
||||
.setMediaMetadata(new MediaMetadata.Builder().setTitle(title).build())
|
||||
|
|
@ -447,7 +455,7 @@ public class SampleChooserActivity extends AppCompatActivity
|
|||
new MediaItem.DrmConfiguration.Builder(drmUuid)
|
||||
.setLicenseUri(drmLicenseUri)
|
||||
.setLicenseRequestHeaders(drmLicenseRequestHeaders)
|
||||
.forceSessionsForAudioAndVideoTracks(drmSessionForClearContent)
|
||||
.setForceSessionsForAudioAndVideoTracks(drmSessionForClearContent)
|
||||
.setMultiSession(drmMultiSession)
|
||||
.setForceDefaultLicenseUri(drmForceDefaultLicenseUri)
|
||||
.build());
|
||||
|
|
@ -481,7 +489,7 @@ public class SampleChooserActivity extends AppCompatActivity
|
|||
|
||||
private PlaylistGroup getGroup(String groupName, List<PlaylistGroup> groups) {
|
||||
for (int i = 0; i < groups.size(); i++) {
|
||||
if (Util.areEqual(groupName, groups.get(i).title)) {
|
||||
if (Objects.equal(groupName, groups.get(i).title)) {
|
||||
return groups.get(i);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,20 +32,40 @@ import androidx.fragment.app.FragmentManager;
|
|||
import androidx.fragment.app.FragmentPagerAdapter;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.source.TrackGroupArray;
|
||||
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
|
||||
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector.SelectionOverride;
|
||||
import com.google.android.exoplayer2.trackselection.MappingTrackSelector.MappedTrackInfo;
|
||||
import com.google.android.exoplayer2.Player;
|
||||
import com.google.android.exoplayer2.Tracks;
|
||||
import com.google.android.exoplayer2.source.TrackGroup;
|
||||
import com.google.android.exoplayer2.trackselection.TrackSelectionOverride;
|
||||
import com.google.android.exoplayer2.trackselection.TrackSelectionParameters;
|
||||
import com.google.android.exoplayer2.ui.TrackSelectionView;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.material.tabs.TabLayout;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/** Dialog to select tracks. */
|
||||
public final class TrackSelectionDialog extends DialogFragment {
|
||||
|
||||
/** Called when tracks are selected. */
|
||||
public interface TrackSelectionListener {
|
||||
|
||||
/**
|
||||
* Called when tracks are selected.
|
||||
*
|
||||
* @param trackSelectionParameters A {@link TrackSelectionParameters} representing the selected
|
||||
* tracks. Any manual selections are defined by {@link
|
||||
* TrackSelectionParameters#disabledTrackTypes} and {@link
|
||||
* TrackSelectionParameters#overrides}.
|
||||
*/
|
||||
void onTracksSelected(TrackSelectionParameters trackSelectionParameters);
|
||||
}
|
||||
|
||||
public static final ImmutableList<Integer> SUPPORTED_TRACK_TYPES =
|
||||
ImmutableList.of(C.TRACK_TYPE_VIDEO, C.TRACK_TYPE_AUDIO, C.TRACK_TYPE_TEXT);
|
||||
|
||||
private final SparseArray<TrackSelectionViewFragment> tabFragments;
|
||||
private final ArrayList<Integer> tabTrackTypes;
|
||||
|
||||
|
|
@ -55,20 +75,19 @@ public final class TrackSelectionDialog extends DialogFragment {
|
|||
|
||||
/**
|
||||
* Returns whether a track selection dialog will have content to display if initialized with the
|
||||
* specified {@link DefaultTrackSelector} in its current state.
|
||||
* specified {@link Player}.
|
||||
*/
|
||||
public static boolean willHaveContent(DefaultTrackSelector trackSelector) {
|
||||
MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo();
|
||||
return mappedTrackInfo != null && willHaveContent(mappedTrackInfo);
|
||||
public static boolean willHaveContent(Player player) {
|
||||
return willHaveContent(player.getCurrentTracks());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether a track selection dialog will have content to display if initialized with the
|
||||
* specified {@link MappedTrackInfo}.
|
||||
* specified {@link Tracks}.
|
||||
*/
|
||||
public static boolean willHaveContent(MappedTrackInfo mappedTrackInfo) {
|
||||
for (int i = 0; i < mappedTrackInfo.getRendererCount(); i++) {
|
||||
if (showTabForRenderer(mappedTrackInfo, i)) {
|
||||
public static boolean willHaveContent(Tracks tracks) {
|
||||
for (Tracks.Group trackGroup : tracks.getGroups()) {
|
||||
if (SUPPORTED_TRACK_TYPES.contains(trackGroup.getType())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -76,78 +95,67 @@ public final class TrackSelectionDialog extends DialogFragment {
|
|||
}
|
||||
|
||||
/**
|
||||
* Creates a dialog for a given {@link DefaultTrackSelector}, whose parameters will be
|
||||
* automatically updated when tracks are selected.
|
||||
* Creates a dialog for a given {@link Player}, whose parameters will be automatically updated
|
||||
* when tracks are selected.
|
||||
*
|
||||
* @param trackSelector The {@link DefaultTrackSelector}.
|
||||
* @param player The {@link Player}.
|
||||
* @param onDismissListener A {@link DialogInterface.OnDismissListener} to call when the dialog is
|
||||
* dismissed.
|
||||
*/
|
||||
public static TrackSelectionDialog createForTrackSelector(
|
||||
DefaultTrackSelector trackSelector, DialogInterface.OnDismissListener onDismissListener) {
|
||||
MappedTrackInfo mappedTrackInfo =
|
||||
Assertions.checkNotNull(trackSelector.getCurrentMappedTrackInfo());
|
||||
TrackSelectionDialog trackSelectionDialog = new TrackSelectionDialog();
|
||||
DefaultTrackSelector.Parameters parameters = trackSelector.getParameters();
|
||||
trackSelectionDialog.init(
|
||||
/* titleId= */ R.string.track_selection_title,
|
||||
mappedTrackInfo,
|
||||
/* initialParameters = */ parameters,
|
||||
public static TrackSelectionDialog createForPlayer(
|
||||
Player player, DialogInterface.OnDismissListener onDismissListener) {
|
||||
return createForTracksAndParameters(
|
||||
R.string.track_selection_title,
|
||||
player.getCurrentTracks(),
|
||||
player.getTrackSelectionParameters(),
|
||||
/* allowAdaptiveSelections= */ true,
|
||||
/* allowMultipleOverrides= */ false,
|
||||
/* onClickListener= */ (dialog, which) -> {
|
||||
DefaultTrackSelector.ParametersBuilder builder = parameters.buildUpon();
|
||||
for (int i = 0; i < mappedTrackInfo.getRendererCount(); i++) {
|
||||
builder
|
||||
.clearSelectionOverrides(/* rendererIndex= */ i)
|
||||
.setRendererDisabled(
|
||||
/* rendererIndex= */ i,
|
||||
trackSelectionDialog.getIsDisabled(/* rendererIndex= */ i));
|
||||
List<SelectionOverride> overrides =
|
||||
trackSelectionDialog.getOverrides(/* rendererIndex= */ i);
|
||||
if (!overrides.isEmpty()) {
|
||||
builder.setSelectionOverride(
|
||||
/* rendererIndex= */ i,
|
||||
mappedTrackInfo.getTrackGroups(/* rendererIndex= */ i),
|
||||
overrides.get(0));
|
||||
}
|
||||
}
|
||||
trackSelector.setParameters(builder);
|
||||
},
|
||||
player::setTrackSelectionParameters,
|
||||
onDismissListener);
|
||||
return trackSelectionDialog;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a dialog for given {@link MappedTrackInfo} and {@link DefaultTrackSelector.Parameters}.
|
||||
* Creates a dialog for given {@link Tracks} and {@link TrackSelectionParameters}.
|
||||
*
|
||||
* @param titleId The resource id of the dialog title.
|
||||
* @param mappedTrackInfo The {@link MappedTrackInfo} to display.
|
||||
* @param initialParameters The {@link DefaultTrackSelector.Parameters} describing the initial
|
||||
* track selection.
|
||||
* @param tracks The {@link Tracks} describing the tracks to display.
|
||||
* @param trackSelectionParameters The initial {@link TrackSelectionParameters}.
|
||||
* @param allowAdaptiveSelections Whether adaptive selections (consisting of more than one track)
|
||||
* can be made.
|
||||
* @param allowMultipleOverrides Whether tracks from multiple track groups can be selected.
|
||||
* @param onClickListener {@link DialogInterface.OnClickListener} called when tracks are selected.
|
||||
* @param trackSelectionListener Called when tracks are selected.
|
||||
* @param onDismissListener {@link DialogInterface.OnDismissListener} called when the dialog is
|
||||
* dismissed.
|
||||
*/
|
||||
public static TrackSelectionDialog createForMappedTrackInfoAndParameters(
|
||||
public static TrackSelectionDialog createForTracksAndParameters(
|
||||
int titleId,
|
||||
MappedTrackInfo mappedTrackInfo,
|
||||
DefaultTrackSelector.Parameters initialParameters,
|
||||
Tracks tracks,
|
||||
TrackSelectionParameters trackSelectionParameters,
|
||||
boolean allowAdaptiveSelections,
|
||||
boolean allowMultipleOverrides,
|
||||
DialogInterface.OnClickListener onClickListener,
|
||||
TrackSelectionListener trackSelectionListener,
|
||||
DialogInterface.OnDismissListener onDismissListener) {
|
||||
TrackSelectionDialog trackSelectionDialog = new TrackSelectionDialog();
|
||||
trackSelectionDialog.init(
|
||||
tracks,
|
||||
trackSelectionParameters,
|
||||
titleId,
|
||||
mappedTrackInfo,
|
||||
initialParameters,
|
||||
allowAdaptiveSelections,
|
||||
allowMultipleOverrides,
|
||||
onClickListener,
|
||||
/* onClickListener= */ (dialog, which) -> {
|
||||
TrackSelectionParameters.Builder builder = trackSelectionParameters.buildUpon();
|
||||
for (int i = 0; i < SUPPORTED_TRACK_TYPES.size(); i++) {
|
||||
int trackType = SUPPORTED_TRACK_TYPES.get(i);
|
||||
builder.setTrackTypeDisabled(trackType, trackSelectionDialog.getIsDisabled(trackType));
|
||||
builder.clearOverridesOfType(trackType);
|
||||
Map<TrackGroup, TrackSelectionOverride> overrides =
|
||||
trackSelectionDialog.getOverrides(trackType);
|
||||
for (TrackSelectionOverride override : overrides.values()) {
|
||||
builder.addOverride(override);
|
||||
}
|
||||
}
|
||||
trackSelectionListener.onTracksSelected(builder.build());
|
||||
},
|
||||
onDismissListener);
|
||||
return trackSelectionDialog;
|
||||
}
|
||||
|
|
@ -160,9 +168,9 @@ public final class TrackSelectionDialog extends DialogFragment {
|
|||
}
|
||||
|
||||
private void init(
|
||||
Tracks tracks,
|
||||
TrackSelectionParameters trackSelectionParameters,
|
||||
int titleId,
|
||||
MappedTrackInfo mappedTrackInfo,
|
||||
DefaultTrackSelector.Parameters initialParameters,
|
||||
boolean allowAdaptiveSelections,
|
||||
boolean allowMultipleOverrides,
|
||||
DialogInterface.OnClickListener onClickListener,
|
||||
|
|
@ -170,45 +178,49 @@ public final class TrackSelectionDialog extends DialogFragment {
|
|||
this.titleId = titleId;
|
||||
this.onClickListener = onClickListener;
|
||||
this.onDismissListener = onDismissListener;
|
||||
for (int i = 0; i < mappedTrackInfo.getRendererCount(); i++) {
|
||||
if (showTabForRenderer(mappedTrackInfo, i)) {
|
||||
int trackType = mappedTrackInfo.getRendererType(/* rendererIndex= */ i);
|
||||
TrackGroupArray trackGroupArray = mappedTrackInfo.getTrackGroups(i);
|
||||
|
||||
for (int i = 0; i < SUPPORTED_TRACK_TYPES.size(); i++) {
|
||||
@C.TrackType int trackType = SUPPORTED_TRACK_TYPES.get(i);
|
||||
ArrayList<Tracks.Group> trackGroups = new ArrayList<>();
|
||||
for (Tracks.Group trackGroup : tracks.getGroups()) {
|
||||
if (trackGroup.getType() == trackType) {
|
||||
trackGroups.add(trackGroup);
|
||||
}
|
||||
}
|
||||
if (!trackGroups.isEmpty()) {
|
||||
TrackSelectionViewFragment tabFragment = new TrackSelectionViewFragment();
|
||||
tabFragment.init(
|
||||
mappedTrackInfo,
|
||||
/* rendererIndex= */ i,
|
||||
initialParameters.getRendererDisabled(/* rendererIndex= */ i),
|
||||
initialParameters.getSelectionOverride(/* rendererIndex= */ i, trackGroupArray),
|
||||
trackGroups,
|
||||
trackSelectionParameters.disabledTrackTypes.contains(trackType),
|
||||
trackSelectionParameters.overrides,
|
||||
allowAdaptiveSelections,
|
||||
allowMultipleOverrides);
|
||||
tabFragments.put(i, tabFragment);
|
||||
tabFragments.put(trackType, tabFragment);
|
||||
tabTrackTypes.add(trackType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether a renderer is disabled.
|
||||
* Returns whether the disabled option is selected for the specified track type.
|
||||
*
|
||||
* @param rendererIndex Renderer index.
|
||||
* @return Whether the renderer is disabled.
|
||||
* @param trackType The track type.
|
||||
* @return Whether the disabled option is selected for the track type.
|
||||
*/
|
||||
public boolean getIsDisabled(int rendererIndex) {
|
||||
TrackSelectionViewFragment rendererView = tabFragments.get(rendererIndex);
|
||||
return rendererView != null && rendererView.isDisabled;
|
||||
public boolean getIsDisabled(int trackType) {
|
||||
TrackSelectionViewFragment trackView = tabFragments.get(trackType);
|
||||
return trackView != null && trackView.isDisabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the list of selected track selection overrides for the specified renderer. There will
|
||||
* be at most one override for each track group.
|
||||
* Returns the selected track overrides for the specified track type.
|
||||
*
|
||||
* @param rendererIndex Renderer index.
|
||||
* @return The list of track selection overrides for this renderer.
|
||||
* @param trackType The track type.
|
||||
* @return The track overrides for the track type.
|
||||
*/
|
||||
public List<SelectionOverride> getOverrides(int rendererIndex) {
|
||||
TrackSelectionViewFragment rendererView = tabFragments.get(rendererIndex);
|
||||
return rendererView == null ? Collections.emptyList() : rendererView.overrides;
|
||||
public Map<TrackGroup, TrackSelectionOverride> getOverrides(int trackType) {
|
||||
TrackSelectionViewFragment trackView = tabFragments.get(trackType);
|
||||
return trackView == null ? Collections.emptyMap() : trackView.overrides;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -248,27 +260,7 @@ public final class TrackSelectionDialog extends DialogFragment {
|
|||
return dialogView;
|
||||
}
|
||||
|
||||
private static boolean showTabForRenderer(MappedTrackInfo mappedTrackInfo, int rendererIndex) {
|
||||
TrackGroupArray trackGroupArray = mappedTrackInfo.getTrackGroups(rendererIndex);
|
||||
if (trackGroupArray.length == 0) {
|
||||
return false;
|
||||
}
|
||||
int trackType = mappedTrackInfo.getRendererType(rendererIndex);
|
||||
return isSupportedTrackType(trackType);
|
||||
}
|
||||
|
||||
private static boolean isSupportedTrackType(int trackType) {
|
||||
switch (trackType) {
|
||||
case C.TRACK_TYPE_VIDEO:
|
||||
case C.TRACK_TYPE_AUDIO:
|
||||
case C.TRACK_TYPE_TEXT:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static String getTrackTypeString(Resources resources, int trackType) {
|
||||
private static String getTrackTypeString(Resources resources, @C.TrackType int trackType) {
|
||||
switch (trackType) {
|
||||
case C.TRACK_TYPE_VIDEO:
|
||||
return resources.getString(R.string.exo_track_selection_title_video);
|
||||
|
|
@ -289,12 +281,12 @@ public final class TrackSelectionDialog extends DialogFragment {
|
|||
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
return tabFragments.valueAt(position);
|
||||
return tabFragments.get(tabTrackTypes.get(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return tabFragments.size();
|
||||
return tabTrackTypes.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -307,13 +299,12 @@ public final class TrackSelectionDialog extends DialogFragment {
|
|||
public static final class TrackSelectionViewFragment extends Fragment
|
||||
implements TrackSelectionView.TrackSelectionListener {
|
||||
|
||||
private MappedTrackInfo mappedTrackInfo;
|
||||
private int rendererIndex;
|
||||
private List<Tracks.Group> trackGroups;
|
||||
private boolean allowAdaptiveSelections;
|
||||
private boolean allowMultipleOverrides;
|
||||
|
||||
/* package */ boolean isDisabled;
|
||||
/* package */ List<SelectionOverride> overrides;
|
||||
/* package */ Map<TrackGroup, TrackSelectionOverride> overrides;
|
||||
|
||||
public TrackSelectionViewFragment() {
|
||||
// Retain instance across activity re-creation to prevent losing access to init data.
|
||||
|
|
@ -321,21 +312,20 @@ public final class TrackSelectionDialog extends DialogFragment {
|
|||
}
|
||||
|
||||
public void init(
|
||||
MappedTrackInfo mappedTrackInfo,
|
||||
int rendererIndex,
|
||||
boolean initialIsDisabled,
|
||||
@Nullable SelectionOverride initialOverride,
|
||||
List<Tracks.Group> trackGroups,
|
||||
boolean isDisabled,
|
||||
Map<TrackGroup, TrackSelectionOverride> overrides,
|
||||
boolean allowAdaptiveSelections,
|
||||
boolean allowMultipleOverrides) {
|
||||
this.mappedTrackInfo = mappedTrackInfo;
|
||||
this.rendererIndex = rendererIndex;
|
||||
this.isDisabled = initialIsDisabled;
|
||||
this.overrides =
|
||||
initialOverride == null
|
||||
? Collections.emptyList()
|
||||
: Collections.singletonList(initialOverride);
|
||||
this.trackGroups = trackGroups;
|
||||
this.isDisabled = isDisabled;
|
||||
this.allowAdaptiveSelections = allowAdaptiveSelections;
|
||||
this.allowMultipleOverrides = allowMultipleOverrides;
|
||||
// TrackSelectionView does this filtering internally, but we need to do it here as well to
|
||||
// handle the case where the TrackSelectionView is never created.
|
||||
this.overrides =
|
||||
new HashMap<>(
|
||||
TrackSelectionView.filterOverrides(overrides, trackGroups, allowMultipleOverrides));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -351,8 +341,7 @@ public final class TrackSelectionDialog extends DialogFragment {
|
|||
trackSelectionView.setAllowMultipleOverrides(allowMultipleOverrides);
|
||||
trackSelectionView.setAllowAdaptiveSelections(allowAdaptiveSelections);
|
||||
trackSelectionView.init(
|
||||
mappedTrackInfo,
|
||||
rendererIndex,
|
||||
trackGroups,
|
||||
isDisabled,
|
||||
overrides,
|
||||
/* trackFormatComparator= */ null,
|
||||
|
|
@ -361,7 +350,8 @@ public final class TrackSelectionDialog extends DialogFragment {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onTrackSelectionChanged(boolean isDisabled, List<SelectionOverride> overrides) {
|
||||
public void onTrackSelectionChanged(
|
||||
boolean isDisabled, Map<TrackGroup, TrackSelectionOverride> overrides) {
|
||||
this.isDisabled = isDisabled;
|
||||
this.overrides = overrides;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import android.app.Activity;
|
|||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.Surface;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.SurfaceHolder;
|
||||
|
|
@ -42,7 +43,6 @@ import com.google.android.exoplayer2.ui.PlayerControlView;
|
|||
import com.google.android.exoplayer2.upstream.DataSource;
|
||||
import com.google.android.exoplayer2.upstream.DefaultDataSource;
|
||||
import com.google.android.exoplayer2.upstream.DefaultHttpDataSource;
|
||||
import com.google.android.exoplayer2.upstream.HttpDataSource;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
import java.util.UUID;
|
||||
|
|
@ -189,7 +189,7 @@ public final class MainActivity extends Activity {
|
|||
String drmScheme = Assertions.checkNotNull(intent.getStringExtra(DRM_SCHEME_EXTRA));
|
||||
String drmLicenseUrl = Assertions.checkNotNull(intent.getStringExtra(DRM_LICENSE_URL_EXTRA));
|
||||
UUID drmSchemeUuid = Assertions.checkNotNull(Util.getDrmUuid(drmScheme));
|
||||
HttpDataSource.Factory licenseDataSourceFactory = new DefaultHttpDataSource.Factory();
|
||||
DataSource.Factory licenseDataSourceFactory = new DefaultHttpDataSource.Factory();
|
||||
HttpMediaDrmCallback drmCallback =
|
||||
new HttpMediaDrmCallback(drmLicenseUrl, licenseDataSourceFactory);
|
||||
drmSessionManager =
|
||||
|
|
@ -202,13 +202,18 @@ public final class MainActivity extends Activity {
|
|||
|
||||
DataSource.Factory dataSourceFactory = new DefaultDataSource.Factory(this);
|
||||
MediaSource mediaSource;
|
||||
@C.ContentType int type = Util.inferContentType(uri, intent.getStringExtra(EXTENSION_EXTRA));
|
||||
if (type == C.TYPE_DASH) {
|
||||
@Nullable String fileExtension = intent.getStringExtra(EXTENSION_EXTRA);
|
||||
@C.ContentType
|
||||
int type =
|
||||
TextUtils.isEmpty(fileExtension)
|
||||
? Util.inferContentType(uri)
|
||||
: Util.inferContentTypeForExtension(fileExtension);
|
||||
if (type == C.CONTENT_TYPE_DASH) {
|
||||
mediaSource =
|
||||
new DashMediaSource.Factory(dataSourceFactory)
|
||||
.setDrmSessionManagerProvider(unusedMediaItem -> drmSessionManager)
|
||||
.createMediaSource(MediaItem.fromUri(uri));
|
||||
} else if (type == C.TYPE_OTHER) {
|
||||
} else if (type == C.CONTENT_TYPE_OTHER) {
|
||||
mediaSource =
|
||||
new ProgressiveMediaSource.Factory(dataSourceFactory)
|
||||
.setDrmSessionManagerProvider(unusedMediaItem -> drmSessionManager)
|
||||
|
|
|
|||
22
demos/transformer/BUILD.bazel
Normal file
22
demos/transformer/BUILD.bazel
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# Build targets for a demo MediaPipe graph.
|
||||
# See README.md for instructions on using MediaPipe in the demo.
|
||||
|
||||
load("//mediapipe/java/com/google/mediapipe:mediapipe_aar.bzl", "mediapipe_aar")
|
||||
load(
|
||||
"//mediapipe/framework/tool:mediapipe_graph.bzl",
|
||||
"mediapipe_binary_graph",
|
||||
)
|
||||
|
||||
mediapipe_aar(
|
||||
name = "edge_detector_mediapipe_aar",
|
||||
calculators = [
|
||||
"//mediapipe/calculators/image:luminance_calculator",
|
||||
"//mediapipe/calculators/image:sobel_edges_calculator",
|
||||
],
|
||||
)
|
||||
|
||||
mediapipe_binary_graph(
|
||||
name = "edge_detector_binary_graph",
|
||||
graph = "edge_detector_mediapipe_graph.pbtxt",
|
||||
output_name = "edge_detector_mediapipe_graph.binarypb",
|
||||
)
|
||||
|
|
@ -6,4 +6,61 @@ example by removing audio or video.
|
|||
See the [demos README](../README.md) for instructions on how to build and run
|
||||
this demo.
|
||||
|
||||
## MediaPipe frame processing demo
|
||||
|
||||
Building the demo app with [MediaPipe][] integration enabled requires some extra
|
||||
manual steps.
|
||||
|
||||
1. Follow the
|
||||
[instructions](https://google.github.io/mediapipe/getting_started/install.html)
|
||||
to install MediaPipe.
|
||||
1. Copy the Transformer demo's build configuration and MediaPipe graph text
|
||||
protocol buffer under the MediaPipe source tree. This makes it easy to
|
||||
[build an AAR][] with bazel by reusing MediaPipe's workspace.
|
||||
|
||||
```sh
|
||||
cd "<path to MediaPipe checkout>"
|
||||
MEDIAPIPE_ROOT="$(pwd)"
|
||||
MEDIAPIPE_TRANSFORMER_ROOT="${MEDIAPIPE_ROOT}/mediapipe/java/com/google/mediapipe/transformer"
|
||||
cd "<path to the transformer demo (containing this readme)>"
|
||||
TRANSFORMER_DEMO_ROOT="$(pwd)"
|
||||
mkdir -p "${MEDIAPIPE_TRANSFORMER_ROOT}"
|
||||
mkdir -p "${TRANSFORMER_DEMO_ROOT}/libs"
|
||||
cp ${TRANSFORMER_DEMO_ROOT}/BUILD.bazel ${MEDIAPIPE_TRANSFORMER_ROOT}/BUILD
|
||||
cp ${TRANSFORMER_DEMO_ROOT}/src/withMediaPipe/assets/edge_detector_mediapipe_graph.pbtxt \
|
||||
${MEDIAPIPE_TRANSFORMER_ROOT}
|
||||
```
|
||||
|
||||
1. Build the AAR and the binary proto for the demo's MediaPipe graph, then copy
|
||||
them to Transformer.
|
||||
|
||||
```sh
|
||||
cd ${MEDIAPIPE_ROOT}
|
||||
bazel build -c opt --strip=ALWAYS \
|
||||
--host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
|
||||
--fat_apk_cpu=arm64-v8a,armeabi-v7a \
|
||||
--legacy_whole_archive=0 \
|
||||
--features=-legacy_whole_archive \
|
||||
--copt=-fvisibility=hidden \
|
||||
--copt=-ffunction-sections \
|
||||
--copt=-fdata-sections \
|
||||
--copt=-fstack-protector \
|
||||
--copt=-Oz \
|
||||
--copt=-fomit-frame-pointer \
|
||||
--copt=-DABSL_MIN_LOG_LEVEL=2 \
|
||||
--linkopt=-Wl,--gc-sections,--strip-all \
|
||||
mediapipe/java/com/google/mediapipe/transformer:edge_detector_mediapipe_aar.aar
|
||||
cp bazel-bin/mediapipe/java/com/google/mediapipe/transformer/edge_detector_mediapipe_aar.aar \
|
||||
${TRANSFORMER_DEMO_ROOT}/libs
|
||||
bazel build mediapipe/java/com/google/mediapipe/transformer:edge_detector_binary_graph
|
||||
cp bazel-bin/mediapipe/java/com/google/mediapipe/transformer/edge_detector_mediapipe_graph.binarypb \
|
||||
${TRANSFORMER_DEMO_ROOT}/src/withMediaPipe/assets
|
||||
```
|
||||
|
||||
1. In Android Studio, gradle sync and select the `withMediaPipe` build variant
|
||||
(this will only appear if the AAR is present), then build and run the demo
|
||||
app and select a MediaPipe-based effect.
|
||||
|
||||
[Transformer]: https://exoplayer.dev/transforming-media.html
|
||||
[MediaPipe]: https://google.github.io/mediapipe/
|
||||
[build an AAR]: https://google.github.io/mediapipe/getting_started/android_archive_library.html
|
||||
|
|
|
|||
|
|
@ -45,6 +45,27 @@ android {
|
|||
// This demo app isn't indexed and doesn't have translations.
|
||||
disable 'GoogleAppIndexingWarning','MissingTranslation'
|
||||
}
|
||||
|
||||
flavorDimensions "mediaPipe"
|
||||
|
||||
productFlavors {
|
||||
noMediaPipe {
|
||||
dimension "mediaPipe"
|
||||
}
|
||||
withMediaPipe {
|
||||
dimension "mediaPipe"
|
||||
}
|
||||
}
|
||||
|
||||
// Ignore the withMediaPipe variant if the MediaPipe AAR is not present.
|
||||
if (!project.file("libs/edge_detector_mediapipe_aar.aar").exists()) {
|
||||
variantFilter { variant ->
|
||||
def names = variant.flavors*.name
|
||||
if (names.contains("withMediaPipe")) {
|
||||
setIgnore(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
|
@ -56,6 +77,14 @@ dependencies {
|
|||
implementation 'androidx.multidex:multidex:' + androidxMultidexVersion
|
||||
implementation 'com.google.android.material:material:' + androidxMaterialVersion
|
||||
implementation project(modulePrefix + 'library-core')
|
||||
implementation project(modulePrefix + 'library-dash')
|
||||
implementation project(modulePrefix + 'library-transformer')
|
||||
implementation project(modulePrefix + 'library-ui')
|
||||
|
||||
// For MediaPipe and its dependencies:
|
||||
withMediaPipeImplementation fileTree(dir: 'libs', include: ['*.aar'])
|
||||
withMediaPipeImplementation 'com.google.flogger:flogger:latest.release'
|
||||
withMediaPipeImplementation 'com.google.flogger:flogger-system-backend:latest.release'
|
||||
withMediaPipeImplementation 'com.google.code.findbugs:jsr305:latest.release'
|
||||
withMediaPipeImplementation 'com.google.protobuf:protobuf-javalite:3.19.1'
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,37 @@
|
|||
#version 100
|
||||
// Copyright 2022 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
// ES 2 fragment shader that overlays the bitmap from uTexSampler1 over a video
|
||||
// frame from uTexSampler0.
|
||||
|
||||
precision mediump float;
|
||||
// Texture containing an input video frame.
|
||||
uniform sampler2D uTexSampler0;
|
||||
// Texture containing the overlap bitmap.
|
||||
uniform sampler2D uTexSampler1;
|
||||
// Horizontal scaling factor for the overlap bitmap.
|
||||
uniform float uScaleX;
|
||||
// Vertical scaling factory for the overlap bitmap.
|
||||
uniform float uScaleY;
|
||||
varying vec2 vTexSamplingCoord;
|
||||
void main() {
|
||||
vec4 videoColor = texture2D(uTexSampler0, vTexSamplingCoord);
|
||||
vec4 overlayColor = texture2D(uTexSampler1,
|
||||
vec2(vTexSamplingCoord.x * uScaleX,
|
||||
vTexSamplingCoord.y * uScaleY));
|
||||
// Blend the video decoder output and the overlay bitmap.
|
||||
gl_FragColor = videoColor * (1.0 - overlayColor.a)
|
||||
+ overlayColor * overlayColor.a;
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
#version 100
|
||||
// Copyright 2022 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
// ES 2 fragment shader that samples from a (non-external) texture with uTexSampler,
|
||||
// copying from this texture to the current output while applying a vignette effect
|
||||
// by linearly darkening the pixels between uInnerRadius and uOuterRadius.
|
||||
|
||||
precision mediump float;
|
||||
uniform sampler2D uTexSampler;
|
||||
uniform vec2 uCenter;
|
||||
uniform float uInnerRadius;
|
||||
uniform float uOuterRadius;
|
||||
varying vec2 vTexSamplingCoord;
|
||||
void main() {
|
||||
vec3 src = texture2D(uTexSampler, vTexSamplingCoord).xyz;
|
||||
float dist = distance(vTexSamplingCoord, uCenter);
|
||||
float scale = clamp(1.0 - (dist - uInnerRadius) / (uOuterRadius - uInnerRadius), 0.0, 1.0);
|
||||
gl_FragColor = vec4(src.r * scale, src.g * scale, src.b * scale, 1.0);
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#version 300 es
|
||||
#version 100
|
||||
// Copyright 2022 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
@ -12,12 +12,12 @@
|
|||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
in vec4 aFramePosition;
|
||||
in vec4 aTexCoords;
|
||||
uniform mat4 uTexTransform;
|
||||
uniform mat4 uTransformationMatrix;
|
||||
out vec2 vTexCoords;
|
||||
|
||||
// ES 2 vertex shader that leaves the coordinates unchanged.
|
||||
|
||||
attribute vec4 aFramePosition;
|
||||
varying vec2 vTexSamplingCoord;
|
||||
void main() {
|
||||
gl_Position = uTransformationMatrix * aFramePosition;
|
||||
vTexCoords = (uTexTransform * aTexCoords).xy;
|
||||
gl_Position = aFramePosition;
|
||||
vTexSamplingCoord = vec2(aFramePosition.x * 0.5 + 0.5, aFramePosition.y * 0.5 + 0.5);
|
||||
}
|
||||
|
|
@ -0,0 +1,168 @@
|
|||
/*
|
||||
* Copyright 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.google.android.exoplayer2.transformerdemo;
|
||||
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkStateNotNull;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.opengl.GLES20;
|
||||
import android.opengl.GLUtils;
|
||||
import android.util.Size;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.transformer.FrameProcessingException;
|
||||
import com.google.android.exoplayer2.transformer.SingleFrameGlTextureProcessor;
|
||||
import com.google.android.exoplayer2.util.GlProgram;
|
||||
import com.google.android.exoplayer2.util.GlUtil;
|
||||
import java.io.IOException;
|
||||
import java.util.Locale;
|
||||
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
|
||||
/**
|
||||
* A {@link SingleFrameGlTextureProcessor} that overlays a bitmap with a logo and timer on each
|
||||
* frame.
|
||||
*
|
||||
* <p>The bitmap is drawn using an Android {@link Canvas}.
|
||||
*/
|
||||
// TODO(b/227625365): Delete this class and use a texture processor from the Transformer library,
|
||||
// once overlaying a bitmap and text is supported in Transformer.
|
||||
/* package */ final class BitmapOverlayProcessor implements SingleFrameGlTextureProcessor {
|
||||
static {
|
||||
GlUtil.glAssertionsEnabled = true;
|
||||
}
|
||||
|
||||
private static final String VERTEX_SHADER_PATH = "vertex_shader_copy_es2.glsl";
|
||||
private static final String FRAGMENT_SHADER_PATH = "fragment_shader_bitmap_overlay_es2.glsl";
|
||||
|
||||
private static final int BITMAP_WIDTH_HEIGHT = 512;
|
||||
|
||||
private final Paint paint;
|
||||
private final Bitmap overlayBitmap;
|
||||
private final Canvas overlayCanvas;
|
||||
|
||||
private float bitmapScaleX;
|
||||
private float bitmapScaleY;
|
||||
private int bitmapTexId;
|
||||
private @MonotonicNonNull Size outputSize;
|
||||
private @MonotonicNonNull Bitmap logoBitmap;
|
||||
private @MonotonicNonNull GlProgram glProgram;
|
||||
|
||||
public BitmapOverlayProcessor() {
|
||||
paint = new Paint();
|
||||
paint.setTextSize(64);
|
||||
paint.setAntiAlias(true);
|
||||
paint.setARGB(0xFF, 0xFF, 0xFF, 0xFF);
|
||||
paint.setColor(Color.GRAY);
|
||||
overlayBitmap =
|
||||
Bitmap.createBitmap(BITMAP_WIDTH_HEIGHT, BITMAP_WIDTH_HEIGHT, Bitmap.Config.ARGB_8888);
|
||||
overlayCanvas = new Canvas(overlayBitmap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(Context context, int inputTexId, int inputWidth, int inputHeight)
|
||||
throws IOException {
|
||||
if (inputWidth > inputHeight) {
|
||||
bitmapScaleX = inputWidth / (float) inputHeight;
|
||||
bitmapScaleY = 1f;
|
||||
} else {
|
||||
bitmapScaleX = 1f;
|
||||
bitmapScaleY = inputHeight / (float) inputWidth;
|
||||
}
|
||||
outputSize = new Size(inputWidth, inputHeight);
|
||||
|
||||
try {
|
||||
logoBitmap =
|
||||
((BitmapDrawable)
|
||||
context.getPackageManager().getApplicationIcon(context.getPackageName()))
|
||||
.getBitmap();
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
bitmapTexId = GlUtil.createTexture(BITMAP_WIDTH_HEIGHT, BITMAP_WIDTH_HEIGHT);
|
||||
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, /* level= */ 0, overlayBitmap, /* border= */ 0);
|
||||
|
||||
glProgram = new GlProgram(context, VERTEX_SHADER_PATH, FRAGMENT_SHADER_PATH);
|
||||
// Draw the frame on the entire normalized device coordinate space, from -1 to 1, for x and y.
|
||||
glProgram.setBufferAttribute(
|
||||
"aFramePosition",
|
||||
GlUtil.getNormalizedCoordinateBounds(),
|
||||
GlUtil.HOMOGENEOUS_COORDINATE_VECTOR_SIZE);
|
||||
glProgram.setSamplerTexIdUniform("uTexSampler0", inputTexId, /* texUnitIndex= */ 0);
|
||||
glProgram.setSamplerTexIdUniform("uTexSampler1", bitmapTexId, /* texUnitIndex= */ 1);
|
||||
glProgram.setFloatUniform("uScaleX", bitmapScaleX);
|
||||
glProgram.setFloatUniform("uScaleY", bitmapScaleY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Size getOutputSize() {
|
||||
return checkStateNotNull(outputSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawFrame(long presentationTimeUs) throws FrameProcessingException {
|
||||
try {
|
||||
checkStateNotNull(glProgram).use();
|
||||
|
||||
// Draw to the canvas and store it in a texture.
|
||||
String text =
|
||||
String.format(Locale.US, "%.02f", presentationTimeUs / (float) C.MICROS_PER_SECOND);
|
||||
overlayBitmap.eraseColor(Color.TRANSPARENT);
|
||||
overlayCanvas.drawBitmap(checkStateNotNull(logoBitmap), /* left= */ 3, /* top= */ 378, paint);
|
||||
overlayCanvas.drawText(text, /* x= */ 160, /* y= */ 466, paint);
|
||||
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, bitmapTexId);
|
||||
GLUtils.texSubImage2D(
|
||||
GLES20.GL_TEXTURE_2D,
|
||||
/* level= */ 0,
|
||||
/* xoffset= */ 0,
|
||||
/* yoffset= */ 0,
|
||||
flipBitmapVertically(overlayBitmap));
|
||||
GlUtil.checkGlError();
|
||||
|
||||
glProgram.bindAttributesAndUniforms();
|
||||
// The four-vertex triangle strip forms a quad.
|
||||
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, /* first= */ 0, /* count= */ 4);
|
||||
GlUtil.checkGlError();
|
||||
} catch (GlUtil.GlException e) {
|
||||
throw new FrameProcessingException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void release() {
|
||||
if (glProgram != null) {
|
||||
glProgram.delete();
|
||||
}
|
||||
}
|
||||
|
||||
private static Bitmap flipBitmapVertically(Bitmap bitmap) {
|
||||
Matrix flip = new Matrix();
|
||||
flip.postScale(1f, -1f);
|
||||
return Bitmap.createBitmap(
|
||||
bitmap,
|
||||
/* x= */ 0,
|
||||
/* y= */ 0,
|
||||
bitmap.getWidth(),
|
||||
bitmap.getHeight(),
|
||||
flip,
|
||||
/* filter= */ true);
|
||||
}
|
||||
}
|
||||
|
|
@ -32,7 +32,11 @@ import android.widget.TextView;
|
|||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.util.MimeTypes;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
import com.google.android.material.slider.RangeSlider;
|
||||
import com.google.android.material.slider.Slider;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
|
|
@ -49,39 +53,84 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||
public static final String AUDIO_MIME_TYPE = "audio_mime_type";
|
||||
public static final String VIDEO_MIME_TYPE = "video_mime_type";
|
||||
public static final String RESOLUTION_HEIGHT = "resolution_height";
|
||||
public static final String TRANSLATE_X = "translate_x";
|
||||
public static final String TRANSLATE_Y = "translate_y";
|
||||
public static final String SCALE_X = "scale_x";
|
||||
public static final String SCALE_Y = "scale_y";
|
||||
public static final String ROTATE_DEGREES = "rotate_degrees";
|
||||
public static final String TRIM_START_MS = "trim_start_ms";
|
||||
public static final String TRIM_END_MS = "trim_end_ms";
|
||||
public static final String ENABLE_FALLBACK = "enable_fallback";
|
||||
public static final String ENABLE_REQUEST_SDR_TONE_MAPPING = "enable_request_sdr_tone_mapping";
|
||||
public static final String ENABLE_HDR_EDITING = "enable_hdr_editing";
|
||||
public static final String DEMO_EFFECTS_SELECTIONS = "demo_effects_selections";
|
||||
public static final String PERIODIC_VIGNETTE_CENTER_X = "periodic_vignette_center_x";
|
||||
public static final String PERIODIC_VIGNETTE_CENTER_Y = "periodic_vignette_center_y";
|
||||
public static final String PERIODIC_VIGNETTE_INNER_RADIUS = "periodic_vignette_inner_radius";
|
||||
public static final String PERIODIC_VIGNETTE_OUTER_RADIUS = "periodic_vignette_outer_radius";
|
||||
private static final String[] INPUT_URIS = {
|
||||
"https://html5demos.com/assets/dizzy.mp4",
|
||||
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/android-screens-10s.mp4",
|
||||
"https://storage.googleapis.com/exoplayer-test-media-0/android-block-1080-hevc.mp4",
|
||||
"https://storage.googleapis.com/exoplayer-test-media-0/BigBuckBunny_320x180.mp4",
|
||||
"https://html5demos.com/assets/dizzy.mp4",
|
||||
"https://html5demos.com/assets/dizzy.webm",
|
||||
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/portrait_4k60.mp4",
|
||||
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/8k24fps_4s.mp4",
|
||||
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/1920w_1080h_4s.mp4",
|
||||
"https://storage.googleapis.com/exoplayer-test-media-0/BigBuckBunny_320x180.mp4",
|
||||
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/portrait_avc_aac.mp4",
|
||||
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/portrait_rotated_avc_aac.mp4",
|
||||
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/slow-motion/slowMotion_stopwatch_240fps_long.mp4",
|
||||
"https://storage.googleapis.com/exoplayer-test-media-1/gen/screens/dash-vod-single-segment/manifest-baseline.mpd",
|
||||
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/samsung-hdr-hdr10.mp4",
|
||||
};
|
||||
private static final String[] URI_DESCRIPTIONS = { // same order as INPUT_URIS
|
||||
"MP4 with H264 video and AAC audio",
|
||||
"MP4 with H265 video and AAC audio",
|
||||
"Long MP4 with H264 video and AAC audio",
|
||||
"WebM with VP8 video and Vorbis audio",
|
||||
"720p H264 video and AAC audio",
|
||||
"1080p H265 video and AAC audio",
|
||||
"360p H264 video and AAC audio",
|
||||
"360p VP8 video and Vorbis audio",
|
||||
"4K H264 video and AAC audio (portrait, no B-frames)",
|
||||
"8k H265 video and AAC audio",
|
||||
"Short 1080p H265 video and AAC audio",
|
||||
"Long 180p H264 video and AAC audio",
|
||||
"H264 video and AAC audio (portrait, H > W, 0\u00B0)",
|
||||
"H264 video and AAC audio (portrait, H < W, 90\u00B0)",
|
||||
"SEF slow motion with 240 fps",
|
||||
"480p DASH (non-square pixels)",
|
||||
"HDR (HDR10) H265 video (encoding may fail)",
|
||||
};
|
||||
private static final String[] DEMO_EFFECTS = {
|
||||
"Dizzy crop",
|
||||
"Edge detector (Media Pipe)",
|
||||
"Periodic vignette",
|
||||
"3D spin",
|
||||
"Overlay logo & timer",
|
||||
"Zoom in start",
|
||||
};
|
||||
private static final int PERIODIC_VIGNETTE_INDEX = 2;
|
||||
private static final String SAME_AS_INPUT_OPTION = "same as input";
|
||||
private static final float HALF_DIAGONAL = 1f / (float) Math.sqrt(2);
|
||||
|
||||
private @MonotonicNonNull Button chooseFileButton;
|
||||
private @MonotonicNonNull TextView chosenFileTextView;
|
||||
private @MonotonicNonNull Button selectFileButton;
|
||||
private @MonotonicNonNull TextView selectedFileTextView;
|
||||
private @MonotonicNonNull CheckBox removeAudioCheckbox;
|
||||
private @MonotonicNonNull CheckBox removeVideoCheckbox;
|
||||
private @MonotonicNonNull CheckBox flattenForSlowMotionCheckbox;
|
||||
private @MonotonicNonNull Spinner audioMimeSpinner;
|
||||
private @MonotonicNonNull Spinner videoMimeSpinner;
|
||||
private @MonotonicNonNull Spinner resolutionHeightSpinner;
|
||||
private @MonotonicNonNull Spinner translateSpinner;
|
||||
private @MonotonicNonNull Spinner scaleSpinner;
|
||||
private @MonotonicNonNull Spinner rotateSpinner;
|
||||
private @MonotonicNonNull CheckBox trimCheckBox;
|
||||
private @MonotonicNonNull CheckBox enableFallbackCheckBox;
|
||||
private @MonotonicNonNull CheckBox enableRequestSdrToneMappingCheckBox;
|
||||
private @MonotonicNonNull CheckBox enableHdrEditingCheckBox;
|
||||
private @MonotonicNonNull Button selectDemoEffectsButton;
|
||||
private boolean @MonotonicNonNull [] demoEffectsSelections;
|
||||
private int inputUriPosition;
|
||||
private long trimStartMs;
|
||||
private long trimEndMs;
|
||||
private float periodicVignetteCenterX;
|
||||
private float periodicVignetteCenterY;
|
||||
private float periodicVignetteInnerRadius;
|
||||
private float periodicVignetteOuterRadius;
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
|
|
@ -90,11 +139,11 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||
|
||||
findViewById(R.id.transform_button).setOnClickListener(this::startTransformation);
|
||||
|
||||
chooseFileButton = findViewById(R.id.choose_file_button);
|
||||
chooseFileButton.setOnClickListener(this::chooseFile);
|
||||
selectFileButton = findViewById(R.id.select_file_button);
|
||||
selectFileButton.setOnClickListener(this::selectFile);
|
||||
|
||||
chosenFileTextView = findViewById(R.id.chosen_file_text_view);
|
||||
chosenFileTextView.setText(URI_DESCRIPTIONS[inputUriPosition]);
|
||||
selectedFileTextView = findViewById(R.id.selected_file_text_view);
|
||||
selectedFileTextView.setText(URI_DESCRIPTIONS[inputUriPosition]);
|
||||
|
||||
removeAudioCheckbox = findViewById(R.id.remove_audio_checkbox);
|
||||
removeAudioCheckbox.setOnClickListener(this::onRemoveAudio);
|
||||
|
|
@ -118,11 +167,10 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||
videoMimeSpinner = findViewById(R.id.video_mime_spinner);
|
||||
videoMimeSpinner.setAdapter(videoMimeAdapter);
|
||||
videoMimeAdapter.addAll(
|
||||
SAME_AS_INPUT_OPTION,
|
||||
MimeTypes.VIDEO_H263,
|
||||
MimeTypes.VIDEO_H264,
|
||||
MimeTypes.VIDEO_H265,
|
||||
MimeTypes.VIDEO_MP4V);
|
||||
SAME_AS_INPUT_OPTION, MimeTypes.VIDEO_H263, MimeTypes.VIDEO_H264, MimeTypes.VIDEO_MP4V);
|
||||
if (Util.SDK_INT >= 24) {
|
||||
videoMimeAdapter.add(MimeTypes.VIDEO_H265);
|
||||
}
|
||||
|
||||
ArrayAdapter<String> resolutionHeightAdapter =
|
||||
new ArrayAdapter<>(/* context= */ this, R.layout.spinner_item);
|
||||
|
|
@ -132,14 +180,6 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||
resolutionHeightAdapter.addAll(
|
||||
SAME_AS_INPUT_OPTION, "144", "240", "360", "480", "720", "1080", "1440", "2160");
|
||||
|
||||
ArrayAdapter<String> translateAdapter =
|
||||
new ArrayAdapter<>(/* context= */ this, R.layout.spinner_item);
|
||||
translateAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
translateSpinner = findViewById(R.id.translate_spinner);
|
||||
translateSpinner.setAdapter(translateAdapter);
|
||||
translateAdapter.addAll(
|
||||
SAME_AS_INPUT_OPTION, "-.1, -.1", "0, 0", ".5, 0", "0, .5", "1, 1", "1.9, 0", "0, 1.9");
|
||||
|
||||
ArrayAdapter<String> scaleAdapter =
|
||||
new ArrayAdapter<>(/* context= */ this, R.layout.spinner_item);
|
||||
scaleAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
|
|
@ -152,9 +192,22 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||
rotateAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
rotateSpinner = findViewById(R.id.rotate_spinner);
|
||||
rotateSpinner.setAdapter(rotateAdapter);
|
||||
rotateAdapter.addAll(SAME_AS_INPUT_OPTION, "0", "10", "45", "90", "180");
|
||||
rotateAdapter.addAll(SAME_AS_INPUT_OPTION, "0", "10", "45", "60", "90", "180");
|
||||
|
||||
trimCheckBox = findViewById(R.id.trim_checkbox);
|
||||
trimCheckBox.setOnCheckedChangeListener(this::selectTrimBounds);
|
||||
trimStartMs = C.TIME_UNSET;
|
||||
trimEndMs = C.TIME_UNSET;
|
||||
|
||||
enableFallbackCheckBox = findViewById(R.id.enable_fallback_checkbox);
|
||||
enableRequestSdrToneMappingCheckBox = findViewById(R.id.request_sdr_tone_mapping_checkbox);
|
||||
enableRequestSdrToneMappingCheckBox.setEnabled(isRequestSdrToneMappingSupported());
|
||||
findViewById(R.id.request_sdr_tone_mapping).setEnabled(isRequestSdrToneMappingSupported());
|
||||
enableHdrEditingCheckBox = findViewById(R.id.hdr_editing_checkbox);
|
||||
|
||||
demoEffectsSelections = new boolean[DEMO_EFFECTS.length];
|
||||
selectDemoEffectsButton = findViewById(R.id.select_demo_effects_button);
|
||||
selectDemoEffectsButton.setOnClickListener(this::selectDemoEffects);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -162,8 +215,8 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||
super.onResume();
|
||||
@Nullable Uri intentUri = getIntent().getData();
|
||||
if (intentUri != null) {
|
||||
checkNotNull(chooseFileButton).setEnabled(false);
|
||||
checkNotNull(chosenFileTextView).setText(intentUri.toString());
|
||||
checkNotNull(selectFileButton).setEnabled(false);
|
||||
checkNotNull(selectedFileTextView).setText(intentUri.toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -180,13 +233,16 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||
"audioMimeSpinner",
|
||||
"videoMimeSpinner",
|
||||
"resolutionHeightSpinner",
|
||||
"translateSpinner",
|
||||
"scaleSpinner",
|
||||
"rotateSpinner",
|
||||
"enableHdrEditingCheckBox"
|
||||
"trimCheckBox",
|
||||
"enableFallbackCheckBox",
|
||||
"enableRequestSdrToneMappingCheckBox",
|
||||
"enableHdrEditingCheckBox",
|
||||
"demoEffectsSelections"
|
||||
})
|
||||
private void startTransformation(View view) {
|
||||
Intent transformerIntent = new Intent(this, TransformerActivity.class);
|
||||
Intent transformerIntent = new Intent(/* packageContext= */ this, TransformerActivity.class);
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putBoolean(SHOULD_REMOVE_AUDIO, removeAudioCheckbox.isChecked());
|
||||
bundle.putBoolean(SHOULD_REMOVE_VIDEO, removeVideoCheckbox.isChecked());
|
||||
|
|
@ -203,13 +259,6 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||
if (!SAME_AS_INPUT_OPTION.equals(selectedResolutionHeight)) {
|
||||
bundle.putInt(RESOLUTION_HEIGHT, Integer.parseInt(selectedResolutionHeight));
|
||||
}
|
||||
String selectedTranslate = String.valueOf(translateSpinner.getSelectedItem());
|
||||
if (!SAME_AS_INPUT_OPTION.equals(selectedTranslate)) {
|
||||
List<String> translateXY = Arrays.asList(selectedTranslate.split(", "));
|
||||
checkState(translateXY.size() == 2);
|
||||
bundle.putFloat(TRANSLATE_X, Float.parseFloat(translateXY.get(0)));
|
||||
bundle.putFloat(TRANSLATE_Y, Float.parseFloat(translateXY.get(1)));
|
||||
}
|
||||
String selectedScale = String.valueOf(scaleSpinner.getSelectedItem());
|
||||
if (!SAME_AS_INPUT_OPTION.equals(selectedScale)) {
|
||||
List<String> scaleXY = Arrays.asList(selectedScale.split(", "));
|
||||
|
|
@ -221,7 +270,19 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||
if (!SAME_AS_INPUT_OPTION.equals(selectedRotate)) {
|
||||
bundle.putFloat(ROTATE_DEGREES, Float.parseFloat(selectedRotate));
|
||||
}
|
||||
if (trimCheckBox.isChecked()) {
|
||||
bundle.putLong(TRIM_START_MS, trimStartMs);
|
||||
bundle.putLong(TRIM_END_MS, trimEndMs);
|
||||
}
|
||||
bundle.putBoolean(ENABLE_FALLBACK, enableFallbackCheckBox.isChecked());
|
||||
bundle.putBoolean(
|
||||
ENABLE_REQUEST_SDR_TONE_MAPPING, enableRequestSdrToneMappingCheckBox.isChecked());
|
||||
bundle.putBoolean(ENABLE_HDR_EDITING, enableHdrEditingCheckBox.isChecked());
|
||||
bundle.putBooleanArray(DEMO_EFFECTS_SELECTIONS, demoEffectsSelections);
|
||||
bundle.putFloat(PERIODIC_VIGNETTE_CENTER_X, periodicVignetteCenterX);
|
||||
bundle.putFloat(PERIODIC_VIGNETTE_CENTER_Y, periodicVignetteCenterY);
|
||||
bundle.putFloat(PERIODIC_VIGNETTE_INNER_RADIUS, periodicVignetteInnerRadius);
|
||||
bundle.putFloat(PERIODIC_VIGNETTE_OUTER_RADIUS, periodicVignetteOuterRadius);
|
||||
transformerIntent.putExtras(bundle);
|
||||
|
||||
@Nullable Uri intentUri = getIntent().getData();
|
||||
|
|
@ -231,19 +292,82 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||
startActivity(transformerIntent);
|
||||
}
|
||||
|
||||
private void chooseFile(View view) {
|
||||
private void selectFile(View view) {
|
||||
new AlertDialog.Builder(/* context= */ this)
|
||||
.setTitle(R.string.choose_file_title)
|
||||
.setTitle(R.string.select_file_title)
|
||||
.setSingleChoiceItems(URI_DESCRIPTIONS, inputUriPosition, this::selectFileInDialog)
|
||||
.setPositiveButton(android.R.string.ok, /* listener= */ null)
|
||||
.create()
|
||||
.show();
|
||||
}
|
||||
|
||||
@RequiresNonNull("chosenFileTextView")
|
||||
private void selectDemoEffects(View view) {
|
||||
new AlertDialog.Builder(/* context= */ this)
|
||||
.setTitle(R.string.select_demo_effects)
|
||||
.setMultiChoiceItems(
|
||||
DEMO_EFFECTS, checkNotNull(demoEffectsSelections), this::selectDemoEffect)
|
||||
.setPositiveButton(android.R.string.ok, /* listener= */ null)
|
||||
.create()
|
||||
.show();
|
||||
}
|
||||
|
||||
private void selectTrimBounds(View view, boolean isChecked) {
|
||||
if (!isChecked) {
|
||||
return;
|
||||
}
|
||||
View dialogView = getLayoutInflater().inflate(R.layout.trim_options, /* root= */ null);
|
||||
RangeSlider radiusRangeSlider =
|
||||
checkNotNull(dialogView.findViewById(R.id.trim_bounds_range_slider));
|
||||
radiusRangeSlider.setValues(0f, 60f); // seconds
|
||||
new AlertDialog.Builder(/* context= */ this)
|
||||
.setView(dialogView)
|
||||
.setPositiveButton(
|
||||
android.R.string.ok,
|
||||
(DialogInterface dialogInterface, int i) -> {
|
||||
List<Float> radiusRange = radiusRangeSlider.getValues();
|
||||
trimStartMs = 1000 * radiusRange.get(0).longValue();
|
||||
trimEndMs = 1000 * radiusRange.get(1).longValue();
|
||||
})
|
||||
.create()
|
||||
.show();
|
||||
}
|
||||
|
||||
@RequiresNonNull("selectedFileTextView")
|
||||
private void selectFileInDialog(DialogInterface dialog, int which) {
|
||||
inputUriPosition = which;
|
||||
chosenFileTextView.setText(URI_DESCRIPTIONS[inputUriPosition]);
|
||||
selectedFileTextView.setText(URI_DESCRIPTIONS[inputUriPosition]);
|
||||
}
|
||||
|
||||
@RequiresNonNull("demoEffectsSelections")
|
||||
private void selectDemoEffect(DialogInterface dialog, int which, boolean isChecked) {
|
||||
demoEffectsSelections[which] = isChecked;
|
||||
if (!isChecked || which != PERIODIC_VIGNETTE_INDEX) {
|
||||
return;
|
||||
}
|
||||
|
||||
View dialogView =
|
||||
getLayoutInflater().inflate(R.layout.periodic_vignette_options, /* root= */ null);
|
||||
Slider centerXSlider =
|
||||
checkNotNull(dialogView.findViewById(R.id.periodic_vignette_center_x_slider));
|
||||
Slider centerYSlider =
|
||||
checkNotNull(dialogView.findViewById(R.id.periodic_vignette_center_y_slider));
|
||||
RangeSlider radiusRangeSlider =
|
||||
checkNotNull(dialogView.findViewById(R.id.periodic_vignette_radius_range_slider));
|
||||
radiusRangeSlider.setValues(0f, HALF_DIAGONAL);
|
||||
new AlertDialog.Builder(/* context= */ this)
|
||||
.setTitle(R.string.periodic_vignette_options)
|
||||
.setView(dialogView)
|
||||
.setPositiveButton(
|
||||
android.R.string.ok,
|
||||
(DialogInterface dialogInterface, int i) -> {
|
||||
periodicVignetteCenterX = centerXSlider.getValue();
|
||||
periodicVignetteCenterY = centerYSlider.getValue();
|
||||
List<Float> radiusRange = radiusRangeSlider.getValues();
|
||||
periodicVignetteInnerRadius = radiusRange.get(0);
|
||||
periodicVignetteOuterRadius = radiusRange.get(1);
|
||||
})
|
||||
.create()
|
||||
.show();
|
||||
}
|
||||
|
||||
@RequiresNonNull({
|
||||
|
|
@ -251,10 +375,11 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||
"audioMimeSpinner",
|
||||
"videoMimeSpinner",
|
||||
"resolutionHeightSpinner",
|
||||
"translateSpinner",
|
||||
"scaleSpinner",
|
||||
"rotateSpinner",
|
||||
"enableHdrEditingCheckBox"
|
||||
"enableRequestSdrToneMappingCheckBox",
|
||||
"enableHdrEditingCheckBox",
|
||||
"selectDemoEffectsButton"
|
||||
})
|
||||
private void onRemoveAudio(View view) {
|
||||
if (((CheckBox) view).isChecked()) {
|
||||
|
|
@ -270,10 +395,11 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||
"audioMimeSpinner",
|
||||
"videoMimeSpinner",
|
||||
"resolutionHeightSpinner",
|
||||
"translateSpinner",
|
||||
"scaleSpinner",
|
||||
"rotateSpinner",
|
||||
"enableHdrEditingCheckBox"
|
||||
"enableRequestSdrToneMappingCheckBox",
|
||||
"enableHdrEditingCheckBox",
|
||||
"selectDemoEffectsButton"
|
||||
})
|
||||
private void onRemoveVideo(View view) {
|
||||
if (((CheckBox) view).isChecked()) {
|
||||
|
|
@ -288,26 +414,34 @@ public final class ConfigurationActivity extends AppCompatActivity {
|
|||
"audioMimeSpinner",
|
||||
"videoMimeSpinner",
|
||||
"resolutionHeightSpinner",
|
||||
"translateSpinner",
|
||||
"scaleSpinner",
|
||||
"rotateSpinner",
|
||||
"enableHdrEditingCheckBox"
|
||||
"enableRequestSdrToneMappingCheckBox",
|
||||
"enableHdrEditingCheckBox",
|
||||
"selectDemoEffectsButton"
|
||||
})
|
||||
private void enableTrackSpecificOptions(boolean isAudioEnabled, boolean isVideoEnabled) {
|
||||
audioMimeSpinner.setEnabled(isAudioEnabled);
|
||||
videoMimeSpinner.setEnabled(isVideoEnabled);
|
||||
resolutionHeightSpinner.setEnabled(isVideoEnabled);
|
||||
translateSpinner.setEnabled(isVideoEnabled);
|
||||
scaleSpinner.setEnabled(isVideoEnabled);
|
||||
rotateSpinner.setEnabled(isVideoEnabled);
|
||||
enableRequestSdrToneMappingCheckBox.setEnabled(
|
||||
isRequestSdrToneMappingSupported() && isVideoEnabled);
|
||||
enableHdrEditingCheckBox.setEnabled(isVideoEnabled);
|
||||
selectDemoEffectsButton.setEnabled(isVideoEnabled);
|
||||
|
||||
findViewById(R.id.audio_mime_text_view).setEnabled(isAudioEnabled);
|
||||
findViewById(R.id.video_mime_text_view).setEnabled(isVideoEnabled);
|
||||
findViewById(R.id.resolution_height_text_view).setEnabled(isVideoEnabled);
|
||||
findViewById(R.id.translate).setEnabled(isVideoEnabled);
|
||||
findViewById(R.id.scale).setEnabled(isVideoEnabled);
|
||||
findViewById(R.id.rotate).setEnabled(isVideoEnabled);
|
||||
findViewById(R.id.request_sdr_tone_mapping)
|
||||
.setEnabled(isRequestSdrToneMappingSupported() && isVideoEnabled);
|
||||
findViewById(R.id.hdr_editing).setEnabled(isVideoEnabled);
|
||||
}
|
||||
|
||||
private static boolean isRequestSdrToneMappingSupported() {
|
||||
return Util.SDK_INT >= 31;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,93 @@
|
|||
/*
|
||||
* Copyright 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.google.android.exoplayer2.transformerdemo;
|
||||
|
||||
import android.graphics.Matrix;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.transformer.GlMatrixTransformation;
|
||||
import com.google.android.exoplayer2.transformer.MatrixTransformation;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
|
||||
/**
|
||||
* Factory for {@link GlMatrixTransformation GlMatrixTransformations} and {@link
|
||||
* MatrixTransformation MatrixTransformations} that create video effects by applying transformation
|
||||
* matrices to the individual video frames.
|
||||
*/
|
||||
/* package */ final class MatrixTransformationFactory {
|
||||
/**
|
||||
* Returns a {@link MatrixTransformation} that rescales the frames over the first {@value
|
||||
* #ZOOM_DURATION_SECONDS} seconds, such that the rectangle filled with the input frame increases
|
||||
* linearly in size from a single point to filling the full output frame.
|
||||
*/
|
||||
public static MatrixTransformation createZoomInTransition() {
|
||||
return MatrixTransformationFactory::calculateZoomInTransitionMatrix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link MatrixTransformation} that crops frames to a rectangle that moves on an
|
||||
* ellipse.
|
||||
*/
|
||||
public static MatrixTransformation createDizzyCropEffect() {
|
||||
return MatrixTransformationFactory::calculateDizzyCropMatrix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link GlMatrixTransformation} that rotates a frame in 3D around the y-axis and
|
||||
* applies perspective projection to 2D.
|
||||
*/
|
||||
public static GlMatrixTransformation createSpin3dEffect() {
|
||||
return MatrixTransformationFactory::calculate3dSpinMatrix;
|
||||
}
|
||||
|
||||
private static final float ZOOM_DURATION_SECONDS = 2f;
|
||||
private static final float DIZZY_CROP_ROTATION_PERIOD_US = 1_500_000f;
|
||||
|
||||
private static Matrix calculateZoomInTransitionMatrix(long presentationTimeUs) {
|
||||
Matrix transformationMatrix = new Matrix();
|
||||
float scale = Math.min(1, presentationTimeUs / (C.MICROS_PER_SECOND * ZOOM_DURATION_SECONDS));
|
||||
transformationMatrix.postScale(/* sx= */ scale, /* sy= */ scale);
|
||||
return transformationMatrix;
|
||||
}
|
||||
|
||||
private static android.graphics.Matrix calculateDizzyCropMatrix(long presentationTimeUs) {
|
||||
double theta = presentationTimeUs * 2 * Math.PI / DIZZY_CROP_ROTATION_PERIOD_US;
|
||||
float centerX = 0.5f * (float) Math.cos(theta);
|
||||
float centerY = 0.5f * (float) Math.sin(theta);
|
||||
android.graphics.Matrix transformationMatrix = new android.graphics.Matrix();
|
||||
transformationMatrix.postTranslate(/* dx= */ centerX, /* dy= */ centerY);
|
||||
transformationMatrix.postScale(/* sx= */ 2f, /* sy= */ 2f);
|
||||
return transformationMatrix;
|
||||
}
|
||||
|
||||
private static float[] calculate3dSpinMatrix(long presentationTimeUs) {
|
||||
float[] transformationMatrix = new float[16];
|
||||
android.opengl.Matrix.frustumM(
|
||||
transformationMatrix,
|
||||
/* offset= */ 0,
|
||||
/* left= */ -1f,
|
||||
/* right= */ 1f,
|
||||
/* bottom= */ -1f,
|
||||
/* top= */ 1f,
|
||||
/* near= */ 3f,
|
||||
/* far= */ 5f);
|
||||
android.opengl.Matrix.translateM(
|
||||
transformationMatrix, /* mOffset= */ 0, /* x= */ 0f, /* y= */ 0f, /* z= */ -4f);
|
||||
float theta = Util.usToMs(presentationTimeUs) / 10f;
|
||||
android.opengl.Matrix.rotateM(
|
||||
transformationMatrix, /* mOffset= */ 0, theta, /* x= */ 0f, /* y= */ 1f, /* z= */ 0f);
|
||||
return transformationMatrix;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
/*
|
||||
* Copyright 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.google.android.exoplayer2.transformerdemo;
|
||||
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkArgument;
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkStateNotNull;
|
||||
|
||||
import android.content.Context;
|
||||
import android.opengl.GLES20;
|
||||
import android.util.Size;
|
||||
import com.google.android.exoplayer2.transformer.FrameProcessingException;
|
||||
import com.google.android.exoplayer2.transformer.SingleFrameGlTextureProcessor;
|
||||
import com.google.android.exoplayer2.util.GlProgram;
|
||||
import com.google.android.exoplayer2.util.GlUtil;
|
||||
import java.io.IOException;
|
||||
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
|
||||
/**
|
||||
* A {@link SingleFrameGlTextureProcessor} that periodically dims the frames such that pixels are
|
||||
* darker the further they are away from the frame center.
|
||||
*/
|
||||
/* package */ final class PeriodicVignetteProcessor implements SingleFrameGlTextureProcessor {
|
||||
static {
|
||||
GlUtil.glAssertionsEnabled = true;
|
||||
}
|
||||
|
||||
private static final String VERTEX_SHADER_PATH = "vertex_shader_copy_es2.glsl";
|
||||
private static final String FRAGMENT_SHADER_PATH = "fragment_shader_vignette_es2.glsl";
|
||||
private static final float DIMMING_PERIOD_US = 5_600_000f;
|
||||
|
||||
private float centerX;
|
||||
private float centerY;
|
||||
private float minInnerRadius;
|
||||
private float deltaInnerRadius;
|
||||
private float outerRadius;
|
||||
|
||||
private @MonotonicNonNull Size outputSize;
|
||||
private @MonotonicNonNull GlProgram glProgram;
|
||||
|
||||
/**
|
||||
* Creates a new instance.
|
||||
*
|
||||
* <p>The inner radius of the vignette effect oscillates smoothly between {@code minInnerRadius}
|
||||
* and {@code maxInnerRadius}.
|
||||
*
|
||||
* <p>The pixels between the inner radius and the {@code outerRadius} are darkened linearly based
|
||||
* on their distance from {@code innerRadius}. All pixels outside {@code outerRadius} are black.
|
||||
*
|
||||
* <p>The parameters are given in normalized texture coordinates from 0 to 1.
|
||||
*
|
||||
* @param centerX The x-coordinate of the center of the effect.
|
||||
* @param centerY The y-coordinate of the center of the effect.
|
||||
* @param minInnerRadius The lower bound of the radius that is unaffected by the effect.
|
||||
* @param maxInnerRadius The upper bound of the radius that is unaffected by the effect.
|
||||
* @param outerRadius The radius after which all pixels are black.
|
||||
*/
|
||||
public PeriodicVignetteProcessor(
|
||||
float centerX, float centerY, float minInnerRadius, float maxInnerRadius, float outerRadius) {
|
||||
checkArgument(minInnerRadius <= maxInnerRadius);
|
||||
checkArgument(maxInnerRadius <= outerRadius);
|
||||
this.centerX = centerX;
|
||||
this.centerY = centerY;
|
||||
this.minInnerRadius = minInnerRadius;
|
||||
this.deltaInnerRadius = maxInnerRadius - minInnerRadius;
|
||||
this.outerRadius = outerRadius;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(Context context, int inputTexId, int inputWidth, int inputHeight)
|
||||
throws IOException {
|
||||
outputSize = new Size(inputWidth, inputHeight);
|
||||
glProgram = new GlProgram(context, VERTEX_SHADER_PATH, FRAGMENT_SHADER_PATH);
|
||||
glProgram.setSamplerTexIdUniform("uTexSampler", inputTexId, /* texUnitIndex= */ 0);
|
||||
glProgram.setFloatsUniform("uCenter", new float[] {centerX, centerY});
|
||||
glProgram.setFloatsUniform("uOuterRadius", new float[] {outerRadius});
|
||||
// Draw the frame on the entire normalized device coordinate space, from -1 to 1, for x and y.
|
||||
glProgram.setBufferAttribute(
|
||||
"aFramePosition",
|
||||
GlUtil.getNormalizedCoordinateBounds(),
|
||||
GlUtil.HOMOGENEOUS_COORDINATE_VECTOR_SIZE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Size getOutputSize() {
|
||||
return checkStateNotNull(outputSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawFrame(long presentationTimeUs) throws FrameProcessingException {
|
||||
try {
|
||||
checkStateNotNull(glProgram).use();
|
||||
double theta = presentationTimeUs * 2 * Math.PI / DIMMING_PERIOD_US;
|
||||
float innerRadius =
|
||||
minInnerRadius + deltaInnerRadius * (0.5f - 0.5f * (float) Math.cos(theta));
|
||||
glProgram.setFloatsUniform("uInnerRadius", new float[] {innerRadius});
|
||||
glProgram.bindAttributesAndUniforms();
|
||||
// The four-vertex triangle strip forms a quad.
|
||||
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, /* first= */ 0, /* count= */ 4);
|
||||
} catch (GlUtil.GlException e) {
|
||||
throw new FrameProcessingException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void release() {
|
||||
if (glProgram != null) {
|
||||
glProgram.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -21,7 +21,6 @@ import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
|
|||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Matrix;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
|
|
@ -32,13 +31,19 @@ import android.view.ViewGroup;
|
|||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.ExoPlayer;
|
||||
import com.google.android.exoplayer2.MediaItem;
|
||||
import com.google.android.exoplayer2.transformer.DefaultEncoderFactory;
|
||||
import com.google.android.exoplayer2.transformer.EncoderSelector;
|
||||
import com.google.android.exoplayer2.transformer.GlEffect;
|
||||
import com.google.android.exoplayer2.transformer.ProgressHolder;
|
||||
import com.google.android.exoplayer2.transformer.SingleFrameGlTextureProcessor;
|
||||
import com.google.android.exoplayer2.transformer.TransformationException;
|
||||
import com.google.android.exoplayer2.transformer.TransformationRequest;
|
||||
import com.google.android.exoplayer2.transformer.TransformationResult;
|
||||
import com.google.android.exoplayer2.transformer.Transformer;
|
||||
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
|
||||
import com.google.android.exoplayer2.ui.StyledPlayerView;
|
||||
|
|
@ -48,8 +53,10 @@ import com.google.android.exoplayer2.util.Util;
|
|||
import com.google.android.material.progressindicator.LinearProgressIndicator;
|
||||
import com.google.common.base.Stopwatch;
|
||||
import com.google.common.base.Ticker;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
|
|
@ -145,9 +152,10 @@ public final class TransformerActivity extends AppCompatActivity {
|
|||
externalCacheFile = createExternalCacheFile("transformer-output.mp4");
|
||||
String filePath = externalCacheFile.getAbsolutePath();
|
||||
@Nullable Bundle bundle = intent.getExtras();
|
||||
MediaItem mediaItem = createMediaItem(bundle, uri);
|
||||
Transformer transformer = createTransformer(bundle, filePath);
|
||||
transformationStopwatch.start();
|
||||
transformer.startTransformation(MediaItem.fromUri(uri), filePath);
|
||||
transformer.startTransformation(mediaItem, filePath);
|
||||
this.transformer = transformer;
|
||||
} catch (IOException e) {
|
||||
throw new IllegalStateException(e);
|
||||
|
|
@ -174,6 +182,24 @@ public final class TransformerActivity extends AppCompatActivity {
|
|||
});
|
||||
}
|
||||
|
||||
private MediaItem createMediaItem(@Nullable Bundle bundle, Uri uri) {
|
||||
MediaItem.Builder mediaItemBuilder = new MediaItem.Builder().setUri(uri);
|
||||
if (bundle != null) {
|
||||
long trimStartMs =
|
||||
bundle.getLong(ConfigurationActivity.TRIM_START_MS, /* defaultValue= */ C.TIME_UNSET);
|
||||
long trimEndMs =
|
||||
bundle.getLong(ConfigurationActivity.TRIM_END_MS, /* defaultValue= */ C.TIME_UNSET);
|
||||
if (trimStartMs != C.TIME_UNSET && trimEndMs != C.TIME_UNSET) {
|
||||
mediaItemBuilder.setClippingConfiguration(
|
||||
new MediaItem.ClippingConfiguration.Builder()
|
||||
.setStartPositionMs(trimStartMs)
|
||||
.setEndPositionMs(trimEndMs)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
return mediaItemBuilder.build();
|
||||
}
|
||||
|
||||
// Create a cache file, resetting it if it already exists.
|
||||
private File createExternalCacheFile(String fileName) throws IOException {
|
||||
File file = new File(getExternalCacheDir(), fileName);
|
||||
|
|
@ -214,22 +240,89 @@ public final class TransformerActivity extends AppCompatActivity {
|
|||
if (resolutionHeight != C.LENGTH_UNSET) {
|
||||
requestBuilder.setResolution(resolutionHeight);
|
||||
}
|
||||
Matrix transformationMatrix = getTransformationMatrix(bundle);
|
||||
if (!transformationMatrix.isIdentity()) {
|
||||
requestBuilder.setTransformationMatrix(transformationMatrix);
|
||||
}
|
||||
|
||||
float scaleX = bundle.getFloat(ConfigurationActivity.SCALE_X, /* defaultValue= */ 1);
|
||||
float scaleY = bundle.getFloat(ConfigurationActivity.SCALE_Y, /* defaultValue= */ 1);
|
||||
requestBuilder.setScale(scaleX, scaleY);
|
||||
|
||||
float rotateDegrees =
|
||||
bundle.getFloat(ConfigurationActivity.ROTATE_DEGREES, /* defaultValue= */ 0);
|
||||
requestBuilder.setRotationDegrees(rotateDegrees);
|
||||
|
||||
requestBuilder.setEnableRequestSdrToneMapping(
|
||||
bundle.getBoolean(ConfigurationActivity.ENABLE_REQUEST_SDR_TONE_MAPPING));
|
||||
requestBuilder.experimental_setEnableHdrEditing(
|
||||
bundle.getBoolean(ConfigurationActivity.ENABLE_HDR_EDITING));
|
||||
transformerBuilder
|
||||
.setTransformationRequest(requestBuilder.build())
|
||||
.setRemoveAudio(bundle.getBoolean(ConfigurationActivity.SHOULD_REMOVE_AUDIO))
|
||||
.setRemoveVideo(bundle.getBoolean(ConfigurationActivity.SHOULD_REMOVE_VIDEO));
|
||||
.setRemoveVideo(bundle.getBoolean(ConfigurationActivity.SHOULD_REMOVE_VIDEO))
|
||||
.setEncoderFactory(
|
||||
new DefaultEncoderFactory(
|
||||
EncoderSelector.DEFAULT,
|
||||
/* enableFallback= */ bundle.getBoolean(ConfigurationActivity.ENABLE_FALLBACK)));
|
||||
|
||||
ImmutableList.Builder<GlEffect> effects = new ImmutableList.Builder<>();
|
||||
@Nullable
|
||||
boolean[] selectedEffects =
|
||||
bundle.getBooleanArray(ConfigurationActivity.DEMO_EFFECTS_SELECTIONS);
|
||||
if (selectedEffects != null) {
|
||||
if (selectedEffects[0]) {
|
||||
effects.add(MatrixTransformationFactory.createDizzyCropEffect());
|
||||
}
|
||||
if (selectedEffects[1]) {
|
||||
try {
|
||||
Class<?> clazz =
|
||||
Class.forName("com.google.android.exoplayer2.transformerdemo.MediaPipeProcessor");
|
||||
Constructor<?> constructor =
|
||||
clazz.getConstructor(String.class, String.class, String.class);
|
||||
effects.add(
|
||||
() -> {
|
||||
try {
|
||||
return (SingleFrameGlTextureProcessor)
|
||||
constructor.newInstance(
|
||||
/* graphName= */ "edge_detector_mediapipe_graph.binarypb",
|
||||
/* inputStreamName= */ "input_video",
|
||||
/* outputStreamName= */ "output_video");
|
||||
} catch (Exception e) {
|
||||
runOnUiThread(() -> showToast(R.string.no_media_pipe_error));
|
||||
throw new RuntimeException("Failed to load MediaPipe processor", e);
|
||||
}
|
||||
});
|
||||
} catch (Exception e) {
|
||||
showToast(R.string.no_media_pipe_error);
|
||||
}
|
||||
}
|
||||
if (selectedEffects[2]) {
|
||||
effects.add(
|
||||
() ->
|
||||
new PeriodicVignetteProcessor(
|
||||
bundle.getFloat(ConfigurationActivity.PERIODIC_VIGNETTE_CENTER_X),
|
||||
bundle.getFloat(ConfigurationActivity.PERIODIC_VIGNETTE_CENTER_Y),
|
||||
/* minInnerRadius= */ bundle.getFloat(
|
||||
ConfigurationActivity.PERIODIC_VIGNETTE_INNER_RADIUS),
|
||||
/* maxInnerRadius= */ bundle.getFloat(
|
||||
ConfigurationActivity.PERIODIC_VIGNETTE_OUTER_RADIUS),
|
||||
bundle.getFloat(ConfigurationActivity.PERIODIC_VIGNETTE_OUTER_RADIUS)));
|
||||
}
|
||||
if (selectedEffects[3]) {
|
||||
effects.add(MatrixTransformationFactory.createSpin3dEffect());
|
||||
}
|
||||
if (selectedEffects[4]) {
|
||||
effects.add(BitmapOverlayProcessor::new);
|
||||
}
|
||||
if (selectedEffects[5]) {
|
||||
effects.add(MatrixTransformationFactory.createZoomInTransition());
|
||||
}
|
||||
transformerBuilder.setVideoFrameEffects(effects.build());
|
||||
}
|
||||
}
|
||||
return transformerBuilder
|
||||
.addListener(
|
||||
new Transformer.Listener() {
|
||||
@Override
|
||||
public void onTransformationCompleted(MediaItem mediaItem) {
|
||||
public void onTransformationCompleted(
|
||||
MediaItem mediaItem, TransformationResult transformationResult) {
|
||||
TransformerActivity.this.onTransformationCompleted(filePath);
|
||||
}
|
||||
|
||||
|
|
@ -243,26 +336,6 @@ public final class TransformerActivity extends AppCompatActivity {
|
|||
.build();
|
||||
}
|
||||
|
||||
private static Matrix getTransformationMatrix(Bundle bundle) {
|
||||
Matrix transformationMatrix = new Matrix();
|
||||
|
||||
float translateX = bundle.getFloat(ConfigurationActivity.TRANSLATE_X, /* defaultValue= */ 0);
|
||||
float translateY = bundle.getFloat(ConfigurationActivity.TRANSLATE_Y, /* defaultValue= */ 0);
|
||||
// TODO(b/213198690): Get resolution for aspect ratio and scale all translations' translateX
|
||||
// by this aspect ratio.
|
||||
transformationMatrix.postTranslate(translateX, translateY);
|
||||
|
||||
float scaleX = bundle.getFloat(ConfigurationActivity.SCALE_X, /* defaultValue= */ 1);
|
||||
float scaleY = bundle.getFloat(ConfigurationActivity.SCALE_Y, /* defaultValue= */ 1);
|
||||
transformationMatrix.postScale(scaleX, scaleY);
|
||||
|
||||
float rotateDegrees =
|
||||
bundle.getFloat(ConfigurationActivity.ROTATE_DEGREES, /* defaultValue= */ 0);
|
||||
transformationMatrix.postRotate(rotateDegrees);
|
||||
|
||||
return transformationMatrix;
|
||||
}
|
||||
|
||||
@RequiresNonNull({
|
||||
"informationTextView",
|
||||
"progressViewGroup",
|
||||
|
|
@ -335,6 +408,10 @@ public final class TransformerActivity extends AppCompatActivity {
|
|||
}
|
||||
}
|
||||
|
||||
private void showToast(@StringRes int messageResource) {
|
||||
Toast.makeText(getApplicationContext(), getString(messageResource), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
||||
private final class DemoDebugViewProvider implements Transformer.DebugViewProvider {
|
||||
|
||||
@Nullable
|
||||
|
|
|
|||
|
|
@ -34,18 +34,18 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
<Button
|
||||
android:id="@+id/choose_file_button"
|
||||
android:id="@+id/select_file_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="32dp"
|
||||
android:layout_marginStart="32dp"
|
||||
android:layout_marginEnd="32dp"
|
||||
android:text="@string/choose_file_title"
|
||||
android:text="@string/select_file_title"
|
||||
app:layout_constraintTop_toBottomOf="@+id/configuration_text_view"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
<TextView
|
||||
android:id="@+id/chosen_file_text_view"
|
||||
android:id="@+id/selected_file_text_view"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
|
|
@ -57,14 +57,14 @@
|
|||
android:gravity="center"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/choose_file_button" />
|
||||
app:layout_constraintTop_toBottomOf="@+id/select_file_button" />
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/chosen_file_text_view"
|
||||
app:layout_constraintBottom_toTopOf="@+id/transform_button">
|
||||
app:layout_constraintTop_toBottomOf="@+id/selected_file_text_view"
|
||||
app:layout_constraintBottom_toTopOf="@+id/select_demo_effects_button">
|
||||
<TableLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
@ -137,17 +137,6 @@
|
|||
android:layout_gravity="right|center_vertical"
|
||||
android:gravity="right" />
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical" >
|
||||
<TextView
|
||||
android:id="@+id/translate"
|
||||
android:text="@string/translate"/>
|
||||
<Spinner
|
||||
android:id="@+id/translate_spinner"
|
||||
android:layout_gravity="right|center_vertical"
|
||||
android:gravity="right" />
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical" >
|
||||
|
|
@ -170,6 +159,36 @@
|
|||
android:layout_gravity="right|center_vertical"
|
||||
android:gravity="right" />
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical" >
|
||||
<TextView
|
||||
android:id="@+id/trim"
|
||||
android:text="@string/trim" />
|
||||
<CheckBox
|
||||
android:id="@+id/trim_checkbox"
|
||||
android:layout_gravity="right" />
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical" >
|
||||
<TextView
|
||||
android:text="@string/enable_fallback" />
|
||||
<CheckBox
|
||||
android:id="@+id/enable_fallback_checkbox"
|
||||
android:layout_gravity="right"
|
||||
android:checked="true"/>
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical" >
|
||||
<TextView
|
||||
android:id="@+id/request_sdr_tone_mapping"
|
||||
android:text="@string/request_sdr_tone_mapping" />
|
||||
<CheckBox
|
||||
android:id="@+id/request_sdr_tone_mapping_checkbox"
|
||||
android:layout_gravity="right" />
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical" >
|
||||
|
|
@ -182,6 +201,17 @@
|
|||
</TableRow>
|
||||
</TableLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
<Button
|
||||
android:id="@+id/select_demo_effects_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="32dp"
|
||||
android:layout_marginStart="32dp"
|
||||
android:layout_marginEnd="32dp"
|
||||
android:text="@string/select_demo_effects"
|
||||
app:layout_constraintBottom_toTopOf="@+id/transform_button"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
<Button
|
||||
android:id="@+id/transform_button"
|
||||
android:layout_width="wrap_content"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,72 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright 2022 The Android Open Source Project
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
tools:context=".ConfigurationActivity">
|
||||
|
||||
<TableLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:stretchColumns="1"
|
||||
android:layout_marginTop="32dp"
|
||||
android:measureWithLargestChild="true"
|
||||
android:paddingLeft="24dp"
|
||||
android:paddingRight="12dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent">
|
||||
<TableRow
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical" >
|
||||
<TextView
|
||||
android:text="@string/center_x" />
|
||||
<com.google.android.material.slider.Slider
|
||||
android:id="@+id/periodic_vignette_center_x_slider"
|
||||
android:valueFrom="0.0"
|
||||
android:value="0.5"
|
||||
android:valueTo="1.0"
|
||||
android:layout_gravity="right"/>
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical" >
|
||||
<TextView
|
||||
android:text="@string/center_y" />
|
||||
<com.google.android.material.slider.Slider
|
||||
android:id="@+id/periodic_vignette_center_y_slider"
|
||||
android:valueFrom="0.0"
|
||||
android:value="0.5"
|
||||
android:valueTo="1.0"
|
||||
android:layout_gravity="right"/>
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical" >
|
||||
<TextView
|
||||
android:text="@string/radius_range" />
|
||||
<com.google.android.material.slider.RangeSlider
|
||||
android:id="@+id/periodic_vignette_radius_range_slider"
|
||||
android:valueFrom="0.0"
|
||||
android:valueTo="1.414"
|
||||
android:layout_gravity="right"/>
|
||||
</TableRow>
|
||||
</TableLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
48
demos/transformer/src/main/res/layout/trim_options.xml
Normal file
48
demos/transformer/src/main/res/layout/trim_options.xml
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright 2022 The Android Open Source Project
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
tools:context=".ConfigurationActivity">
|
||||
|
||||
<TableLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:stretchColumns="1"
|
||||
android:layout_marginTop="32dp"
|
||||
android:measureWithLargestChild="true"
|
||||
android:paddingLeft="24dp"
|
||||
android:paddingRight="12dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent">
|
||||
<TableRow
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical" >
|
||||
<TextView
|
||||
android:text="@string/trim_range" />
|
||||
<com.google.android.material.slider.RangeSlider
|
||||
android:id="@+id/trim_bounds_range_slider"
|
||||
android:valueFrom="0.0"
|
||||
android:valueTo="60.0"
|
||||
android:layout_gravity="right"/>
|
||||
</TableRow>
|
||||
</TableLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -17,22 +17,31 @@
|
|||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_name" translatable="false">Transformer Demo</string>
|
||||
<string name="configuration" translatable="false">Configuration</string>
|
||||
<string name="choose_file_title" translatable="false">Choose file</string>
|
||||
<string name="select_file_title" translatable="false">Choose file</string>
|
||||
<string name="remove_audio" translatable="false">Remove audio</string>
|
||||
<string name="remove_video" translatable="false">Remove video</string>
|
||||
<string name="flatten_for_slow_motion" translatable="false">Flatten for slow motion</string>
|
||||
<string name="audio_mime" translatable="false">Output audio MIME type</string>
|
||||
<string name="video_mime" translatable="false">Output video MIME type</string>
|
||||
<string name="resolution_height" translatable="false">Output video resolution</string>
|
||||
<string name="translate" translatable="false">Translate video</string>
|
||||
<string name="scale" translatable="false">Scale video</string>
|
||||
<string name="rotate" translatable="false">Rotate video (degrees)</string>
|
||||
<string name="transform" translatable="false">Transform</string>
|
||||
<string name="enable_fallback" translatable="false">Enable fallback</string>
|
||||
<string name="trim" translatable="false">Trim</string>
|
||||
<string name="request_sdr_tone_mapping" translatable="false">Request SDR tone-mapping (API 31+)</string>
|
||||
<string name="hdr_editing" translatable="false">[Experimental] HDR editing</string>
|
||||
<string name="select_demo_effects" translatable="false">Add demo effects</string>
|
||||
<string name="periodic_vignette_options" translatable="false">Periodic vignette options</string>
|
||||
<string name="no_media_pipe_error" translatable="false">Failed to load MediaPipe processor. Check the README for instructions.</string>
|
||||
<string name="transform" translatable="false">Transform</string>
|
||||
<string name="debug_preview" translatable="false">Debug preview:</string>
|
||||
<string name="debug_preview_not_available" translatable="false">No debug preview available.</string>
|
||||
<string name="transformation_started" translatable="false">Transformation started</string>
|
||||
<string name="transformation_timer" translatable="false">Transformation started %d seconds ago.</string>
|
||||
<string name="transformation_completed" translatable="false">Transformation completed in %d seconds.</string>
|
||||
<string name="transformation_error" translatable="false">Transformation error</string>
|
||||
<string name="center_x">Center X</string>
|
||||
<string name="center_y">Center Y</string>
|
||||
<string name="radius_range">Radius range</string>
|
||||
<string name="trim_range">Bounds in seconds</string>
|
||||
</resources>
|
||||
|
|
|
|||
19
demos/transformer/src/withMediaPipe/AndroidManifest.xml
Normal file
19
demos/transformer/src/withMediaPipe/AndroidManifest.xml
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright 2022 The Android Open Source Project
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
<manifest package="com.google.android.exoplayer2.transformerdemo">
|
||||
<uses-sdk />
|
||||
</manifest>
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
# Demo MediaPipe graph that shows edges using a SobelEdgesCalculator.
|
||||
input_stream: "input_video"
|
||||
output_stream: "output_video"
|
||||
node: {
|
||||
calculator: "LuminanceCalculator"
|
||||
input_stream: "input_video"
|
||||
output_stream: "luma_video"
|
||||
}
|
||||
node: {
|
||||
calculator: "SobelEdgesCalculator"
|
||||
input_stream: "luma_video"
|
||||
output_stream: "output_video"
|
||||
}
|
||||
|
|
@ -0,0 +1,175 @@
|
|||
/*
|
||||
* Copyright 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.google.android.exoplayer2.transformerdemo;
|
||||
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkState;
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkStateNotNull;
|
||||
|
||||
import android.content.Context;
|
||||
import android.opengl.EGL14;
|
||||
import android.opengl.GLES20;
|
||||
import android.util.Size;
|
||||
import com.google.android.exoplayer2.transformer.FrameProcessingException;
|
||||
import com.google.android.exoplayer2.transformer.SingleFrameGlTextureProcessor;
|
||||
import com.google.android.exoplayer2.util.ConditionVariable;
|
||||
import com.google.android.exoplayer2.util.GlProgram;
|
||||
import com.google.android.exoplayer2.util.GlUtil;
|
||||
import com.google.android.exoplayer2.util.LibraryLoader;
|
||||
import com.google.mediapipe.components.FrameProcessor;
|
||||
import com.google.mediapipe.framework.AndroidAssetUtil;
|
||||
import com.google.mediapipe.framework.AppTextureFrame;
|
||||
import com.google.mediapipe.framework.TextureFrame;
|
||||
import com.google.mediapipe.glutil.EglManager;
|
||||
import java.io.IOException;
|
||||
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
|
||||
/**
|
||||
* Runs a MediaPipe graph on input frames. The implementation is currently limited to graphs that
|
||||
* can immediately produce one output frame per input frame.
|
||||
*/
|
||||
/* package */ final class MediaPipeProcessor implements SingleFrameGlTextureProcessor {
|
||||
|
||||
private static final LibraryLoader LOADER =
|
||||
new LibraryLoader("mediapipe_jni") {
|
||||
@Override
|
||||
protected void loadLibrary(String name) {
|
||||
System.loadLibrary(name);
|
||||
}
|
||||
};
|
||||
|
||||
static {
|
||||
// Not all build configurations require OpenCV to be loaded separately, so attempt to load the
|
||||
// library but ignore the error if it's not present.
|
||||
try {
|
||||
System.loadLibrary("opencv_java3");
|
||||
} catch (UnsatisfiedLinkError e) {
|
||||
// Do nothing.
|
||||
}
|
||||
}
|
||||
|
||||
private static final String COPY_VERTEX_SHADER_NAME = "vertex_shader_copy_es2.glsl";
|
||||
private static final String COPY_FRAGMENT_SHADER_NAME = "shaders/fragment_shader_copy_es2.glsl";
|
||||
|
||||
private final String graphName;
|
||||
private final String inputStreamName;
|
||||
private final String outputStreamName;
|
||||
private final ConditionVariable frameProcessorConditionVariable;
|
||||
|
||||
private @MonotonicNonNull FrameProcessor frameProcessor;
|
||||
private int inputWidth;
|
||||
private int inputHeight;
|
||||
private int inputTexId;
|
||||
private @MonotonicNonNull GlProgram glProgram;
|
||||
private @MonotonicNonNull TextureFrame outputFrame;
|
||||
private @MonotonicNonNull RuntimeException frameProcessorPendingError;
|
||||
|
||||
/**
|
||||
* Creates a new texture processor that wraps a MediaPipe graph.
|
||||
*
|
||||
* @param graphName Name of a MediaPipe graph asset to load.
|
||||
* @param inputStreamName Name of the input video stream in the graph.
|
||||
* @param outputStreamName Name of the input video stream in the graph.
|
||||
*/
|
||||
public MediaPipeProcessor(String graphName, String inputStreamName, String outputStreamName) {
|
||||
checkState(LOADER.isAvailable());
|
||||
this.graphName = graphName;
|
||||
this.inputStreamName = inputStreamName;
|
||||
this.outputStreamName = outputStreamName;
|
||||
frameProcessorConditionVariable = new ConditionVariable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(Context context, int inputTexId, int inputWidth, int inputHeight)
|
||||
throws IOException {
|
||||
this.inputTexId = inputTexId;
|
||||
this.inputWidth = inputWidth;
|
||||
this.inputHeight = inputHeight;
|
||||
glProgram = new GlProgram(context, COPY_VERTEX_SHADER_NAME, COPY_FRAGMENT_SHADER_NAME);
|
||||
|
||||
AndroidAssetUtil.initializeNativeAssetManager(context);
|
||||
|
||||
EglManager eglManager = new EglManager(EGL14.eglGetCurrentContext());
|
||||
frameProcessor =
|
||||
new FrameProcessor(
|
||||
context, eglManager.getNativeContext(), graphName, inputStreamName, outputStreamName);
|
||||
|
||||
// Unblock drawFrame when there is an output frame or an error.
|
||||
frameProcessor.setConsumer(
|
||||
frame -> {
|
||||
outputFrame = frame;
|
||||
frameProcessorConditionVariable.open();
|
||||
});
|
||||
frameProcessor.setAsynchronousErrorListener(
|
||||
error -> {
|
||||
frameProcessorPendingError = error;
|
||||
frameProcessorConditionVariable.open();
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Size getOutputSize() {
|
||||
return new Size(inputWidth, inputHeight);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawFrame(long presentationTimeUs) throws FrameProcessingException {
|
||||
frameProcessorConditionVariable.close();
|
||||
|
||||
// Pass the input frame to MediaPipe.
|
||||
AppTextureFrame appTextureFrame = new AppTextureFrame(inputTexId, inputWidth, inputHeight);
|
||||
appTextureFrame.setTimestamp(presentationTimeUs);
|
||||
checkStateNotNull(frameProcessor).onNewFrame(appTextureFrame);
|
||||
|
||||
// Wait for output to be passed to the consumer.
|
||||
try {
|
||||
frameProcessorConditionVariable.block();
|
||||
} catch (InterruptedException e) {
|
||||
// Propagate the interrupted flag so the next blocking operation will throw.
|
||||
// TODO(b/230469581): The next processor that runs will not have valid input due to returning
|
||||
// early here. This could be fixed by checking for interruption in the outer loop that runs
|
||||
// through the texture processors.
|
||||
Thread.currentThread().interrupt();
|
||||
return;
|
||||
}
|
||||
|
||||
if (frameProcessorPendingError != null) {
|
||||
throw new FrameProcessingException(frameProcessorPendingError);
|
||||
}
|
||||
|
||||
// Copy from MediaPipe's output texture to the current output.
|
||||
try {
|
||||
checkStateNotNull(glProgram).use();
|
||||
glProgram.setSamplerTexIdUniform(
|
||||
"uTexSampler", checkStateNotNull(outputFrame).getTextureName(), /* texUnitIndex= */ 0);
|
||||
glProgram.setBufferAttribute(
|
||||
"aFramePosition",
|
||||
GlUtil.getNormalizedCoordinateBounds(),
|
||||
GlUtil.HOMOGENEOUS_COORDINATE_VECTOR_SIZE);
|
||||
glProgram.bindAttributesAndUniforms();
|
||||
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, /* first= */ 0, /* count= */ 4);
|
||||
GlUtil.checkGlError();
|
||||
} catch (GlUtil.GlException e) {
|
||||
throw new FrameProcessingException(e);
|
||||
} finally {
|
||||
checkStateNotNull(outputFrame).release();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void release() {
|
||||
checkStateNotNull(frameProcessor).close();
|
||||
}
|
||||
}
|
||||
|
|
@ -51,8 +51,8 @@ build and inject a `DefaultMediaSourceFactory` configured with an
|
|||
~~~
|
||||
MediaSource.Factory mediaSourceFactory =
|
||||
new DefaultMediaSourceFactory(context)
|
||||
.setAdsLoaderProvider(adsLoaderProvider)
|
||||
.setAdViewProvider(playerView);
|
||||
.setLocalAdInsertionComponents(
|
||||
adsLoaderProvider, /* adViewProvider= */ playerView);
|
||||
ExoPlayer player = new ExoPlayer.Builder(context)
|
||||
.setMediaSourceFactory(mediaSourceFactory)
|
||||
.build();
|
||||
|
|
@ -220,7 +220,7 @@ server-side ad insertion `MediaSource` for URIs using the `ssai://` scheme:
|
|||
Player player =
|
||||
new ExoPlayer.Builder(context)
|
||||
.setMediaSourceFactory(
|
||||
new DefaultMediaSourceFactory(dataSourceFactory)
|
||||
new DefaultMediaSourceFactory(context)
|
||||
.setServerSideAdInsertionMediaSourceFactory(ssaiFactory))
|
||||
.build();
|
||||
```
|
||||
|
|
@ -241,7 +241,7 @@ In order to use this class, you need to set up the
|
|||
```
|
||||
// MediaSource.Factory to load the actual media stream.
|
||||
DefaultMediaSourceFactory defaultMediaSourceFactory =
|
||||
new DefaultMediaSourceFactory(dataSourceFactory);
|
||||
new DefaultMediaSourceFactory(context);
|
||||
// AdsLoader that can be reused for multiple playbacks.
|
||||
ImaServerSideAdInsertionMediaSource.AdsLoader adsLoader =
|
||||
new ImaServerSideAdInsertionMediaSource.AdsLoader.Builder(context, adViewProvider)
|
||||
|
|
@ -267,7 +267,10 @@ with `ImaServerSideAdInsertionUriBuilder`:
|
|||
|
||||
```
|
||||
Uri ssaiUri =
|
||||
new ImaServerSideAdInsertionUriBuilder().setAssetKey(assetKey).build();
|
||||
new ImaServerSideAdInsertionUriBuilder()
|
||||
.setAssetKey(assetKey)
|
||||
.setFormat(C.TYPE_HLS)
|
||||
.build();
|
||||
player.setMediaItem(MediaItem.fromUri(ssaiUri));
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -43,32 +43,7 @@ described below.
|
|||
|
||||
### Configuring the network stack ###
|
||||
|
||||
ExoPlayer supports Android's default network stack, as well as Cronet and
|
||||
OkHttp. In each case it's possible to customize the network stack for your use
|
||||
case. The following example shows how to customize the player to use Android's
|
||||
default network stack with cross-protocol redirects enabled:
|
||||
|
||||
~~~
|
||||
// Build a HttpDataSource.Factory with cross-protocol redirects enabled.
|
||||
HttpDataSource.Factory httpDataSourceFactory =
|
||||
new DefaultHttpDataSource.Factory().setAllowCrossProtocolRedirects(true);
|
||||
|
||||
// Wrap the HttpDataSource.Factory in a DefaultDataSource.Factory, which adds in
|
||||
// support for requesting data from other sources (e.g., files, resources, etc).
|
||||
DefaultDataSource.Factory dataSourceFactory =
|
||||
new DefaultDataSource.Factory(context, httpDataSourceFactory);
|
||||
|
||||
// Inject the DefaultDataSourceFactory when creating the player.
|
||||
ExoPlayer player =
|
||||
new ExoPlayer.Builder(context)
|
||||
.setMediaSourceFactory(new DefaultMediaSourceFactory(dataSourceFactory))
|
||||
.build();
|
||||
~~~
|
||||
{: .language-java}
|
||||
|
||||
The same approach can be used to configure and inject `HttpDataSource.Factory`
|
||||
implementations provided by the [Cronet extension] and the [OkHttp extension],
|
||||
depending on your preferred choice of network stack.
|
||||
We have a page about [customizing the network stack used by ExoPlayer].
|
||||
|
||||
### Caching data loaded from the network ###
|
||||
|
||||
|
|
@ -84,7 +59,8 @@ DataSource.Factory cacheDataSourceFactory =
|
|||
|
||||
ExoPlayer player = new ExoPlayer.Builder(context)
|
||||
.setMediaSourceFactory(
|
||||
new DefaultMediaSourceFactory(cacheDataSourceFactory))
|
||||
new DefaultMediaSourceFactory(context)
|
||||
.setDataSourceFactory(cacheDataSourceFactory))
|
||||
.build();
|
||||
~~~
|
||||
{: .language-java}
|
||||
|
|
@ -108,7 +84,9 @@ DataSource.Factory dataSourceFactory = () -> {
|
|||
};
|
||||
|
||||
ExoPlayer player = new ExoPlayer.Builder(context)
|
||||
.setMediaSourceFactory(new DefaultMediaSourceFactory(dataSourceFactory))
|
||||
.setMediaSourceFactory(
|
||||
new DefaultMediaSourceFactory(context)
|
||||
.setDataSourceFactory(dataSourceFactory))
|
||||
.build();
|
||||
~~~
|
||||
{: .language-java}
|
||||
|
|
@ -206,6 +184,56 @@ DefaultExtractorsFactory extractorsFactory =
|
|||
The `ExtractorsFactory` can then be injected via `DefaultMediaSourceFactory` as
|
||||
described for customizing extractor flags above.
|
||||
|
||||
|
||||
### Enabling asynchronous buffer queueing ###
|
||||
|
||||
Asynchronous buffer queueing is an enhancement in ExoPlayer's rendering
|
||||
pipeline, which operates `MediaCodec` instances in [asynchronous mode][] and
|
||||
uses additional threads to schedule decoding and rendering of data. Enabling it
|
||||
can reduce dropped frames and audio underruns.
|
||||
|
||||
Asynchronous buffer queueing is enabled by default on devices running Android 12
|
||||
and above, and can be enabled manually from Android 6. Consider enabling the
|
||||
feature for specific devices on which you observe dropped frames or audio
|
||||
underruns, particularly when playing DRM protected or high frame rate content.
|
||||
|
||||
In the simplest case, you need to inject a `DefaultRenderersFactory` to the
|
||||
player as follows:
|
||||
|
||||
~~~
|
||||
DefaultRenderersFactory renderersFactory =
|
||||
new DefaultRenderersFactory(context)
|
||||
.forceEnableMediaCodecAsynchronousQueueing();
|
||||
ExoPlayer exoPlayer = new ExoPlayer.Builder(context, renderersFactory).build();
|
||||
~~~
|
||||
{: .language-java}
|
||||
|
||||
If you're instantiating renderers directly, pass a
|
||||
`AsynchronousMediaCodecAdapter.Factory` to the `MediaCodecVideoRenderer` and
|
||||
`MediaCodecAudioRenderer` constructors.
|
||||
|
||||
### Intercepting method calls with `ForwardingPlayer` ###
|
||||
|
||||
You can customize some of the behavior of a `Player` instance by wrapping it in
|
||||
a subclass of `ForwardingPlayer` and overriding methods in order to do any of
|
||||
the following:
|
||||
|
||||
* Access parameters before passing them to the delegate `Player`.
|
||||
* Access the return value from the delegate `Player` before returning it.
|
||||
* Re-implement the method completely.
|
||||
|
||||
When overriding `ForwardingPlayer` methods it's important to ensure the
|
||||
implementation remains self-consistent and compliant with the `Player`
|
||||
interface, especially when dealing with methods that are intended to have
|
||||
identical or related behavior. For example, if you want to override every 'play'
|
||||
operation, you need to override both `ForwardingPlayer.play` and
|
||||
`ForwardingPlayer.setPlayWhenReady`, because a caller will expect the behavior
|
||||
of these methdods to be identical when `playWhenReady = true`. Similarly, if you
|
||||
want to change the seek-forward increment you need to override both
|
||||
`ForwardingPlayer.seekForward` to perform a seek with your customized increment,
|
||||
and `ForwardingPlayer.getSeekForwardIncrement` in order to report the correct
|
||||
customized increment back to the caller.
|
||||
|
||||
## MediaSource customization ##
|
||||
|
||||
The examples above inject customized components for use during playback of all
|
||||
|
|
@ -270,8 +298,8 @@ When building custom components, we recommend the following:
|
|||
ensures that they are executed in order with any other operations being
|
||||
performed on the player.
|
||||
|
||||
[Cronet extension]: https://github.com/google/ExoPlayer/tree/release-v2/extensions/cronet
|
||||
[OkHttp extension]: https://github.com/google/ExoPlayer/tree/release-v2/extensions/okhttp
|
||||
[customizing the network stack used by ExoPlayer]: {{ site.baseurl }}/network-stacks.html
|
||||
[LoadErrorHandlingPolicy]: {{ site.exo_sdk }}/upstream/LoadErrorHandlingPolicy.html
|
||||
[media source based playlist API]: {{ site.baseurl }}/media-sources.html#media-source-based-playlist-api
|
||||
[asynchronous mode]: https://developer.android.com/reference/android/media/MediaCodec#asynchronous-processing-using-buffers
|
||||
|
||||
|
|
|
|||
|
|
@ -9,13 +9,10 @@ issues. `EventLogger` implements `AnalyticsListener`, so registering an instance
|
|||
with an `ExoPlayer` is easy:
|
||||
|
||||
```
|
||||
player.addAnalyticsListener(new EventLogger(trackSelector));
|
||||
player.addAnalyticsListener(new EventLogger());
|
||||
```
|
||||
{: .language-java}
|
||||
|
||||
Passing the `trackSelector` enables additional logging, but is optional and so
|
||||
`null` can be passed instead.
|
||||
|
||||
The easiest way to observe the log is using Android Studio's [logcat tab][]. You
|
||||
can select your app as debuggable process by the package name (
|
||||
`com.google.android.exoplayer2.demo` if using the demo app) and tell the logcat
|
||||
|
|
@ -80,20 +77,16 @@ logging for an adaptive stream:
|
|||
|
||||
```
|
||||
EventLogger: tracks [eventTime=0.30, mediaPos=0.00, window=0, period=0,
|
||||
EventLogger: MediaCodecVideoRenderer [
|
||||
EventLogger: Group:0, adaptive_supported=YES [
|
||||
EventLogger: [X] Track:0, id=133, mimeType=video/avc, bitrate=261112, codecs=avc1.4d4015, res=426x240, fps=30.0, supported=YES
|
||||
EventLogger: [X] Track:1, id=134, mimeType=video/avc, bitrate=671331, codecs=avc1.4d401e, res=640x360, fps=30.0, supported=YES
|
||||
EventLogger: [X] Track:2, id=135, mimeType=video/avc, bitrate=1204535, codecs=avc1.4d401f, res=854x480, fps=30.0, supported=YES
|
||||
EventLogger: [X] Track:3, id=160, mimeType=video/avc, bitrate=112329, codecs=avc1.4d400c, res=256x144, fps=30.0, supported=YES
|
||||
EventLogger: [ ] Track:4, id=136, mimeType=video/avc, bitrate=2400538, codecs=avc1.4d401f, res=1280x720, fps=30.0, supported=NO_EXCEEDS_CAPABILITIES
|
||||
EventLogger: ]
|
||||
EventLogger: group [
|
||||
EventLogger: [X] Track:0, id=133, mimeType=video/avc, bitrate=261112, codecs=avc1.4d4015, res=426x240, fps=30.0, supported=YES
|
||||
EventLogger: [X] Track:1, id=134, mimeType=video/avc, bitrate=671331, codecs=avc1.4d401e, res=640x360, fps=30.0, supported=YES
|
||||
EventLogger: [X] Track:2, id=135, mimeType=video/avc, bitrate=1204535, codecs=avc1.4d401f, res=854x480, fps=30.0, supported=YES
|
||||
EventLogger: [X] Track:3, id=160, mimeType=video/avc, bitrate=112329, codecs=avc1.4d400c, res=256x144, fps=30.0, supported=YES
|
||||
EventLogger: [ ] Track:4, id=136, mimeType=video/avc, bitrate=2400538, codecs=avc1.4d401f, res=1280x720, fps=30.0, supported=NO_EXCEEDS_CAPABILITIES
|
||||
EventLogger: ]
|
||||
EventLogger: MediaCodecAudioRenderer [
|
||||
EventLogger: Group:0, adaptive_supported=YES_NOT_SEAMLESS [
|
||||
EventLogger: [ ] Track:0, id=139, mimeType=audio/mp4a-latm, bitrate=48582, codecs=mp4a.40.5, channels=2, sample_rate=22050, supported=YES
|
||||
EventLogger: [X] Track:1, id=140, mimeType=audio/mp4a-latm, bitrate=127868, codecs=mp4a.40.2, channels=2, sample_rate=44100, supported=YES
|
||||
EventLogger: ]
|
||||
EventLogger: group [
|
||||
EventLogger: [ ] Track:0, id=139, mimeType=audio/mp4a-latm, bitrate=48582, codecs=mp4a.40.5, channels=2, sample_rate=22050, supported=YES
|
||||
EventLogger: [X] Track:1, id=140, mimeType=audio/mp4a-latm, bitrate=127868, codecs=mp4a.40.2, channels=2, sample_rate=44100, supported=YES
|
||||
EventLogger: ]
|
||||
EventLogger: ]
|
||||
```
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -115,6 +115,7 @@
|
|||
<li><a href="com/google/android/exoplayer2/upstream/AssetDataSource.AssetDataSourceException.html" title="class in com.google.android.exoplayer2.upstream">AssetDataSource.AssetDataSourceException</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/util/AtomicFile.html" title="class in com.google.android.exoplayer2.util">AtomicFile</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/audio/AudioAttributes.html" title="class in com.google.android.exoplayer2.audio">AudioAttributes</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/audio/AudioAttributes.AudioAttributesV21.html" title="class in com.google.android.exoplayer2.audio">AudioAttributes.AudioAttributesV21</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/audio/AudioAttributes.Builder.html" title="class in com.google.android.exoplayer2.audio">AudioAttributes.Builder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/audio/AudioCapabilities.html" title="class in com.google.android.exoplayer2.audio">AudioCapabilities</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/audio/AudioCapabilitiesReceiver.html" title="class in com.google.android.exoplayer2.audio">AudioCapabilitiesReceiver</a></li>
|
||||
|
|
@ -133,6 +134,7 @@
|
|||
<li><a href="com/google/android/exoplayer2/audio/AudioSink.WriteException.html" title="class in com.google.android.exoplayer2.audio">AudioSink.WriteException</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/audio/AuxEffectInfo.html" title="class in com.google.android.exoplayer2.audio">AuxEffectInfo</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/video/AvcConfig.html" title="class in com.google.android.exoplayer2.video">AvcConfig</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/avi/AviExtractor.html" title="class in com.google.android.exoplayer2.extractor.avi">AviExtractor</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/upstream/BandwidthMeter.html" title="interface in com.google.android.exoplayer2.upstream"><span class="interfaceName">BandwidthMeter</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/upstream/BandwidthMeter.EventListener.html" title="interface in com.google.android.exoplayer2.upstream"><span class="interfaceName">BandwidthMeter.EventListener</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/upstream/BandwidthMeter.EventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.upstream">BandwidthMeter.EventListener.EventDispatcher</a></li>
|
||||
|
|
@ -241,7 +243,7 @@
|
|||
<li><a href="com/google/android/exoplayer2/source/ClippingMediaSource.IllegalClippingException.html" title="class in com.google.android.exoplayer2.source">ClippingMediaSource.IllegalClippingException</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/ClippingMediaSource.IllegalClippingException.Reason.html" title="annotation in com.google.android.exoplayer2.source">ClippingMediaSource.IllegalClippingException.Reason</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/util/Clock.html" title="interface in com.google.android.exoplayer2.util"><span class="interfaceName">Clock</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/Codec.html" title="class in com.google.android.exoplayer2.transformer">Codec</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/Codec.html" title="interface in com.google.android.exoplayer2.transformer"><span class="interfaceName">Codec</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/Codec.DecoderFactory.html" title="interface in com.google.android.exoplayer2.transformer"><span class="interfaceName">Codec.DecoderFactory</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/Codec.EncoderFactory.html" title="interface in com.google.android.exoplayer2.transformer"><span class="interfaceName">Codec.EncoderFactory</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/util/CodecSpecificDataUtil.html" title="class in com.google.android.exoplayer2.util">CodecSpecificDataUtil</a></li>
|
||||
|
|
@ -278,6 +280,7 @@
|
|||
<li><a href="com/google/android/exoplayer2/text/Cue.VerticalType.html" title="annotation in com.google.android.exoplayer2.text">Cue.VerticalType</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/text/CueDecoder.html" title="class in com.google.android.exoplayer2.text">CueDecoder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/text/CueEncoder.html" title="class in com.google.android.exoplayer2.text">CueEncoder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/text/CueGroup.html" title="class in com.google.android.exoplayer2.text">CueGroup</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/dash/DashChunkSource.html" title="interface in com.google.android.exoplayer2.source.dash"><span class="interfaceName">DashChunkSource</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/dash/DashChunkSource.Factory.html" title="interface in com.google.android.exoplayer2.source.dash"><span class="interfaceName">DashChunkSource.Factory</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/dash/offline/DashDownloader.html" title="class in com.google.android.exoplayer2.source.dash.offline">DashDownloader</a></li>
|
||||
|
|
@ -339,6 +342,7 @@
|
|||
<li><a href="com/google/android/exoplayer2/upstream/DefaultBandwidthMeter.html" title="class in com.google.android.exoplayer2.upstream">DefaultBandwidthMeter</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/upstream/DefaultBandwidthMeter.Builder.html" title="class in com.google.android.exoplayer2.upstream">DefaultBandwidthMeter.Builder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/ext/cast/DefaultCastOptionsProvider.html" title="class in com.google.android.exoplayer2.ext.cast">DefaultCastOptionsProvider</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/DefaultCodec.html" title="class in com.google.android.exoplayer2.transformer">DefaultCodec</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/DefaultCompositeSequenceableLoaderFactory.html" title="class in com.google.android.exoplayer2.source">DefaultCompositeSequenceableLoaderFactory</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/upstream/cache/DefaultContentMetadata.html" title="class in com.google.android.exoplayer2.upstream.cache">DefaultContentMetadata</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/dash/DefaultDashChunkSource.html" title="class in com.google.android.exoplayer2.source.dash">DefaultDashChunkSource</a></li>
|
||||
|
|
@ -356,6 +360,7 @@
|
|||
<li><a href="com/google/android/exoplayer2/drm/DefaultDrmSessionManager.MissingSchemeDataException.html" title="class in com.google.android.exoplayer2.drm">DefaultDrmSessionManager.MissingSchemeDataException</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/drm/DefaultDrmSessionManager.Mode.html" title="annotation in com.google.android.exoplayer2.drm">DefaultDrmSessionManager.Mode</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/drm/DefaultDrmSessionManagerProvider.html" title="class in com.google.android.exoplayer2.drm">DefaultDrmSessionManagerProvider</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/DefaultEncoderFactory.html" title="class in com.google.android.exoplayer2.transformer">DefaultEncoderFactory</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/DefaultExtractorInput.html" title="class in com.google.android.exoplayer2.extractor">DefaultExtractorInput</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/DefaultExtractorsFactory.html" title="class in com.google.android.exoplayer2.extractor">DefaultExtractorsFactory</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/hls/DefaultHlsDataSourceFactory.html" title="class in com.google.android.exoplayer2.source.hls">DefaultHlsDataSourceFactory</a></li>
|
||||
|
|
@ -386,6 +391,7 @@
|
|||
<li><a href="com/google/android/exoplayer2/ui/DefaultTrackNameProvider.html" title="class in com.google.android.exoplayer2.ui">DefaultTrackNameProvider</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/DefaultTrackSelector.html" title="class in com.google.android.exoplayer2.trackselection">DefaultTrackSelector</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/DefaultTrackSelector.Parameters.html" title="class in com.google.android.exoplayer2.trackselection">DefaultTrackSelector.Parameters</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/DefaultTrackSelector.Parameters.Builder.html" title="class in com.google.android.exoplayer2.trackselection">DefaultTrackSelector.Parameters.Builder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/DefaultTrackSelector.ParametersBuilder.html" title="class in com.google.android.exoplayer2.trackselection">DefaultTrackSelector.ParametersBuilder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/DefaultTrackSelector.SelectionEligibility.html" title="annotation in com.google.android.exoplayer2.trackselection">DefaultTrackSelector.SelectionEligibility</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/DefaultTrackSelector.SelectionOverride.html" title="class in com.google.android.exoplayer2.trackselection">DefaultTrackSelector.SelectionOverride</a></li>
|
||||
|
|
@ -430,12 +436,10 @@
|
|||
<li><a href="com/google/android/exoplayer2/drm/DrmUtil.ErrorSource.html" title="annotation in com.google.android.exoplayer2.drm">DrmUtil.ErrorSource</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/ts/DtsReader.html" title="class in com.google.android.exoplayer2.extractor.ts">DtsReader</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/audio/DtsUtil.html" title="class in com.google.android.exoplayer2.audio">DtsUtil</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/upstream/DummyDataSource.html" title="class in com.google.android.exoplayer2.upstream">DummyDataSource</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/drm/DummyExoMediaDrm.html" title="class in com.google.android.exoplayer2.drm">DummyExoMediaDrm</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/DummyExtractorOutput.html" title="class in com.google.android.exoplayer2.extractor">DummyExtractorOutput</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/testutil/DummyMainThread.html" title="class in com.google.android.exoplayer2.testutil">DummyMainThread</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/testutil/DummyMainThread.TestRunnable.html" title="interface in com.google.android.exoplayer2.testutil"><span class="interfaceName">DummyMainThread.TestRunnable</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/video/DummySurface.html" title="class in com.google.android.exoplayer2.video">DummySurface</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/DummyTrackOutput.html" title="class in com.google.android.exoplayer2.extractor">DummyTrackOutput</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/testutil/DumpableFormat.html" title="class in com.google.android.exoplayer2.testutil">DumpableFormat</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/testutil/Dumper.html" title="class in com.google.android.exoplayer2.testutil">Dumper</a></li>
|
||||
|
|
@ -451,6 +455,7 @@
|
|||
<li><a href="com/google/android/exoplayer2/util/EGLSurfaceTexture.TextureImageListener.html" title="interface in com.google.android.exoplayer2.util"><span class="interfaceName">EGLSurfaceTexture.TextureImageListener</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/ts/ElementaryStreamReader.html" title="interface in com.google.android.exoplayer2.extractor.ts"><span class="interfaceName">ElementaryStreamReader</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/EmptySampleStream.html" title="class in com.google.android.exoplayer2.source">EmptySampleStream</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/EncoderSelector.html" title="interface in com.google.android.exoplayer2.transformer"><span class="interfaceName">EncoderSelector</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/EncoderUtil.html" title="class in com.google.android.exoplayer2.transformer">EncoderUtil</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/util/ErrorMessageProvider.html" title="interface in com.google.android.exoplayer2.util"><span class="interfaceName">ErrorMessageProvider</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/drm/ErrorStateDrmSession.html" title="class in com.google.android.exoplayer2.drm">ErrorStateDrmSession</a></li>
|
||||
|
|
@ -583,6 +588,7 @@
|
|||
<li><a href="com/google/android/exoplayer2/source/ForwardingTimeline.html" title="class in com.google.android.exoplayer2.source">ForwardingTimeline</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor.html" title="class in com.google.android.exoplayer2.extractor.mp4">FragmentedMp4Extractor</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor.Flags.html" title="annotation in com.google.android.exoplayer2.extractor.mp4">FragmentedMp4Extractor.Flags</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/FrameProcessingException.html" title="class in com.google.android.exoplayer2.transformer">FrameProcessingException</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/drm/FrameworkCryptoConfig.html" title="class in com.google.android.exoplayer2.drm">FrameworkCryptoConfig</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/drm/FrameworkMediaDrm.html" title="class in com.google.android.exoplayer2.drm">FrameworkMediaDrm</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/GaplessInfoHolder.html" title="class in com.google.android.exoplayer2.extractor">GaplessInfoHolder</a></li>
|
||||
|
|
@ -590,9 +596,11 @@
|
|||
<li><a href="com/google/android/exoplayer2/ext/av1/Gav1DecoderException.html" title="class in com.google.android.exoplayer2.ext.av1">Gav1DecoderException</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/ext/av1/Gav1Library.html" title="class in com.google.android.exoplayer2.ext.av1">Gav1Library</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/metadata/id3/GeobFrame.html" title="class in com.google.android.exoplayer2.metadata.id3">GeobFrame</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/GlEffect.html" title="interface in com.google.android.exoplayer2.transformer"><span class="interfaceName">GlEffect</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/GlMatrixTransformation.html" title="interface in com.google.android.exoplayer2.transformer"><span class="interfaceName">GlMatrixTransformation</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/util/GlProgram.html" title="class in com.google.android.exoplayer2.util">GlProgram</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/util/GlUtil.html" title="class in com.google.android.exoplayer2.util">GlUtil</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/util/GlUtil.GlException.html" title="class in com.google.android.exoplayer2.util">GlUtil.GlException</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/util/GlUtil.Program.html" title="class in com.google.android.exoplayer2.util">GlUtil.Program</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/ts/H262Reader.html" title="class in com.google.android.exoplayer2.extractor.ts">H262Reader</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/ts/H263Reader.html" title="class in com.google.android.exoplayer2.extractor.ts">H263Reader</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/ts/H264Reader.html" title="class in com.google.android.exoplayer2.extractor.ts">H264Reader</a></li>
|
||||
|
|
@ -711,6 +719,7 @@
|
|||
<li><a href="com/google/android/exoplayer2/source/MaskingMediaPeriod.PrepareListener.html" title="interface in com.google.android.exoplayer2.source"><span class="interfaceName">MaskingMediaPeriod.PrepareListener</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/MaskingMediaSource.html" title="class in com.google.android.exoplayer2.source">MaskingMediaSource</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/MaskingMediaSource.PlaceholderTimeline.html" title="class in com.google.android.exoplayer2.source">MaskingMediaSource.PlaceholderTimeline</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/MatrixTransformation.html" title="interface in com.google.android.exoplayer2.transformer"><span class="interfaceName">MatrixTransformation</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/mkv/MatroskaExtractor.html" title="class in com.google.android.exoplayer2.extractor.mkv">MatroskaExtractor</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/mkv/MatroskaExtractor.Flags.html" title="annotation in com.google.android.exoplayer2.extractor.mkv">MatroskaExtractor.Flags</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/mkv/MatroskaExtractor.Track.html" title="class in com.google.android.exoplayer2.extractor.mkv">MatroskaExtractor.Track</a></li>
|
||||
|
|
@ -749,6 +758,8 @@
|
|||
<li><a href="com/google/android/exoplayer2/MediaItem.LiveConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.LiveConfiguration.Builder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/MediaItem.LocalConfiguration.html" title="class in com.google.android.exoplayer2">MediaItem.LocalConfiguration</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/MediaItem.PlaybackProperties.html" title="class in com.google.android.exoplayer2">MediaItem.PlaybackProperties</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/MediaItem.RequestMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata.Builder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/MediaItem.Subtitle.html" title="class in com.google.android.exoplayer2">MediaItem.Subtitle</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/MediaItem.SubtitleConfiguration.html" title="class in com.google.android.exoplayer2">MediaItem.SubtitleConfiguration</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/MediaItem.SubtitleConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.SubtitleConfiguration.Builder</a></li>
|
||||
|
|
@ -816,7 +827,6 @@
|
|||
<li><a href="com/google/android/exoplayer2/util/NalUnitUtil.PpsData.html" title="class in com.google.android.exoplayer2.util">NalUnitUtil.PpsData</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/util/NalUnitUtil.SpsData.html" title="class in com.google.android.exoplayer2.util">NalUnitUtil.SpsData</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/util/NetworkTypeObserver.html" title="class in com.google.android.exoplayer2.util">NetworkTypeObserver</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/util/NetworkTypeObserver.Config.html" title="class in com.google.android.exoplayer2.util">NetworkTypeObserver.Config</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/util/NetworkTypeObserver.Listener.html" title="interface in com.google.android.exoplayer2.util"><span class="interfaceName">NetworkTypeObserver.Listener</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/util/NonNullApi.html" title="annotation in com.google.android.exoplayer2.util">NonNullApi</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/upstream/cache/NoOpCacheEvictor.html" title="class in com.google.android.exoplayer2.upstream.cache">NoOpCacheEvictor</a></li>
|
||||
|
|
@ -846,11 +856,12 @@
|
|||
<li><a href="com/google/android/exoplayer2/extractor/ts/PesReader.html" title="class in com.google.android.exoplayer2.extractor.ts">PesReader</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/text/pgs/PgsDecoder.html" title="class in com.google.android.exoplayer2.text.pgs">PgsDecoder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/metadata/flac/PictureFrame.html" title="class in com.google.android.exoplayer2.metadata.flac">PictureFrame</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/upstream/PlaceholderDataSource.html" title="class in com.google.android.exoplayer2.upstream">PlaceholderDataSource</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/video/PlaceholderSurface.html" title="class in com.google.android.exoplayer2.video">PlaceholderSurface</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/scheduler/PlatformScheduler.html" title="class in com.google.android.exoplayer2.scheduler">PlatformScheduler</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/scheduler/PlatformScheduler.PlatformSchedulerService.html" title="class in com.google.android.exoplayer2.scheduler">PlatformScheduler.PlatformSchedulerService</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/PlaybackException.html" title="class in com.google.android.exoplayer2">PlaybackException</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/PlaybackException.ErrorCode.html" title="annotation in com.google.android.exoplayer2">PlaybackException.ErrorCode</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/PlaybackException.FieldNumber.html" title="annotation in com.google.android.exoplayer2">PlaybackException.FieldNumber</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/robolectric/PlaybackOutput.html" title="class in com.google.android.exoplayer2.robolectric">PlaybackOutput</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/PlaybackParameters.html" title="class in com.google.android.exoplayer2">PlaybackParameters</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/analytics/PlaybackSessionManager.html" title="interface in com.google.android.exoplayer2.analytics"><span class="interfaceName">PlaybackSessionManager</span></a></li>
|
||||
|
|
@ -895,6 +906,9 @@
|
|||
<li><a href="com/google/android/exoplayer2/ui/PlayerView.html" title="class in com.google.android.exoplayer2.ui">PlayerView</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/ui/PlayerView.ShowBuffering.html" title="annotation in com.google.android.exoplayer2.ui">PlayerView.ShowBuffering</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/PositionHolder.html" title="class in com.google.android.exoplayer2.extractor">PositionHolder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/Presentation.html" title="class in com.google.android.exoplayer2.transformer">Presentation</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/Presentation.Builder.html" title="class in com.google.android.exoplayer2.transformer">Presentation.Builder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/Presentation.Layout.html" title="annotation in com.google.android.exoplayer2.transformer">Presentation.Layout</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/upstream/PriorityDataSource.html" title="class in com.google.android.exoplayer2.upstream">PriorityDataSource</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/upstream/PriorityDataSource.Factory.html" title="class in com.google.android.exoplayer2.upstream">PriorityDataSource.Factory</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/upstream/PriorityDataSourceFactory.html" title="class in com.google.android.exoplayer2.upstream">PriorityDataSourceFactory</a></li>
|
||||
|
|
@ -916,7 +930,6 @@
|
|||
<li><a href="com/google/android/exoplayer2/trackselection/RandomTrackSelection.Factory.html" title="class in com.google.android.exoplayer2.trackselection">RandomTrackSelection.Factory</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/dash/manifest/RangedUri.html" title="class in com.google.android.exoplayer2.source.dash.manifest">RangedUri</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/Rating.html" title="class in com.google.android.exoplayer2">Rating</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/rawcc/RawCcExtractor.html" title="class in com.google.android.exoplayer2.extractor.rawcc">RawCcExtractor</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/upstream/RawResourceDataSource.html" title="class in com.google.android.exoplayer2.upstream">RawResourceDataSource</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/upstream/RawResourceDataSource.RawResourceDataSourceException.html" title="class in com.google.android.exoplayer2.upstream">RawResourceDataSource.RawResourceDataSourceException</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/Renderer.html" title="interface in com.google.android.exoplayer2"><span class="interfaceName">Renderer</span></a></li>
|
||||
|
|
@ -955,6 +968,7 @@
|
|||
<li><a href="com/google/android/exoplayer2/source/rtsp/RtpPayloadFormat.html" title="class in com.google.android.exoplayer2.source.rtsp">RtpPayloadFormat</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/rtsp/reader/RtpPayloadReader.html" title="interface in com.google.android.exoplayer2.source.rtsp.reader"><span class="interfaceName">RtpPayloadReader</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/rtsp/reader/RtpPayloadReader.Factory.html" title="interface in com.google.android.exoplayer2.source.rtsp.reader"><span class="interfaceName">RtpPayloadReader.Factory</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/rtsp/reader/RtpPcmReader.html" title="class in com.google.android.exoplayer2.source.rtsp.reader">RtpPcmReader</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/rtsp/RtpUtils.html" title="class in com.google.android.exoplayer2.source.rtsp">RtpUtils</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/rtsp/RtspMediaSource.html" title="class in com.google.android.exoplayer2.source.rtsp">RtspMediaSource</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/rtsp/RtspMediaSource.Factory.html" title="class in com.google.android.exoplayer2.source.rtsp">RtspMediaSource.Factory</a></li>
|
||||
|
|
@ -967,6 +981,8 @@
|
|||
<li><a href="com/google/android/exoplayer2/source/SampleStream.html" title="interface in com.google.android.exoplayer2.source"><span class="interfaceName">SampleStream</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/SampleStream.ReadDataResult.html" title="annotation in com.google.android.exoplayer2.source">SampleStream.ReadDataResult</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/SampleStream.ReadFlags.html" title="annotation in com.google.android.exoplayer2.source">SampleStream.ReadFlags</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/ScaleToFitTransformation.html" title="class in com.google.android.exoplayer2.transformer">ScaleToFitTransformation</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/ScaleToFitTransformation.Builder.html" title="class in com.google.android.exoplayer2.transformer">ScaleToFitTransformation.Builder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/scheduler/Scheduler.html" title="interface in com.google.android.exoplayer2.scheduler"><span class="interfaceName">Scheduler</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/ts/SectionPayloadReader.html" title="interface in com.google.android.exoplayer2.extractor.ts"><span class="interfaceName">SectionPayloadReader</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/ts/SectionReader.html" title="class in com.google.android.exoplayer2.extractor.ts">SectionReader</a></li>
|
||||
|
|
@ -1016,6 +1032,7 @@
|
|||
<li><a href="com/google/android/exoplayer2/SimpleExoPlayer.Builder.html" title="class in com.google.android.exoplayer2">SimpleExoPlayer.Builder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/metadata/SimpleMetadataDecoder.html" title="class in com.google.android.exoplayer2.metadata">SimpleMetadataDecoder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/text/SimpleSubtitleDecoder.html" title="class in com.google.android.exoplayer2.text">SimpleSubtitleDecoder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/SingleFrameGlTextureProcessor.html" title="interface in com.google.android.exoplayer2.transformer"><span class="interfaceName">SingleFrameGlTextureProcessor</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/ads/SinglePeriodAdTimeline.html" title="class in com.google.android.exoplayer2.source.ads">SinglePeriodAdTimeline</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/SinglePeriodTimeline.html" title="class in com.google.android.exoplayer2.source">SinglePeriodTimeline</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/source/chunk/SingleSampleMediaChunk.html" title="class in com.google.android.exoplayer2.source.chunk">SingleSampleMediaChunk</a></li>
|
||||
|
|
@ -1073,6 +1090,8 @@
|
|||
<li><a href="com/google/android/exoplayer2/ui/StyledPlayerControlView.ProgressUpdateListener.html" title="interface in com.google.android.exoplayer2.ui"><span class="interfaceName">StyledPlayerControlView.ProgressUpdateListener</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/ui/StyledPlayerControlView.VisibilityListener.html" title="interface in com.google.android.exoplayer2.ui"><span class="interfaceName">StyledPlayerControlView.VisibilityListener</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/ui/StyledPlayerView.html" title="class in com.google.android.exoplayer2.ui">StyledPlayerView</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/ui/StyledPlayerView.ControllerVisibilityListener.html" title="interface in com.google.android.exoplayer2.ui"><span class="interfaceName">StyledPlayerView.ControllerVisibilityListener</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/ui/StyledPlayerView.FullscreenButtonClickListener.html" title="interface in com.google.android.exoplayer2.ui"><span class="interfaceName">StyledPlayerView.FullscreenButtonClickListener</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/ui/StyledPlayerView.ShowBuffering.html" title="annotation in com.google.android.exoplayer2.ui">StyledPlayerView.ShowBuffering</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/text/subrip/SubripDecoder.html" title="class in com.google.android.exoplayer2.text.subrip">SubripDecoder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/text/Subtitle.html" title="interface in com.google.android.exoplayer2.text"><span class="interfaceName">Subtitle</span></a></li>
|
||||
|
|
@ -1131,14 +1150,14 @@
|
|||
<li><a href="com/google/android/exoplayer2/extractor/TrackOutput.html" title="interface in com.google.android.exoplayer2.extractor"><span class="interfaceName">TrackOutput</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/TrackOutput.CryptoData.html" title="class in com.google.android.exoplayer2.extractor">TrackOutput.CryptoData</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/extractor/TrackOutput.SampleDataPart.html" title="annotation in com.google.android.exoplayer2.extractor">TrackOutput.SampleDataPart</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/Tracks.html" title="class in com.google.android.exoplayer2">Tracks</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/Tracks.Group.html" title="class in com.google.android.exoplayer2">Tracks.Group</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/TrackSelection.html" title="interface in com.google.android.exoplayer2.trackselection"><span class="interfaceName">TrackSelection</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/TrackSelection.Type.html" title="annotation in com.google.android.exoplayer2.trackselection">TrackSelection.Type</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/TrackSelectionArray.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionArray</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/ui/TrackSelectionDialogBuilder.html" title="class in com.google.android.exoplayer2.ui">TrackSelectionDialogBuilder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/ui/TrackSelectionDialogBuilder.DialogCallback.html" title="interface in com.google.android.exoplayer2.ui"><span class="interfaceName">TrackSelectionDialogBuilder.DialogCallback</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/TrackSelectionOverrides.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverrides</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/TrackSelectionOverrides.Builder.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverrides.Builder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/TrackSelectionOverrides.TrackSelectionOverride.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverrides.TrackSelectionOverride</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/TrackSelectionOverride.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverride</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/TrackSelectionParameters.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionParameters</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/TrackSelectionParameters.Builder.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionParameters.Builder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/TrackSelectionUtil.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionUtil</a></li>
|
||||
|
|
@ -1148,13 +1167,13 @@
|
|||
<li><a href="com/google/android/exoplayer2/trackselection/TrackSelector.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelector</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/TrackSelector.InvalidationListener.html" title="interface in com.google.android.exoplayer2.trackselection"><span class="interfaceName">TrackSelector.InvalidationListener</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/trackselection/TrackSelectorResult.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectorResult</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/TracksInfo.html" title="class in com.google.android.exoplayer2">TracksInfo</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/TracksInfo.TrackGroupInfo.html" title="class in com.google.android.exoplayer2">TracksInfo.TrackGroupInfo</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/upstream/TransferListener.html" title="interface in com.google.android.exoplayer2.upstream"><span class="interfaceName">TransferListener</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/TransformationException.html" title="class in com.google.android.exoplayer2.transformer">TransformationException</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/TransformationException.ErrorCode.html" title="annotation in com.google.android.exoplayer2.transformer">TransformationException.ErrorCode</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/TransformationRequest.html" title="class in com.google.android.exoplayer2.transformer">TransformationRequest</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/TransformationRequest.Builder.html" title="class in com.google.android.exoplayer2.transformer">TransformationRequest.Builder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/TransformationResult.html" title="class in com.google.android.exoplayer2.transformer">TransformationResult</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/TransformationResult.Builder.html" title="class in com.google.android.exoplayer2.transformer">TransformationResult.Builder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/Transformer.html" title="class in com.google.android.exoplayer2.transformer">Transformer</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/Transformer.Builder.html" title="class in com.google.android.exoplayer2.transformer">Transformer.Builder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/Transformer.DebugViewProvider.html" title="interface in com.google.android.exoplayer2.transformer"><span class="interfaceName">Transformer.DebugViewProvider</span></a></li>
|
||||
|
|
@ -1187,6 +1206,9 @@
|
|||
<li><a href="com/google/android/exoplayer2/video/VideoDecoderGLSurfaceView.html" title="class in com.google.android.exoplayer2.video">VideoDecoderGLSurfaceView</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/decoder/VideoDecoderOutputBuffer.html" title="class in com.google.android.exoplayer2.decoder">VideoDecoderOutputBuffer</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/video/VideoDecoderOutputBufferRenderer.html" title="interface in com.google.android.exoplayer2.video"><span class="interfaceName">VideoDecoderOutputBufferRenderer</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/VideoEncoderSettings.html" title="class in com.google.android.exoplayer2.transformer">VideoEncoderSettings</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/VideoEncoderSettings.BitrateMode.html" title="annotation in com.google.android.exoplayer2.transformer">VideoEncoderSettings.BitrateMode</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/transformer/VideoEncoderSettings.Builder.html" title="class in com.google.android.exoplayer2.transformer">VideoEncoderSettings.Builder</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/video/VideoFrameMetadataListener.html" title="interface in com.google.android.exoplayer2.video"><span class="interfaceName">VideoFrameMetadataListener</span></a></li>
|
||||
<li><a href="com/google/android/exoplayer2/video/VideoFrameReleaseHelper.html" title="class in com.google.android.exoplayer2.video">VideoFrameReleaseHelper</a></li>
|
||||
<li><a href="com/google/android/exoplayer2/video/VideoRendererEventListener.html" title="interface in com.google.android.exoplayer2.video"><span class="interfaceName">VideoRendererEventListener</span></a></li>
|
||||
|
|
|
|||
|
|
@ -192,35 +192,35 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="com/google/android/exoplayer2/extractor/avi/package-summary.html">com.google.android.exoplayer2.extractor.avi</a></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="com/google/android/exoplayer2/extractor/flac/package-summary.html">com.google.android.exoplayer2.extractor.flac</a></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="com/google/android/exoplayer2/extractor/flv/package-summary.html">com.google.android.exoplayer2.extractor.flv</a></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="com/google/android/exoplayer2/extractor/jpeg/package-summary.html">com.google.android.exoplayer2.extractor.jpeg</a></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="com/google/android/exoplayer2/extractor/mkv/package-summary.html">com.google.android.exoplayer2.extractor.mkv</a></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="com/google/android/exoplayer2/extractor/mp3/package-summary.html">com.google.android.exoplayer2.extractor.mp3</a></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="com/google/android/exoplayer2/extractor/mp4/package-summary.html">com.google.android.exoplayer2.extractor.mp4</a></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="com/google/android/exoplayer2/extractor/ogg/package-summary.html">com.google.android.exoplayer2.extractor.ogg</a></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="com/google/android/exoplayer2/extractor/rawcc/package-summary.html">com.google.android.exoplayer2.extractor.rawcc</a></th>
|
||||
<th class="colFirst" scope="row"><a href="com/google/android/exoplayer2/extractor/ogg/package-summary.html">com.google.android.exoplayer2.extractor.ogg</a></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -117,8 +117,15 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<a href="https://developer.android.com/reference/java/lang/annotation/Retention.html" title="class or interface in java.lang.annotation" class="externalLink">@Retention</a>(<a href="https://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html?is-external=true#SOURCE" title="class or interface in java.lang.annotation" class="externalLink" target="_top">SOURCE</a>)
|
||||
<a href="https://developer.android.com/reference/java/lang/annotation/Target.html" title="class or interface in java.lang.annotation" class="externalLink">@Target</a>({<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#FIELD" title="class or interface in java.lang.annotation" class="externalLink">FIELD</a>,<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#METHOD" title="class or interface in java.lang.annotation" class="externalLink">METHOD</a>,<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#PARAMETER" title="class or interface in java.lang.annotation" class="externalLink">PARAMETER</a>,<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#LOCAL_VARIABLE" title="class or interface in java.lang.annotation" class="externalLink">LOCAL_VARIABLE</a>,<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#TYPE_USE" title="class or interface in java.lang.annotation" class="externalLink" target="_top">TYPE_USE</a>})
|
||||
public static @interface <span class="memberNameLabel">C.AudioContentType</span></pre>
|
||||
<div class="block">Content types for audio attributes. One of <a href="C.html#CONTENT_TYPE_MOVIE"><code>C.CONTENT_TYPE_MOVIE</code></a>, <a href="C.html#CONTENT_TYPE_MUSIC"><code>C.CONTENT_TYPE_MUSIC</code></a>, <a href="C.html#CONTENT_TYPE_SONIFICATION"><code>C.CONTENT_TYPE_SONIFICATION</code></a>, <a href="C.html#CONTENT_TYPE_SPEECH"><code>C.CONTENT_TYPE_SPEECH</code></a> or
|
||||
<a href="C.html#CONTENT_TYPE_UNKNOWN"><code>C.CONTENT_TYPE_UNKNOWN</code></a>.</div>
|
||||
<div class="block">Content types for audio attributes. One of:
|
||||
|
||||
<ul>
|
||||
<li><a href="C.html#AUDIO_CONTENT_TYPE_MOVIE"><code>C.AUDIO_CONTENT_TYPE_MOVIE</code></a>
|
||||
<li><a href="C.html#AUDIO_CONTENT_TYPE_MUSIC"><code>C.AUDIO_CONTENT_TYPE_MUSIC</code></a>
|
||||
<li><a href="C.html#AUDIO_CONTENT_TYPE_SONIFICATION"><code>C.AUDIO_CONTENT_TYPE_SONIFICATION</code></a>
|
||||
<li><a href="C.html#AUDIO_CONTENT_TYPE_SPEECH"><code>C.AUDIO_CONTENT_TYPE_SPEECH</code></a>
|
||||
<li><a href="C.html#AUDIO_CONTENT_TYPE_UNKNOWN"><code>C.AUDIO_CONTENT_TYPE_UNKNOWN</code></a>
|
||||
</ul></div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -117,8 +117,8 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<a href="https://developer.android.com/reference/java/lang/annotation/Retention.html" title="class or interface in java.lang.annotation" class="externalLink">@Retention</a>(<a href="https://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html?is-external=true#SOURCE" title="class or interface in java.lang.annotation" class="externalLink" target="_top">SOURCE</a>)
|
||||
<a href="https://developer.android.com/reference/java/lang/annotation/Target.html" title="class or interface in java.lang.annotation" class="externalLink">@Target</a>(<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#TYPE_USE" title="class or interface in java.lang.annotation" class="externalLink" target="_top">TYPE_USE</a>)
|
||||
public static @interface <span class="memberNameLabel">C.BufferFlags</span></pre>
|
||||
<div class="block">Flags which can apply to a buffer containing a media sample. Possible flag values are <a href="C.html#BUFFER_FLAG_KEY_FRAME"><code>C.BUFFER_FLAG_KEY_FRAME</code></a>, <a href="C.html#BUFFER_FLAG_END_OF_STREAM"><code>C.BUFFER_FLAG_END_OF_STREAM</code></a>, <a href="C.html#BUFFER_FLAG_LAST_SAMPLE"><code>C.BUFFER_FLAG_LAST_SAMPLE</code></a>,
|
||||
<a href="C.html#BUFFER_FLAG_ENCRYPTED"><code>C.BUFFER_FLAG_ENCRYPTED</code></a> and <a href="C.html#BUFFER_FLAG_DECODE_ONLY"><code>C.BUFFER_FLAG_DECODE_ONLY</code></a>.</div>
|
||||
<div class="block">Flags which can apply to a buffer containing a media sample. Possible flag values are <a href="C.html#BUFFER_FLAG_KEY_FRAME"><code>C.BUFFER_FLAG_KEY_FRAME</code></a>, <a href="C.html#BUFFER_FLAG_END_OF_STREAM"><code>C.BUFFER_FLAG_END_OF_STREAM</code></a>, <a href="C.html#BUFFER_FLAG_FIRST_SAMPLE"><code>C.BUFFER_FLAG_FIRST_SAMPLE</code></a>,
|
||||
<a href="C.html#BUFFER_FLAG_LAST_SAMPLE"><code>C.BUFFER_FLAG_LAST_SAMPLE</code></a>, <a href="C.html#BUFFER_FLAG_ENCRYPTED"><code>C.BUFFER_FLAG_ENCRYPTED</code></a> and <a href="C.html#BUFFER_FLAG_DECODE_ONLY"><code>C.BUFFER_FLAG_DECODE_ONLY</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -117,7 +117,15 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<a href="https://developer.android.com/reference/java/lang/annotation/Retention.html" title="class or interface in java.lang.annotation" class="externalLink">@Retention</a>(<a href="https://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html?is-external=true#SOURCE" title="class or interface in java.lang.annotation" class="externalLink" target="_top">SOURCE</a>)
|
||||
<a href="https://developer.android.com/reference/java/lang/annotation/Target.html" title="class or interface in java.lang.annotation" class="externalLink">@Target</a>({<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#FIELD" title="class or interface in java.lang.annotation" class="externalLink">FIELD</a>,<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#METHOD" title="class or interface in java.lang.annotation" class="externalLink">METHOD</a>,<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#PARAMETER" title="class or interface in java.lang.annotation" class="externalLink">PARAMETER</a>,<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#LOCAL_VARIABLE" title="class or interface in java.lang.annotation" class="externalLink">LOCAL_VARIABLE</a>,<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#TYPE_USE" title="class or interface in java.lang.annotation" class="externalLink" target="_top">TYPE_USE</a>})
|
||||
public static @interface <span class="memberNameLabel">C.ContentType</span></pre>
|
||||
<div class="block">Represents a streaming or other media type. One of <a href="C.html#TYPE_DASH"><code>C.TYPE_DASH</code></a>, <a href="C.html#TYPE_SS"><code>C.TYPE_SS</code></a>, <a href="C.html#TYPE_HLS"><code>C.TYPE_HLS</code></a>, <a href="C.html#TYPE_RTSP"><code>C.TYPE_RTSP</code></a> or <a href="C.html#TYPE_OTHER"><code>C.TYPE_OTHER</code></a>.</div>
|
||||
<div class="block">Represents a streaming or other media type. One of:
|
||||
|
||||
<ul>
|
||||
<li><a href="C.html#CONTENT_TYPE_DASH"><code>C.CONTENT_TYPE_DASH</code></a>
|
||||
<li><a href="C.html#CONTENT_TYPE_SS"><code>C.CONTENT_TYPE_SS</code></a>
|
||||
<li><a href="C.html#CONTENT_TYPE_HLS"><code>C.CONTENT_TYPE_HLS</code></a>
|
||||
<li><a href="C.html#CONTENT_TYPE_RTSP"><code>C.CONTENT_TYPE_RTSP</code></a>
|
||||
<li><a href="C.html#CONTENT_TYPE_OTHER"><code>C.CONTENT_TYPE_OTHER</code></a>
|
||||
</ul></div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -25,7 +25,7 @@
|
|||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10};
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
|
|
@ -349,20 +349,12 @@ implements <a href="RenderersFactory.html" title="interface in com.google.androi
|
|||
</tr>
|
||||
<tr id="i8" class="altColor">
|
||||
<td class="colFirst"><code><a href="DefaultRenderersFactory.html" title="class in com.google.android.exoplayer2">DefaultRenderersFactory</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#experimentalSetImmediateCodecStartAfterFlushEnabled(boolean)">experimentalSetImmediateCodecStartAfterFlushEnabled</a></span>​(boolean enabled)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Enable calling <a href="https://developer.android.com/reference/android/media/MediaCodec.html#start()" title="class or interface in android.media" class="externalLink"><code>MediaCodec.start()</code></a> immediately after <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true#flush()" title="class or interface in android.media" class="externalLink" target="_top"><code>MediaCodec.flush()</code></a> on the
|
||||
playback thread, when operating the codec in asynchronous mode.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i9" class="rowColor">
|
||||
<td class="colFirst"><code><a href="DefaultRenderersFactory.html" title="class in com.google.android.exoplayer2">DefaultRenderersFactory</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#experimentalSetSynchronizeCodecInteractionsWithQueueingEnabled(boolean)">experimentalSetSynchronizeCodecInteractionsWithQueueingEnabled</a></span>​(boolean enabled)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Enable synchronizing codec interactions with asynchronous buffer queueing.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i10" class="altColor">
|
||||
<tr id="i9" class="rowColor">
|
||||
<td class="colFirst"><code><a href="DefaultRenderersFactory.html" title="class in com.google.android.exoplayer2">DefaultRenderersFactory</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#forceDisableMediaCodecAsynchronousQueueing()">forceDisableMediaCodecAsynchronousQueueing</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -370,7 +362,7 @@ implements <a href="RenderersFactory.html" title="interface in com.google.androi
|
|||
operating their <a href="https://developer.android.com/reference/android/media/MediaCodec.html" title="class or interface in android.media" class="externalLink" target="_top"><code>MediaCodec</code></a> in asynchronous mode and perform asynchronous queueing.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i11" class="rowColor">
|
||||
<tr id="i10" class="altColor">
|
||||
<td class="colFirst"><code><a href="DefaultRenderersFactory.html" title="class in com.google.android.exoplayer2">DefaultRenderersFactory</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#forceEnableMediaCodecAsynchronousQueueing()">forceEnableMediaCodecAsynchronousQueueing</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -378,14 +370,14 @@ implements <a href="RenderersFactory.html" title="interface in com.google.androi
|
|||
operate their <a href="https://developer.android.com/reference/android/media/MediaCodec.html" title="class or interface in android.media" class="externalLink" target="_top"><code>MediaCodec</code></a> in asynchronous mode and perform asynchronous queueing.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i12" class="altColor">
|
||||
<tr id="i11" class="rowColor">
|
||||
<td class="colFirst"><code>protected <a href="mediacodec/MediaCodecAdapter.Factory.html" title="interface in com.google.android.exoplayer2.mediacodec">MediaCodecAdapter.Factory</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCodecAdapterFactory()">getCodecAdapterFactory</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns the <a href="mediacodec/MediaCodecAdapter.Factory.html" title="interface in com.google.android.exoplayer2.mediacodec"><code>MediaCodecAdapter.Factory</code></a> that will be used when creating <a href="mediacodec/MediaCodecRenderer.html" title="class in com.google.android.exoplayer2.mediacodec"><code>MediaCodecRenderer</code></a> instances.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i13" class="rowColor">
|
||||
<tr id="i12" class="altColor">
|
||||
<td class="colFirst"><code><a href="DefaultRenderersFactory.html" title="class in com.google.android.exoplayer2">DefaultRenderersFactory</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setAllowedVideoJoiningTimeMs(long)">setAllowedVideoJoiningTimeMs</a></span>​(long allowedVideoJoiningTimeMs)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -393,21 +385,21 @@ implements <a href="RenderersFactory.html" title="interface in com.google.androi
|
|||
playback.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i14" class="altColor">
|
||||
<tr id="i13" class="rowColor">
|
||||
<td class="colFirst"><code><a href="DefaultRenderersFactory.html" title="class in com.google.android.exoplayer2">DefaultRenderersFactory</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setEnableAudioFloatOutput(boolean)">setEnableAudioFloatOutput</a></span>​(boolean enableFloatOutput)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets whether floating point audio should be output when possible.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i15" class="rowColor">
|
||||
<tr id="i14" class="altColor">
|
||||
<td class="colFirst"><code><a href="DefaultRenderersFactory.html" title="class in com.google.android.exoplayer2">DefaultRenderersFactory</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setEnableAudioOffload(boolean)">setEnableAudioOffload</a></span>​(boolean enableOffload)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets whether audio should be played using the offload path.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i16" class="altColor">
|
||||
<tr id="i15" class="rowColor">
|
||||
<td class="colFirst"><code><a href="DefaultRenderersFactory.html" title="class in com.google.android.exoplayer2">DefaultRenderersFactory</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setEnableAudioTrackPlaybackParams(boolean)">setEnableAudioTrackPlaybackParams</a></span>​(boolean enableAudioTrackPlaybackParams)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -415,14 +407,14 @@ implements <a href="RenderersFactory.html" title="interface in com.google.androi
|
|||
23, rather than using application-level audio speed adjustment.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i17" class="rowColor">
|
||||
<tr id="i16" class="altColor">
|
||||
<td class="colFirst"><code><a href="DefaultRenderersFactory.html" title="class in com.google.android.exoplayer2">DefaultRenderersFactory</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setEnableDecoderFallback(boolean)">setEnableDecoderFallback</a></span>​(boolean enableDecoderFallback)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets whether to enable fallback to lower-priority decoders if decoder initialization fails.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i18" class="altColor">
|
||||
<tr id="i17" class="rowColor">
|
||||
<td class="colFirst"><code><a href="DefaultRenderersFactory.html" title="class in com.google.android.exoplayer2">DefaultRenderersFactory</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setExtensionRendererMode(@com.google.android.exoplayer2.DefaultRenderersFactory.ExtensionRendererModeint)">setExtensionRendererMode</a></span>​(@com.google.android.exoplayer2.DefaultRenderersFactory.ExtensionRendererMode int extensionRendererMode)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -430,7 +422,7 @@ implements <a href="RenderersFactory.html" title="interface in com.google.androi
|
|||
used.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i19" class="rowColor">
|
||||
<tr id="i18" class="altColor">
|
||||
<td class="colFirst"><code><a href="DefaultRenderersFactory.html" title="class in com.google.android.exoplayer2">DefaultRenderersFactory</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setMediaCodecSelector(com.google.android.exoplayer2.mediacodec.MediaCodecSelector)">setMediaCodecSelector</a></span>​(<a href="mediacodec/MediaCodecSelector.html" title="interface in com.google.android.exoplayer2.mediacodec">MediaCodecSelector</a> mediaCodecSelector)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -644,28 +636,6 @@ implements <a href="RenderersFactory.html" title="interface in com.google.androi
|
|||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="experimentalSetImmediateCodecStartAfterFlushEnabled(boolean)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>experimentalSetImmediateCodecStartAfterFlushEnabled</h4>
|
||||
<pre class="methodSignature">public <a href="DefaultRenderersFactory.html" title="class in com.google.android.exoplayer2">DefaultRenderersFactory</a> experimentalSetImmediateCodecStartAfterFlushEnabled​(boolean enabled)</pre>
|
||||
<div class="block">Enable calling <a href="https://developer.android.com/reference/android/media/MediaCodec.html#start()" title="class or interface in android.media" class="externalLink"><code>MediaCodec.start()</code></a> immediately after <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true#flush()" title="class or interface in android.media" class="externalLink" target="_top"><code>MediaCodec.flush()</code></a> on the
|
||||
playback thread, when operating the codec in asynchronous mode. If disabled, <a href="https://developer.android.com/reference/android/media/MediaCodec.html#start()" title="class or interface in android.media" class="externalLink" target="_top"><code>MediaCodec.start()</code></a> will be called by the callback thread after pending callbacks are handled.
|
||||
|
||||
<p>By default, this feature is disabled.
|
||||
|
||||
<p>This method is experimental, and will be renamed or removed in a future release.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>enabled</code> - Whether <a href="https://developer.android.com/reference/android/media/MediaCodec.html#start()" title="class or interface in android.media" class="externalLink" target="_top"><code>MediaCodec.start()</code></a> will be called on the playback thread
|
||||
immediately after <a href="https://developer.android.com/reference/android/media/MediaCodec.html#flush()" title="class or interface in android.media" class="externalLink" target="_top"><code>MediaCodec.flush()</code></a>.</dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
<dd>This factory, for convenience.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="setEnableDecoderFallback(boolean)">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ extends <a href="PlaybackException.html" title="class in com.google.android.exop
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Nested classes/interfaces inherited from class com.google.android.exoplayer2.<a href="PlaybackException.html" title="class in com.google.android.exoplayer2">PlaybackException</a></h3>
|
||||
<code><a href="PlaybackException.ErrorCode.html" title="annotation in com.google.android.exoplayer2">PlaybackException.ErrorCode</a>, <a href="PlaybackException.FieldNumber.html" title="annotation in com.google.android.exoplayer2">PlaybackException.FieldNumber</a></code></li>
|
||||
<code><a href="PlaybackException.ErrorCode.html" title="annotation in com.google.android.exoplayer2">PlaybackException.ErrorCode</a></code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="nested.classes.inherited.from.class.com.google.android.exoplayer2.Bundleable">
|
||||
|
|
@ -405,7 +405,7 @@ extends <a href="PlaybackException.html" title="class in com.google.android.exop
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class com.google.android.exoplayer2.<a href="PlaybackException.html" title="class in com.google.android.exoplayer2">PlaybackException</a></h3>
|
||||
<code><a href="PlaybackException.html#getErrorCodeName()">getErrorCodeName</a>, <a href="PlaybackException.html#getErrorCodeName(@com.google.android.exoplayer2.PlaybackException.ErrorCodeint)">getErrorCodeName</a>, <a href="PlaybackException.html#keyForField(@com.google.android.exoplayer2.PlaybackException.FieldNumberint)">keyForField</a></code></li>
|
||||
<code><a href="PlaybackException.html#getErrorCodeName()">getErrorCodeName</a>, <a href="PlaybackException.html#getErrorCodeName(@com.google.android.exoplayer2.PlaybackException.ErrorCodeint)">getErrorCodeName</a>, <a href="PlaybackException.html#keyForField(int)">keyForField</a></code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Throwable">
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10};
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
|
|
@ -376,20 +376,27 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
</tr>
|
||||
<tr id="i22" class="altColor">
|
||||
<td class="colFirst"><code><a href="ExoPlayer.Builder.html" title="class in com.google.android.exoplayer2">ExoPlayer.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setUsePlatformDiagnostics(boolean)">setUsePlatformDiagnostics</a></span>​(boolean usePlatformDiagnostics)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets whether the player reports diagnostics data to the Android platform.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i23" class="rowColor">
|
||||
<td class="colFirst"><code><a href="ExoPlayer.Builder.html" title="class in com.google.android.exoplayer2">ExoPlayer.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setVideoChangeFrameRateStrategy(@com.google.android.exoplayer2.C.VideoChangeFrameRateStrategyint)">setVideoChangeFrameRateStrategy</a></span>​(@com.google.android.exoplayer2.C.VideoChangeFrameRateStrategy int videoChangeFrameRateStrategy)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets a <a href="C.VideoChangeFrameRateStrategy.html" title="annotation in com.google.android.exoplayer2"><code>C.VideoChangeFrameRateStrategy</code></a> that will be used by the player when provided
|
||||
with a video output <a href="https://developer.android.com/reference/android/view/Surface.html" title="class or interface in android.view" class="externalLink" target="_top"><code>Surface</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i23" class="rowColor">
|
||||
<tr id="i24" class="altColor">
|
||||
<td class="colFirst"><code><a href="ExoPlayer.Builder.html" title="class in com.google.android.exoplayer2">ExoPlayer.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setVideoScalingMode(@com.google.android.exoplayer2.C.VideoScalingModeint)">setVideoScalingMode</a></span>​(@com.google.android.exoplayer2.C.VideoScalingMode int videoScalingMode)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the <a href="C.VideoScalingMode.html" title="annotation in com.google.android.exoplayer2"><code>C.VideoScalingMode</code></a> that will be used by the player.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i24" class="altColor">
|
||||
<tr id="i25" class="rowColor">
|
||||
<td class="colFirst"><code><a href="ExoPlayer.Builder.html" title="class in com.google.android.exoplayer2">ExoPlayer.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setWakeMode(@com.google.android.exoplayer2.C.WakeModeint)">setWakeMode</a></span>​(@com.google.android.exoplayer2.C.WakeMode int wakeMode)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -460,6 +467,7 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
<li><code>releaseTimeoutMs</code>: <a href="ExoPlayer.html#DEFAULT_RELEASE_TIMEOUT_MS"><code>ExoPlayer.DEFAULT_RELEASE_TIMEOUT_MS</code></a>
|
||||
<li><code>detachSurfaceTimeoutMs</code>: <a href="ExoPlayer.html#DEFAULT_DETACH_SURFACE_TIMEOUT_MS"><code>ExoPlayer.DEFAULT_DETACH_SURFACE_TIMEOUT_MS</code></a>
|
||||
<li><code>pauseAtEndOfMediaItems</code>: <code>false</code>
|
||||
<li><code>usePlatformDiagnostics</code>: <code>true</code>
|
||||
<li><a href="util/Clock.html" title="interface in com.google.android.exoplayer2.util"><code>Clock</code></a>: <a href="util/Clock.html#DEFAULT"><code>Clock.DEFAULT</code></a>
|
||||
</ul></div>
|
||||
<dl>
|
||||
|
|
@ -1035,6 +1043,31 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="setUsePlatformDiagnostics(boolean)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setUsePlatformDiagnostics</h4>
|
||||
<pre class="methodSignature">public <a href="ExoPlayer.Builder.html" title="class in com.google.android.exoplayer2">ExoPlayer.Builder</a> setUsePlatformDiagnostics​(boolean usePlatformDiagnostics)</pre>
|
||||
<div class="block">Sets whether the player reports diagnostics data to the Android platform.
|
||||
|
||||
<p>If enabled, the player will use the <a href="https://developer.android.com/reference/android/media/metrics/MediaMetricsManager.html" title="class or interface in android.media.metrics" class="externalLink" target="_top"><code>MediaMetricsManager</code></a> to
|
||||
create a <a href="https://developer.android.com/reference/android/media/metrics/PlaybackSession.html" title="class or interface in android.media.metrics" class="externalLink" target="_top"><code>PlaybackSession</code></a> and forward playback events and
|
||||
performance data to this session. This helps to provide system performance and debugging
|
||||
information for media playback on the device. This data may also be collected by Google <a href="https://support.google.com/accounts/answer/6078260">if sharing usage and diagnostics
|
||||
data is enabled</a> by the user of the device.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>usePlatformDiagnostics</code> - Whether the player reports diagnostics data to the Android
|
||||
platform.</dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
<dd>This builder.</dd>
|
||||
<dt><span class="throwsLabel">Throws:</span></dt>
|
||||
<dd><code><a href="https://developer.android.com/reference/java/lang/IllegalStateException.html" title="class or interface in java.lang" class="externalLink">IllegalStateException</a></code> - If <a href="#build()" target="_top"><code>build()</code></a> has already been called.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="setClock(com.google.android.exoplayer2.util.Clock)">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ public static interface <span class="typeNameLabel">ExoPlayer.TextComponent</spa
|
|||
<th class="colLast" scope="col">Description</th>
|
||||
</tr>
|
||||
<tr id="i0" class="altColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="text/Cue.html" title="class in com.google.android.exoplayer2.text" target="_top">Cue</a>></code></td>
|
||||
<td class="colFirst"><code><a href="text/CueGroup.html" title="class in com.google.android.exoplayer2.text">CueGroup</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCurrentCues()">getCurrentCues</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
|
||||
|
|
@ -188,7 +188,7 @@ public static interface <span class="typeNameLabel">ExoPlayer.TextComponent</spa
|
|||
<li class="blockList">
|
||||
<h4>getCurrentCues</h4>
|
||||
<pre class="methodSignature"><a href="https://developer.android.com/reference/java/lang/Deprecated.html" title="class or interface in java.lang" class="externalLink" target="_top">@Deprecated</a>
|
||||
<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="text/Cue.html" title="class in com.google.android.exoplayer2.text" target="_top">Cue</a>> getCurrentCues()</pre>
|
||||
<a href="text/CueGroup.html" title="class in com.google.android.exoplayer2.text">CueGroup</a> getCurrentCues()</pre>
|
||||
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="Player.html#getCurrentCues()"><code>Player.getCurrentCues()</code></a> instead.</div>
|
||||
</div>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -187,13 +187,6 @@ extends <a href="Rating.html" title="class in com.google.android.exoplayer2">Rat
|
|||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="fields.inherited.from.class.com.google.android.exoplayer2.Rating">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Fields inherited from class com.google.android.exoplayer2.<a href="Rating.html" title="class in com.google.android.exoplayer2">Rating</a></h3>
|
||||
<code><a href="Rating.html#RATING_UNSET">RATING_UNSET</a></code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":10,"i1":10,"i2":42,"i3":42,"i4":42,"i5":42,"i6":10,"i7":42,"i8":42,"i9":42,"i10":42,"i11":10,"i12":10,"i13":42,"i14":42,"i15":42,"i16":42,"i17":42,"i18":42,"i19":42,"i20":42,"i21":42,"i22":42,"i23":10,"i24":42,"i25":42,"i26":42,"i27":42,"i28":42,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":42,"i35":10,"i36":10,"i37":10};
|
||||
var data = {"i0":10,"i1":10,"i2":42,"i3":42,"i4":42,"i5":42,"i6":10,"i7":42,"i8":42,"i9":42,"i10":42,"i11":10,"i12":10,"i13":42,"i14":42,"i15":42,"i16":42,"i17":42,"i18":42,"i19":42,"i20":42,"i21":42,"i22":42,"i23":10,"i24":42,"i25":42,"i26":42,"i27":42,"i28":42,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":42,"i36":10,"i37":10,"i38":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
|
|
@ -358,7 +358,7 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setDrmSessionForClearPeriods(boolean)">setDrmSessionForClearPeriods</a></span>​(boolean sessionForClearPeriods)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#setDrmConfiguration(com.google.android.exoplayer2.MediaItem.DrmConfiguration)"><code>setDrmConfiguration(DrmConfiguration)</code></a> and <a href="MediaItem.DrmConfiguration.Builder.html#forceSessionsForAudioAndVideoTracks(boolean)"><code>MediaItem.DrmConfiguration.Builder.forceSessionsForAudioAndVideoTracks(boolean)</code></a> instead.</div>
|
||||
<div class="deprecationComment">Use <a href="#setDrmConfiguration(com.google.android.exoplayer2.MediaItem.DrmConfiguration)"><code>setDrmConfiguration(DrmConfiguration)</code></a> and <a href="MediaItem.DrmConfiguration.Builder.html#setForceSessionsForAudioAndVideoTracks(boolean)"><code>MediaItem.DrmConfiguration.Builder.setForceSessionsForAudioAndVideoTracks(boolean)</code></a> instead.</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
@ -456,20 +456,27 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
</tr>
|
||||
<tr id="i32" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setRequestMetadata(com.google.android.exoplayer2.MediaItem.RequestMetadata)">setRequestMetadata</a></span>​(<a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata</a> requestMetadata)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the request metadata.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i33" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setStreamKeys(java.util.List)">setStreamKeys</a></span>​(<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="offline/StreamKey.html" title="class in com.google.android.exoplayer2.offline" target="_top">StreamKey</a>> streamKeys)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the optional stream keys by which the manifest is filtered (only used for adaptive
|
||||
streams).</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i33" class="rowColor">
|
||||
<tr id="i34" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setSubtitleConfigurations(java.util.List)">setSubtitleConfigurations</a></span>​(<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="MediaItem.SubtitleConfiguration.html" title="class in com.google.android.exoplayer2" target="_top">MediaItem.SubtitleConfiguration</a>> subtitleConfigurations)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the optional subtitles.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i34" class="altColor">
|
||||
<tr id="i35" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setSubtitles(java.util.List)">setSubtitles</a></span>​(<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="MediaItem.Subtitle.html" title="class in com.google.android.exoplayer2" target="_top">MediaItem.Subtitle</a>> subtitles)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -478,21 +485,21 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i35" class="rowColor">
|
||||
<tr id="i36" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setTag(java.lang.Object)">setTag</a></span>​(<a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a> tag)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the optional tag for custom attributes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i36" class="altColor">
|
||||
<tr id="i37" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setUri(android.net.Uri)">setUri</a></span>​(<a href="https://developer.android.com/reference/android/net/Uri.html" title="class or interface in android.net" class="externalLink" target="_top">Uri</a> uri)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the optional URI.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i37" class="rowColor">
|
||||
<tr id="i38" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setUri(java.lang.String)">setUri</a></span>​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> uri)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -795,7 +802,7 @@ public <a href="MediaItem.Builder.html" title="class in com.google.android.
|
|||
<pre class="methodSignature"><a href="https://developer.android.com/reference/java/lang/Deprecated.html" title="class or interface in java.lang" class="externalLink" target="_top">@Deprecated</a>
|
||||
public <a href="MediaItem.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.Builder</a> setDrmSessionForClearPeriods​(boolean sessionForClearPeriods)</pre>
|
||||
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#setDrmConfiguration(com.google.android.exoplayer2.MediaItem.DrmConfiguration)"><code>setDrmConfiguration(DrmConfiguration)</code></a> and <a href="MediaItem.DrmConfiguration.Builder.html#forceSessionsForAudioAndVideoTracks(boolean)"><code>MediaItem.DrmConfiguration.Builder.forceSessionsForAudioAndVideoTracks(boolean)</code></a> instead.</div>
|
||||
<div class="deprecationComment">Use <a href="#setDrmConfiguration(com.google.android.exoplayer2.MediaItem.DrmConfiguration)"><code>setDrmConfiguration(DrmConfiguration)</code></a> and <a href="MediaItem.DrmConfiguration.Builder.html#setForceSessionsForAudioAndVideoTracks(boolean)"><code>MediaItem.DrmConfiguration.Builder.setForceSessionsForAudioAndVideoTracks(boolean)</code></a> instead.</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -1045,6 +1052,16 @@ public <a href="MediaItem.Builder.html" title="class in com.google.android.
|
|||
<div class="block">Sets the media metadata.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="setRequestMetadata(com.google.android.exoplayer2.MediaItem.RequestMetadata)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setRequestMetadata</h4>
|
||||
<pre class="methodSignature">public <a href="MediaItem.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.Builder</a> setRequestMetadata​(<a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata</a> requestMetadata)</pre>
|
||||
<div class="block">Sets the request metadata.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="build()">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@
|
|||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
|
||||
var data = {"i0":10,"i1":42,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
var tableTab = "tableTab";
|
||||
|
|
@ -173,7 +173,7 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
</a>
|
||||
<h3>Method Summary</h3>
|
||||
<table class="memberSummary">
|
||||
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
|
||||
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd"> </span></span></caption>
|
||||
<tr>
|
||||
<th class="colFirst" scope="col">Modifier and Type</th>
|
||||
<th class="colSecond" scope="col">Method</th>
|
||||
|
|
@ -186,9 +186,11 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
</tr>
|
||||
<tr id="i1" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.DrmConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.DrmConfiguration.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#forceSessionsForAudioAndVideoTracks(boolean)">forceSessionsForAudioAndVideoTracks</a></span>​(boolean useClearSessionsForAudioAndVideoTracks)</code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#forceSessionsForAudioAndVideoTracks(boolean)">forceSessionsForAudioAndVideoTracks</a></span>​(boolean forceSessionsForAudioAndVideoTracks)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets whether a DRM session should be used for clear tracks of type <a href="C.html#TRACK_TYPE_VIDEO"><code>C.TRACK_TYPE_VIDEO</code></a> and <a href="C.html#TRACK_TYPE_AUDIO"><code>C.TRACK_TYPE_AUDIO</code></a>.</div>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#setForceSessionsForAudioAndVideoTracks(boolean)"><code>setForceSessionsForAudioAndVideoTracks(boolean)</code></a> instead.</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i2" class="altColor">
|
||||
|
|
@ -209,40 +211,47 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
</tr>
|
||||
<tr id="i4" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.DrmConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.DrmConfiguration.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setForceSessionsForAudioAndVideoTracks(boolean)">setForceSessionsForAudioAndVideoTracks</a></span>​(boolean forceSessionsForAudioAndVideoTracks)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets whether a DRM session should be used for clear tracks of type <a href="C.html#TRACK_TYPE_VIDEO"><code>C.TRACK_TYPE_VIDEO</code></a> and <a href="C.html#TRACK_TYPE_AUDIO"><code>C.TRACK_TYPE_AUDIO</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.DrmConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.DrmConfiguration.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setKeySetId(byte%5B%5D)">setKeySetId</a></span>​(byte[] keySetId)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the key set ID of the offline license.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<tr id="i6" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.DrmConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.DrmConfiguration.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setLicenseRequestHeaders(java.util.Map)">setLicenseRequestHeaders</a></span>​(<a href="https://developer.android.com/reference/java/util/Map.html" title="class or interface in java.util" class="externalLink">Map</a><<a href="https://developer.android.com/reference/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>,​<a href="https://developer.android.com/reference/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_top">String</a>> licenseRequestHeaders)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the optional request headers attached to DRM license requests.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i6" class="altColor">
|
||||
<tr id="i7" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.DrmConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.DrmConfiguration.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setLicenseUri(android.net.Uri)">setLicenseUri</a></span>​(<a href="https://developer.android.com/reference/android/net/Uri.html" title="class or interface in android.net" class="externalLink" target="_top">Uri</a> licenseUri)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the optional default DRM license server URI.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i7" class="rowColor">
|
||||
<tr id="i8" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.DrmConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.DrmConfiguration.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setLicenseUri(java.lang.String)">setLicenseUri</a></span>​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> licenseUri)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the optional default DRM license server URI.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i8" class="altColor">
|
||||
<tr id="i9" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.DrmConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.DrmConfiguration.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setMultiSession(boolean)">setMultiSession</a></span>​(boolean multiSession)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets whether multi session is enabled.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i9" class="rowColor">
|
||||
<tr id="i10" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.DrmConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.DrmConfiguration.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setPlayClearContentWithoutKey(boolean)">setPlayClearContentWithoutKey</a></span>​(boolean playClearContentWithoutKey)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -250,7 +259,7 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
encrypted part of the content have yet to be loaded.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i10" class="altColor">
|
||||
<tr id="i11" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.DrmConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.DrmConfiguration.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setScheme(java.util.UUID)">setScheme</a></span>​(<a href="https://developer.android.com/reference/java/util/UUID.html" title="class or interface in java.util" class="externalLink" target="_top">UUID</a> scheme)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -385,7 +394,21 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>forceSessionsForAudioAndVideoTracks</h4>
|
||||
<pre class="methodSignature">public <a href="MediaItem.DrmConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.DrmConfiguration.Builder</a> forceSessionsForAudioAndVideoTracks​(boolean useClearSessionsForAudioAndVideoTracks)</pre>
|
||||
<pre class="methodSignature"><a href="https://developer.android.com/reference/java/lang/Deprecated.html" title="class or interface in java.lang" class="externalLink" target="_top">@Deprecated</a>
|
||||
@InlineMe(replacement="this.setForceSessionsForAudioAndVideoTracks(forceSessionsForAudioAndVideoTracks)")
|
||||
public <a href="MediaItem.DrmConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.DrmConfiguration.Builder</a> forceSessionsForAudioAndVideoTracks​(boolean forceSessionsForAudioAndVideoTracks)</pre>
|
||||
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#setForceSessionsForAudioAndVideoTracks(boolean)"><code>setForceSessionsForAudioAndVideoTracks(boolean)</code></a> instead.</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="setForceSessionsForAudioAndVideoTracks(boolean)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setForceSessionsForAudioAndVideoTracks</h4>
|
||||
<pre class="methodSignature">public <a href="MediaItem.DrmConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.DrmConfiguration.Builder</a> setForceSessionsForAudioAndVideoTracks​(boolean forceSessionsForAudioAndVideoTracks)</pre>
|
||||
<div class="block">Sets whether a DRM session should be used for clear tracks of type <a href="C.html#TRACK_TYPE_VIDEO"><code>C.TRACK_TYPE_VIDEO</code></a> and <a href="C.html#TRACK_TYPE_AUDIO"><code>C.TRACK_TYPE_AUDIO</code></a>.
|
||||
|
||||
<p>This method overrides what has been set by previously calling <a href="#setForcedSessionTrackTypes(java.util.List)"><code>setForcedSessionTrackTypes(List)</code></a>.</div>
|
||||
|
|
@ -401,9 +424,9 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
<div class="block">Sets a list of <a href="C.TrackType.html" title="annotation in com.google.android.exoplayer2"><code>track type</code></a> constants for which to use a DRM session even
|
||||
when the tracks are in the clear.
|
||||
|
||||
<p>For the common case of using a DRM session for <a href="C.html#TRACK_TYPE_VIDEO"><code>C.TRACK_TYPE_VIDEO</code></a> and <a href="C.html#TRACK_TYPE_AUDIO"><code>C.TRACK_TYPE_AUDIO</code></a>, <a href="#forceSessionsForAudioAndVideoTracks(boolean)"><code>forceSessionsForAudioAndVideoTracks(boolean)</code></a> can be used.
|
||||
<p>For the common case of using a DRM session for <a href="C.html#TRACK_TYPE_VIDEO"><code>C.TRACK_TYPE_VIDEO</code></a> and <a href="C.html#TRACK_TYPE_AUDIO"><code>C.TRACK_TYPE_AUDIO</code></a>, <a href="#setForceSessionsForAudioAndVideoTracks(boolean)"><code>setForceSessionsForAudioAndVideoTracks(boolean)</code></a> can be used.
|
||||
|
||||
<p>This method overrides what has been set by previously calling <a href="#forceSessionsForAudioAndVideoTracks(boolean)"><code>forceSessionsForAudioAndVideoTracks(boolean)</code></a>.</div>
|
||||
<p>This method overrides what has been set by previously calling <a href="#setForceSessionsForAudioAndVideoTracks(boolean)"><code>setForceSessionsForAudioAndVideoTracks(boolean)</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="setKeySetId(byte[])">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,367 @@
|
|||
<!DOCTYPE HTML>
|
||||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head><!-- start favicons snippet, use https://realfavicongenerator.net/ --><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"><link rel="manifest" href="/assets/site.webmanifest"><link rel="mask-icon" href="/assets/safari-pinned-tab.svg" color="#fc4d50"><link rel="shortcut icon" href="/assets/favicon.ico"><meta name="msapplication-TileColor" content="#ffc40d"><meta name="msapplication-config" content="/assets/browserconfig.xml"><meta name="theme-color" content="#ffffff"><!-- end favicons snippet -->
|
||||
<title>MediaItem.RequestMetadata.Builder (ExoPlayer library)</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
|
||||
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
|
||||
<script type="text/javascript" src="../../../../script.js"></script>
|
||||
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
|
||||
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
|
||||
<!--[if IE]>
|
||||
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../../../jquery/jquery-3.5.1.js"></script>
|
||||
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript"><!--
|
||||
try {
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="MediaItem.RequestMetadata.Builder (ExoPlayer library)";
|
||||
}
|
||||
}
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
var tableTab = "tableTab";
|
||||
var activeTableTab = "activeTableTab";
|
||||
var pathtoroot = "../../../../";
|
||||
var useModuleDirectories = false;
|
||||
loadScripts(document, 'script');</script>
|
||||
<noscript>
|
||||
<div>JavaScript is disabled on your browser.</div>
|
||||
</noscript>
|
||||
<header role="banner">
|
||||
<nav role="navigation">
|
||||
<div class="fixedNav">
|
||||
<!-- ========= START OF TOP NAVBAR ======= -->
|
||||
<div class="topNav"><a id="navbar.top">
|
||||
<!-- -->
|
||||
</a>
|
||||
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
|
||||
<a id="navbar.top.firstrow">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="navList" title="Navigation">
|
||||
<li><a href="../../../../index.html">Overview</a></li>
|
||||
<li><a href="package-summary.html">Package</a></li>
|
||||
<li class="navBarCell1Rev">Class</li>
|
||||
<li><a href="package-tree.html">Tree</a></li>
|
||||
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
|
||||
<li><a href="../../../../index-all.html">Index</a></li>
|
||||
<li><a href="../../../../help-doc.html">Help</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="subNav">
|
||||
<ul class="navList" id="allclasses_navbar_top">
|
||||
<li><a href="../../../../allclasses.html">All Classes</a></li>
|
||||
</ul>
|
||||
<ul class="navListSearch">
|
||||
<li><label for="search">SEARCH:</label>
|
||||
<input type="text" id="search" value="search" disabled="disabled">
|
||||
<input type="reset" id="reset" value="reset" disabled="disabled">
|
||||
</li>
|
||||
</ul>
|
||||
<div>
|
||||
<script type="text/javascript"><!--
|
||||
allClassesLink = document.getElementById("allclasses_navbar_top");
|
||||
if(window==top) {
|
||||
allClassesLink.style.display = "block";
|
||||
}
|
||||
else {
|
||||
allClassesLink.style.display = "none";
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
<noscript>
|
||||
<div>JavaScript is disabled on your browser.</div>
|
||||
</noscript>
|
||||
</div>
|
||||
<div>
|
||||
<ul class="subNavList">
|
||||
<li>Summary: </li>
|
||||
<li>Nested | </li>
|
||||
<li>Field | </li>
|
||||
<li><a href="#constructor.summary">Constr</a> | </li>
|
||||
<li><a href="#method.summary">Method</a></li>
|
||||
</ul>
|
||||
<ul class="subNavList">
|
||||
<li>Detail: </li>
|
||||
<li>Field | </li>
|
||||
<li><a href="#constructor.detail">Constr</a> | </li>
|
||||
<li><a href="#method.detail">Method</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<a id="skip.navbar.top">
|
||||
<!-- -->
|
||||
</a></div>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
</div>
|
||||
<div class="navPadding"> </div>
|
||||
<script type="text/javascript"><!--
|
||||
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
||||
//-->
|
||||
</script>
|
||||
</nav>
|
||||
</header>
|
||||
<!-- ======== START OF CLASS DATA ======== -->
|
||||
<main role="main">
|
||||
<div class="header">
|
||||
<div class="subTitle"><span class="packageLabelInType">Package</span> <a href="package-summary.html">com.google.android.exoplayer2</a></div>
|
||||
<h2 title="Class MediaItem.RequestMetadata.Builder" class="title">Class MediaItem.RequestMetadata.Builder</h2>
|
||||
</div>
|
||||
<div class="contentContainer">
|
||||
<ul class="inheritance">
|
||||
<li><a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">java.lang.Object</a></li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li>com.google.android.exoplayer2.MediaItem.RequestMetadata.Builder</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="description">
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<dl>
|
||||
<dt>Enclosing class:</dt>
|
||||
<dd><a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata</a></dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<pre>public static final class <span class="typeNameLabel">MediaItem.RequestMetadata.Builder</span>
|
||||
extends <a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a></pre>
|
||||
<div class="block">Builder for <a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaItem.RequestMetadata</code></a> instances.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="summary">
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
|
||||
<section role="region">
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="constructor.summary">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Constructor Summary</h3>
|
||||
<table class="memberSummary">
|
||||
<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
|
||||
<tr>
|
||||
<th class="colFirst" scope="col">Constructor</th>
|
||||
<th class="colLast" scope="col">Description</th>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">Builder</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Constructs an instance.</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<!-- ========== METHOD SUMMARY =========== -->
|
||||
<section role="region">
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="method.summary">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Method Summary</h3>
|
||||
<table class="memberSummary">
|
||||
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
|
||||
<tr>
|
||||
<th class="colFirst" scope="col">Modifier and Type</th>
|
||||
<th class="colSecond" scope="col">Method</th>
|
||||
<th class="colLast" scope="col">Description</th>
|
||||
</tr>
|
||||
<tr id="i0" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#build()">build</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Builds the request metadata.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i1" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.RequestMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setExtras(android.os.Bundle)">setExtras</a></span>​(<a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top">Bundle</a> extras)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets optional extras <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i2" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.RequestMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setMediaUri(android.net.Uri)">setMediaUri</a></span>​(<a href="https://developer.android.com/reference/android/net/Uri.html" title="class or interface in android.net" class="externalLink" target="_top">Uri</a> mediaUri)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the URI of the requested media, or null if not known or applicable.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i3" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.RequestMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setSearchQuery(java.lang.String)">setSearchQuery</a></span>​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> searchQuery)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the search query for the requested media, or null if not applicable.</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a></h3>
|
||||
<code><a href="https://developer.android.com/reference/java/lang/Object.html#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink" target="_top">wait</a></code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="details">
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<!-- ========= CONSTRUCTOR DETAIL ======== -->
|
||||
<section role="region">
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="constructor.detail">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Constructor Detail</h3>
|
||||
<a id="<init>()">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>Builder</h4>
|
||||
<pre>public Builder()</pre>
|
||||
<div class="block">Constructs an instance.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<!-- ============ METHOD DETAIL ========== -->
|
||||
<section role="region">
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="method.detail">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Method Detail</h3>
|
||||
<a id="setMediaUri(android.net.Uri)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setMediaUri</h4>
|
||||
<pre class="methodSignature">public <a href="MediaItem.RequestMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata.Builder</a> setMediaUri​(@Nullable
|
||||
<a href="https://developer.android.com/reference/android/net/Uri.html" title="class or interface in android.net" class="externalLink" target="_top">Uri</a> mediaUri)</pre>
|
||||
<div class="block">Sets the URI of the requested media, or null if not known or applicable.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="setSearchQuery(java.lang.String)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setSearchQuery</h4>
|
||||
<pre class="methodSignature">public <a href="MediaItem.RequestMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata.Builder</a> setSearchQuery​(@Nullable
|
||||
<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> searchQuery)</pre>
|
||||
<div class="block">Sets the search query for the requested media, or null if not applicable.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="setExtras(android.os.Bundle)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setExtras</h4>
|
||||
<pre class="methodSignature">public <a href="MediaItem.RequestMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata.Builder</a> setExtras​(@Nullable
|
||||
<a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top">Bundle</a> extras)</pre>
|
||||
<div class="block">Sets optional extras <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="build()">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>build</h4>
|
||||
<pre class="methodSignature">public <a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata</a> build()</pre>
|
||||
<div class="block">Builds the request metadata.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<!-- ========= END OF CLASS DATA ========= -->
|
||||
<footer role="contentinfo">
|
||||
<nav role="navigation">
|
||||
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||||
<div class="bottomNav"><a id="navbar.bottom">
|
||||
<!-- -->
|
||||
</a>
|
||||
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
|
||||
<a id="navbar.bottom.firstrow">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="navList" title="Navigation">
|
||||
<li><a href="../../../../index.html">Overview</a></li>
|
||||
<li><a href="package-summary.html">Package</a></li>
|
||||
<li class="navBarCell1Rev">Class</li>
|
||||
<li><a href="package-tree.html">Tree</a></li>
|
||||
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
|
||||
<li><a href="../../../../index-all.html">Index</a></li>
|
||||
<li><a href="../../../../help-doc.html">Help</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="subNav">
|
||||
<ul class="navList" id="allclasses_navbar_bottom">
|
||||
<li><a href="../../../../allclasses.html">All Classes</a></li>
|
||||
</ul>
|
||||
<div>
|
||||
<script type="text/javascript"><!--
|
||||
allClassesLink = document.getElementById("allclasses_navbar_bottom");
|
||||
if(window==top) {
|
||||
allClassesLink.style.display = "block";
|
||||
}
|
||||
else {
|
||||
allClassesLink.style.display = "none";
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
<noscript>
|
||||
<div>JavaScript is disabled on your browser.</div>
|
||||
</noscript>
|
||||
</div>
|
||||
<div>
|
||||
<ul class="subNavList">
|
||||
<li>Summary: </li>
|
||||
<li>Nested | </li>
|
||||
<li>Field | </li>
|
||||
<li><a href="#constructor.summary">Constr</a> | </li>
|
||||
<li><a href="#method.summary">Method</a></li>
|
||||
</ul>
|
||||
<ul class="subNavList">
|
||||
<li>Detail: </li>
|
||||
<li>Field | </li>
|
||||
<li><a href="#constructor.detail">Constr</a> | </li>
|
||||
<li><a href="#method.detail">Method</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<a id="skip.navbar.bottom">
|
||||
<!-- -->
|
||||
</a></div>
|
||||
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||||
</nav>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -2,36 +2,36 @@
|
|||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head><!-- start favicons snippet, use https://realfavicongenerator.net/ --><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"><link rel="manifest" href="/assets/site.webmanifest"><link rel="mask-icon" href="/assets/safari-pinned-tab.svg" color="#fc4d50"><link rel="shortcut icon" href="/assets/favicon.ico"><meta name="msapplication-TileColor" content="#ffc40d"><meta name="msapplication-config" content="/assets/browserconfig.xml"><meta name="theme-color" content="#ffffff"><!-- end favicons snippet -->
|
||||
<title>TrackSelectionOverrides (ExoPlayer library)</title>
|
||||
<title>MediaItem.RequestMetadata (ExoPlayer library)</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
|
||||
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
|
||||
<script type="text/javascript" src="../../../../../script.js"></script>
|
||||
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
|
||||
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
|
||||
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
|
||||
<script type="text/javascript" src="../../../../script.js"></script>
|
||||
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
|
||||
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
|
||||
<!--[if IE]>
|
||||
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
|
||||
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
|
||||
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
|
||||
<script type="text/javascript" src="../../../../jquery/jquery-3.5.1.js"></script>
|
||||
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript"><!--
|
||||
try {
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="TrackSelectionOverrides (ExoPlayer library)";
|
||||
parent.document.title="MediaItem.RequestMetadata (ExoPlayer library)";
|
||||
}
|
||||
}
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
var tableTab = "tableTab";
|
||||
var activeTableTab = "activeTableTab";
|
||||
var pathtoroot = "../../../../../";
|
||||
var pathtoroot = "../../../../";
|
||||
var useModuleDirectories = false;
|
||||
loadScripts(document, 'script');</script>
|
||||
<noscript>
|
||||
|
|
@ -49,18 +49,18 @@ loadScripts(document, 'script');</script>
|
|||
<!-- -->
|
||||
</a>
|
||||
<ul class="navList" title="Navigation">
|
||||
<li><a href="../../../../../index.html">Overview</a></li>
|
||||
<li><a href="../../../../index.html">Overview</a></li>
|
||||
<li><a href="package-summary.html">Package</a></li>
|
||||
<li class="navBarCell1Rev">Class</li>
|
||||
<li><a href="package-tree.html">Tree</a></li>
|
||||
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
|
||||
<li><a href="../../../../../index-all.html">Index</a></li>
|
||||
<li><a href="../../../../../help-doc.html">Help</a></li>
|
||||
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
|
||||
<li><a href="../../../../index-all.html">Index</a></li>
|
||||
<li><a href="../../../../help-doc.html">Help</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="subNav">
|
||||
<ul class="navList" id="allclasses_navbar_top">
|
||||
<li><a href="../../../../../allclasses.html">All Classes</a></li>
|
||||
<li><a href="../../../../allclasses.html">All Classes</a></li>
|
||||
</ul>
|
||||
<ul class="navListSearch">
|
||||
<li><label for="search">SEARCH:</label>
|
||||
|
|
@ -113,15 +113,15 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<!-- ======== START OF CLASS DATA ======== -->
|
||||
<main role="main">
|
||||
<div class="header">
|
||||
<div class="subTitle"><span class="packageLabelInType">Package</span> <a href="package-summary.html">com.google.android.exoplayer2.trackselection</a></div>
|
||||
<h2 title="Class TrackSelectionOverrides" class="title">Class TrackSelectionOverrides</h2>
|
||||
<div class="subTitle"><span class="packageLabelInType">Package</span> <a href="package-summary.html">com.google.android.exoplayer2</a></div>
|
||||
<h2 title="Class MediaItem.RequestMetadata" class="title">Class MediaItem.RequestMetadata</h2>
|
||||
</div>
|
||||
<div class="contentContainer">
|
||||
<ul class="inheritance">
|
||||
<li><a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">java.lang.Object</a></li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li>com.google.android.exoplayer2.trackselection.TrackSelectionOverrides</li>
|
||||
<li>com.google.android.exoplayer2.MediaItem.RequestMetadata</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -130,29 +130,21 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<li class="blockList">
|
||||
<dl>
|
||||
<dt>All Implemented Interfaces:</dt>
|
||||
<dd><code><a href="../Bundleable.html" title="interface in com.google.android.exoplayer2">Bundleable</a></code></dd>
|
||||
<dd><code><a href="Bundleable.html" title="interface in com.google.android.exoplayer2">Bundleable</a></code></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>Enclosing class:</dt>
|
||||
<dd><a href="MediaItem.html" title="class in com.google.android.exoplayer2">MediaItem</a></dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<pre>public final class <span class="typeNameLabel">TrackSelectionOverrides</span>
|
||||
<pre>public static final class <span class="typeNameLabel">MediaItem.RequestMetadata</span>
|
||||
extends <a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a>
|
||||
implements <a href="../Bundleable.html" title="interface in com.google.android.exoplayer2">Bundleable</a></pre>
|
||||
<div class="block">Forces the selection of the specified tracks in <a href="../source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroups</code></a>.
|
||||
implements <a href="Bundleable.html" title="interface in com.google.android.exoplayer2">Bundleable</a></pre>
|
||||
<div class="block">Metadata that helps the player to understand a playback request represented by a <a href="MediaItem.html" title="class in com.google.android.exoplayer2"><code>MediaItem</code></a>.
|
||||
|
||||
<p>Each <a href="TrackSelectionOverrides.TrackSelectionOverride.html" title="class in com.google.android.exoplayer2.trackselection"><code>override</code></a> only affects the selection of tracks of that
|
||||
<a href="../C.TrackType.html" title="annotation in com.google.android.exoplayer2"><code>type</code></a>. For example overriding the selection of an <a href="../C.html#TRACK_TYPE_AUDIO"><code>audio</code></a> <a href="../source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a> will not affect the selection of <a href="../C.html#TRACK_TYPE_VIDEO"><code>video</code></a> or
|
||||
<a href="../C.html#TRACK_TYPE_TEXT"><code>text</code></a> tracks.
|
||||
|
||||
<p>If multiple <a href="../source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroups</code></a> of the same <a href="../C.TrackType.html" title="annotation in com.google.android.exoplayer2"><code>C.TrackType</code></a> are overridden,
|
||||
which tracks will be selected depend on the player capabilities. For example, by default <code>
|
||||
ExoPlayer</code> doesn't support selecting more than one <a href="../source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a> per <a href="../C.TrackType.html" title="annotation in com.google.android.exoplayer2"><code>C.TrackType</code></a>.
|
||||
|
||||
<p>Overrides of <a href="../source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a> that are not currently available are ignored. For example,
|
||||
when the player transitions to the next <a href="../MediaItem.html" title="class in com.google.android.exoplayer2"><code>MediaItem</code></a> in a playlist, any overrides of the
|
||||
previous <a href="../MediaItem.html" title="class in com.google.android.exoplayer2"><code>MediaItem</code></a> are ignored.</div>
|
||||
<dl>
|
||||
<dt><span class="seeLabel">See Also:</span></dt>
|
||||
<dd><a href="TrackSelectionParameters.html#trackSelectionOverrides"><code>TrackSelectionParameters.trackSelectionOverrides</code></a></dd>
|
||||
</dl>
|
||||
<p>This metadata is most useful for cases where playback requests are forwarded to other player
|
||||
instances (e.g. from a <a href="https://developer.android.com/reference/android/media/session/MediaController.html" title="class or interface in android.media.session" class="externalLink" target="_top"><code>MediaController</code></a>) and the player creating
|
||||
the request doesn't know the required <a href="MediaItem.LocalConfiguration.html" title="class in com.google.android.exoplayer2"><code>MediaItem.LocalConfiguration</code></a> for playback.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -175,16 +167,9 @@ implements <a href="../Bundleable.html" title="interface in com.google.android.e
|
|||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static class </code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="TrackSelectionOverrides.Builder.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverrides.Builder</a></span></code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="MediaItem.RequestMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata.Builder</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Builder for <a href="TrackSelectionOverrides.html" title="class in com.google.android.exoplayer2.trackselection"><code>TrackSelectionOverrides</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static class </code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="TrackSelectionOverrides.TrackSelectionOverride.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverrides.TrackSelectionOverride</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Forces the selection of <a href="TrackSelectionOverrides.TrackSelectionOverride.html#trackIndices"><code>TrackSelectionOverrides.TrackSelectionOverride.trackIndices</code></a> for a <a href="../source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a>.</div>
|
||||
<div class="block">Builder for <a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaItem.RequestMetadata</code></a> instances.</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -192,8 +177,8 @@ implements <a href="../Bundleable.html" title="interface in com.google.android.e
|
|||
<li class="blockList"><a id="nested.classes.inherited.from.class.com.google.android.exoplayer2.Bundleable">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Nested classes/interfaces inherited from interface com.google.android.exoplayer2.<a href="../Bundleable.html" title="interface in com.google.android.exoplayer2">Bundleable</a></h3>
|
||||
<code><a href="../Bundleable.Creator.html" title="interface in com.google.android.exoplayer2">Bundleable.Creator</a><<a href="../Bundleable.Creator.html" title="type parameter in Bundleable.Creator">T</a> extends <a href="../Bundleable.html" title="interface in com.google.android.exoplayer2">Bundleable</a>></code></li>
|
||||
<h3>Nested classes/interfaces inherited from interface com.google.android.exoplayer2.<a href="Bundleable.html" title="interface in com.google.android.exoplayer2">Bundleable</a></h3>
|
||||
<code><a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2">Bundleable.Creator</a><<a href="Bundleable.Creator.html" title="type parameter in Bundleable.Creator">T</a> extends <a href="Bundleable.html" title="interface in com.google.android.exoplayer2">Bundleable</a>></code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -213,17 +198,38 @@ implements <a href="../Bundleable.html" title="interface in com.google.android.e
|
|||
<th class="colLast" scope="col">Description</th>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static <a href="../Bundleable.Creator.html" title="interface in com.google.android.exoplayer2">Bundleable.Creator</a><<a href="TrackSelectionOverrides.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverrides</a>></code></td>
|
||||
<td class="colFirst"><code>static <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2">Bundleable.Creator</a><<a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata</a>></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#CREATOR">CREATOR</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Object that can restore <code>TrackSelectionOverrides</code> from a <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
<div class="block">Object that can restore <a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaItem.RequestMetadata</code></a> from a <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static <a href="TrackSelectionOverrides.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverrides</a></code></td>
|
||||
<td class="colFirst"><code>static <a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#EMPTY">EMPTY</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Empty <code>TrackSelectionOverrides</code>, where no track selection is overridden.</div>
|
||||
<div class="block">Empty request metadata.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top">Bundle</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#extras">extras</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional extras <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/android/net/Uri.html" title="class or interface in android.net" class="externalLink" target="_top">Uri</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#mediaUri">mediaUri</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">The URI of the requested media, or null if not known or applicable.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#searchQuery">searchQuery</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">The search query for the requested media, or null if not applicable.</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -245,38 +251,23 @@ implements <a href="../Bundleable.html" title="interface in com.google.android.e
|
|||
<th class="colLast" scope="col">Description</th>
|
||||
</tr>
|
||||
<tr id="i0" class="altColor">
|
||||
<td class="colFirst"><code><a href="https://guava.dev/releases/31.0.1-android/api/docs/com/google/common/collect/ImmutableList.html?is-external=true" title="class or interface in com.google.common.collect" class="externalLink">ImmutableList</a><<a href="TrackSelectionOverrides.TrackSelectionOverride.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverrides.TrackSelectionOverride</a>></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#asList()">asList</a></span>()</code></th>
|
||||
<td class="colFirst"><code><a href="MediaItem.RequestMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#buildUpon()">buildUpon</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns a list of the <a href="TrackSelectionOverrides.TrackSelectionOverride.html" title="class in com.google.android.exoplayer2.trackselection"><code>overrides</code></a>.</div>
|
||||
<div class="block">Returns a <a href="MediaItem.RequestMetadata.Builder.html" title="class in com.google.android.exoplayer2"><code>MediaItem.RequestMetadata.Builder</code></a> initialized with the values of this instance.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i1" class="rowColor">
|
||||
<td class="colFirst"><code><a href="TrackSelectionOverrides.Builder.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverrides.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#buildUpon()">buildUpon</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns a <a href="TrackSelectionOverrides.Builder.html" title="class in com.google.android.exoplayer2.trackselection"><code>TrackSelectionOverrides.Builder</code></a> initialized with the values of this instance.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i2" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equals(java.lang.Object)">equals</a></span>​(<a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a> obj)</code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equals(java.lang.Object)">equals</a></span>​(<a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a> o)</code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr id="i3" class="rowColor">
|
||||
<td class="colFirst"><code><a href="TrackSelectionOverrides.TrackSelectionOverride.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverrides.TrackSelectionOverride</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOverride(com.google.android.exoplayer2.source.TrackGroup)">getOverride</a></span>​(<a href="../source/TrackGroup.html" title="class in com.google.android.exoplayer2.source">TrackGroup</a> trackGroup)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns the <a href="TrackSelectionOverrides.TrackSelectionOverride.html" title="class in com.google.android.exoplayer2.trackselection"><code>TrackSelectionOverrides.TrackSelectionOverride</code></a> of the provided <a href="../source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a> or <code>null</code>
|
||||
if there is none.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i4" class="altColor">
|
||||
<tr id="i2" class="altColor">
|
||||
<td class="colFirst"><code>int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hashCode()">hashCode</a></span>()</code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<tr id="i3" class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top">Bundle</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toBundle()">toBundle</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -313,8 +304,44 @@ implements <a href="../Bundleable.html" title="interface in com.google.android.e
|
|||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>EMPTY</h4>
|
||||
<pre>public static final <a href="TrackSelectionOverrides.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverrides</a> EMPTY</pre>
|
||||
<div class="block">Empty <code>TrackSelectionOverrides</code>, where no track selection is overridden.</div>
|
||||
<pre>public static final <a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata</a> EMPTY</pre>
|
||||
<div class="block">Empty request metadata.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="mediaUri">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>mediaUri</h4>
|
||||
<pre>@Nullable
|
||||
public final <a href="https://developer.android.com/reference/android/net/Uri.html" title="class or interface in android.net" class="externalLink" target="_top">Uri</a> mediaUri</pre>
|
||||
<div class="block">The URI of the requested media, or null if not known or applicable.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="searchQuery">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>searchQuery</h4>
|
||||
<pre>@Nullable
|
||||
public final <a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> searchQuery</pre>
|
||||
<div class="block">The search query for the requested media, or null if not applicable.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="extras">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>extras</h4>
|
||||
<pre>@Nullable
|
||||
public final <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top">Bundle</a> extras</pre>
|
||||
<div class="block">Optional extras <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.
|
||||
|
||||
<p>Given the complexities of checking the equality of two <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>s, this is not
|
||||
considered in the <a href="#equals(java.lang.Object)"><code>equals(Object)</code></a> or <a href="#hashCode()"><code>hashCode()</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="CREATOR">
|
||||
|
|
@ -323,8 +350,8 @@ implements <a href="../Bundleable.html" title="interface in com.google.android.e
|
|||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>CREATOR</h4>
|
||||
<pre>public static final <a href="../Bundleable.Creator.html" title="interface in com.google.android.exoplayer2">Bundleable.Creator</a><<a href="TrackSelectionOverrides.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverrides</a>> CREATOR</pre>
|
||||
<div class="block">Object that can restore <code>TrackSelectionOverrides</code> from a <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
<pre>public static final <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2">Bundleable.Creator</a><<a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata</a>> CREATOR</pre>
|
||||
<div class="block">Object that can restore <a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaItem.RequestMetadata</code></a> from a <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
@ -343,30 +370,8 @@ implements <a href="../Bundleable.html" title="interface in com.google.android.e
|
|||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>buildUpon</h4>
|
||||
<pre class="methodSignature">public <a href="TrackSelectionOverrides.Builder.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverrides.Builder</a> buildUpon()</pre>
|
||||
<div class="block">Returns a <a href="TrackSelectionOverrides.Builder.html" title="class in com.google.android.exoplayer2.trackselection"><code>TrackSelectionOverrides.Builder</code></a> initialized with the values of this instance.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="asList()">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>asList</h4>
|
||||
<pre class="methodSignature">public <a href="https://guava.dev/releases/31.0.1-android/api/docs/com/google/common/collect/ImmutableList.html?is-external=true" title="class or interface in com.google.common.collect" class="externalLink">ImmutableList</a><<a href="TrackSelectionOverrides.TrackSelectionOverride.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverrides.TrackSelectionOverride</a>> asList()</pre>
|
||||
<div class="block">Returns a list of the <a href="TrackSelectionOverrides.TrackSelectionOverride.html" title="class in com.google.android.exoplayer2.trackselection"><code>overrides</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="getOverride(com.google.android.exoplayer2.source.TrackGroup)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getOverride</h4>
|
||||
<pre class="methodSignature">@Nullable
|
||||
public <a href="TrackSelectionOverrides.TrackSelectionOverride.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionOverrides.TrackSelectionOverride</a> getOverride​(<a href="../source/TrackGroup.html" title="class in com.google.android.exoplayer2.source">TrackGroup</a> trackGroup)</pre>
|
||||
<div class="block">Returns the <a href="TrackSelectionOverrides.TrackSelectionOverride.html" title="class in com.google.android.exoplayer2.trackselection"><code>TrackSelectionOverrides.TrackSelectionOverride</code></a> of the provided <a href="../source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a> or <code>null</code>
|
||||
if there is none.</div>
|
||||
<pre class="methodSignature">public <a href="MediaItem.RequestMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata.Builder</a> buildUpon()</pre>
|
||||
<div class="block">Returns a <a href="MediaItem.RequestMetadata.Builder.html" title="class in com.google.android.exoplayer2"><code>MediaItem.RequestMetadata.Builder</code></a> initialized with the values of this instance.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="equals(java.lang.Object)">
|
||||
|
|
@ -376,7 +381,7 @@ public <a href="TrackSelectionOverrides.TrackSelectionOverride.html" title=
|
|||
<li class="blockList">
|
||||
<h4>equals</h4>
|
||||
<pre class="methodSignature">public boolean equals​(@Nullable
|
||||
<a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a> obj)</pre>
|
||||
<a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a> o)</pre>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
|
||||
<dd><code><a href="https://developer.android.com/reference/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a></code> in class <code><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_top">Object</a></code></dd>
|
||||
|
|
@ -403,11 +408,11 @@ public <a href="TrackSelectionOverrides.TrackSelectionOverride.html" title=
|
|||
<li class="blockList">
|
||||
<h4>toBundle</h4>
|
||||
<pre class="methodSignature">public <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top">Bundle</a> toBundle()</pre>
|
||||
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../Bundleable.html#toBundle()">Bundleable</a></code></span></div>
|
||||
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="Bundleable.html#toBundle()">Bundleable</a></code></span></div>
|
||||
<div class="block">Returns a <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a> representing the information stored in this object.</div>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
<dd><code><a href="../Bundleable.html#toBundle()">toBundle</a></code> in interface <code><a href="../Bundleable.html" title="interface in com.google.android.exoplayer2">Bundleable</a></code></dd>
|
||||
<dd><code><a href="Bundleable.html#toBundle()">toBundle</a></code> in interface <code><a href="Bundleable.html" title="interface in com.google.android.exoplayer2">Bundleable</a></code></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -431,18 +436,18 @@ public <a href="TrackSelectionOverrides.TrackSelectionOverride.html" title=
|
|||
<!-- -->
|
||||
</a>
|
||||
<ul class="navList" title="Navigation">
|
||||
<li><a href="../../../../../index.html">Overview</a></li>
|
||||
<li><a href="../../../../index.html">Overview</a></li>
|
||||
<li><a href="package-summary.html">Package</a></li>
|
||||
<li class="navBarCell1Rev">Class</li>
|
||||
<li><a href="package-tree.html">Tree</a></li>
|
||||
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
|
||||
<li><a href="../../../../../index-all.html">Index</a></li>
|
||||
<li><a href="../../../../../help-doc.html">Help</a></li>
|
||||
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
|
||||
<li><a href="../../../../index-all.html">Index</a></li>
|
||||
<li><a href="../../../../help-doc.html">Help</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="subNav">
|
||||
<ul class="navList" id="allclasses_navbar_bottom">
|
||||
<li><a href="../../../../../allclasses.html">All Classes</a></li>
|
||||
<li><a href="../../../../allclasses.html">All Classes</a></li>
|
||||
</ul>
|
||||
<div>
|
||||
<script type="text/javascript"><!--
|
||||
|
|
@ -299,7 +299,8 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setMimeType</h4>
|
||||
<pre class="methodSignature">public <a href="MediaItem.SubtitleConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.SubtitleConfiguration.Builder</a> setMimeType​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> mimeType)</pre>
|
||||
<pre class="methodSignature">public <a href="MediaItem.SubtitleConfiguration.Builder.html" title="class in com.google.android.exoplayer2">MediaItem.SubtitleConfiguration.Builder</a> setMimeType​(@Nullable
|
||||
<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> mimeType)</pre>
|
||||
<div class="block">Sets the MIME type.</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -219,6 +219,13 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static class </code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Metadata that helps the player to understand a playback request represented by a <a href="MediaItem.html" title="class in com.google.android.exoplayer2"><code>MediaItem</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static class </code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="MediaItem.Subtitle.html" title="class in com.google.android.exoplayer2">MediaItem.Subtitle</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
|
||||
|
|
@ -226,7 +233,7 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static class </code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="MediaItem.SubtitleConfiguration.html" title="class in com.google.android.exoplayer2">MediaItem.SubtitleConfiguration</a></span></code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -332,6 +339,13 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#requestMetadata">requestMetadata</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">The media <a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaItem.RequestMetadata</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -515,6 +529,16 @@ public final <a href="MediaItem.ClippingProperties.html" title="class in co
|
|||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="requestMetadata">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>requestMetadata</h4>
|
||||
<pre>public final <a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2">MediaItem.RequestMetadata</a> requestMetadata</pre>
|
||||
<div class="block">The media <a href="MediaItem.RequestMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaItem.RequestMetadata</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="CREATOR">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":42,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":42};
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":42,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":42};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
|
|
@ -331,117 +331,110 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
</tr>
|
||||
<tr id="i21" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setMediaUri(android.net.Uri)">setMediaUri</a></span>​(<a href="https://developer.android.com/reference/android/net/Uri.html" title="class or interface in android.net" class="externalLink" target="_top">Uri</a> mediaUri)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the media <a href="https://developer.android.com/reference/android/net/Uri.html" title="class or interface in android.net" class="externalLink" target="_top"><code>Uri</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i22" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setOverallRating(com.google.android.exoplayer2.Rating)">setOverallRating</a></span>​(<a href="Rating.html" title="class in com.google.android.exoplayer2">Rating</a> overallRating)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the overall <a href="Rating.html" title="class in com.google.android.exoplayer2"><code>Rating</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i23" class="rowColor">
|
||||
<tr id="i22" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setRecordingDay(java.lang.Integer)">setRecordingDay</a></span>​(<a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a> recordingDay)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the day of the recording date.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i24" class="altColor">
|
||||
<tr id="i23" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setRecordingMonth(java.lang.Integer)">setRecordingMonth</a></span>​(<a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a> recordingMonth)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the month of the recording date.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i25" class="rowColor">
|
||||
<tr id="i24" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setRecordingYear(java.lang.Integer)">setRecordingYear</a></span>​(<a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a> recordingYear)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the year of the recording date.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i26" class="altColor">
|
||||
<tr id="i25" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setReleaseDay(java.lang.Integer)">setReleaseDay</a></span>​(<a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a> releaseDay)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the day of the release date.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i27" class="rowColor">
|
||||
<tr id="i26" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setReleaseMonth(java.lang.Integer)">setReleaseMonth</a></span>​(<a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a> releaseMonth)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the month of the release date.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i28" class="altColor">
|
||||
<tr id="i27" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setReleaseYear(java.lang.Integer)">setReleaseYear</a></span>​(<a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a> releaseYear)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the year of the release date.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i29" class="rowColor">
|
||||
<tr id="i28" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setStation(java.lang.CharSequence)">setStation</a></span>​(<a href="https://developer.android.com/reference/java/lang/CharSequence.html" title="class or interface in java.lang" class="externalLink" target="_top">CharSequence</a> station)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the name of the station streaming the media.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i30" class="altColor">
|
||||
<tr id="i29" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setSubtitle(java.lang.CharSequence)">setSubtitle</a></span>​(<a href="https://developer.android.com/reference/java/lang/CharSequence.html" title="class or interface in java.lang" class="externalLink" target="_top">CharSequence</a> subtitle)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the subtitle.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i31" class="rowColor">
|
||||
<tr id="i30" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setTitle(java.lang.CharSequence)">setTitle</a></span>​(<a href="https://developer.android.com/reference/java/lang/CharSequence.html" title="class or interface in java.lang" class="externalLink" target="_top">CharSequence</a> title)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the title.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i32" class="altColor">
|
||||
<tr id="i31" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setTotalDiscCount(java.lang.Integer)">setTotalDiscCount</a></span>​(<a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a> totalDiscCount)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the total number of discs.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i33" class="rowColor">
|
||||
<tr id="i32" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setTotalTrackCount(java.lang.Integer)">setTotalTrackCount</a></span>​(<a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a> totalTrackCount)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the total number of tracks.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i34" class="altColor">
|
||||
<tr id="i33" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setTrackNumber(java.lang.Integer)">setTrackNumber</a></span>​(<a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a> trackNumber)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the track number.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i35" class="rowColor">
|
||||
<tr id="i34" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setUserRating(com.google.android.exoplayer2.Rating)">setUserRating</a></span>​(<a href="Rating.html" title="class in com.google.android.exoplayer2">Rating</a> userRating)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the user <a href="Rating.html" title="class in com.google.android.exoplayer2"><code>Rating</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i36" class="altColor">
|
||||
<tr id="i35" class="rowColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setWriter(java.lang.CharSequence)">setWriter</a></span>​(<a href="https://developer.android.com/reference/java/lang/CharSequence.html" title="class or interface in java.lang" class="externalLink" target="_top">CharSequence</a> writer)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the writer.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i37" class="rowColor">
|
||||
<tr id="i36" class="altColor">
|
||||
<td class="colFirst"><code><a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setYear(java.lang.Integer)">setYear</a></span>​(<a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a> year)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -572,17 +565,6 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
<div class="block">Sets the description.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="setMediaUri(android.net.Uri)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setMediaUri</h4>
|
||||
<pre class="methodSignature">public <a href="MediaMetadata.Builder.html" title="class in com.google.android.exoplayer2">MediaMetadata.Builder</a> setMediaUri​(@Nullable
|
||||
<a href="https://developer.android.com/reference/android/net/Uri.html" title="class or interface in android.net" class="externalLink" target="_top">Uri</a> mediaUri)</pre>
|
||||
<div class="block">Sets the media <a href="https://developer.android.com/reference/android/net/Uri.html" title="class or interface in android.net" class="externalLink" target="_top"><code>Uri</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="setUserRating(com.google.android.exoplayer2.Rating)">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -386,223 +386,216 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/android/net/Uri.html" title="class or interface in android.net" class="externalLink" target="_top">Uri</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#mediaUri">mediaUri</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional media <a href="https://developer.android.com/reference/android/net/Uri.html" title="class or interface in android.net" class="externalLink" target="_top"><code>Uri</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code><a href="Rating.html" title="class in com.google.android.exoplayer2">Rating</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#overallRating">overallRating</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional overall <a href="Rating.html" title="class in com.google.android.exoplayer2"><code>Rating</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_A_BRIGHT_COLORED_FISH">PICTURE_TYPE_A_BRIGHT_COLORED_FISH</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_ARTIST_PERFORMER">PICTURE_TYPE_ARTIST_PERFORMER</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_BACK_COVER">PICTURE_TYPE_BACK_COVER</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_BAND_ARTIST_LOGO">PICTURE_TYPE_BAND_ARTIST_LOGO</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_BAND_ORCHESTRA">PICTURE_TYPE_BAND_ORCHESTRA</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_COMPOSER">PICTURE_TYPE_COMPOSER</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_CONDUCTOR">PICTURE_TYPE_CONDUCTOR</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_DURING_PERFORMANCE">PICTURE_TYPE_DURING_PERFORMANCE</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_DURING_RECORDING">PICTURE_TYPE_DURING_RECORDING</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_FILE_ICON">PICTURE_TYPE_FILE_ICON</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_FILE_ICON_OTHER">PICTURE_TYPE_FILE_ICON_OTHER</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_FRONT_COVER">PICTURE_TYPE_FRONT_COVER</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_ILLUSTRATION">PICTURE_TYPE_ILLUSTRATION</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_LEAD_ARTIST_PERFORMER">PICTURE_TYPE_LEAD_ARTIST_PERFORMER</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_LEAFLET_PAGE">PICTURE_TYPE_LEAFLET_PAGE</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_LYRICIST">PICTURE_TYPE_LYRICIST</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_MEDIA">PICTURE_TYPE_MEDIA</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_MOVIE_VIDEO_SCREEN_CAPTURE">PICTURE_TYPE_MOVIE_VIDEO_SCREEN_CAPTURE</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_OTHER">PICTURE_TYPE_OTHER</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_PUBLISHER_STUDIO_LOGO">PICTURE_TYPE_PUBLISHER_STUDIO_LOGO</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PICTURE_TYPE_RECORDING_LOCATION">PICTURE_TYPE_RECORDING_LOCATION</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#recordingDay">recordingDay</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional day of the recording date.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#recordingMonth">recordingMonth</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional month of the recording date.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#recordingYear">recordingYear</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional year of the recording date.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#releaseDay">releaseDay</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional day of the release date.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#releaseMonth">releaseMonth</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional month of the release date.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#releaseYear">releaseYear</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional year of the release date.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/CharSequence.html" title="class or interface in java.lang" class="externalLink" target="_top">CharSequence</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#station">station</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional name of the station streaming the media.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/CharSequence.html" title="class or interface in java.lang" class="externalLink" target="_top">CharSequence</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#subtitle">subtitle</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional subtitle.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/CharSequence.html" title="class or interface in java.lang" class="externalLink" target="_top">CharSequence</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#title">title</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional title.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#totalDiscCount">totalDiscCount</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional total number of discs.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#totalTrackCount">totalTrackCount</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional total number of tracks.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#trackNumber">trackNumber</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional track number.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code><a href="Rating.html" title="class in com.google.android.exoplayer2">Rating</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#userRating">userRating</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional user <a href="Rating.html" title="class in com.google.android.exoplayer2"><code>Rating</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/CharSequence.html" title="class or interface in java.lang" class="externalLink" target="_top">CharSequence</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#writer">writer</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Optional writer.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/Integer.html" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#year">year</a></span></code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -1151,17 +1144,6 @@ public final <a href="https://developer.android.com/reference/java/lang/Cha
|
|||
<div class="block">Optional description.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="mediaUri">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>mediaUri</h4>
|
||||
<pre>@Nullable
|
||||
public final <a href="https://developer.android.com/reference/android/net/Uri.html" title="class or interface in android.net" class="externalLink" target="_top">Uri</a> mediaUri</pre>
|
||||
<div class="block">Optional media <a href="https://developer.android.com/reference/android/net/Uri.html" title="class or interface in android.net" class="externalLink" target="_top"><code>Uri</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="userRating">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -186,13 +186,6 @@ extends <a href="Rating.html" title="class in com.google.android.exoplayer2">Rat
|
|||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="fields.inherited.from.class.com.google.android.exoplayer2.Rating">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Fields inherited from class com.google.android.exoplayer2.<a href="Rating.html" title="class in com.google.android.exoplayer2">Rating</a></h3>
|
||||
<code><a href="Rating.html#RATING_UNSET">RATING_UNSET</a></code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -182,13 +182,6 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<div class="block">Codes that identify causes of player errors.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>protected static interface </code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="PlaybackException.FieldNumber.html" title="annotation in com.google.android.exoplayer2">PlaybackException.FieldNumber</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Identifiers for fields in a <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a> which represents a playback exception.</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="nested.classes.inherited.from.class.com.google.android.exoplayer2.Bundleable">
|
||||
|
|
@ -481,7 +474,7 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<td class="colFirst"><code>protected static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#FIELD_CUSTOM_ID_BASE">FIELD_CUSTOM_ID_BASE</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Defines a minimum field id value for subclasses to use when implementing <a href="#toBundle()"><code>toBundle()</code></a>
|
||||
<div class="block">Defines a minimum field ID value for subclasses to use when implementing <a href="#toBundle()"><code>toBundle()</code></a>
|
||||
and <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2"><code>Bundleable.Creator</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
@ -578,10 +571,10 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
</tr>
|
||||
<tr id="i3" class="rowColor">
|
||||
<td class="colFirst"><code>protected static <a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#keyForField(@com.google.android.exoplayer2.PlaybackException.FieldNumberint)">keyForField</a></span>​(@com.google.android.exoplayer2.PlaybackException.FieldNumber int field)</code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#keyForField(int)">keyForField</a></span>​(int field)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Converts the given <a href="PlaybackException.FieldNumber.html" title="annotation in com.google.android.exoplayer2"><code>PlaybackException.FieldNumber</code></a> to a string which can be used as a field key when
|
||||
implementing <a href="#toBundle()"><code>toBundle()</code></a> and <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2"><code>Bundleable.Creator</code></a>.</div>
|
||||
<div class="block">Converts the given field number to a string which can be used as a field key when implementing
|
||||
<a href="#toBundle()"><code>toBundle()</code></a> and <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2"><code>Bundleable.Creator</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i4" class="altColor">
|
||||
|
|
@ -1169,11 +1162,11 @@ public final @com.google.android.exoplayer2.PlaybackException.ErrorCode int
|
|||
<li class="blockList">
|
||||
<h4>FIELD_CUSTOM_ID_BASE</h4>
|
||||
<pre>protected static final int FIELD_CUSTOM_ID_BASE</pre>
|
||||
<div class="block">Defines a minimum field id value for subclasses to use when implementing <a href="#toBundle()"><code>toBundle()</code></a>
|
||||
<div class="block">Defines a minimum field ID value for subclasses to use when implementing <a href="#toBundle()"><code>toBundle()</code></a>
|
||||
and <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2"><code>Bundleable.Creator</code></a>.
|
||||
|
||||
<p>Subclasses should obtain their <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle's</code></a> field keys by applying a non-negative
|
||||
offset on this constant and passing the result to <a href="#keyForField(@com.google.android.exoplayer2.PlaybackException.FieldNumberint)"><code>keyForField(int)</code></a>.</div>
|
||||
offset on this constant and passing the result to <a href="#keyForField(int)"><code>keyForField(int)</code></a>.</div>
|
||||
<dl>
|
||||
<dt><span class="seeLabel">See Also:</span></dt>
|
||||
<dd><a href="../../../../constant-values.html#com.google.android.exoplayer2.PlaybackException.FIELD_CUSTOM_ID_BASE">Constant Field Values</a></dd>
|
||||
|
|
@ -1309,15 +1302,17 @@ public <a href="https://developer.android.com/reference/android/os/Bundle.h
|
|||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="keyForField(@com.google.android.exoplayer2.PlaybackException.FieldNumberint)">
|
||||
<a id="keyForField(int)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>keyForField</h4>
|
||||
<pre class="methodSignature">protected static <a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> keyForField​(@com.google.android.exoplayer2.PlaybackException.FieldNumber int field)</pre>
|
||||
<div class="block">Converts the given <a href="PlaybackException.FieldNumber.html" title="annotation in com.google.android.exoplayer2"><code>PlaybackException.FieldNumber</code></a> to a string which can be used as a field key when
|
||||
implementing <a href="#toBundle()"><code>toBundle()</code></a> and <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2"><code>Bundleable.Creator</code></a>.</div>
|
||||
<pre class="methodSignature">protected static <a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> keyForField​(int field)</pre>
|
||||
<div class="block">Converts the given field number to a string which can be used as a field key when implementing
|
||||
<a href="#toBundle()"><code>toBundle()</code></a> and <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2"><code>Bundleable.Creator</code></a>.
|
||||
|
||||
<p>Subclasses should use <code>field</code> values greater than or equal to <a href="#FIELD_CUSTOM_ID_BASE"><code>FIELD_CUSTOM_ID_BASE</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<a href="https://developer.android.com/reference/java/lang/annotation/Retention.html" title="class or interface in java.lang.annotation" class="externalLink">@Retention</a>(<a href="https://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html?is-external=true#SOURCE" title="class or interface in java.lang.annotation" class="externalLink" target="_top">SOURCE</a>)
|
||||
<a href="https://developer.android.com/reference/java/lang/annotation/Target.html" title="class or interface in java.lang.annotation" class="externalLink">@Target</a>({<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#FIELD" title="class or interface in java.lang.annotation" class="externalLink">FIELD</a>,<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#METHOD" title="class or interface in java.lang.annotation" class="externalLink">METHOD</a>,<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#PARAMETER" title="class or interface in java.lang.annotation" class="externalLink">PARAMETER</a>,<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#LOCAL_VARIABLE" title="class or interface in java.lang.annotation" class="externalLink">LOCAL_VARIABLE</a>,<a href="https://developer.android.com/reference/java/lang/annotation/ElementType.html?is-external=true#TYPE_USE" title="class or interface in java.lang.annotation" class="externalLink" target="_top">TYPE_USE</a>})
|
||||
public static @interface <span class="memberNameLabel">Player.Command</span></pre>
|
||||
<div class="block">Commands that can be executed on a <code>Player</code>. One of <a href="Player.html#COMMAND_PLAY_PAUSE"><code>Player.COMMAND_PLAY_PAUSE</code></a>, <a href="Player.html#COMMAND_PREPARE"><code>Player.COMMAND_PREPARE</code></a>, <a href="Player.html#COMMAND_STOP"><code>Player.COMMAND_STOP</code></a>, <a href="Player.html#COMMAND_SEEK_TO_DEFAULT_POSITION"><code>Player.COMMAND_SEEK_TO_DEFAULT_POSITION</code></a>, <a href="Player.html#COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM"><code>Player.COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM</code></a>, <a href="Player.html#COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM"><code>Player.COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM</code></a>, <a href="Player.html#COMMAND_SEEK_TO_PREVIOUS"><code>Player.COMMAND_SEEK_TO_PREVIOUS</code></a>, <a href="Player.html#COMMAND_SEEK_TO_NEXT_MEDIA_ITEM"><code>Player.COMMAND_SEEK_TO_NEXT_MEDIA_ITEM</code></a>, <a href="Player.html#COMMAND_SEEK_TO_NEXT"><code>Player.COMMAND_SEEK_TO_NEXT</code></a>, <a href="Player.html#COMMAND_SEEK_TO_MEDIA_ITEM"><code>Player.COMMAND_SEEK_TO_MEDIA_ITEM</code></a>, <a href="Player.html#COMMAND_SEEK_BACK"><code>Player.COMMAND_SEEK_BACK</code></a>, <a href="Player.html#COMMAND_SEEK_FORWARD"><code>Player.COMMAND_SEEK_FORWARD</code></a>, <a href="Player.html#COMMAND_SET_SPEED_AND_PITCH"><code>Player.COMMAND_SET_SPEED_AND_PITCH</code></a>, <a href="Player.html#COMMAND_SET_SHUFFLE_MODE"><code>Player.COMMAND_SET_SHUFFLE_MODE</code></a>, <a href="Player.html#COMMAND_SET_REPEAT_MODE"><code>Player.COMMAND_SET_REPEAT_MODE</code></a>, <a href="Player.html#COMMAND_GET_CURRENT_MEDIA_ITEM"><code>Player.COMMAND_GET_CURRENT_MEDIA_ITEM</code></a>, <a href="Player.html#COMMAND_GET_TIMELINE"><code>Player.COMMAND_GET_TIMELINE</code></a>, <a href="Player.html#COMMAND_GET_MEDIA_ITEMS_METADATA"><code>Player.COMMAND_GET_MEDIA_ITEMS_METADATA</code></a>, <a href="Player.html#COMMAND_SET_MEDIA_ITEMS_METADATA"><code>Player.COMMAND_SET_MEDIA_ITEMS_METADATA</code></a>, <a href="Player.html#COMMAND_CHANGE_MEDIA_ITEMS"><code>Player.COMMAND_CHANGE_MEDIA_ITEMS</code></a>, <a href="Player.html#COMMAND_GET_AUDIO_ATTRIBUTES"><code>Player.COMMAND_GET_AUDIO_ATTRIBUTES</code></a>, <a href="Player.html#COMMAND_GET_VOLUME"><code>Player.COMMAND_GET_VOLUME</code></a>, <a href="Player.html#COMMAND_GET_DEVICE_VOLUME"><code>Player.COMMAND_GET_DEVICE_VOLUME</code></a>, <a href="Player.html#COMMAND_SET_VOLUME"><code>Player.COMMAND_SET_VOLUME</code></a>, <a href="Player.html#COMMAND_SET_DEVICE_VOLUME"><code>Player.COMMAND_SET_DEVICE_VOLUME</code></a>, <a href="Player.html#COMMAND_ADJUST_DEVICE_VOLUME"><code>Player.COMMAND_ADJUST_DEVICE_VOLUME</code></a>, <a href="Player.html#COMMAND_SET_VIDEO_SURFACE"><code>Player.COMMAND_SET_VIDEO_SURFACE</code></a>, <a href="Player.html#COMMAND_GET_TEXT"><code>Player.COMMAND_GET_TEXT</code></a>, <a href="Player.html#COMMAND_SET_TRACK_SELECTION_PARAMETERS"><code>Player.COMMAND_SET_TRACK_SELECTION_PARAMETERS</code></a> or <a href="Player.html#COMMAND_GET_TRACK_INFOS"><code>Player.COMMAND_GET_TRACK_INFOS</code></a>.</div>
|
||||
<div class="block">Commands that can be executed on a <code>Player</code>. One of <a href="Player.html#COMMAND_PLAY_PAUSE"><code>Player.COMMAND_PLAY_PAUSE</code></a>, <a href="Player.html#COMMAND_PREPARE"><code>Player.COMMAND_PREPARE</code></a>, <a href="Player.html#COMMAND_STOP"><code>Player.COMMAND_STOP</code></a>, <a href="Player.html#COMMAND_SEEK_TO_DEFAULT_POSITION"><code>Player.COMMAND_SEEK_TO_DEFAULT_POSITION</code></a>, <a href="Player.html#COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM"><code>Player.COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM</code></a>, <a href="Player.html#COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM"><code>Player.COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM</code></a>, <a href="Player.html#COMMAND_SEEK_TO_PREVIOUS"><code>Player.COMMAND_SEEK_TO_PREVIOUS</code></a>, <a href="Player.html#COMMAND_SEEK_TO_NEXT_MEDIA_ITEM"><code>Player.COMMAND_SEEK_TO_NEXT_MEDIA_ITEM</code></a>, <a href="Player.html#COMMAND_SEEK_TO_NEXT"><code>Player.COMMAND_SEEK_TO_NEXT</code></a>, <a href="Player.html#COMMAND_SEEK_TO_MEDIA_ITEM"><code>Player.COMMAND_SEEK_TO_MEDIA_ITEM</code></a>, <a href="Player.html#COMMAND_SEEK_BACK"><code>Player.COMMAND_SEEK_BACK</code></a>, <a href="Player.html#COMMAND_SEEK_FORWARD"><code>Player.COMMAND_SEEK_FORWARD</code></a>, <a href="Player.html#COMMAND_SET_SPEED_AND_PITCH"><code>Player.COMMAND_SET_SPEED_AND_PITCH</code></a>, <a href="Player.html#COMMAND_SET_SHUFFLE_MODE"><code>Player.COMMAND_SET_SHUFFLE_MODE</code></a>, <a href="Player.html#COMMAND_SET_REPEAT_MODE"><code>Player.COMMAND_SET_REPEAT_MODE</code></a>, <a href="Player.html#COMMAND_GET_CURRENT_MEDIA_ITEM"><code>Player.COMMAND_GET_CURRENT_MEDIA_ITEM</code></a>, <a href="Player.html#COMMAND_GET_TIMELINE"><code>Player.COMMAND_GET_TIMELINE</code></a>, <a href="Player.html#COMMAND_GET_MEDIA_ITEMS_METADATA"><code>Player.COMMAND_GET_MEDIA_ITEMS_METADATA</code></a>, <a href="Player.html#COMMAND_SET_MEDIA_ITEMS_METADATA"><code>Player.COMMAND_SET_MEDIA_ITEMS_METADATA</code></a>, <a href="Player.html#COMMAND_CHANGE_MEDIA_ITEMS"><code>Player.COMMAND_CHANGE_MEDIA_ITEMS</code></a>, <a href="Player.html#COMMAND_GET_AUDIO_ATTRIBUTES"><code>Player.COMMAND_GET_AUDIO_ATTRIBUTES</code></a>, <a href="Player.html#COMMAND_GET_VOLUME"><code>Player.COMMAND_GET_VOLUME</code></a>, <a href="Player.html#COMMAND_GET_DEVICE_VOLUME"><code>Player.COMMAND_GET_DEVICE_VOLUME</code></a>, <a href="Player.html#COMMAND_SET_VOLUME"><code>Player.COMMAND_SET_VOLUME</code></a>, <a href="Player.html#COMMAND_SET_DEVICE_VOLUME"><code>Player.COMMAND_SET_DEVICE_VOLUME</code></a>, <a href="Player.html#COMMAND_ADJUST_DEVICE_VOLUME"><code>Player.COMMAND_ADJUST_DEVICE_VOLUME</code></a>, <a href="Player.html#COMMAND_SET_VIDEO_SURFACE"><code>Player.COMMAND_SET_VIDEO_SURFACE</code></a>, <a href="Player.html#COMMAND_GET_TEXT"><code>Player.COMMAND_GET_TEXT</code></a>, <a href="Player.html#COMMAND_SET_TRACK_SELECTION_PARAMETERS"><code>Player.COMMAND_SET_TRACK_SELECTION_PARAMETERS</code></a>, <a href="Player.html#COMMAND_GET_TRACKS"><code>Player.COMMAND_GET_TRACKS</code></a> or <a href="Player.html#COMMAND_SET_MEDIA_ITEM"><code>Player.COMMAND_SET_MEDIA_ITEM</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
|
|
@ -243,29 +243,36 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
</tr>
|
||||
<tr id="i2" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#containsAny(@com.google.android.exoplayer2.Player.Commandint...)">containsAny</a></span>​(@com.google.android.exoplayer2.Player.Command int... commands)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns whether the set of commands contains at least one of the given <code>commands</code>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i3" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equals(java.lang.Object)">equals</a></span>​(<a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a> obj)</code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr id="i3" class="rowColor">
|
||||
<tr id="i4" class="altColor">
|
||||
<td class="colFirst"><code>@com.google.android.exoplayer2.Player.Command int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#get(int)">get</a></span>​(int index)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns the <a href="Player.Command.html" title="annotation in com.google.android.exoplayer2"><code>Player.Command</code></a> at the given index.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i4" class="altColor">
|
||||
<tr id="i5" class="rowColor">
|
||||
<td class="colFirst"><code>int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hashCode()">hashCode</a></span>()</code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<tr id="i6" class="altColor">
|
||||
<td class="colFirst"><code>int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#size()">size</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns the number of commands in this set.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i6" class="altColor">
|
||||
<tr id="i7" class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top">Bundle</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toBundle()">toBundle</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -347,6 +354,17 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<div class="block">Returns whether the set of commands contains the specified <a href="Player.Command.html" title="annotation in com.google.android.exoplayer2"><code>Player.Command</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="containsAny(@com.google.android.exoplayer2.Player.Commandint...)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>containsAny</h4>
|
||||
<pre class="methodSignature">public boolean containsAny​(<a href="Player.Command.html" title="annotation in com.google.android.exoplayer2">@Command</a>
|
||||
@com.google.android.exoplayer2.Player.Command int... commands)</pre>
|
||||
<div class="block">Returns whether the set of commands contains at least one of the given <code>commands</code>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="size()">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":18,"i1":18,"i2":18,"i3":18,"i4":18,"i5":18,"i6":18,"i7":18,"i8":18,"i9":50,"i10":18,"i11":18,"i12":18,"i13":18,"i14":18,"i15":18,"i16":18,"i17":18,"i18":18,"i19":50,"i20":18,"i21":18,"i22":50,"i23":18,"i24":18,"i25":18,"i26":18,"i27":18,"i28":50,"i29":18,"i30":18,"i31":18,"i32":18,"i33":50,"i34":18,"i35":18,"i36":18,"i37":18};
|
||||
var data = {"i0":18,"i1":18,"i2":18,"i3":18,"i4":50,"i5":18,"i6":18,"i7":18,"i8":18,"i9":18,"i10":50,"i11":18,"i12":18,"i13":18,"i14":18,"i15":18,"i16":18,"i17":18,"i18":18,"i19":18,"i20":50,"i21":18,"i22":18,"i23":50,"i24":18,"i25":18,"i26":18,"i27":18,"i28":18,"i29":50,"i30":18,"i31":18,"i32":18,"i33":18,"i34":18,"i35":18,"i36":18,"i37":18};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],16:["t5","Default Methods"],32:["t6","Deprecated Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
|
|
@ -126,7 +126,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</dl>
|
||||
<dl>
|
||||
<dt>All Known Implementing Classes:</dt>
|
||||
<dd><code><a href="util/DebugTextViewHelper.html" title="class in com.google.android.exoplayer2.util">DebugTextViewHelper</a></code>, <code><a href="analytics/DefaultAnalyticsCollector.html" title="class in com.google.android.exoplayer2.analytics">DefaultAnalyticsCollector</a></code>, <code><a href="testutil/ExoPlayerTestRunner.html" title="class in com.google.android.exoplayer2.testutil">ExoPlayerTestRunner</a></code>, <code><a href="ui/SubtitleView.html" title="class in com.google.android.exoplayer2.ui">SubtitleView</a></code></dd>
|
||||
<dd><code><a href="analytics/DefaultAnalyticsCollector.html" title="class in com.google.android.exoplayer2.analytics">DefaultAnalyticsCollector</a></code>, <code><a href="testutil/ExoPlayerTestRunner.html" title="class in com.google.android.exoplayer2.testutil">ExoPlayerTestRunner</a></code></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>Enclosing interface:</dt>
|
||||
|
|
@ -181,19 +181,28 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</tr>
|
||||
<tr id="i3" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onCues(java.util.List)">onCues</a></span>​(<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="text/Cue.html" title="class in com.google.android.exoplayer2.text" target="_top">Cue</a>> cues)</code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onCues(com.google.android.exoplayer2.text.CueGroup)">onCues</a></span>​(<a href="text/CueGroup.html" title="class in com.google.android.exoplayer2.text">CueGroup</a> cueGroup)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when there is a change in the <a href="text/Cue.html" title="class in com.google.android.exoplayer2.text"><code>Cues</code></a>.</div>
|
||||
<div class="block">Called when there is a change in the <a href="text/CueGroup.html" title="class in com.google.android.exoplayer2.text"><code>CueGroup</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i4" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onCues(java.util.List)">onCues</a></span>​(<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="text/Cue.html" title="class in com.google.android.exoplayer2.text" target="_top">Cue</a>> cues)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#onCues(com.google.android.exoplayer2.text.CueGroup)"><code>onCues(CueGroup)</code></a> instead.</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDeviceInfoChanged(com.google.android.exoplayer2.DeviceInfo)">onDeviceInfoChanged</a></span>​(<a href="DeviceInfo.html" title="class in com.google.android.exoplayer2">DeviceInfo</a> deviceInfo)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the device information changes</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<tr id="i6" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDeviceVolumeChanged(int,boolean)">onDeviceVolumeChanged</a></span>​(int volume,
|
||||
boolean muted)</code></th>
|
||||
|
|
@ -201,7 +210,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the device volume or mute state changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i6" class="altColor">
|
||||
<tr id="i7" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onEvents(com.google.android.exoplayer2.Player,com.google.android.exoplayer2.Player.Events)">onEvents</a></span>​(<a href="Player.html" title="interface in com.google.android.exoplayer2">Player</a> player,
|
||||
<a href="Player.Events.html" title="class in com.google.android.exoplayer2">Player.Events</a> events)</code></th>
|
||||
|
|
@ -209,21 +218,21 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when one or more player states changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i7" class="rowColor">
|
||||
<tr id="i8" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onIsLoadingChanged(boolean)">onIsLoadingChanged</a></span>​(boolean isLoading)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the player starts or stops loading the source.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i8" class="altColor">
|
||||
<tr id="i9" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onIsPlayingChanged(boolean)">onIsPlayingChanged</a></span>​(boolean isPlaying)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value of <a href="Player.html#isPlaying()"><code>Player.isPlaying()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i9" class="rowColor">
|
||||
<tr id="i10" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadingChanged(boolean)">onLoadingChanged</a></span>​(boolean isLoading)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -232,14 +241,14 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i10" class="altColor">
|
||||
<tr id="i11" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onMaxSeekToPreviousPositionChanged(long)">onMaxSeekToPreviousPositionChanged</a></span>​(long maxSeekToPreviousPositionMs)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value of <a href="Player.html#getMaxSeekToPreviousPosition()"><code>Player.getMaxSeekToPreviousPosition()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i11" class="rowColor">
|
||||
<tr id="i12" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onMediaItemTransition(com.google.android.exoplayer2.MediaItem,@com.google.android.exoplayer2.Player.MediaItemTransitionReasonint)">onMediaItemTransition</a></span>​(<a href="MediaItem.html" title="class in com.google.android.exoplayer2">MediaItem</a> mediaItem,
|
||||
@com.google.android.exoplayer2.Player.MediaItemTransitionReason int reason)</code></th>
|
||||
|
|
@ -248,56 +257,56 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
to the current <a href="Player.html#getRepeatMode()"><code>repeat mode</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i12" class="altColor">
|
||||
<tr id="i13" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onMediaMetadataChanged(com.google.android.exoplayer2.MediaMetadata)">onMediaMetadataChanged</a></span>​(<a href="MediaMetadata.html" title="class in com.google.android.exoplayer2">MediaMetadata</a> mediaMetadata)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the combined <a href="MediaMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaMetadata</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i13" class="rowColor">
|
||||
<tr id="i14" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onMetadata(com.google.android.exoplayer2.metadata.Metadata)">onMetadata</a></span>​(<a href="metadata/Metadata.html" title="class in com.google.android.exoplayer2.metadata">Metadata</a> metadata)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when there is metadata associated with the current playback time.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i14" class="altColor">
|
||||
<tr id="i15" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlaybackParametersChanged(com.google.android.exoplayer2.PlaybackParameters)">onPlaybackParametersChanged</a></span>​(<a href="PlaybackParameters.html" title="class in com.google.android.exoplayer2">PlaybackParameters</a> playbackParameters)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the current playback parameters change.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i15" class="rowColor">
|
||||
<tr id="i16" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlaybackStateChanged(@com.google.android.exoplayer2.Player.Stateint)">onPlaybackStateChanged</a></span>​(@com.google.android.exoplayer2.Player.State int playbackState)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value returned from <a href="Player.html#getPlaybackState()"><code>Player.getPlaybackState()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i16" class="altColor">
|
||||
<tr id="i17" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlaybackSuppressionReasonChanged(@com.google.android.exoplayer2.Player.PlaybackSuppressionReasonint)">onPlaybackSuppressionReasonChanged</a></span>​(@com.google.android.exoplayer2.Player.PlaybackSuppressionReason int playbackSuppressionReason)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value returned from <a href="Player.html#getPlaybackSuppressionReason()"><code>Player.getPlaybackSuppressionReason()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i17" class="rowColor">
|
||||
<tr id="i18" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlayerError(com.google.android.exoplayer2.PlaybackException)">onPlayerError</a></span>​(<a href="PlaybackException.html" title="class in com.google.android.exoplayer2">PlaybackException</a> error)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when an error occurs.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i18" class="altColor">
|
||||
<tr id="i19" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlayerErrorChanged(com.google.android.exoplayer2.PlaybackException)">onPlayerErrorChanged</a></span>​(<a href="PlaybackException.html" title="class in com.google.android.exoplayer2">PlaybackException</a> error)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the <a href="PlaybackException.html" title="class in com.google.android.exoplayer2"><code>PlaybackException</code></a> returned by <a href="Player.html#getPlayerError()"><code>Player.getPlayerError()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i19" class="rowColor">
|
||||
<tr id="i20" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlayerStateChanged(boolean,@com.google.android.exoplayer2.Player.Stateint)">onPlayerStateChanged</a></span>​(boolean playWhenReady,
|
||||
@com.google.android.exoplayer2.Player.State int playbackState)</code></th>
|
||||
|
|
@ -307,14 +316,14 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i20" class="altColor">
|
||||
<tr id="i21" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlaylistMetadataChanged(com.google.android.exoplayer2.MediaMetadata)">onPlaylistMetadataChanged</a></span>​(<a href="MediaMetadata.html" title="class in com.google.android.exoplayer2">MediaMetadata</a> mediaMetadata)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the playlist <a href="MediaMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaMetadata</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i21" class="rowColor">
|
||||
<tr id="i22" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlayWhenReadyChanged(boolean,@com.google.android.exoplayer2.Player.PlayWhenReadyChangeReasonint)">onPlayWhenReadyChanged</a></span>​(boolean playWhenReady,
|
||||
@com.google.android.exoplayer2.Player.PlayWhenReadyChangeReason int reason)</code></th>
|
||||
|
|
@ -322,7 +331,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the value returned from <a href="Player.html#getPlayWhenReady()"><code>Player.getPlayWhenReady()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i22" class="altColor">
|
||||
<tr id="i23" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPositionDiscontinuity(@com.google.android.exoplayer2.Player.DiscontinuityReasonint)">onPositionDiscontinuity</a></span>​(@com.google.android.exoplayer2.Player.DiscontinuityReason int reason)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -331,7 +340,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i23" class="rowColor">
|
||||
<tr id="i24" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPositionDiscontinuity(com.google.android.exoplayer2.Player.PositionInfo,com.google.android.exoplayer2.Player.PositionInfo,@com.google.android.exoplayer2.Player.DiscontinuityReasonint)">onPositionDiscontinuity</a></span>​(<a href="Player.PositionInfo.html" title="class in com.google.android.exoplayer2">Player.PositionInfo</a> oldPosition,
|
||||
<a href="Player.PositionInfo.html" title="class in com.google.android.exoplayer2">Player.PositionInfo</a> newPosition,
|
||||
|
|
@ -340,7 +349,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when a position discontinuity occurs.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i24" class="altColor">
|
||||
<tr id="i25" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onRenderedFirstFrame()">onRenderedFirstFrame</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -348,28 +357,28 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
renderer was reset, or since the stream being rendered was changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i25" class="rowColor">
|
||||
<tr id="i26" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onRepeatModeChanged(@com.google.android.exoplayer2.Player.RepeatModeint)">onRepeatModeChanged</a></span>​(@com.google.android.exoplayer2.Player.RepeatMode int repeatMode)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value of <a href="Player.html#getRepeatMode()"><code>Player.getRepeatMode()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i26" class="altColor">
|
||||
<tr id="i27" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSeekBackIncrementChanged(long)">onSeekBackIncrementChanged</a></span>​(long seekBackIncrementMs)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value of <a href="Player.html#getSeekBackIncrement()"><code>Player.getSeekBackIncrement()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i27" class="rowColor">
|
||||
<tr id="i28" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSeekForwardIncrementChanged(long)">onSeekForwardIncrementChanged</a></span>​(long seekForwardIncrementMs)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value of <a href="Player.html#getSeekForwardIncrement()"><code>Player.getSeekForwardIncrement()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i28" class="altColor">
|
||||
<tr id="i29" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSeekProcessed()">onSeekProcessed</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -378,21 +387,21 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i29" class="rowColor">
|
||||
<tr id="i30" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onShuffleModeEnabledChanged(boolean)">onShuffleModeEnabledChanged</a></span>​(boolean shuffleModeEnabled)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value of <a href="Player.html#getShuffleModeEnabled()"><code>Player.getShuffleModeEnabled()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i30" class="altColor">
|
||||
<tr id="i31" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSkipSilenceEnabledChanged(boolean)">onSkipSilenceEnabledChanged</a></span>​(boolean skipSilenceEnabled)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when skipping silences is enabled or disabled in the audio stream.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i31" class="rowColor">
|
||||
<tr id="i32" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSurfaceSizeChanged(int,int)">onSurfaceSizeChanged</a></span>​(int width,
|
||||
int height)</code></th>
|
||||
|
|
@ -401,7 +410,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
rendered.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i32" class="altColor">
|
||||
<tr id="i33" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTimelineChanged(com.google.android.exoplayer2.Timeline,@com.google.android.exoplayer2.Player.TimelineChangeReasonint)">onTimelineChanged</a></span>​(<a href="Timeline.html" title="class in com.google.android.exoplayer2">Timeline</a> timeline,
|
||||
@com.google.android.exoplayer2.Player.TimelineChangeReason int reason)</code></th>
|
||||
|
|
@ -409,28 +418,18 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the timeline has been refreshed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i33" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTracksChanged(com.google.android.exoplayer2.source.TrackGroupArray,com.google.android.exoplayer2.trackselection.TrackSelectionArray)">onTracksChanged</a></span>​(<a href="source/TrackGroupArray.html" title="class in com.google.android.exoplayer2.source">TrackGroupArray</a> trackGroups,
|
||||
<a href="trackselection/TrackSelectionArray.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionArray</a> trackSelections)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#onTracksInfoChanged(com.google.android.exoplayer2.TracksInfo)"><code>onTracksInfoChanged(TracksInfo)</code></a> instead.</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i34" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTrackSelectionParametersChanged(com.google.android.exoplayer2.trackselection.TrackSelectionParameters)">onTrackSelectionParametersChanged</a></span>​(<a href="trackselection/TrackSelectionParameters.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionParameters</a> parameters)</code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTracksChanged(com.google.android.exoplayer2.Tracks)">onTracksChanged</a></span>​(<a href="Tracks.html" title="class in com.google.android.exoplayer2">Tracks</a> tracks)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value returned from <a href="Player.html#getTrackSelectionParameters()"><code>Player.getTrackSelectionParameters()</code></a> changes.</div>
|
||||
<div class="block">Called when the tracks change.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i35" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTracksInfoChanged(com.google.android.exoplayer2.TracksInfo)">onTracksInfoChanged</a></span>​(<a href="TracksInfo.html" title="class in com.google.android.exoplayer2">TracksInfo</a> tracksInfo)</code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTrackSelectionParametersChanged(com.google.android.exoplayer2.trackselection.TrackSelectionParameters)">onTrackSelectionParametersChanged</a></span>​(<a href="trackselection/TrackSelectionParameters.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionParameters</a> parameters)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the available or selected tracks change.</div>
|
||||
<div class="block">Called when the value returned from <a href="Player.html#getTrackSelectionParameters()"><code>Player.getTrackSelectionParameters()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i36" class="altColor">
|
||||
|
|
@ -552,46 +551,20 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="onTracksChanged(com.google.android.exoplayer2.source.TrackGroupArray,com.google.android.exoplayer2.trackselection.TrackSelectionArray)">
|
||||
<a id="onTracksChanged(com.google.android.exoplayer2.Tracks)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>onTracksChanged</h4>
|
||||
<pre class="methodSignature"><a href="https://developer.android.com/reference/java/lang/Deprecated.html" title="class or interface in java.lang" class="externalLink" target="_top">@Deprecated</a>
|
||||
default void onTracksChanged​(<a href="source/TrackGroupArray.html" title="class in com.google.android.exoplayer2.source">TrackGroupArray</a> trackGroups,
|
||||
<a href="trackselection/TrackSelectionArray.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionArray</a> trackSelections)</pre>
|
||||
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#onTracksInfoChanged(com.google.android.exoplayer2.TracksInfo)"><code>onTracksInfoChanged(TracksInfo)</code></a> instead.</div>
|
||||
</div>
|
||||
<div class="block">Called when the available or selected tracks change.
|
||||
<pre class="methodSignature">default void onTracksChanged​(<a href="Tracks.html" title="class in com.google.android.exoplayer2">Tracks</a> tracks)</pre>
|
||||
<div class="block">Called when the tracks change.
|
||||
|
||||
<p><a href="#onEvents(com.google.android.exoplayer2.Player,com.google.android.exoplayer2.Player.Events)"><code>onEvents(Player, Events)</code></a> will also be called to report this event along with
|
||||
other events that happen in the same <a href="https://developer.android.com/reference/android/os/Looper.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Looper</code></a> message queue iteration.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>trackGroups</code> - The available tracks. Never null, but may be of length zero.</dd>
|
||||
<dd><code>trackSelections</code> - The selected tracks. Never null, but may contain null elements. A
|
||||
concrete implementation may include null elements if it has a fixed number of renderer
|
||||
components, wishes to report a TrackSelection for each of them, and has one or more
|
||||
renderer components that is not assigned any selected tracks.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="onTracksInfoChanged(com.google.android.exoplayer2.TracksInfo)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>onTracksInfoChanged</h4>
|
||||
<pre class="methodSignature">default void onTracksInfoChanged​(<a href="TracksInfo.html" title="class in com.google.android.exoplayer2">TracksInfo</a> tracksInfo)</pre>
|
||||
<div class="block">Called when the available or selected tracks change.
|
||||
|
||||
<p><a href="#onEvents(com.google.android.exoplayer2.Player,com.google.android.exoplayer2.Player.Events)"><code>onEvents(Player, Events)</code></a> will also be called to report this event along with
|
||||
other events that happen in the same <a href="https://developer.android.com/reference/android/os/Looper.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Looper</code></a> message queue iteration.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>tracksInfo</code> - The available tracks information. Never null, but may be of length zero.</dd>
|
||||
<dd><code>tracks</code> - The available tracks information. Never null, but may be of length zero.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -604,11 +577,9 @@ default void onTracksChanged​(<a href="source/TrackGroupArray.ht
|
|||
<pre class="methodSignature">default void onMediaMetadataChanged​(<a href="MediaMetadata.html" title="class in com.google.android.exoplayer2">MediaMetadata</a> mediaMetadata)</pre>
|
||||
<div class="block">Called when the combined <a href="MediaMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaMetadata</code></a> changes.
|
||||
|
||||
<p>The provided <a href="MediaMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaMetadata</code></a> is a combination of the <a href="MediaItem.html#mediaMetadata"><code>MediaItem.mediaMetadata</code></a>
|
||||
and the static and dynamic metadata from the <a href="trackselection/TrackSelection.html#getFormat(int)"><code>track
|
||||
selections' formats</code></a> and <a href="#onMetadata(com.google.android.exoplayer2.metadata.Metadata)"><code>onMetadata(Metadata)</code></a>. If a field is populated in
|
||||
the <a href="MediaItem.html#mediaMetadata"><code>MediaItem.mediaMetadata</code></a>, it will be prioritised above the same field coming from
|
||||
static or dynamic metadata.
|
||||
<p>The provided <a href="MediaMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaMetadata</code></a> is a combination of the <a href="MediaItem.html#mediaMetadata"><code>MediaItem metadata</code></a>, the static metadata in the media's <a href="Format.html#metadata"><code>Format</code></a>, and
|
||||
any timed metadata that has been parsed from the media and output via <a href="#onMetadata(com.google.android.exoplayer2.metadata.Metadata)"><code>onMetadata(Metadata)</code></a>. If a field is populated in the <a href="MediaItem.html#mediaMetadata"><code>MediaItem.mediaMetadata</code></a>, it will be prioritised above the same field coming from static or
|
||||
timed metadata.
|
||||
|
||||
<p>This method may be called multiple times in quick succession.
|
||||
|
||||
|
|
@ -1151,18 +1122,34 @@ default void onSeekProcessed()</pre>
|
|||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>onCues</h4>
|
||||
<pre class="methodSignature">default void onCues​(<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="text/Cue.html" title="class in com.google.android.exoplayer2.text" target="_top">Cue</a>> cues)</pre>
|
||||
<pre class="methodSignature"><a href="https://developer.android.com/reference/java/lang/Deprecated.html" title="class or interface in java.lang" class="externalLink" target="_top">@Deprecated</a>
|
||||
default void onCues​(<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="text/Cue.html" title="class in com.google.android.exoplayer2.text" target="_top">Cue</a>> cues)</pre>
|
||||
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#onCues(com.google.android.exoplayer2.text.CueGroup)"><code>onCues(CueGroup)</code></a> instead.</div>
|
||||
</div>
|
||||
<div class="block">Called when there is a change in the <a href="text/Cue.html" title="class in com.google.android.exoplayer2.text"><code>Cues</code></a>.
|
||||
|
||||
<p><code>cues</code> is in ascending order of priority. If any of the cue boxes overlap when
|
||||
displayed, the <a href="text/Cue.html" title="class in com.google.android.exoplayer2.text"><code>Cue</code></a> nearer the end of the list should be shown on top.
|
||||
<p>Both <a href="#onCues(java.util.List)"><code>onCues(List)</code></a> and <a href="#onCues(com.google.android.exoplayer2.text.CueGroup)"><code>onCues(CueGroup)</code></a> are called when there is a change
|
||||
in the cues. You should only implement one or the other.
|
||||
|
||||
<p><a href="#onEvents(com.google.android.exoplayer2.Player,com.google.android.exoplayer2.Player.Events)"><code>onEvents(Player, Events)</code></a> will also be called to report this event along with
|
||||
other events that happen in the same <a href="https://developer.android.com/reference/android/os/Looper.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Looper</code></a> message queue iteration.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="onCues(com.google.android.exoplayer2.text.CueGroup)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>onCues</h4>
|
||||
<pre class="methodSignature">default void onCues​(<a href="text/CueGroup.html" title="class in com.google.android.exoplayer2.text">CueGroup</a> cueGroup)</pre>
|
||||
<div class="block">Called when there is a change in the <a href="text/CueGroup.html" title="class in com.google.android.exoplayer2.text"><code>CueGroup</code></a>.
|
||||
|
||||
<p>Both <a href="#onCues(java.util.List)"><code>onCues(List)</code></a> and <a href="#onCues(com.google.android.exoplayer2.text.CueGroup)"><code>onCues(CueGroup)</code></a> are called when there is a change
|
||||
in the cues. You should only implement one or the other.
|
||||
|
||||
<p><a href="#onEvents(com.google.android.exoplayer2.Player,com.google.android.exoplayer2.Player.Events)"><code>onEvents(Player, Events)</code></a> will also be called to report this event along with
|
||||
other events that happen in the same <a href="https://developer.android.com/reference/android/os/Looper.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Looper</code></a> message queue iteration.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>cues</code> - The <a href="text/Cue.html" title="class in com.google.android.exoplayer2.text"><code>Cues</code></a>. May be empty.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="onMetadata(com.google.android.exoplayer2.metadata.Metadata)">
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -185,13 +185,6 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<div class="block">Object that can restore a <a href="Rating.html" title="class in com.google.android.exoplayer2"><code>Rating</code></a> from a <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static float</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#RATING_UNSET">RATING_UNSET</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">A float value that denotes the rating is unset.</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -248,20 +241,6 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Field Detail</h3>
|
||||
<a id="RATING_UNSET">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>RATING_UNSET</h4>
|
||||
<pre>public static final float RATING_UNSET</pre>
|
||||
<div class="block">A float value that denotes the rating is unset.</div>
|
||||
<dl>
|
||||
<dt><span class="seeLabel">See Also:</span></dt>
|
||||
<dd><a href="../../../../constant-values.html#com.google.android.exoplayer2.Rating.RATING_UNSET">Constant Field Values</a></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="CREATOR">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</tr>
|
||||
<tr id="i0" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSleep(long)">onSleep</a></span>​(long wakeupDeadlineMs)</code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSleep()">onSleep</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">The renderer no longer needs to render until the next wakeup.</div>
|
||||
</td>
|
||||
|
|
@ -181,21 +181,16 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Method Detail</h3>
|
||||
<a id="onSleep(long)">
|
||||
<a id="onSleep()">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>onSleep</h4>
|
||||
<pre class="methodSignature">void onSleep​(long wakeupDeadlineMs)</pre>
|
||||
<pre class="methodSignature">void onSleep()</pre>
|
||||
<div class="block">The renderer no longer needs to render until the next wakeup.
|
||||
|
||||
<p>Must be called from the thread ExoPlayer invokes the renderer from.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>wakeupDeadlineMs</code> - Maximum time in milliseconds until <a href="#onWakeup()"><code>onWakeup()</code></a> will be
|
||||
called.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="onWakeup()">
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -186,13 +186,6 @@ extends <a href="Rating.html" title="class in com.google.android.exoplayer2">Rat
|
|||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="fields.inherited.from.class.com.google.android.exoplayer2.Rating">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Fields inherited from class com.google.android.exoplayer2.<a href="Rating.html" title="class in com.google.android.exoplayer2">Rating</a></h3>
|
||||
<code><a href="Rating.html#RATING_UNSET">RATING_UNSET</a></code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -186,13 +186,6 @@ extends <a href="Rating.html" title="class in com.google.android.exoplayer2">Rat
|
|||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="fields.inherited.from.class.com.google.android.exoplayer2.Rating">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Fields inherited from class com.google.android.exoplayer2.<a href="Rating.html" title="class in com.google.android.exoplayer2">Rating</a></h3>
|
||||
<code><a href="Rating.html#RATING_UNSET">RATING_UNSET</a></code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head><!-- start favicons snippet, use https://realfavicongenerator.net/ --><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"><link rel="manifest" href="/assets/site.webmanifest"><link rel="mask-icon" href="/assets/safari-pinned-tab.svg" color="#fc4d50"><link rel="shortcut icon" href="/assets/favicon.ico"><meta name="msapplication-TileColor" content="#ffc40d"><meta name="msapplication-config" content="/assets/browserconfig.xml"><meta name="theme-color" content="#ffffff"><!-- end favicons snippet -->
|
||||
<title>TracksInfo.TrackGroupInfo (ExoPlayer library)</title>
|
||||
<title>Tracks.Group (ExoPlayer library)</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
|
||||
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
|
||||
|
|
@ -19,13 +19,13 @@
|
|||
<script type="text/javascript"><!--
|
||||
try {
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="TracksInfo.TrackGroupInfo (ExoPlayer library)";
|
||||
parent.document.title="Tracks.Group (ExoPlayer library)";
|
||||
}
|
||||
}
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10};
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
|
|
@ -114,14 +114,14 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<main role="main">
|
||||
<div class="header">
|
||||
<div class="subTitle"><span class="packageLabelInType">Package</span> <a href="package-summary.html">com.google.android.exoplayer2</a></div>
|
||||
<h2 title="Class TracksInfo.TrackGroupInfo" class="title">Class TracksInfo.TrackGroupInfo</h2>
|
||||
<h2 title="Class Tracks.Group" class="title">Class Tracks.Group</h2>
|
||||
</div>
|
||||
<div class="contentContainer">
|
||||
<ul class="inheritance">
|
||||
<li><a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">java.lang.Object</a></li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li>com.google.android.exoplayer2.TracksInfo.TrackGroupInfo</li>
|
||||
<li>com.google.android.exoplayer2.Tracks.Group</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -134,15 +134,15 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</dl>
|
||||
<dl>
|
||||
<dt>Enclosing class:</dt>
|
||||
<dd><a href="TracksInfo.html" title="class in com.google.android.exoplayer2">TracksInfo</a></dd>
|
||||
<dd><a href="Tracks.html" title="class in com.google.android.exoplayer2">Tracks</a></dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<pre>public static final class <span class="typeNameLabel">TracksInfo.TrackGroupInfo</span>
|
||||
<pre>public static final class <span class="typeNameLabel">Tracks.Group</span>
|
||||
extends <a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a>
|
||||
implements <a href="Bundleable.html" title="interface in com.google.android.exoplayer2">Bundleable</a></pre>
|
||||
<div class="block">Information about a single group of tracks, including the underlying <a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a>, the
|
||||
<a href="C.TrackType.html" title="annotation in com.google.android.exoplayer2"><code>type</code></a> of tracks it contains, and the level to which each track is supported
|
||||
by the player.</div>
|
||||
level to which each track is supported by the player, and whether any of the tracks are
|
||||
selected.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -181,10 +181,17 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<th class="colLast" scope="col">Description</th>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2">Bundleable.Creator</a><<a href="TracksInfo.TrackGroupInfo.html" title="class in com.google.android.exoplayer2">TracksInfo.TrackGroupInfo</a>></code></td>
|
||||
<td class="colFirst"><code>static <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2">Bundleable.Creator</a><<a href="Tracks.Group.html" title="class in com.google.android.exoplayer2">Tracks.Group</a>></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#CREATOR">CREATOR</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Object that can restores a <code>TracksInfo</code> from a <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
<div class="block">Object that can restore a group of tracks from a <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#length">length</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">The number of tracks in the group.</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -205,12 +212,12 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<th class="colLast" scope="col">Description</th>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(com.google.android.exoplayer2.source.TrackGroup,@com.google.android.exoplayer2.C.FormatSupportint%5B%5D,@com.google.android.exoplayer2.C.TrackTypeint,boolean%5B%5D)">TrackGroupInfo</a></span>​(<a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source">TrackGroup</a> trackGroup,
|
||||
@com.google.android.exoplayer2.C.FormatSupport int[] trackSupport,
|
||||
@com.google.android.exoplayer2.C.TrackType int trackType,
|
||||
boolean[] tracksSelected)</code></th>
|
||||
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(com.google.android.exoplayer2.source.TrackGroup,boolean,@com.google.android.exoplayer2.C.FormatSupportint%5B%5D,boolean%5B%5D)">Group</a></span>​(<a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source">TrackGroup</a> mediaTrackGroup,
|
||||
boolean adaptiveSupported,
|
||||
@com.google.android.exoplayer2.C.FormatSupport int[] trackSupport,
|
||||
boolean[] trackSelected)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Constructs a TrackGroupInfo.</div>
|
||||
<div class="block">Constructs an instance.</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -238,38 +245,52 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
</tr>
|
||||
<tr id="i1" class="rowColor">
|
||||
<td class="colFirst"><code><a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source">TrackGroup</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTrackGroup()">getTrackGroup</a></span>()</code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMediaTrackGroup()">getMediaTrackGroup</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns the <a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a> described by this <code>TrackGroupInfo</code>.</div>
|
||||
<div class="block">Returns the underlying <a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a> defined by the media.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i2" class="altColor">
|
||||
<td class="colFirst"><code><a href="Format.html" title="class in com.google.android.exoplayer2">Format</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTrackFormat(int)">getTrackFormat</a></span>​(int trackIndex)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns the <a href="Format.html" title="class in com.google.android.exoplayer2"><code>Format</code></a> for a specified track.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i3" class="rowColor">
|
||||
<td class="colFirst"><code>@com.google.android.exoplayer2.C.FormatSupport int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTrackSupport(int)">getTrackSupport</a></span>​(int trackIndex)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns the level of support for a specified track.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i3" class="rowColor">
|
||||
<tr id="i4" class="altColor">
|
||||
<td class="colFirst"><code>@com.google.android.exoplayer2.C.TrackType int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTrackType()">getTrackType</a></span>()</code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getType()">getType</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns the <a href="C.TrackType.html" title="annotation in com.google.android.exoplayer2"><code>C.TrackType</code></a> of the group.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i4" class="altColor">
|
||||
<tr id="i5" class="rowColor">
|
||||
<td class="colFirst"><code>int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hashCode()">hashCode</a></span>()</code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<tr id="i6" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isAdaptiveSupported()">isAdaptiveSupported</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns whether adaptive selections containing more than one track are supported.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i7" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isSelected()">isSelected</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns whether at least one track in the group is selected for playback.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i6" class="altColor">
|
||||
<tr id="i8" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isSupported()">isSupported</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -277,21 +298,21 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
the advertised capabilities of the device.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i7" class="rowColor">
|
||||
<tr id="i9" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isSupported(boolean)">isSupported</a></span>​(boolean allowExceedsCapabilities)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns whether at least one track in the group is supported for playback.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i8" class="altColor">
|
||||
<tr id="i10" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isTrackSelected(int)">isTrackSelected</a></span>​(int trackIndex)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns whether a specified track is selected for playback.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i9" class="rowColor">
|
||||
<tr id="i11" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isTrackSupported(int)">isTrackSupported</a></span>​(int trackIndex)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -299,7 +320,7 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
capabilities of the device.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i10" class="altColor">
|
||||
<tr id="i12" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isTrackSupported(int,boolean)">isTrackSupported</a></span>​(int trackIndex,
|
||||
boolean allowExceedsCapabilities)</code></th>
|
||||
|
|
@ -307,7 +328,7 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<div class="block">Returns whether a specified track is supported for playback.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i11" class="rowColor">
|
||||
<tr id="i13" class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top">Bundle</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toBundle()">toBundle</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -338,14 +359,24 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Field Detail</h3>
|
||||
<a id="length">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>length</h4>
|
||||
<pre>public final int length</pre>
|
||||
<div class="block">The number of tracks in the group.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="CREATOR">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>CREATOR</h4>
|
||||
<pre>public static final <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2">Bundleable.Creator</a><<a href="TracksInfo.TrackGroupInfo.html" title="class in com.google.android.exoplayer2">TracksInfo.TrackGroupInfo</a>> CREATOR</pre>
|
||||
<div class="block">Object that can restores a <code>TracksInfo</code> from a <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
<pre>public static final <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2">Bundleable.Creator</a><<a href="Tracks.Group.html" title="class in com.google.android.exoplayer2">Tracks.Group</a>> CREATOR</pre>
|
||||
<div class="block">Object that can restore a group of tracks from a <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
@ -358,24 +389,25 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Constructor Detail</h3>
|
||||
<a id="<init>(com.google.android.exoplayer2.source.TrackGroup,@com.google.android.exoplayer2.C.FormatSupportint[],@com.google.android.exoplayer2.C.TrackTypeint,boolean[])">
|
||||
<a id="<init>(com.google.android.exoplayer2.source.TrackGroup,boolean,@com.google.android.exoplayer2.C.FormatSupportint[],boolean[])">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>TrackGroupInfo</h4>
|
||||
<pre>public TrackGroupInfo​(<a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source">TrackGroup</a> trackGroup,
|
||||
<a href="C.FormatSupport.html" title="annotation in com.google.android.exoplayer2">@FormatSupport</a>
|
||||
@com.google.android.exoplayer2.C.FormatSupport int[] trackSupport,
|
||||
@com.google.android.exoplayer2.C.TrackType int trackType,
|
||||
boolean[] tracksSelected)</pre>
|
||||
<div class="block">Constructs a TrackGroupInfo.</div>
|
||||
<h4>Group</h4>
|
||||
<pre>public Group​(<a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source">TrackGroup</a> mediaTrackGroup,
|
||||
boolean adaptiveSupported,
|
||||
<a href="C.FormatSupport.html" title="annotation in com.google.android.exoplayer2">@FormatSupport</a>
|
||||
@com.google.android.exoplayer2.C.FormatSupport int[] trackSupport,
|
||||
boolean[] trackSelected)</pre>
|
||||
<div class="block">Constructs an instance.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>trackGroup</code> - The <a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a> described.</dd>
|
||||
<dd><code>trackSupport</code> - The <a href="C.FormatSupport.html" title="annotation in com.google.android.exoplayer2"><code>C.FormatSupport</code></a> of each track in the <code>trackGroup</code>.</dd>
|
||||
<dd><code>trackType</code> - The <a href="C.TrackType.html" title="annotation in com.google.android.exoplayer2"><code>C.TrackType</code></a> of the tracks in the <code>trackGroup</code>.</dd>
|
||||
<dd><code>tracksSelected</code> - Whether a track is selected for each track in <code>trackGroup</code>.</dd>
|
||||
<dd><code>mediaTrackGroup</code> - The underlying <a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a> defined by the media.</dd>
|
||||
<dd><code>adaptiveSupported</code> - Whether the player supports adaptive selections containing more than
|
||||
one track in the group.</dd>
|
||||
<dd><code>trackSupport</code> - The <a href="C.FormatSupport.html" title="annotation in com.google.android.exoplayer2"><code>C.FormatSupport</code></a> of each track in the group.</dd>
|
||||
<dd><code>trackSelected</code> - Whether each track in the <code>trackGroup</code> is selected.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -389,14 +421,35 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Method Detail</h3>
|
||||
<a id="getTrackGroup()">
|
||||
<a id="getMediaTrackGroup()">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getTrackGroup</h4>
|
||||
<pre class="methodSignature">public <a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source">TrackGroup</a> getTrackGroup()</pre>
|
||||
<div class="block">Returns the <a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a> described by this <code>TrackGroupInfo</code>.</div>
|
||||
<h4>getMediaTrackGroup</h4>
|
||||
<pre class="methodSignature">public <a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source">TrackGroup</a> getMediaTrackGroup()</pre>
|
||||
<div class="block">Returns the underlying <a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a> defined by the media.
|
||||
|
||||
<p>Unlike this class, <a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a> only contains information defined by the media
|
||||
itself, and does not contain runtime information such as which tracks are supported and
|
||||
currently selected. This makes it suitable for use as a <code>key</code> in certain <code>(key,
|
||||
value)</code> data structures.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="getTrackFormat(int)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getTrackFormat</h4>
|
||||
<pre class="methodSignature">public <a href="Format.html" title="class in com.google.android.exoplayer2">Format</a> getTrackFormat​(int trackIndex)</pre>
|
||||
<div class="block">Returns the <a href="Format.html" title="class in com.google.android.exoplayer2"><code>Format</code></a> for a specified track.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>trackIndex</code> - The index of the track in the group.</dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
<dd>The <a href="Format.html" title="class in com.google.android.exoplayer2"><code>Format</code></a> of the track.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="getTrackSupport(int)">
|
||||
|
|
@ -410,7 +463,7 @@ public @com.google.android.exoplayer2.C.FormatSupport int getTrackSupp
|
|||
<div class="block">Returns the level of support for a specified track.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>trackIndex</code> - The index of the track in the <a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a>.</dd>
|
||||
<dd><code>trackIndex</code> - The index of the track in the group.</dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
<dd>The <a href="C.FormatSupport.html" title="annotation in com.google.android.exoplayer2"><code>C.FormatSupport</code></a> of the track.</dd>
|
||||
</dl>
|
||||
|
|
@ -427,7 +480,7 @@ public @com.google.android.exoplayer2.C.FormatSupport int getTrackSupp
|
|||
capabilities of the device. Equivalent to <code>isTrackSupported(trackIndex, false)</code>.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>trackIndex</code> - The index of the track in the <a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a>.</dd>
|
||||
<dd><code>trackIndex</code> - The index of the track in the group.</dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
<dd>True if the track's format can be played, false otherwise.</dd>
|
||||
</dl>
|
||||
|
|
@ -444,7 +497,7 @@ public @com.google.android.exoplayer2.C.FormatSupport int getTrackSupp
|
|||
<div class="block">Returns whether a specified track is supported for playback.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>trackIndex</code> - The index of the track in the <a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a>.</dd>
|
||||
<dd><code>trackIndex</code> - The index of the track in the group.</dd>
|
||||
<dd><code>allowExceedsCapabilities</code> - Whether to consider the track as supported if it has a
|
||||
supported <a href="Format.html#sampleMimeType"><code>MIME type</code></a>, but otherwise exceeds the advertised
|
||||
capabilities of the device. For example, a video track for which there's a corresponding
|
||||
|
|
@ -465,6 +518,16 @@ public @com.google.android.exoplayer2.C.FormatSupport int getTrackSupp
|
|||
<div class="block">Returns whether at least one track in the group is selected for playback.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="isAdaptiveSupported()">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isAdaptiveSupported</h4>
|
||||
<pre class="methodSignature">public boolean isAdaptiveSupported()</pre>
|
||||
<div class="block">Returns whether adaptive selections containing more than one track are supported.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="isSupported()">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
|
@ -512,19 +575,19 @@ public @com.google.android.exoplayer2.C.FormatSupport int getTrackSupp
|
|||
example, ExoPlayer provides this information via <code>ExoTrackSelection.getSelectedFormat</code>.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>trackIndex</code> - The index of the track in the <a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a>.</dd>
|
||||
<dd><code>trackIndex</code> - The index of the track in the group.</dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
<dd>True if the track is selected, false otherwise.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="getTrackType()">
|
||||
<a id="getType()">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getTrackType</h4>
|
||||
<pre class="methodSignature">public @com.google.android.exoplayer2.C.TrackType int getTrackType()</pre>
|
||||
<h4>getType</h4>
|
||||
<pre class="methodSignature">public @com.google.android.exoplayer2.C.TrackType int getType()</pre>
|
||||
<div class="block">Returns the <a href="C.TrackType.html" title="annotation in com.google.android.exoplayer2"><code>C.TrackType</code></a> of the group.</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head><!-- start favicons snippet, use https://realfavicongenerator.net/ --><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"><link rel="manifest" href="/assets/site.webmanifest"><link rel="mask-icon" href="/assets/safari-pinned-tab.svg" color="#fc4d50"><link rel="shortcut icon" href="/assets/favicon.ico"><meta name="msapplication-TileColor" content="#ffc40d"><meta name="msapplication-config" content="/assets/browserconfig.xml"><meta name="theme-color" content="#ffffff"><!-- end favicons snippet -->
|
||||
<title>TracksInfo (ExoPlayer library)</title>
|
||||
<title>Tracks (ExoPlayer library)</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
|
||||
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
|
||||
|
|
@ -19,14 +19,14 @@
|
|||
<script type="text/javascript"><!--
|
||||
try {
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="TracksInfo (ExoPlayer library)";
|
||||
parent.document.title="Tracks (ExoPlayer library)";
|
||||
}
|
||||
}
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":42,"i9":42,"i10":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
var tableTab = "tableTab";
|
||||
|
|
@ -114,14 +114,14 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<main role="main">
|
||||
<div class="header">
|
||||
<div class="subTitle"><span class="packageLabelInType">Package</span> <a href="package-summary.html">com.google.android.exoplayer2</a></div>
|
||||
<h2 title="Class TracksInfo" class="title">Class TracksInfo</h2>
|
||||
<h2 title="Class Tracks" class="title">Class Tracks</h2>
|
||||
</div>
|
||||
<div class="contentContainer">
|
||||
<ul class="inheritance">
|
||||
<li><a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">java.lang.Object</a></li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li>com.google.android.exoplayer2.TracksInfo</li>
|
||||
<li>com.google.android.exoplayer2.Tracks</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -133,7 +133,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<dd><code><a href="Bundleable.html" title="interface in com.google.android.exoplayer2">Bundleable</a></code></dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<pre>public final class <span class="typeNameLabel">TracksInfo</span>
|
||||
<pre>public final class <span class="typeNameLabel">Tracks</span>
|
||||
extends <a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a>
|
||||
implements <a href="Bundleable.html" title="interface in com.google.android.exoplayer2">Bundleable</a></pre>
|
||||
<div class="block">Information about groups of tracks.</div>
|
||||
|
|
@ -159,11 +159,11 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static class </code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="TracksInfo.TrackGroupInfo.html" title="class in com.google.android.exoplayer2">TracksInfo.TrackGroupInfo</a></span></code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="Tracks.Group.html" title="class in com.google.android.exoplayer2">Tracks.Group</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Information about a single group of tracks, including the underlying <a href="source/TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a>, the
|
||||
<a href="C.TrackType.html" title="annotation in com.google.android.exoplayer2"><code>type</code></a> of tracks it contains, and the level to which each track is supported
|
||||
by the player.</div>
|
||||
level to which each track is supported by the player, and whether any of the tracks are
|
||||
selected.</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -192,17 +192,17 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<th class="colLast" scope="col">Description</th>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2">Bundleable.Creator</a><<a href="TracksInfo.html" title="class in com.google.android.exoplayer2">TracksInfo</a>></code></td>
|
||||
<td class="colFirst"><code>static <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2">Bundleable.Creator</a><<a href="Tracks.html" title="class in com.google.android.exoplayer2">Tracks</a>></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#CREATOR">CREATOR</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Object that can restore a <code>TracksInfo</code> from a <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
<div class="block">Object that can restore tracks from a <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static <a href="TracksInfo.html" title="class in com.google.android.exoplayer2">TracksInfo</a></code></td>
|
||||
<td class="colFirst"><code>static <a href="Tracks.html" title="class in com.google.android.exoplayer2">Tracks</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#EMPTY">EMPTY</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">An <code>TrackInfo</code> that contains no tracks.</div>
|
||||
<div class="block">Empty tracks.</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -223,7 +223,7 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<th class="colLast" scope="col">Description</th>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(java.util.List)">TracksInfo</a></span>​(<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="TracksInfo.TrackGroupInfo.html" title="class in com.google.android.exoplayer2" target="_top">TracksInfo.TrackGroupInfo</a>> trackGroupInfos)</code></th>
|
||||
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(java.util.List)">Tracks</a></span>​(<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="Tracks.Group.html" title="class in com.google.android.exoplayer2" target="_top">Tracks.Group</a>> groups)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Constructs an instance.</div>
|
||||
</td>
|
||||
|
|
@ -240,7 +240,7 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
</a>
|
||||
<h3>Method Summary</h3>
|
||||
<table class="memberSummary">
|
||||
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
|
||||
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd"> </span></span></caption>
|
||||
<tr>
|
||||
<th class="colFirst" scope="col">Modifier and Type</th>
|
||||
<th class="colSecond" scope="col">Method</th>
|
||||
|
|
@ -248,45 +248,77 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
</tr>
|
||||
<tr id="i0" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#containsType(@com.google.android.exoplayer2.C.TrackTypeint)">containsType</a></span>​(@com.google.android.exoplayer2.C.TrackType int trackType)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns true if there are tracks of type <code>trackType</code>, and false otherwise.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i1" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equals(java.lang.Object)">equals</a></span>​(<a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a> other)</code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr id="i1" class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://guava.dev/releases/31.0.1-android/api/docs/com/google/common/collect/ImmutableList.html?is-external=true" title="class or interface in com.google.common.collect" class="externalLink">ImmutableList</a><<a href="TracksInfo.TrackGroupInfo.html" title="class in com.google.android.exoplayer2">TracksInfo.TrackGroupInfo</a>></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTrackGroupInfos()">getTrackGroupInfos</a></span>()</code></th>
|
||||
<tr id="i2" class="altColor">
|
||||
<td class="colFirst"><code><a href="https://guava.dev/releases/31.0.1-android/api/docs/com/google/common/collect/ImmutableList.html?is-external=true" title="class or interface in com.google.common.collect" class="externalLink">ImmutableList</a><<a href="Tracks.Group.html" title="class in com.google.android.exoplayer2">Tracks.Group</a>></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getGroups()">getGroups</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns the <a href="TracksInfo.TrackGroupInfo.html" title="class in com.google.android.exoplayer2"><code>TrackGroupInfos</code></a> describing the groups of tracks.</div>
|
||||
<div class="block">Returns the <a href="Tracks.Group.html" title="class in com.google.android.exoplayer2"><code>groups</code></a> of tracks.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i2" class="altColor">
|
||||
<tr id="i3" class="rowColor">
|
||||
<td class="colFirst"><code>int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hashCode()">hashCode</a></span>()</code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr id="i3" class="rowColor">
|
||||
<tr id="i4" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isEmpty()">isEmpty</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns <code>true</code> if there are no tracks, and <code>false</code> otherwise.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isTypeSelected(@com.google.android.exoplayer2.C.TrackTypeint)">isTypeSelected</a></span>​(@com.google.android.exoplayer2.C.TrackType int trackType)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns true if at least one track of the type <code>trackType</code> is selected for playback.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i4" class="altColor">
|
||||
<tr id="i6" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isTypeSupported(@com.google.android.exoplayer2.C.TrackTypeint)">isTypeSupported</a></span>​(@com.google.android.exoplayer2.C.TrackType int trackType)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns true if at least one track of type <code>trackType</code> is <a href="Tracks.Group.html#isTrackSupported(int)"><code>supported</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i7" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isTypeSupported(@com.google.android.exoplayer2.C.TrackTypeint,boolean)">isTypeSupported</a></span>​(@com.google.android.exoplayer2.C.TrackType int trackType,
|
||||
boolean allowExceedsCapabilities)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns true if at least one track of type <code>trackType</code> is <a href="Tracks.Group.html#isTrackSupported(int,boolean)"><code>supported</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i8" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isTypeSupportedOrEmpty(@com.google.android.exoplayer2.C.TrackTypeint)">isTypeSupportedOrEmpty</a></span>​(@com.google.android.exoplayer2.C.TrackType int trackType)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns true if at least one track of type <code>trackType</code> is <a href="TracksInfo.TrackGroupInfo.html#isTrackSupported(int)"><code>supported</code></a> or if there are no tracks of this type.</div>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#containsType(@com.google.android.exoplayer2.C.TrackTypeint)"><code>containsType(int)</code></a> and <a href="#isTypeSupported(@com.google.android.exoplayer2.C.TrackTypeint)"><code>isTypeSupported(int)</code></a>.</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<tr id="i9" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isTypeSupportedOrEmpty(@com.google.android.exoplayer2.C.TrackTypeint,boolean)">isTypeSupportedOrEmpty</a></span>​(@com.google.android.exoplayer2.C.TrackType int trackType,
|
||||
boolean allowExceedsCapabilities)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns true if at least one track of type <code>trackType</code> is <a href="TracksInfo.TrackGroupInfo.html#isTrackSupported(int,boolean)"><code>supported</code></a> or if there are no tracks of this
|
||||
type.</div>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#containsType(@com.google.android.exoplayer2.C.TrackTypeint)"><code>containsType(int)</code></a> and <a href="#isTypeSupported(@com.google.android.exoplayer2.C.TrackTypeint,boolean)"><code>isTypeSupported(int, boolean)</code></a>.</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i6" class="altColor">
|
||||
<tr id="i10" class="altColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top">Bundle</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toBundle()">toBundle</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -323,8 +355,8 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>EMPTY</h4>
|
||||
<pre>public static final <a href="TracksInfo.html" title="class in com.google.android.exoplayer2">TracksInfo</a> EMPTY</pre>
|
||||
<div class="block">An <code>TrackInfo</code> that contains no tracks.</div>
|
||||
<pre>public static final <a href="Tracks.html" title="class in com.google.android.exoplayer2">Tracks</a> EMPTY</pre>
|
||||
<div class="block">Empty tracks.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="CREATOR">
|
||||
|
|
@ -333,8 +365,8 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>CREATOR</h4>
|
||||
<pre>public static final <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2">Bundleable.Creator</a><<a href="TracksInfo.html" title="class in com.google.android.exoplayer2">TracksInfo</a>> CREATOR</pre>
|
||||
<div class="block">Object that can restore a <code>TracksInfo</code> from a <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
<pre>public static final <a href="Bundleable.Creator.html" title="interface in com.google.android.exoplayer2">Bundleable.Creator</a><<a href="Tracks.html" title="class in com.google.android.exoplayer2">Tracks</a>> CREATOR</pre>
|
||||
<div class="block">Object that can restore tracks from a <a href="https://developer.android.com/reference/android/os/Bundle.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Bundle</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
@ -352,13 +384,12 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
</a>
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>TracksInfo</h4>
|
||||
<pre>public TracksInfo​(<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="TracksInfo.TrackGroupInfo.html" title="class in com.google.android.exoplayer2" target="_top">TracksInfo.TrackGroupInfo</a>> trackGroupInfos)</pre>
|
||||
<h4>Tracks</h4>
|
||||
<pre>public Tracks​(<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="Tracks.Group.html" title="class in com.google.android.exoplayer2" target="_top">Tracks.Group</a>> groups)</pre>
|
||||
<div class="block">Constructs an instance.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>trackGroupInfos</code> - The <a href="TracksInfo.TrackGroupInfo.html" title="class in com.google.android.exoplayer2"><code>TrackGroupInfos</code></a> describing the groups of
|
||||
tracks.</dd>
|
||||
<dd><code>groups</code> - The <a href="Tracks.Group.html" title="class in com.google.android.exoplayer2"><code>groups</code></a> of tracks.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -372,36 +403,55 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Method Detail</h3>
|
||||
<a id="getTrackGroupInfos()">
|
||||
<a id="getGroups()">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getTrackGroupInfos</h4>
|
||||
<pre class="methodSignature">public <a href="https://guava.dev/releases/31.0.1-android/api/docs/com/google/common/collect/ImmutableList.html?is-external=true" title="class or interface in com.google.common.collect" class="externalLink">ImmutableList</a><<a href="TracksInfo.TrackGroupInfo.html" title="class in com.google.android.exoplayer2">TracksInfo.TrackGroupInfo</a>> getTrackGroupInfos()</pre>
|
||||
<div class="block">Returns the <a href="TracksInfo.TrackGroupInfo.html" title="class in com.google.android.exoplayer2"><code>TrackGroupInfos</code></a> describing the groups of tracks.</div>
|
||||
<h4>getGroups</h4>
|
||||
<pre class="methodSignature">public <a href="https://guava.dev/releases/31.0.1-android/api/docs/com/google/common/collect/ImmutableList.html?is-external=true" title="class or interface in com.google.common.collect" class="externalLink">ImmutableList</a><<a href="Tracks.Group.html" title="class in com.google.android.exoplayer2">Tracks.Group</a>> getGroups()</pre>
|
||||
<div class="block">Returns the <a href="Tracks.Group.html" title="class in com.google.android.exoplayer2"><code>groups</code></a> of tracks.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="isTypeSupportedOrEmpty(@com.google.android.exoplayer2.C.TrackTypeint)">
|
||||
<a id="isEmpty()">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isTypeSupportedOrEmpty</h4>
|
||||
<pre class="methodSignature">public boolean isTypeSupportedOrEmpty​(@com.google.android.exoplayer2.C.TrackType int trackType)</pre>
|
||||
<div class="block">Returns true if at least one track of type <code>trackType</code> is <a href="TracksInfo.TrackGroupInfo.html#isTrackSupported(int)"><code>supported</code></a> or if there are no tracks of this type.</div>
|
||||
<h4>isEmpty</h4>
|
||||
<pre class="methodSignature">public boolean isEmpty()</pre>
|
||||
<div class="block">Returns <code>true</code> if there are no tracks, and <code>false</code> otherwise.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="isTypeSupportedOrEmpty(@com.google.android.exoplayer2.C.TrackTypeint,boolean)">
|
||||
<a id="containsType(@com.google.android.exoplayer2.C.TrackTypeint)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isTypeSupportedOrEmpty</h4>
|
||||
<pre class="methodSignature">public boolean isTypeSupportedOrEmpty​(@com.google.android.exoplayer2.C.TrackType int trackType,
|
||||
boolean allowExceedsCapabilities)</pre>
|
||||
<div class="block">Returns true if at least one track of type <code>trackType</code> is <a href="TracksInfo.TrackGroupInfo.html#isTrackSupported(int,boolean)"><code>supported</code></a> or if there are no tracks of this
|
||||
type.</div>
|
||||
<h4>containsType</h4>
|
||||
<pre class="methodSignature">public boolean containsType​(@com.google.android.exoplayer2.C.TrackType int trackType)</pre>
|
||||
<div class="block">Returns true if there are tracks of type <code>trackType</code>, and false otherwise.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="isTypeSupported(@com.google.android.exoplayer2.C.TrackTypeint)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isTypeSupported</h4>
|
||||
<pre class="methodSignature">public boolean isTypeSupported​(@com.google.android.exoplayer2.C.TrackType int trackType)</pre>
|
||||
<div class="block">Returns true if at least one track of type <code>trackType</code> is <a href="Tracks.Group.html#isTrackSupported(int)"><code>supported</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="isTypeSupported(@com.google.android.exoplayer2.C.TrackTypeint,boolean)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isTypeSupported</h4>
|
||||
<pre class="methodSignature">public boolean isTypeSupported​(@com.google.android.exoplayer2.C.TrackType int trackType,
|
||||
boolean allowExceedsCapabilities)</pre>
|
||||
<div class="block">Returns true if at least one track of type <code>trackType</code> is <a href="Tracks.Group.html#isTrackSupported(int,boolean)"><code>supported</code></a>.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>allowExceedsCapabilities</code> - Whether to consider the track as supported if it has a
|
||||
|
|
@ -412,6 +462,33 @@ implements <a href="Bundleable.html" title="interface in com.google.android.exop
|
|||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="isTypeSupportedOrEmpty(@com.google.android.exoplayer2.C.TrackTypeint)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isTypeSupportedOrEmpty</h4>
|
||||
<pre class="methodSignature"><a href="https://developer.android.com/reference/java/lang/Deprecated.html" title="class or interface in java.lang" class="externalLink" target="_top">@Deprecated</a>
|
||||
public boolean isTypeSupportedOrEmpty​(@com.google.android.exoplayer2.C.TrackType int trackType)</pre>
|
||||
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#containsType(@com.google.android.exoplayer2.C.TrackTypeint)"><code>containsType(int)</code></a> and <a href="#isTypeSupported(@com.google.android.exoplayer2.C.TrackTypeint)"><code>isTypeSupported(int)</code></a>.</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="isTypeSupportedOrEmpty(@com.google.android.exoplayer2.C.TrackTypeint,boolean)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isTypeSupportedOrEmpty</h4>
|
||||
<pre class="methodSignature"><a href="https://developer.android.com/reference/java/lang/Deprecated.html" title="class or interface in java.lang" class="externalLink" target="_top">@Deprecated</a>
|
||||
public boolean isTypeSupportedOrEmpty​(@com.google.android.exoplayer2.C.TrackType int trackType,
|
||||
boolean allowExceedsCapabilities)</pre>
|
||||
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#containsType(@com.google.android.exoplayer2.C.TrackTypeint)"><code>containsType(int)</code></a> and <a href="#isTypeSupported(@com.google.android.exoplayer2.C.TrackTypeint,boolean)"><code>isTypeSupported(int, boolean)</code></a>.</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="isTypeSelected(@com.google.android.exoplayer2.C.TrackTypeint)">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
|
@ -393,7 +393,7 @@ extends <a href="../Player.Listener.html" title="interface in com.google.android
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from interface com.google.android.exoplayer2.<a href="../Player.Listener.html" title="interface in com.google.android.exoplayer2">Player.Listener</a></h3>
|
||||
<code><a href="../Player.Listener.html#onAudioAttributesChanged(com.google.android.exoplayer2.audio.AudioAttributes)">onAudioAttributesChanged</a>, <a href="../Player.Listener.html#onAudioSessionIdChanged(int)">onAudioSessionIdChanged</a>, <a href="../Player.Listener.html#onAvailableCommandsChanged(com.google.android.exoplayer2.Player.Commands)">onAvailableCommandsChanged</a>, <a href="../Player.Listener.html#onCues(java.util.List)">onCues</a>, <a href="../Player.Listener.html#onDeviceInfoChanged(com.google.android.exoplayer2.DeviceInfo)">onDeviceInfoChanged</a>, <a href="../Player.Listener.html#onDeviceVolumeChanged(int,boolean)">onDeviceVolumeChanged</a>, <a href="../Player.Listener.html#onEvents(com.google.android.exoplayer2.Player,com.google.android.exoplayer2.Player.Events)">onEvents</a>, <a href="../Player.Listener.html#onIsLoadingChanged(boolean)">onIsLoadingChanged</a>, <a href="../Player.Listener.html#onIsPlayingChanged(boolean)">onIsPlayingChanged</a>, <a href="../Player.Listener.html#onLoadingChanged(boolean)">onLoadingChanged</a>, <a href="../Player.Listener.html#onMaxSeekToPreviousPositionChanged(long)">onMaxSeekToPreviousPositionChanged</a>, <a href="../Player.Listener.html#onMediaItemTransition(com.google.android.exoplayer2.MediaItem,@com.google.android.exoplayer2.Player.MediaItemTransitionReasonint)">onMediaItemTransition</a>, <a href="../Player.Listener.html#onMediaMetadataChanged(com.google.android.exoplayer2.MediaMetadata)">onMediaMetadataChanged</a>, <a href="../Player.Listener.html#onMetadata(com.google.android.exoplayer2.metadata.Metadata)">onMetadata</a>, <a href="../Player.Listener.html#onPlaybackParametersChanged(com.google.android.exoplayer2.PlaybackParameters)">onPlaybackParametersChanged</a>, <a href="../Player.Listener.html#onPlaybackStateChanged(@com.google.android.exoplayer2.Player.Stateint)">onPlaybackStateChanged</a>, <a href="../Player.Listener.html#onPlaybackSuppressionReasonChanged(@com.google.android.exoplayer2.Player.PlaybackSuppressionReasonint)">onPlaybackSuppressionReasonChanged</a>, <a href="../Player.Listener.html#onPlayerError(com.google.android.exoplayer2.PlaybackException)">onPlayerError</a>, <a href="../Player.Listener.html#onPlayerErrorChanged(com.google.android.exoplayer2.PlaybackException)">onPlayerErrorChanged</a>, <a href="../Player.Listener.html#onPlayerStateChanged(boolean,@com.google.android.exoplayer2.Player.Stateint)">onPlayerStateChanged</a>, <a href="../Player.Listener.html#onPlaylistMetadataChanged(com.google.android.exoplayer2.MediaMetadata)">onPlaylistMetadataChanged</a>, <a href="../Player.Listener.html#onPlayWhenReadyChanged(boolean,@com.google.android.exoplayer2.Player.PlayWhenReadyChangeReasonint)">onPlayWhenReadyChanged</a>, <a href="../Player.Listener.html#onPositionDiscontinuity(@com.google.android.exoplayer2.Player.DiscontinuityReasonint)">onPositionDiscontinuity</a>, <a href="../Player.Listener.html#onPositionDiscontinuity(com.google.android.exoplayer2.Player.PositionInfo,com.google.android.exoplayer2.Player.PositionInfo,@com.google.android.exoplayer2.Player.DiscontinuityReasonint)">onPositionDiscontinuity</a>, <a href="../Player.Listener.html#onRenderedFirstFrame()">onRenderedFirstFrame</a>, <a href="../Player.Listener.html#onRepeatModeChanged(@com.google.android.exoplayer2.Player.RepeatModeint)">onRepeatModeChanged</a>, <a href="../Player.Listener.html#onSeekBackIncrementChanged(long)">onSeekBackIncrementChanged</a>, <a href="../Player.Listener.html#onSeekForwardIncrementChanged(long)">onSeekForwardIncrementChanged</a>, <a href="../Player.Listener.html#onSeekProcessed()">onSeekProcessed</a>, <a href="../Player.Listener.html#onShuffleModeEnabledChanged(boolean)">onShuffleModeEnabledChanged</a>, <a href="../Player.Listener.html#onSkipSilenceEnabledChanged(boolean)">onSkipSilenceEnabledChanged</a>, <a href="../Player.Listener.html#onSurfaceSizeChanged(int,int)">onSurfaceSizeChanged</a>, <a href="../Player.Listener.html#onTimelineChanged(com.google.android.exoplayer2.Timeline,@com.google.android.exoplayer2.Player.TimelineChangeReasonint)">onTimelineChanged</a>, <a href="../Player.Listener.html#onTracksChanged(com.google.android.exoplayer2.source.TrackGroupArray,com.google.android.exoplayer2.trackselection.TrackSelectionArray)">onTracksChanged</a>, <a href="../Player.Listener.html#onTrackSelectionParametersChanged(com.google.android.exoplayer2.trackselection.TrackSelectionParameters)">onTrackSelectionParametersChanged</a>, <a href="../Player.Listener.html#onTracksInfoChanged(com.google.android.exoplayer2.TracksInfo)">onTracksInfoChanged</a>, <a href="../Player.Listener.html#onVideoSizeChanged(com.google.android.exoplayer2.video.VideoSize)">onVideoSizeChanged</a>, <a href="../Player.Listener.html#onVolumeChanged(float)">onVolumeChanged</a></code></li>
|
||||
<code><a href="../Player.Listener.html#onAudioAttributesChanged(com.google.android.exoplayer2.audio.AudioAttributes)">onAudioAttributesChanged</a>, <a href="../Player.Listener.html#onAudioSessionIdChanged(int)">onAudioSessionIdChanged</a>, <a href="../Player.Listener.html#onAvailableCommandsChanged(com.google.android.exoplayer2.Player.Commands)">onAvailableCommandsChanged</a>, <a href="../Player.Listener.html#onCues(com.google.android.exoplayer2.text.CueGroup)">onCues</a>, <a href="../Player.Listener.html#onCues(java.util.List)">onCues</a>, <a href="../Player.Listener.html#onDeviceInfoChanged(com.google.android.exoplayer2.DeviceInfo)">onDeviceInfoChanged</a>, <a href="../Player.Listener.html#onDeviceVolumeChanged(int,boolean)">onDeviceVolumeChanged</a>, <a href="../Player.Listener.html#onEvents(com.google.android.exoplayer2.Player,com.google.android.exoplayer2.Player.Events)">onEvents</a>, <a href="../Player.Listener.html#onIsLoadingChanged(boolean)">onIsLoadingChanged</a>, <a href="../Player.Listener.html#onIsPlayingChanged(boolean)">onIsPlayingChanged</a>, <a href="../Player.Listener.html#onLoadingChanged(boolean)">onLoadingChanged</a>, <a href="../Player.Listener.html#onMaxSeekToPreviousPositionChanged(long)">onMaxSeekToPreviousPositionChanged</a>, <a href="../Player.Listener.html#onMediaItemTransition(com.google.android.exoplayer2.MediaItem,@com.google.android.exoplayer2.Player.MediaItemTransitionReasonint)">onMediaItemTransition</a>, <a href="../Player.Listener.html#onMediaMetadataChanged(com.google.android.exoplayer2.MediaMetadata)">onMediaMetadataChanged</a>, <a href="../Player.Listener.html#onMetadata(com.google.android.exoplayer2.metadata.Metadata)">onMetadata</a>, <a href="../Player.Listener.html#onPlaybackParametersChanged(com.google.android.exoplayer2.PlaybackParameters)">onPlaybackParametersChanged</a>, <a href="../Player.Listener.html#onPlaybackStateChanged(@com.google.android.exoplayer2.Player.Stateint)">onPlaybackStateChanged</a>, <a href="../Player.Listener.html#onPlaybackSuppressionReasonChanged(@com.google.android.exoplayer2.Player.PlaybackSuppressionReasonint)">onPlaybackSuppressionReasonChanged</a>, <a href="../Player.Listener.html#onPlayerError(com.google.android.exoplayer2.PlaybackException)">onPlayerError</a>, <a href="../Player.Listener.html#onPlayerErrorChanged(com.google.android.exoplayer2.PlaybackException)">onPlayerErrorChanged</a>, <a href="../Player.Listener.html#onPlayerStateChanged(boolean,@com.google.android.exoplayer2.Player.Stateint)">onPlayerStateChanged</a>, <a href="../Player.Listener.html#onPlaylistMetadataChanged(com.google.android.exoplayer2.MediaMetadata)">onPlaylistMetadataChanged</a>, <a href="../Player.Listener.html#onPlayWhenReadyChanged(boolean,@com.google.android.exoplayer2.Player.PlayWhenReadyChangeReasonint)">onPlayWhenReadyChanged</a>, <a href="../Player.Listener.html#onPositionDiscontinuity(@com.google.android.exoplayer2.Player.DiscontinuityReasonint)">onPositionDiscontinuity</a>, <a href="../Player.Listener.html#onPositionDiscontinuity(com.google.android.exoplayer2.Player.PositionInfo,com.google.android.exoplayer2.Player.PositionInfo,@com.google.android.exoplayer2.Player.DiscontinuityReasonint)">onPositionDiscontinuity</a>, <a href="../Player.Listener.html#onRenderedFirstFrame()">onRenderedFirstFrame</a>, <a href="../Player.Listener.html#onRepeatModeChanged(@com.google.android.exoplayer2.Player.RepeatModeint)">onRepeatModeChanged</a>, <a href="../Player.Listener.html#onSeekBackIncrementChanged(long)">onSeekBackIncrementChanged</a>, <a href="../Player.Listener.html#onSeekForwardIncrementChanged(long)">onSeekForwardIncrementChanged</a>, <a href="../Player.Listener.html#onSeekProcessed()">onSeekProcessed</a>, <a href="../Player.Listener.html#onShuffleModeEnabledChanged(boolean)">onShuffleModeEnabledChanged</a>, <a href="../Player.Listener.html#onSkipSilenceEnabledChanged(boolean)">onSkipSilenceEnabledChanged</a>, <a href="../Player.Listener.html#onSurfaceSizeChanged(int,int)">onSurfaceSizeChanged</a>, <a href="../Player.Listener.html#onTimelineChanged(com.google.android.exoplayer2.Timeline,@com.google.android.exoplayer2.Player.TimelineChangeReasonint)">onTimelineChanged</a>, <a href="../Player.Listener.html#onTracksChanged(com.google.android.exoplayer2.Tracks)">onTracksChanged</a>, <a href="../Player.Listener.html#onTrackSelectionParametersChanged(com.google.android.exoplayer2.trackselection.TrackSelectionParameters)">onTrackSelectionParametersChanged</a>, <a href="../Player.Listener.html#onVideoSizeChanged(com.google.android.exoplayer2.video.VideoSize)">onVideoSizeChanged</a>, <a href="../Player.Listener.html#onVolumeChanged(float)">onVolumeChanged</a></code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":18,"i1":18,"i2":50,"i3":18,"i4":18,"i5":18,"i6":18,"i7":50,"i8":18,"i9":18,"i10":18,"i11":18,"i12":18,"i13":18,"i14":18,"i15":18,"i16":50,"i17":50,"i18":50,"i19":50,"i20":18,"i21":18,"i22":18,"i23":18,"i24":18,"i25":18,"i26":50,"i27":18,"i28":18,"i29":18,"i30":18,"i31":18,"i32":18,"i33":18,"i34":18,"i35":18,"i36":18,"i37":50,"i38":18,"i39":18,"i40":18,"i41":18,"i42":18,"i43":18,"i44":18,"i45":18,"i46":18,"i47":18,"i48":18,"i49":50,"i50":18,"i51":18,"i52":50,"i53":18,"i54":18,"i55":18,"i56":18,"i57":18,"i58":50,"i59":50,"i60":18,"i61":18,"i62":18,"i63":18,"i64":50,"i65":18,"i66":18,"i67":18,"i68":18,"i69":50,"i70":18,"i71":18,"i72":18,"i73":18,"i74":18,"i75":50,"i76":18,"i77":50,"i78":18,"i79":18};
|
||||
var data = {"i0":18,"i1":18,"i2":50,"i3":18,"i4":18,"i5":18,"i6":18,"i7":50,"i8":18,"i9":18,"i10":18,"i11":18,"i12":18,"i13":18,"i14":18,"i15":18,"i16":50,"i17":50,"i18":50,"i19":50,"i20":50,"i21":18,"i22":18,"i23":18,"i24":18,"i25":18,"i26":18,"i27":50,"i28":18,"i29":18,"i30":18,"i31":18,"i32":18,"i33":18,"i34":18,"i35":18,"i36":18,"i37":18,"i38":50,"i39":18,"i40":18,"i41":18,"i42":18,"i43":18,"i44":18,"i45":18,"i46":18,"i47":18,"i48":18,"i49":18,"i50":50,"i51":18,"i52":18,"i53":50,"i54":18,"i55":18,"i56":18,"i57":18,"i58":18,"i59":50,"i60":50,"i61":18,"i62":18,"i63":18,"i64":18,"i65":18,"i66":18,"i67":18,"i68":18,"i69":50,"i70":18,"i71":18,"i72":18,"i73":18,"i74":18,"i75":50,"i76":18,"i77":50,"i78":18,"i79":18};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],16:["t5","Default Methods"],32:["t6","Deprecated Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
|
|
@ -556,7 +556,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<td class="colFirst"><code>static int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#EVENT_TRACKS_CHANGED">EVENT_TRACKS_CHANGED</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block"><a href="../Player.html#getCurrentTracksInfo()"><code>Player.getCurrentTracksInfo()</code></a>, <a href="../Player.html#getCurrentTrackGroups()"><code>Player.getCurrentTrackGroups()</code></a> or <a href="../Player.html#getCurrentTrackSelections()"><code>Player.getCurrentTrackSelections()</code></a> changed.</div>
|
||||
<div class="block"><a href="../Player.html#getCurrentTracks()"><code>Player.getCurrentTracks()</code></a> changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
|
|
@ -782,14 +782,24 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</tr>
|
||||
<tr id="i15" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onCues(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,java.util.List)">onCues</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="../text/Cue.html" title="class in com.google.android.exoplayer2.text" target="_top">Cue</a>> cues)</code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onCues(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.text.CueGroup)">onCues</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../text/CueGroup.html" title="class in com.google.android.exoplayer2.text">CueGroup</a> cueGroup)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when there is a change in the <a href="../text/Cue.html" title="class in com.google.android.exoplayer2.text"><code>Cues</code></a>.</div>
|
||||
<div class="block">Called when there is a change in the <a href="../text/CueGroup.html" title="class in com.google.android.exoplayer2.text"><code>CueGroup</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i16" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onCues(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,java.util.List)">onCues</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="../text/Cue.html" title="class in com.google.android.exoplayer2.text" target="_top">Cue</a>> cues)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#onCues(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.text.CueGroup)"><code>onCues(EventTime, CueGroup)</code></a> instead.</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i17" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDecoderDisabled(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,int,com.google.android.exoplayer2.decoder.DecoderCounters)">onDecoderDisabled</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
int trackType,
|
||||
<a href="../decoder/DecoderCounters.html" title="class in com.google.android.exoplayer2.decoder">DecoderCounters</a> decoderCounters)</code></th>
|
||||
|
|
@ -799,7 +809,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i17" class="rowColor">
|
||||
<tr id="i18" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDecoderEnabled(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,int,com.google.android.exoplayer2.decoder.DecoderCounters)">onDecoderEnabled</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
int trackType,
|
||||
|
|
@ -810,7 +820,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i18" class="altColor">
|
||||
<tr id="i19" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDecoderInitialized(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,int,java.lang.String,long)">onDecoderInitialized</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
int trackType,
|
||||
|
|
@ -823,7 +833,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i19" class="rowColor">
|
||||
<tr id="i20" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDecoderInputFormatChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,int,com.google.android.exoplayer2.Format)">onDecoderInputFormatChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
int trackType,
|
||||
|
|
@ -835,7 +845,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i20" class="altColor">
|
||||
<tr id="i21" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDeviceInfoChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.DeviceInfo)">onDeviceInfoChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../DeviceInfo.html" title="class in com.google.android.exoplayer2">DeviceInfo</a> deviceInfo)</code></th>
|
||||
|
|
@ -843,7 +853,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the device information changes</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i21" class="rowColor">
|
||||
<tr id="i22" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDeviceVolumeChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,int,boolean)">onDeviceVolumeChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
int volume,
|
||||
|
|
@ -852,7 +862,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the device volume or mute state changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i22" class="altColor">
|
||||
<tr id="i23" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDownstreamFormatChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.source.MediaLoadData)">onDownstreamFormatChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../source/MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a> mediaLoadData)</code></th>
|
||||
|
|
@ -860,28 +870,28 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the downstream format sent to the renderers changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i23" class="rowColor">
|
||||
<tr id="i24" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmKeysLoaded(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime)">onDrmKeysLoaded</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called each time drm keys are loaded.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i24" class="altColor">
|
||||
<tr id="i25" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmKeysRemoved(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime)">onDrmKeysRemoved</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called each time offline drm keys are removed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i25" class="rowColor">
|
||||
<tr id="i26" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmKeysRestored(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime)">onDrmKeysRestored</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called each time offline drm keys are restored.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i26" class="altColor">
|
||||
<tr id="i27" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmSessionAcquired(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime)">onDrmSessionAcquired</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -890,7 +900,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i27" class="rowColor">
|
||||
<tr id="i28" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmSessionAcquired(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,@com.google.android.exoplayer2.drm.DrmSession.Stateint)">onDrmSessionAcquired</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
@com.google.android.exoplayer2.drm.DrmSession.State int state)</code></th>
|
||||
|
|
@ -898,7 +908,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called each time a drm session is acquired.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i28" class="altColor">
|
||||
<tr id="i29" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmSessionManagerError(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,java.lang.Exception)">onDrmSessionManagerError</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="https://developer.android.com/reference/java/lang/Exception.html" title="class or interface in java.lang" class="externalLink" target="_top">Exception</a> error)</code></th>
|
||||
|
|
@ -906,14 +916,14 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when a drm error occurs.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i29" class="rowColor">
|
||||
<tr id="i30" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmSessionReleased(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime)">onDrmSessionReleased</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called each time a drm session is released.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i30" class="altColor">
|
||||
<tr id="i31" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDroppedVideoFrames(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,int,long)">onDroppedVideoFrames</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
int droppedFrames,
|
||||
|
|
@ -922,7 +932,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called after video frames have been dropped.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i31" class="rowColor">
|
||||
<tr id="i32" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onEvents(com.google.android.exoplayer2.Player,com.google.android.exoplayer2.analytics.AnalyticsListener.Events)">onEvents</a></span>​(<a href="../Player.html" title="interface in com.google.android.exoplayer2">Player</a> player,
|
||||
<a href="AnalyticsListener.Events.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.Events</a> events)</code></th>
|
||||
|
|
@ -930,7 +940,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called after one or more events occurred.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i32" class="altColor">
|
||||
<tr id="i33" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onIsLoadingChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,boolean)">onIsLoadingChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
boolean isLoading)</code></th>
|
||||
|
|
@ -938,7 +948,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the player starts or stops loading data from a source.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i33" class="rowColor">
|
||||
<tr id="i34" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onIsPlayingChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,boolean)">onIsPlayingChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
boolean isPlaying)</code></th>
|
||||
|
|
@ -946,7 +956,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the player starts or stops playing.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i34" class="altColor">
|
||||
<tr id="i35" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadCanceled(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">onLoadCanceled</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../source/LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a> loadEventInfo,
|
||||
|
|
@ -955,7 +965,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when a media source canceled loading data.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i35" class="rowColor">
|
||||
<tr id="i36" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadCompleted(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">onLoadCompleted</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../source/LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a> loadEventInfo,
|
||||
|
|
@ -964,7 +974,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when a media source completed loading data.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i36" class="altColor">
|
||||
<tr id="i37" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadError(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData,java.io.IOException,boolean)">onLoadError</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../source/LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a> loadEventInfo,
|
||||
|
|
@ -975,7 +985,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when a media source loading error occurred.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i37" class="rowColor">
|
||||
<tr id="i38" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadingChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,boolean)">onLoadingChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
boolean isLoading)</code></th>
|
||||
|
|
@ -985,7 +995,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i38" class="altColor">
|
||||
<tr id="i39" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadStarted(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">onLoadStarted</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../source/LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a> loadEventInfo,
|
||||
|
|
@ -994,7 +1004,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when a media source started loading data.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i39" class="rowColor">
|
||||
<tr id="i40" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onMaxSeekToPreviousPositionChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,long)">onMaxSeekToPreviousPositionChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
long maxSeekToPreviousPositionMs)</code></th>
|
||||
|
|
@ -1003,7 +1013,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
previous window changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i40" class="altColor">
|
||||
<tr id="i41" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onMediaItemTransition(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.MediaItem,@com.google.android.exoplayer2.Player.MediaItemTransitionReasonint)">onMediaItemTransition</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../MediaItem.html" title="class in com.google.android.exoplayer2">MediaItem</a> mediaItem,
|
||||
|
|
@ -1012,7 +1022,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when playback transitions to a different media item.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i41" class="rowColor">
|
||||
<tr id="i42" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onMediaMetadataChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.MediaMetadata)">onMediaMetadataChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../MediaMetadata.html" title="class in com.google.android.exoplayer2">MediaMetadata</a> mediaMetadata)</code></th>
|
||||
|
|
@ -1020,7 +1030,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the combined <a href="../MediaMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaMetadata</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i42" class="altColor">
|
||||
<tr id="i43" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onMetadata(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.metadata.Metadata)">onMetadata</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../metadata/Metadata.html" title="class in com.google.android.exoplayer2.metadata">Metadata</a> metadata)</code></th>
|
||||
|
|
@ -1028,7 +1038,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when there is <a href="../metadata/Metadata.html" title="class in com.google.android.exoplayer2.metadata"><code>Metadata</code></a> associated with the current playback time.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i43" class="rowColor">
|
||||
<tr id="i44" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlaybackParametersChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.PlaybackParameters)">onPlaybackParametersChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../PlaybackParameters.html" title="class in com.google.android.exoplayer2">PlaybackParameters</a> playbackParameters)</code></th>
|
||||
|
|
@ -1036,7 +1046,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the playback parameters changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i44" class="altColor">
|
||||
<tr id="i45" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlaybackStateChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,@com.google.android.exoplayer2.Player.Stateint)">onPlaybackStateChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
@com.google.android.exoplayer2.Player.State int state)</code></th>
|
||||
|
|
@ -1044,7 +1054,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the playback state changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i45" class="rowColor">
|
||||
<tr id="i46" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlaybackSuppressionReasonChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,@com.google.android.exoplayer2.Player.PlaybackSuppressionReasonint)">onPlaybackSuppressionReasonChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
@com.google.android.exoplayer2.Player.PlaybackSuppressionReason int playbackSuppressionReason)</code></th>
|
||||
|
|
@ -1052,7 +1062,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when playback suppression reason changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i46" class="altColor">
|
||||
<tr id="i47" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlayerError(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.PlaybackException)">onPlayerError</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../PlaybackException.html" title="class in com.google.android.exoplayer2">PlaybackException</a> error)</code></th>
|
||||
|
|
@ -1060,7 +1070,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when a fatal player error occurred.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i47" class="rowColor">
|
||||
<tr id="i48" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlayerErrorChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.PlaybackException)">onPlayerErrorChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../PlaybackException.html" title="class in com.google.android.exoplayer2">PlaybackException</a> error)</code></th>
|
||||
|
|
@ -1068,14 +1078,14 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the <a href="../PlaybackException.html" title="class in com.google.android.exoplayer2"><code>PlaybackException</code></a> returned by <a href="../Player.html#getPlayerError()"><code>Player.getPlayerError()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i48" class="altColor">
|
||||
<tr id="i49" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlayerReleased(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime)">onPlayerReleased</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the <a href="../Player.html" title="interface in com.google.android.exoplayer2"><code>Player</code></a> is released.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i49" class="rowColor">
|
||||
<tr id="i50" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlayerStateChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,boolean,@com.google.android.exoplayer2.Player.Stateint)">onPlayerStateChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
boolean playWhenReady,
|
||||
|
|
@ -1086,7 +1096,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i50" class="altColor">
|
||||
<tr id="i51" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlaylistMetadataChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.MediaMetadata)">onPlaylistMetadataChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../MediaMetadata.html" title="class in com.google.android.exoplayer2">MediaMetadata</a> playlistMetadata)</code></th>
|
||||
|
|
@ -1094,7 +1104,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the playlist <a href="../MediaMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaMetadata</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i51" class="rowColor">
|
||||
<tr id="i52" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlayWhenReadyChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,boolean,@com.google.android.exoplayer2.Player.PlayWhenReadyChangeReasonint)">onPlayWhenReadyChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
boolean playWhenReady,
|
||||
|
|
@ -1103,7 +1113,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the value changed that indicates whether playback will proceed when ready.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i52" class="altColor">
|
||||
<tr id="i53" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPositionDiscontinuity(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,@com.google.android.exoplayer2.Player.DiscontinuityReasonint)">onPositionDiscontinuity</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
@com.google.android.exoplayer2.Player.DiscontinuityReason int reason)</code></th>
|
||||
|
|
@ -1114,7 +1124,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i53" class="rowColor">
|
||||
<tr id="i54" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPositionDiscontinuity(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.Player.PositionInfo,com.google.android.exoplayer2.Player.PositionInfo,@com.google.android.exoplayer2.Player.DiscontinuityReasonint)">onPositionDiscontinuity</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../Player.PositionInfo.html" title="class in com.google.android.exoplayer2">Player.PositionInfo</a> oldPosition,
|
||||
|
|
@ -1124,7 +1134,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when a position discontinuity occurred.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i54" class="altColor">
|
||||
<tr id="i55" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onRenderedFirstFrame(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,java.lang.Object,long)">onRenderedFirstFrame</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a> output,
|
||||
|
|
@ -1134,7 +1144,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
renderer was reset, or since the stream being rendered was changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i55" class="rowColor">
|
||||
<tr id="i56" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onRepeatModeChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,@com.google.android.exoplayer2.Player.RepeatModeint)">onRepeatModeChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
@com.google.android.exoplayer2.Player.RepeatMode int repeatMode)</code></th>
|
||||
|
|
@ -1142,7 +1152,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the repeat mode changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i56" class="altColor">
|
||||
<tr id="i57" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSeekBackIncrementChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,long)">onSeekBackIncrementChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
long seekBackIncrementMs)</code></th>
|
||||
|
|
@ -1150,7 +1160,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the seek back increment changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i57" class="rowColor">
|
||||
<tr id="i58" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSeekForwardIncrementChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,long)">onSeekForwardIncrementChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
long seekForwardIncrementMs)</code></th>
|
||||
|
|
@ -1158,7 +1168,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the seek forward increment changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i58" class="altColor">
|
||||
<tr id="i59" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSeekProcessed(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime)">onSeekProcessed</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -1167,7 +1177,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i59" class="rowColor">
|
||||
<tr id="i60" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSeekStarted(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime)">onSeekStarted</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -1177,7 +1187,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i60" class="altColor">
|
||||
<tr id="i61" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onShuffleModeChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,boolean)">onShuffleModeChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
boolean shuffleModeEnabled)</code></th>
|
||||
|
|
@ -1185,7 +1195,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the shuffle mode changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i61" class="rowColor">
|
||||
<tr id="i62" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSkipSilenceEnabledChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,boolean)">onSkipSilenceEnabledChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
boolean skipSilenceEnabled)</code></th>
|
||||
|
|
@ -1193,7 +1203,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when skipping silences is enabled or disabled in the audio stream.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i62" class="altColor">
|
||||
<tr id="i63" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSurfaceSizeChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,int,int)">onSurfaceSizeChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
int width,
|
||||
|
|
@ -1202,7 +1212,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the output surface size changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i63" class="rowColor">
|
||||
<tr id="i64" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTimelineChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,@com.google.android.exoplayer2.Player.TimelineChangeReasonint)">onTimelineChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
@com.google.android.exoplayer2.Player.TimelineChangeReason int reason)</code></th>
|
||||
|
|
@ -1210,18 +1220,15 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the timeline changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i64" class="altColor">
|
||||
<tr id="i65" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTracksChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.source.TrackGroupArray,com.google.android.exoplayer2.trackselection.TrackSelectionArray)">onTracksChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../source/TrackGroupArray.html" title="class in com.google.android.exoplayer2.source">TrackGroupArray</a> trackGroups,
|
||||
<a href="../trackselection/TrackSelectionArray.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionArray</a> trackSelections)</code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTracksChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.Tracks)">onTracksChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../Tracks.html" title="class in com.google.android.exoplayer2">Tracks</a> tracks)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#onTracksInfoChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.TracksInfo)"><code>onTracksInfoChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime, com.google.android.exoplayer2.TracksInfo)</code></a>.</div>
|
||||
</div>
|
||||
<div class="block">Called when the tracks change.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i65" class="rowColor">
|
||||
<tr id="i66" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTrackSelectionParametersChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.trackselection.TrackSelectionParameters)">onTrackSelectionParametersChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../trackselection/TrackSelectionParameters.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionParameters</a> trackSelectionParameters)</code></th>
|
||||
|
|
@ -1229,14 +1236,6 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when track selection parameters change.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i66" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTracksInfoChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.TracksInfo)">onTracksInfoChanged</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../TracksInfo.html" title="class in com.google.android.exoplayer2">TracksInfo</a> tracksInfo)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the available or selected tracks change.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i67" class="rowColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onUpstreamDiscarded(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.source.MediaLoadData)">onUpstreamDiscarded</a></span>​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
|
|
@ -1410,7 +1409,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<li class="blockList">
|
||||
<h4>EVENT_TRACKS_CHANGED</h4>
|
||||
<pre>static final int EVENT_TRACKS_CHANGED</pre>
|
||||
<div class="block"><a href="../Player.html#getCurrentTracksInfo()"><code>Player.getCurrentTracksInfo()</code></a>, <a href="../Player.html#getCurrentTrackGroups()"><code>Player.getCurrentTrackGroups()</code></a> or <a href="../Player.html#getCurrentTrackSelections()"><code>Player.getCurrentTrackSelections()</code></a> changed.</div>
|
||||
<div class="block"><a href="../Player.html#getCurrentTracks()"><code>Player.getCurrentTracks()</code></a> changed.</div>
|
||||
<dl>
|
||||
<dt><span class="seeLabel">See Also:</span></dt>
|
||||
<dd><a href="../../../../../constant-values.html#com.google.android.exoplayer2.analytics.AnalyticsListener.EVENT_TRACKS_CHANGED">Constant Field Values</a></dd>
|
||||
|
|
@ -2623,41 +2622,19 @@ default void onLoadingChanged​(<a href="AnalyticsListener.EventT
|
|||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="onTracksChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.source.TrackGroupArray,com.google.android.exoplayer2.trackselection.TrackSelectionArray)">
|
||||
<a id="onTracksChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.Tracks)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>onTracksChanged</h4>
|
||||
<pre class="methodSignature"><a href="https://developer.android.com/reference/java/lang/Deprecated.html" title="class or interface in java.lang" class="externalLink" target="_top">@Deprecated</a>
|
||||
default void onTracksChanged​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../source/TrackGroupArray.html" title="class in com.google.android.exoplayer2.source">TrackGroupArray</a> trackGroups,
|
||||
<a href="../trackselection/TrackSelectionArray.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionArray</a> trackSelections)</pre>
|
||||
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#onTracksInfoChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.TracksInfo)"><code>onTracksInfoChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime, com.google.android.exoplayer2.TracksInfo)</code></a>.</div>
|
||||
</div>
|
||||
<div class="block">Called when the available or selected tracks for the renderers changed.</div>
|
||||
<pre class="methodSignature">default void onTracksChanged​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../Tracks.html" title="class in com.google.android.exoplayer2">Tracks</a> tracks)</pre>
|
||||
<div class="block">Called when the tracks change.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>eventTime</code> - The event time.</dd>
|
||||
<dd><code>trackGroups</code> - The available tracks. May be empty.</dd>
|
||||
<dd><code>trackSelections</code> - The track selections for each renderer. May contain null elements.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="onTracksInfoChanged(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.TracksInfo)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>onTracksInfoChanged</h4>
|
||||
<pre class="methodSignature">default void onTracksInfoChanged​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../TracksInfo.html" title="class in com.google.android.exoplayer2">TracksInfo</a> tracksInfo)</pre>
|
||||
<div class="block">Called when the available or selected tracks change.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>eventTime</code> - The event time.</dd>
|
||||
<dd><code>tracksInfo</code> - The available tracks information. Never null, but may be of length zero.</dd>
|
||||
<dd><code>tracks</code> - The tracks. Never null, but may be of length zero.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -2871,16 +2848,39 @@ default void onTracksChanged​(<a href="AnalyticsListener.EventTi
|
|||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>onCues</h4>
|
||||
<pre class="methodSignature">default void onCues​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<pre class="methodSignature"><a href="https://developer.android.com/reference/java/lang/Deprecated.html" title="class or interface in java.lang" class="externalLink" target="_top">@Deprecated</a>
|
||||
default void onCues​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="../text/Cue.html" title="class in com.google.android.exoplayer2.text" target="_top">Cue</a>> cues)</pre>
|
||||
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="#onCues(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.text.CueGroup)"><code>onCues(EventTime, CueGroup)</code></a> instead.</div>
|
||||
</div>
|
||||
<div class="block">Called when there is a change in the <a href="../text/Cue.html" title="class in com.google.android.exoplayer2.text"><code>Cues</code></a>.
|
||||
|
||||
<p><code>cues</code> is in ascending order of priority. If any of the cue boxes overlap when
|
||||
displayed, the <a href="../text/Cue.html" title="class in com.google.android.exoplayer2.text"><code>Cue</code></a> nearer the end of the list should be shown on top.</div>
|
||||
<p>Both <a href="#onCues(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,java.util.List)"><code>onCues(EventTime, List)</code></a> and <a href="#onCues(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.text.CueGroup)"><code>onCues(EventTime, CueGroup)</code></a> are called
|
||||
when there is a change in the cues. You should only implement one or the other.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>eventTime</code> - The event time.</dd>
|
||||
<dd><code>cues</code> - The <a href="../text/Cue.html" title="class in com.google.android.exoplayer2.text"><code>Cues</code></a>. May be empty.</dd>
|
||||
<dd><code>cues</code> - The <a href="../text/Cue.html" title="class in com.google.android.exoplayer2.text"><code>Cues</code></a>.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="onCues(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.text.CueGroup)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>onCues</h4>
|
||||
<pre class="methodSignature">default void onCues​(<a href="AnalyticsListener.EventTime.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsListener.EventTime</a> eventTime,
|
||||
<a href="../text/CueGroup.html" title="class in com.google.android.exoplayer2.text">CueGroup</a> cueGroup)</pre>
|
||||
<div class="block">Called when there is a change in the <a href="../text/CueGroup.html" title="class in com.google.android.exoplayer2.text"><code>CueGroup</code></a>.
|
||||
|
||||
<p>Both <a href="#onCues(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,java.util.List)"><code>onCues(EventTime, List)</code></a> and <a href="#onCues(com.google.android.exoplayer2.analytics.AnalyticsListener.EventTime,com.google.android.exoplayer2.text.CueGroup)"><code>onCues(EventTime, CueGroup)</code></a> are called
|
||||
when there is a change in the cues. You should only implement one or the other.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>eventTime</code> - The event time.</dd>
|
||||
<dd><code>cueGroup</code> - The <a href="../text/CueGroup.html" title="class in com.google.android.exoplayer2.text"><code>CueGroup</code></a>.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -344,19 +344,26 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
</tr>
|
||||
<tr id="i17" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onCues(com.google.android.exoplayer2.text.CueGroup)">onCues</a></span>​(<a href="../text/CueGroup.html" title="class in com.google.android.exoplayer2.text">CueGroup</a> cueGroup)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when there is a change in the <a href="../text/CueGroup.html" title="class in com.google.android.exoplayer2.text"><code>CueGroup</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i18" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onCues(java.util.List)">onCues</a></span>​(<a href="https://developer.android.com/reference/java/util/List.html" title="class or interface in java.util" class="externalLink">List</a><<a href="../text/Cue.html" title="class in com.google.android.exoplayer2.text" target="_top">Cue</a>> cues)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when there is a change in the <a href="../text/Cue.html" title="class in com.google.android.exoplayer2.text"><code>Cues</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i18" class="altColor">
|
||||
<tr id="i19" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDeviceInfoChanged(com.google.android.exoplayer2.DeviceInfo)">onDeviceInfoChanged</a></span>​(<a href="../DeviceInfo.html" title="class in com.google.android.exoplayer2">DeviceInfo</a> deviceInfo)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the device information changes</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i19" class="rowColor">
|
||||
<tr id="i20" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDeviceVolumeChanged(int,boolean)">onDeviceVolumeChanged</a></span>​(int volume,
|
||||
boolean muted)</code></th>
|
||||
|
|
@ -364,7 +371,7 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called when the device volume or mute state changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i20" class="altColor">
|
||||
<tr id="i21" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDownstreamFormatChanged(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.MediaLoadData)">onDownstreamFormatChanged</a></span>​(int windowIndex,
|
||||
<a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId,
|
||||
|
|
@ -373,7 +380,7 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called when a downstream format change occurs (i.e.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i21" class="rowColor">
|
||||
<tr id="i22" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmKeysLoaded(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmKeysLoaded</a></span>​(int windowIndex,
|
||||
<a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId)</code></th>
|
||||
|
|
@ -381,7 +388,7 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called each time keys are loaded.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i22" class="altColor">
|
||||
<tr id="i23" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmKeysRemoved(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmKeysRemoved</a></span>​(int windowIndex,
|
||||
<a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId)</code></th>
|
||||
|
|
@ -389,7 +396,7 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called each time offline keys are removed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i23" class="rowColor">
|
||||
<tr id="i24" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmKeysRestored(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmKeysRestored</a></span>​(int windowIndex,
|
||||
<a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId)</code></th>
|
||||
|
|
@ -397,7 +404,7 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called each time offline keys are restored.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i24" class="altColor">
|
||||
<tr id="i25" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmSessionAcquired(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,@com.google.android.exoplayer2.drm.DrmSession.Stateint)">onDrmSessionAcquired</a></span>​(int windowIndex,
|
||||
<a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId,
|
||||
|
|
@ -406,7 +413,7 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called each time a drm session is acquired.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i25" class="rowColor">
|
||||
<tr id="i26" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmSessionManagerError(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,java.lang.Exception)">onDrmSessionManagerError</a></span>​(int windowIndex,
|
||||
<a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId,
|
||||
|
|
@ -415,7 +422,7 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called when a drm error occurs.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i26" class="altColor">
|
||||
<tr id="i27" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmSessionReleased(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmSessionReleased</a></span>​(int windowIndex,
|
||||
<a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId)</code></th>
|
||||
|
|
@ -423,7 +430,7 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called each time a drm session is released.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i27" class="rowColor">
|
||||
<tr id="i28" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDroppedFrames(int,long)">onDroppedFrames</a></span>​(int count,
|
||||
long elapsedMs)</code></th>
|
||||
|
|
@ -431,7 +438,7 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called to report the number of frames dropped by the video renderer.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i28" class="altColor">
|
||||
<tr id="i29" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onEvents(com.google.android.exoplayer2.Player,com.google.android.exoplayer2.Player.Events)">onEvents</a></span>​(<a href="../Player.html" title="interface in com.google.android.exoplayer2">Player</a> player,
|
||||
<a href="../Player.Events.html" title="class in com.google.android.exoplayer2">Player.Events</a> events)</code></th>
|
||||
|
|
@ -439,21 +446,21 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called when one or more player states changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i29" class="rowColor">
|
||||
<tr id="i30" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onIsLoadingChanged(boolean)">onIsLoadingChanged</a></span>​(boolean isLoading)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the player starts or stops loading the source.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i30" class="altColor">
|
||||
<tr id="i31" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onIsPlayingChanged(boolean)">onIsPlayingChanged</a></span>​(boolean isPlaying)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value of <a href="../Player.html#isPlaying()"><code>Player.isPlaying()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i31" class="rowColor">
|
||||
<tr id="i32" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadCanceled(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">onLoadCanceled</a></span>​(int windowIndex,
|
||||
<a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId,
|
||||
|
|
@ -463,7 +470,7 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called when a load is canceled.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i32" class="altColor">
|
||||
<tr id="i33" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadCompleted(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">onLoadCompleted</a></span>​(int windowIndex,
|
||||
<a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId,
|
||||
|
|
@ -473,7 +480,7 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called when a load ends.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i33" class="rowColor">
|
||||
<tr id="i34" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadError(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData,java.io.IOException,boolean)">onLoadError</a></span>​(int windowIndex,
|
||||
<a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId,
|
||||
|
|
@ -485,12 +492,12 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called when a load error occurs.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i34" class="altColor">
|
||||
<tr id="i35" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadingChanged(boolean)">onLoadingChanged</a></span>​(boolean isLoading)</code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr id="i35" class="rowColor">
|
||||
<tr id="i36" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadStarted(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">onLoadStarted</a></span>​(int windowIndex,
|
||||
<a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId,
|
||||
|
|
@ -500,14 +507,14 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called when a load begins.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i36" class="altColor">
|
||||
<tr id="i37" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onMaxSeekToPreviousPositionChanged(long)">onMaxSeekToPreviousPositionChanged</a></span>​(long maxSeekToPreviousPositionMs)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value of <a href="../Player.html#getMaxSeekToPreviousPosition()"><code>Player.getMaxSeekToPreviousPosition()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i37" class="rowColor">
|
||||
<tr id="i38" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onMediaItemTransition(com.google.android.exoplayer2.MediaItem,@com.google.android.exoplayer2.Player.MediaItemTransitionReasonint)">onMediaItemTransition</a></span>​(<a href="../MediaItem.html" title="class in com.google.android.exoplayer2">MediaItem</a> mediaItem,
|
||||
@com.google.android.exoplayer2.Player.MediaItemTransitionReason int reason)</code></th>
|
||||
|
|
@ -516,69 +523,69 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
to the current <a href="../Player.html#getRepeatMode()"><code>repeat mode</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i38" class="altColor">
|
||||
<tr id="i39" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onMediaMetadataChanged(com.google.android.exoplayer2.MediaMetadata)">onMediaMetadataChanged</a></span>​(<a href="../MediaMetadata.html" title="class in com.google.android.exoplayer2">MediaMetadata</a> mediaMetadata)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the combined <a href="../MediaMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaMetadata</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i39" class="rowColor">
|
||||
<tr id="i40" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onMetadata(com.google.android.exoplayer2.metadata.Metadata)">onMetadata</a></span>​(<a href="../metadata/Metadata.html" title="class in com.google.android.exoplayer2.metadata">Metadata</a> metadata)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when there is metadata associated with the current playback time.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i40" class="altColor">
|
||||
<tr id="i41" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlaybackParametersChanged(com.google.android.exoplayer2.PlaybackParameters)">onPlaybackParametersChanged</a></span>​(<a href="../PlaybackParameters.html" title="class in com.google.android.exoplayer2">PlaybackParameters</a> playbackParameters)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the current playback parameters change.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i41" class="rowColor">
|
||||
<tr id="i42" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlaybackStateChanged(@com.google.android.exoplayer2.Player.Stateint)">onPlaybackStateChanged</a></span>​(@com.google.android.exoplayer2.Player.State int playbackState)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value returned from <a href="../Player.html#getPlaybackState()"><code>Player.getPlaybackState()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i42" class="altColor">
|
||||
<tr id="i43" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlaybackSuppressionReasonChanged(@com.google.android.exoplayer2.Player.PlaybackSuppressionReasonint)">onPlaybackSuppressionReasonChanged</a></span>​(@com.google.android.exoplayer2.Player.PlaybackSuppressionReason int playbackSuppressionReason)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value returned from <a href="../Player.html#getPlaybackSuppressionReason()"><code>Player.getPlaybackSuppressionReason()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i43" class="rowColor">
|
||||
<tr id="i44" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlayerError(com.google.android.exoplayer2.PlaybackException)">onPlayerError</a></span>​(<a href="../PlaybackException.html" title="class in com.google.android.exoplayer2">PlaybackException</a> error)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when an error occurs.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i44" class="altColor">
|
||||
<tr id="i45" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlayerErrorChanged(com.google.android.exoplayer2.PlaybackException)">onPlayerErrorChanged</a></span>​(<a href="../PlaybackException.html" title="class in com.google.android.exoplayer2">PlaybackException</a> error)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the <a href="../PlaybackException.html" title="class in com.google.android.exoplayer2"><code>PlaybackException</code></a> returned by <a href="../Player.html#getPlayerError()"><code>Player.getPlayerError()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i45" class="rowColor">
|
||||
<tr id="i46" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlayerStateChanged(boolean,@com.google.android.exoplayer2.Player.Stateint)">onPlayerStateChanged</a></span>​(boolean playWhenReady,
|
||||
@com.google.android.exoplayer2.Player.State int playbackState)</code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr id="i46" class="altColor">
|
||||
<tr id="i47" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlaylistMetadataChanged(com.google.android.exoplayer2.MediaMetadata)">onPlaylistMetadataChanged</a></span>​(<a href="../MediaMetadata.html" title="class in com.google.android.exoplayer2">MediaMetadata</a> playlistMetadata)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the playlist <a href="../MediaMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaMetadata</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i47" class="rowColor">
|
||||
<tr id="i48" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPlayWhenReadyChanged(boolean,@com.google.android.exoplayer2.Player.PlayWhenReadyChangeReasonint)">onPlayWhenReadyChanged</a></span>​(boolean playWhenReady,
|
||||
@com.google.android.exoplayer2.Player.PlayWhenReadyChangeReason int reason)</code></th>
|
||||
|
|
@ -586,12 +593,12 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called when the value returned from <a href="../Player.html#getPlayWhenReady()"><code>Player.getPlayWhenReady()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i48" class="altColor">
|
||||
<tr id="i49" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPositionDiscontinuity(@com.google.android.exoplayer2.Player.DiscontinuityReasonint)">onPositionDiscontinuity</a></span>​(@com.google.android.exoplayer2.Player.DiscontinuityReason int reason)</code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr id="i49" class="rowColor">
|
||||
<tr id="i50" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPositionDiscontinuity(com.google.android.exoplayer2.Player.PositionInfo,com.google.android.exoplayer2.Player.PositionInfo,@com.google.android.exoplayer2.Player.DiscontinuityReasonint)">onPositionDiscontinuity</a></span>​(<a href="../Player.PositionInfo.html" title="class in com.google.android.exoplayer2">Player.PositionInfo</a> oldPosition,
|
||||
<a href="../Player.PositionInfo.html" title="class in com.google.android.exoplayer2">Player.PositionInfo</a> newPosition,
|
||||
|
|
@ -600,7 +607,7 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called when a position discontinuity occurs.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i50" class="altColor">
|
||||
<tr id="i51" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onRenderedFirstFrame()">onRenderedFirstFrame</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -608,7 +615,7 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
renderer was reset, or since the stream being rendered was changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i51" class="rowColor">
|
||||
<tr id="i52" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onRenderedFirstFrame(java.lang.Object,long)">onRenderedFirstFrame</a></span>​(<a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a> output,
|
||||
long renderTimeMs)</code></th>
|
||||
|
|
@ -617,47 +624,47 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
renderer was reset, or since the stream being rendered was changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i52" class="altColor">
|
||||
<tr id="i53" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onRepeatModeChanged(@com.google.android.exoplayer2.Player.RepeatModeint)">onRepeatModeChanged</a></span>​(@com.google.android.exoplayer2.Player.RepeatMode int repeatMode)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value of <a href="../Player.html#getRepeatMode()"><code>Player.getRepeatMode()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i53" class="rowColor">
|
||||
<tr id="i54" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSeekBackIncrementChanged(long)">onSeekBackIncrementChanged</a></span>​(long seekBackIncrementMs)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value of <a href="../Player.html#getSeekBackIncrement()"><code>Player.getSeekBackIncrement()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i54" class="altColor">
|
||||
<tr id="i55" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSeekForwardIncrementChanged(long)">onSeekForwardIncrementChanged</a></span>​(long seekForwardIncrementMs)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value of <a href="../Player.html#getSeekForwardIncrement()"><code>Player.getSeekForwardIncrement()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i55" class="rowColor">
|
||||
<tr id="i56" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSeekProcessed()">onSeekProcessed</a></span>()</code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr id="i56" class="altColor">
|
||||
<tr id="i57" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onShuffleModeEnabledChanged(boolean)">onShuffleModeEnabledChanged</a></span>​(boolean shuffleModeEnabled)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value of <a href="../Player.html#getShuffleModeEnabled()"><code>Player.getShuffleModeEnabled()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i57" class="rowColor">
|
||||
<tr id="i58" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSkipSilenceEnabledChanged(boolean)">onSkipSilenceEnabledChanged</a></span>​(boolean skipSilenceEnabled)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when skipping silences is enabled or disabled in the audio stream.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i58" class="altColor">
|
||||
<tr id="i59" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSurfaceSizeChanged(int,int)">onSurfaceSizeChanged</a></span>​(int width,
|
||||
int height)</code></th>
|
||||
|
|
@ -666,7 +673,7 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
rendered.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i59" class="rowColor">
|
||||
<tr id="i60" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTimelineChanged(com.google.android.exoplayer2.Timeline,@com.google.android.exoplayer2.Player.TimelineChangeReasonint)">onTimelineChanged</a></span>​(<a href="../Timeline.html" title="class in com.google.android.exoplayer2">Timeline</a> timeline,
|
||||
@com.google.android.exoplayer2.Player.TimelineChangeReason int reason)</code></th>
|
||||
|
|
@ -674,26 +681,18 @@ implements <a href="AnalyticsCollector.html" title="interface in com.google.andr
|
|||
<div class="block">Called when the timeline has been refreshed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i60" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTracksChanged(com.google.android.exoplayer2.source.TrackGroupArray,com.google.android.exoplayer2.trackselection.TrackSelectionArray)">onTracksChanged</a></span>​(<a href="../source/TrackGroupArray.html" title="class in com.google.android.exoplayer2.source">TrackGroupArray</a> trackGroups,
|
||||
<a href="../trackselection/TrackSelectionArray.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionArray</a> trackSelections)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the available or selected tracks change.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i61" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTrackSelectionParametersChanged(com.google.android.exoplayer2.trackselection.TrackSelectionParameters)">onTrackSelectionParametersChanged</a></span>​(<a href="../trackselection/TrackSelectionParameters.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionParameters</a> parameters)</code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTracksChanged(com.google.android.exoplayer2.Tracks)">onTracksChanged</a></span>​(<a href="../Tracks.html" title="class in com.google.android.exoplayer2">Tracks</a> tracks)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the value returned from <a href="../Player.html#getTrackSelectionParameters()"><code>Player.getTrackSelectionParameters()</code></a> changes.</div>
|
||||
<div class="block">Called when the tracks change.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i62" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTracksInfoChanged(com.google.android.exoplayer2.TracksInfo)">onTracksInfoChanged</a></span>​(<a href="../TracksInfo.html" title="class in com.google.android.exoplayer2">TracksInfo</a> tracksInfo)</code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onTrackSelectionParametersChanged(com.google.android.exoplayer2.trackselection.TrackSelectionParameters)">onTrackSelectionParametersChanged</a></span>​(<a href="../trackselection/TrackSelectionParameters.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionParameters</a> parameters)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the available or selected tracks change.</div>
|
||||
<div class="block">Called when the value returned from <a href="../Player.html#getTrackSelectionParameters()"><code>Player.getTrackSelectionParameters()</code></a> changes.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i63" class="rowColor">
|
||||
|
|
@ -1618,48 +1617,23 @@ public void release()</pre>
|
|||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="onTracksChanged(com.google.android.exoplayer2.source.TrackGroupArray,com.google.android.exoplayer2.trackselection.TrackSelectionArray)">
|
||||
<a id="onTracksChanged(com.google.android.exoplayer2.Tracks)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>onTracksChanged</h4>
|
||||
<pre class="methodSignature">public final void onTracksChanged​(<a href="../source/TrackGroupArray.html" title="class in com.google.android.exoplayer2.source">TrackGroupArray</a> trackGroups,
|
||||
<a href="../trackselection/TrackSelectionArray.html" title="class in com.google.android.exoplayer2.trackselection">TrackSelectionArray</a> trackSelections)</pre>
|
||||
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../Player.Listener.html#onTracksChanged(com.google.android.exoplayer2.source.TrackGroupArray,com.google.android.exoplayer2.trackselection.TrackSelectionArray)">Player.Listener</a></code></span></div>
|
||||
<div class="block">Called when the available or selected tracks change.
|
||||
<pre class="methodSignature">public void onTracksChanged​(<a href="../Tracks.html" title="class in com.google.android.exoplayer2">Tracks</a> tracks)</pre>
|
||||
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../Player.Listener.html#onTracksChanged(com.google.android.exoplayer2.Tracks)">Player.Listener</a></code></span></div>
|
||||
<div class="block">Called when the tracks change.
|
||||
|
||||
<p><a href="../Player.Listener.html#onEvents(com.google.android.exoplayer2.Player,com.google.android.exoplayer2.Player.Events)"><code>Player.Listener.onEvents(Player, Events)</code></a> will also be called to report this event along with
|
||||
other events that happen in the same <a href="https://developer.android.com/reference/android/os/Looper.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Looper</code></a> message queue iteration.</div>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
<dd><code><a href="../Player.Listener.html#onTracksChanged(com.google.android.exoplayer2.source.TrackGroupArray,com.google.android.exoplayer2.trackselection.TrackSelectionArray)">onTracksChanged</a></code> in interface <code><a href="../Player.Listener.html" title="interface in com.google.android.exoplayer2">Player.Listener</a></code></dd>
|
||||
<dd><code><a href="../Player.Listener.html#onTracksChanged(com.google.android.exoplayer2.Tracks)">onTracksChanged</a></code> in interface <code><a href="../Player.Listener.html" title="interface in com.google.android.exoplayer2">Player.Listener</a></code></dd>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>trackGroups</code> - The available tracks. Never null, but may be of length zero.</dd>
|
||||
<dd><code>trackSelections</code> - The selected tracks. Never null, but may contain null elements. A
|
||||
concrete implementation may include null elements if it has a fixed number of renderer
|
||||
components, wishes to report a TrackSelection for each of them, and has one or more
|
||||
renderer components that is not assigned any selected tracks.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="onTracksInfoChanged(com.google.android.exoplayer2.TracksInfo)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>onTracksInfoChanged</h4>
|
||||
<pre class="methodSignature">public void onTracksInfoChanged​(<a href="../TracksInfo.html" title="class in com.google.android.exoplayer2">TracksInfo</a> tracksInfo)</pre>
|
||||
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../Player.Listener.html#onTracksInfoChanged(com.google.android.exoplayer2.TracksInfo)">Player.Listener</a></code></span></div>
|
||||
<div class="block">Called when the available or selected tracks change.
|
||||
|
||||
<p><a href="../Player.Listener.html#onEvents(com.google.android.exoplayer2.Player,com.google.android.exoplayer2.Player.Events)"><code>Player.Listener.onEvents(Player, Events)</code></a> will also be called to report this event along with
|
||||
other events that happen in the same <a href="https://developer.android.com/reference/android/os/Looper.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Looper</code></a> message queue iteration.</div>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
<dd><code><a href="../Player.Listener.html#onTracksInfoChanged(com.google.android.exoplayer2.TracksInfo)">onTracksInfoChanged</a></code> in interface <code><a href="../Player.Listener.html" title="interface in com.google.android.exoplayer2">Player.Listener</a></code></dd>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>tracksInfo</code> - The available tracks information. Never null, but may be of length zero.</dd>
|
||||
<dd><code>tracks</code> - The available tracks information. Never null, but may be of length zero.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -2043,11 +2017,9 @@ public void release()</pre>
|
|||
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../Player.Listener.html#onMediaMetadataChanged(com.google.android.exoplayer2.MediaMetadata)">Player.Listener</a></code></span></div>
|
||||
<div class="block">Called when the combined <a href="../MediaMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaMetadata</code></a> changes.
|
||||
|
||||
<p>The provided <a href="../MediaMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaMetadata</code></a> is a combination of the <a href="../MediaItem.html#mediaMetadata"><code>MediaItem.mediaMetadata</code></a>
|
||||
and the static and dynamic metadata from the <a href="../trackselection/TrackSelection.html#getFormat(int)"><code>track
|
||||
selections' formats</code></a> and <a href="../Player.Listener.html#onMetadata(com.google.android.exoplayer2.metadata.Metadata)"><code>Player.Listener.onMetadata(Metadata)</code></a>. If a field is populated in
|
||||
the <a href="../MediaItem.html#mediaMetadata"><code>MediaItem.mediaMetadata</code></a>, it will be prioritised above the same field coming from
|
||||
static or dynamic metadata.
|
||||
<p>The provided <a href="../MediaMetadata.html" title="class in com.google.android.exoplayer2"><code>MediaMetadata</code></a> is a combination of the <a href="../MediaItem.html#mediaMetadata"><code>MediaItem metadata</code></a>, the static metadata in the media's <a href="../Format.html#metadata"><code>Format</code></a>, and
|
||||
any timed metadata that has been parsed from the media and output via <a href="../Player.Listener.html#onMetadata(com.google.android.exoplayer2.metadata.Metadata)"><code>Player.Listener.onMetadata(Metadata)</code></a>. If a field is populated in the <a href="../MediaItem.html#mediaMetadata"><code>MediaItem.mediaMetadata</code></a>, it will be prioritised above the same field coming from static or
|
||||
timed metadata.
|
||||
|
||||
<p>This method may be called multiple times in quick succession.
|
||||
|
||||
|
|
@ -2109,16 +2081,35 @@ public void release()</pre>
|
|||
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../Player.Listener.html#onCues(java.util.List)">Player.Listener</a></code></span></div>
|
||||
<div class="block">Called when there is a change in the <a href="../text/Cue.html" title="class in com.google.android.exoplayer2.text"><code>Cues</code></a>.
|
||||
|
||||
<p><code>cues</code> is in ascending order of priority. If any of the cue boxes overlap when
|
||||
displayed, the <a href="../text/Cue.html" title="class in com.google.android.exoplayer2.text"><code>Cue</code></a> nearer the end of the list should be shown on top.
|
||||
<p>Both <a href="../Player.Listener.html#onCues(java.util.List)"><code>Player.Listener.onCues(List)</code></a> and <a href="../Player.Listener.html#onCues(com.google.android.exoplayer2.text.CueGroup)"><code>Player.Listener.onCues(CueGroup)</code></a> are called when there is a change
|
||||
in the cues. You should only implement one or the other.
|
||||
|
||||
<p><a href="../Player.Listener.html#onEvents(com.google.android.exoplayer2.Player,com.google.android.exoplayer2.Player.Events)"><code>Player.Listener.onEvents(Player, Events)</code></a> will also be called to report this event along with
|
||||
other events that happen in the same <a href="https://developer.android.com/reference/android/os/Looper.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Looper</code></a> message queue iteration.</div>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
<dd><code><a href="../Player.Listener.html#onCues(java.util.List)">onCues</a></code> in interface <code><a href="../Player.Listener.html" title="interface in com.google.android.exoplayer2">Player.Listener</a></code></dd>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>cues</code> - The <a href="../text/Cue.html" title="class in com.google.android.exoplayer2.text"><code>Cues</code></a>. May be empty.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="onCues(com.google.android.exoplayer2.text.CueGroup)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>onCues</h4>
|
||||
<pre class="methodSignature">public void onCues​(<a href="../text/CueGroup.html" title="class in com.google.android.exoplayer2.text">CueGroup</a> cueGroup)</pre>
|
||||
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../Player.Listener.html#onCues(com.google.android.exoplayer2.text.CueGroup)">Player.Listener</a></code></span></div>
|
||||
<div class="block">Called when there is a change in the <a href="../text/CueGroup.html" title="class in com.google.android.exoplayer2.text"><code>CueGroup</code></a>.
|
||||
|
||||
<p>Both <a href="../Player.Listener.html#onCues(java.util.List)"><code>Player.Listener.onCues(List)</code></a> and <a href="../Player.Listener.html#onCues(com.google.android.exoplayer2.text.CueGroup)"><code>Player.Listener.onCues(CueGroup)</code></a> are called when there is a change
|
||||
in the cues. You should only implement one or the other.
|
||||
|
||||
<p><a href="../Player.Listener.html#onEvents(com.google.android.exoplayer2.Player,com.google.android.exoplayer2.Player.Events)"><code>Player.Listener.onEvents(Player, Events)</code></a> will also be called to report this event along with
|
||||
other events that happen in the same <a href="https://developer.android.com/reference/android/os/Looper.html" title="class or interface in android.os" class="externalLink" target="_top"><code>Looper</code></a> message queue iteration.</div>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
<dd><code><a href="../Player.Listener.html#onCues(com.google.android.exoplayer2.text.CueGroup)">onCues</a></code> in interface <code><a href="../Player.Listener.html" title="interface in com.google.android.exoplayer2">Player.Listener</a></code></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -2,7 +2,7 @@
|
|||
<!-- NewPage -->
|
||||
<html lang="en">
|
||||
<head><!-- start favicons snippet, use https://realfavicongenerator.net/ --><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"><link rel="manifest" href="/assets/site.webmanifest"><link rel="mask-icon" href="/assets/safari-pinned-tab.svg" color="#fc4d50"><link rel="shortcut icon" href="/assets/favicon.ico"><meta name="msapplication-TileColor" content="#ffc40d"><meta name="msapplication-config" content="/assets/browserconfig.xml"><meta name="theme-color" content="#ffffff"><!-- end favicons snippet -->
|
||||
<title>NetworkTypeObserver.Config (ExoPlayer library)</title>
|
||||
<title>AudioAttributes.AudioAttributesV21 (ExoPlayer library)</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
|
||||
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
|
||||
|
|
@ -19,18 +19,12 @@
|
|||
<script type="text/javascript"><!--
|
||||
try {
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="NetworkTypeObserver.Config (ExoPlayer library)";
|
||||
parent.document.title="AudioAttributes.AudioAttributesV21 (ExoPlayer library)";
|
||||
}
|
||||
}
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":9};
|
||||
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
var tableTab = "tableTab";
|
||||
var activeTableTab = "activeTableTab";
|
||||
var pathtoroot = "../../../../../";
|
||||
var useModuleDirectories = false;
|
||||
loadScripts(document, 'script');</script>
|
||||
|
|
@ -87,15 +81,15 @@ loadScripts(document, 'script');</script>
|
|||
<ul class="subNavList">
|
||||
<li>Summary: </li>
|
||||
<li>Nested | </li>
|
||||
<li>Field | </li>
|
||||
<li><a href="#field.summary">Field</a> | </li>
|
||||
<li>Constr | </li>
|
||||
<li><a href="#method.summary">Method</a></li>
|
||||
</ul>
|
||||
<ul class="subNavList">
|
||||
<li>Detail: </li>
|
||||
<li>Field | </li>
|
||||
<li><a href="#field.detail">Field</a> | </li>
|
||||
<li>Constr | </li>
|
||||
<li><a href="#method.detail">Method</a></li>
|
||||
<li>Method</li>
|
||||
</ul>
|
||||
</div>
|
||||
<a id="skip.navbar.top">
|
||||
|
|
@ -113,15 +107,15 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<!-- ======== START OF CLASS DATA ======== -->
|
||||
<main role="main">
|
||||
<div class="header">
|
||||
<div class="subTitle"><span class="packageLabelInType">Package</span> <a href="package-summary.html">com.google.android.exoplayer2.util</a></div>
|
||||
<h2 title="Class NetworkTypeObserver.Config" class="title">Class NetworkTypeObserver.Config</h2>
|
||||
<div class="subTitle"><span class="packageLabelInType">Package</span> <a href="package-summary.html">com.google.android.exoplayer2.audio</a></div>
|
||||
<h2 title="Class AudioAttributes.AudioAttributesV21" class="title">Class AudioAttributes.AudioAttributesV21</h2>
|
||||
</div>
|
||||
<div class="contentContainer">
|
||||
<ul class="inheritance">
|
||||
<li><a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">java.lang.Object</a></li>
|
||||
<li>
|
||||
<ul class="inheritance">
|
||||
<li>com.google.android.exoplayer2.util.NetworkTypeObserver.Config</li>
|
||||
<li>com.google.android.exoplayer2.audio.AudioAttributes.AudioAttributesV21</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -130,18 +124,42 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<li class="blockList">
|
||||
<dl>
|
||||
<dt>Enclosing class:</dt>
|
||||
<dd><a href="NetworkTypeObserver.html" title="class in com.google.android.exoplayer2.util">NetworkTypeObserver</a></dd>
|
||||
<dd><a href="AudioAttributes.html" title="class in com.google.android.exoplayer2.audio">AudioAttributes</a></dd>
|
||||
</dl>
|
||||
<hr>
|
||||
<pre>public static final class <span class="typeNameLabel">NetworkTypeObserver.Config</span>
|
||||
<pre>@RequiresApi(21)
|
||||
public static final class <span class="typeNameLabel">AudioAttributes.AudioAttributesV21</span>
|
||||
extends <a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a></pre>
|
||||
<div class="block">Configuration for <a href="NetworkTypeObserver.html" title="class in com.google.android.exoplayer2.util"><code>NetworkTypeObserver</code></a>.</div>
|
||||
<div class="block">A direct wrapper around <a href="https://developer.android.com/reference/android/media/AudioAttributes.html" title="class or interface in android.media" class="externalLink" target="_top"><code>AudioAttributes</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="summary">
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<!-- =========== FIELD SUMMARY =========== -->
|
||||
<section role="region">
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="field.summary">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Field Summary</h3>
|
||||
<table class="memberSummary">
|
||||
<caption><span>Fields</span><span class="tabEnd"> </span></caption>
|
||||
<tr>
|
||||
<th class="colFirst" scope="col">Modifier and Type</th>
|
||||
<th class="colSecond" scope="col">Field</th>
|
||||
<th class="colLast" scope="col">Description</th>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/android/media/AudioAttributes.html" title="class or interface in android.media" class="externalLink" target="_top">AudioAttributes</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#audioAttributes">audioAttributes</a></span></code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<!-- ========== METHOD SUMMARY =========== -->
|
||||
<section role="region">
|
||||
<ul class="blockList">
|
||||
|
|
@ -149,21 +167,6 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Method Summary</h3>
|
||||
<table class="memberSummary">
|
||||
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
|
||||
<tr>
|
||||
<th class="colFirst" scope="col">Modifier and Type</th>
|
||||
<th class="colSecond" scope="col">Method</th>
|
||||
<th class="colLast" scope="col">Description</th>
|
||||
</tr>
|
||||
<tr id="i0" class="altColor">
|
||||
<td class="colFirst"><code>static void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#disable5GNsaDisambiguation()">disable5GNsaDisambiguation</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Disables logic to disambiguate 5G-NSA networks from 4G networks.</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
|
||||
<!-- -->
|
||||
|
|
@ -180,21 +183,20 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
<div class="details">
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<!-- ============ METHOD DETAIL ========== -->
|
||||
<!-- ============ FIELD DETAIL =========== -->
|
||||
<section role="region">
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="method.detail">
|
||||
<li class="blockList"><a id="field.detail">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Method Detail</h3>
|
||||
<a id="disable5GNsaDisambiguation()">
|
||||
<h3>Field Detail</h3>
|
||||
<a id="audioAttributes">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>disable5GNsaDisambiguation</h4>
|
||||
<pre class="methodSignature">public static void disable5GNsaDisambiguation()</pre>
|
||||
<div class="block">Disables logic to disambiguate 5G-NSA networks from 4G networks.</div>
|
||||
<h4>audioAttributes</h4>
|
||||
<pre>public final <a href="https://developer.android.com/reference/android/media/AudioAttributes.html" title="class or interface in android.media" class="externalLink" target="_top">AudioAttributes</a> audioAttributes</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
@ -249,15 +251,15 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
<ul class="subNavList">
|
||||
<li>Summary: </li>
|
||||
<li>Nested | </li>
|
||||
<li>Field | </li>
|
||||
<li><a href="#field.summary">Field</a> | </li>
|
||||
<li>Constr | </li>
|
||||
<li><a href="#method.summary">Method</a></li>
|
||||
</ul>
|
||||
<ul class="subNavList">
|
||||
<li>Detail: </li>
|
||||
<li>Field | </li>
|
||||
<li><a href="#field.detail">Field</a> | </li>
|
||||
<li>Constr | </li>
|
||||
<li><a href="#method.detail">Method</a></li>
|
||||
<li>Method</li>
|
||||
</ul>
|
||||
</div>
|
||||
<a id="skip.navbar.bottom">
|
||||
|
|
@ -211,7 +211,7 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
<td class="colFirst"><code><a href="AudioAttributes.Builder.html" title="class in com.google.android.exoplayer2.audio">AudioAttributes.Builder</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setSpatializationBehavior(@com.google.android.exoplayer2.C.SpatializationBehaviorint)">setSpatializationBehavior</a></span>​(@com.google.android.exoplayer2.C.SpatializationBehavior int spatializationBehavior)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">See <code>android.media.AudioAttributes.Builder.setSpatializationBehavior(int)</code>.</div>
|
||||
<div class="block">See <a href="https://developer.android.com/reference/android/media/AudioAttributes.Builder.html#setSpatializationBehavior(int)" title="class or interface in android.media" class="externalLink" target="_top"><code>AudioAttributes.Builder.setSpatializationBehavior(int)</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
|
|
@ -254,7 +254,7 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
<pre>public Builder()</pre>
|
||||
<div class="block">Creates a new builder for <a href="AudioAttributes.html" title="class in com.google.android.exoplayer2.audio"><code>AudioAttributes</code></a>.
|
||||
|
||||
<p>By default the content type is <a href="../C.html#CONTENT_TYPE_UNKNOWN"><code>C.CONTENT_TYPE_UNKNOWN</code></a>, usage is <a href="../C.html#USAGE_MEDIA"><code>C.USAGE_MEDIA</code></a>, capture policy is <a href="../C.html#ALLOW_CAPTURE_BY_ALL"><code>C.ALLOW_CAPTURE_BY_ALL</code></a> and no flags are set.</div>
|
||||
<p>By default the content type is <a href="../C.html#AUDIO_CONTENT_TYPE_UNKNOWN"><code>C.AUDIO_CONTENT_TYPE_UNKNOWN</code></a>, usage is <a href="../C.html#USAGE_MEDIA"><code>C.USAGE_MEDIA</code></a>, capture policy is <a href="../C.html#ALLOW_CAPTURE_BY_ALL"><code>C.ALLOW_CAPTURE_BY_ALL</code></a> and no flags are set.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
@ -318,7 +318,7 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
<li class="blockList">
|
||||
<h4>setSpatializationBehavior</h4>
|
||||
<pre class="methodSignature">public <a href="AudioAttributes.Builder.html" title="class in com.google.android.exoplayer2.audio">AudioAttributes.Builder</a> setSpatializationBehavior​(@com.google.android.exoplayer2.C.SpatializationBehavior int spatializationBehavior)</pre>
|
||||
<div class="block">See <code>android.media.AudioAttributes.Builder.setSpatializationBehavior(int)</code>.</div>
|
||||
<div class="block">See <a href="https://developer.android.com/reference/android/media/AudioAttributes.Builder.html#setSpatializationBehavior(int)" title="class or interface in android.media" class="externalLink" target="_top"><code>AudioAttributes.Builder.setSpatializationBehavior(int)</code></a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="build()">
|
||||
|
|
|
|||
|
|
@ -166,6 +166,13 @@ implements <a href="../Bundleable.html" title="interface in com.google.android.e
|
|||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static class </code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="AudioAttributes.AudioAttributesV21.html" title="class in com.google.android.exoplayer2.audio">AudioAttributes.AudioAttributesV21</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">A direct wrapper around <a href="https://developer.android.com/reference/android/media/AudioAttributes.html" title="class or interface in android.media" class="externalLink" target="_top"><code>AudioAttributes</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static class </code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="AudioAttributes.Builder.html" title="class in com.google.android.exoplayer2.audio">AudioAttributes.Builder</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Builder for <a href="AudioAttributes.html" title="class in com.google.android.exoplayer2.audio"><code>AudioAttributes</code></a>.</div>
|
||||
|
|
@ -221,9 +228,9 @@ implements <a href="../Bundleable.html" title="interface in com.google.android.e
|
|||
<td class="colFirst"><code>static <a href="AudioAttributes.html" title="class in com.google.android.exoplayer2.audio">AudioAttributes</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DEFAULT">DEFAULT</a></span></code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">The default audio attributes, where the content type is <a href="../C.html#CONTENT_TYPE_UNKNOWN"><code>C.CONTENT_TYPE_UNKNOWN</code></a>, usage
|
||||
is <a href="../C.html#USAGE_MEDIA"><code>C.USAGE_MEDIA</code></a>, capture policy is <a href="../C.html#ALLOW_CAPTURE_BY_ALL"><code>C.ALLOW_CAPTURE_BY_ALL</code></a> and no flags are
|
||||
set.</div>
|
||||
<div class="block">The default audio attributes, where the content type is <a href="../C.html#AUDIO_CONTENT_TYPE_UNKNOWN"><code>C.AUDIO_CONTENT_TYPE_UNKNOWN</code></a>,
|
||||
usage is <a href="../C.html#USAGE_MEDIA"><code>C.USAGE_MEDIA</code></a>, capture policy is <a href="../C.html#ALLOW_CAPTURE_BY_ALL"><code>C.ALLOW_CAPTURE_BY_ALL</code></a> and no flags
|
||||
are set.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
|
|
@ -271,10 +278,10 @@ implements <a href="../Bundleable.html" title="interface in com.google.android.e
|
|||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr id="i1" class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/android/media/AudioAttributes.html" title="class or interface in android.media" class="externalLink" target="_top">AudioAttributes</a></code></td>
|
||||
<td class="colFirst"><code><a href="AudioAttributes.AudioAttributesV21.html" title="class in com.google.android.exoplayer2.audio">AudioAttributes.AudioAttributesV21</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getAudioAttributesV21()">getAudioAttributesV21</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns a <a href="https://developer.android.com/reference/android/media/AudioAttributes.html" title="class or interface in android.media" class="externalLink" target="_top"><code>AudioAttributes</code></a> from this instance.</div>
|
||||
<div class="block">Returns a <a href="AudioAttributes.AudioAttributesV21.html" title="class in com.google.android.exoplayer2.audio"><code>AudioAttributes.AudioAttributesV21</code></a> from this instance.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i2" class="altColor">
|
||||
|
|
@ -320,9 +327,9 @@ implements <a href="../Bundleable.html" title="interface in com.google.android.e
|
|||
<li class="blockList">
|
||||
<h4>DEFAULT</h4>
|
||||
<pre>public static final <a href="AudioAttributes.html" title="class in com.google.android.exoplayer2.audio">AudioAttributes</a> DEFAULT</pre>
|
||||
<div class="block">The default audio attributes, where the content type is <a href="../C.html#CONTENT_TYPE_UNKNOWN"><code>C.CONTENT_TYPE_UNKNOWN</code></a>, usage
|
||||
is <a href="../C.html#USAGE_MEDIA"><code>C.USAGE_MEDIA</code></a>, capture policy is <a href="../C.html#ALLOW_CAPTURE_BY_ALL"><code>C.ALLOW_CAPTURE_BY_ALL</code></a> and no flags are
|
||||
set.</div>
|
||||
<div class="block">The default audio attributes, where the content type is <a href="../C.html#AUDIO_CONTENT_TYPE_UNKNOWN"><code>C.AUDIO_CONTENT_TYPE_UNKNOWN</code></a>,
|
||||
usage is <a href="../C.html#USAGE_MEDIA"><code>C.USAGE_MEDIA</code></a>, capture policy is <a href="../C.html#ALLOW_CAPTURE_BY_ALL"><code>C.ALLOW_CAPTURE_BY_ALL</code></a> and no flags
|
||||
are set.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="contentType">
|
||||
|
|
@ -406,10 +413,11 @@ public final @com.google.android.exoplayer2.C.AudioAllowedCapturePolicy int
|
|||
<li class="blockList">
|
||||
<h4>getAudioAttributesV21</h4>
|
||||
<pre class="methodSignature">@RequiresApi(21)
|
||||
public <a href="https://developer.android.com/reference/android/media/AudioAttributes.html" title="class or interface in android.media" class="externalLink" target="_top">AudioAttributes</a> getAudioAttributesV21()</pre>
|
||||
<div class="block">Returns a <a href="https://developer.android.com/reference/android/media/AudioAttributes.html" title="class or interface in android.media" class="externalLink" target="_top"><code>AudioAttributes</code></a> from this instance.
|
||||
public <a href="AudioAttributes.AudioAttributesV21.html" title="class in com.google.android.exoplayer2.audio">AudioAttributes.AudioAttributesV21</a> getAudioAttributesV21()</pre>
|
||||
<div class="block">Returns a <a href="AudioAttributes.AudioAttributesV21.html" title="class in com.google.android.exoplayer2.audio"><code>AudioAttributes.AudioAttributesV21</code></a> from this instance.
|
||||
|
||||
<p>Field <a href="#allowedCapturePolicy"><code>allowedCapturePolicy</code></a> is ignored for API levels prior to 29.</div>
|
||||
<p>Some fields are ignored if the corresponding <a href="https://developer.android.com/reference/android/media/AudioAttributes.Builder.html" title="class or interface in android.media" class="externalLink" target="_top"><code>AudioAttributes.Builder</code></a>
|
||||
setter is not available on the current API level.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="equals(java.lang.Object)">
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":10,"i1":9,"i2":10,"i3":10,"i4":10,"i5":10};
|
||||
var data = {"i0":10,"i1":9,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10};
|
||||
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
|
|
@ -215,25 +215,40 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
</td>
|
||||
</tr>
|
||||
<tr id="i2" class="altColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/android/util/Pair.html" title="class or interface in android.util" class="externalLink">Pair</a><<a href="https://developer.android.com/reference/java/lang/Integer.html?is-external=true" title="class or interface in java.lang" class="externalLink">Integer</a>,​<a href="https://developer.android.com/reference/java/lang/Integer.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_top">Integer</a>></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getEncodingAndChannelConfigForPassthrough(com.google.android.exoplayer2.Format)">getEncodingAndChannelConfigForPassthrough</a></span>​(<a href="../Format.html" title="class in com.google.android.exoplayer2">Format</a> format)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns the encoding and channel config to use when configuring an <a href="https://developer.android.com/reference/android/media/AudioTrack.html" title="class or interface in android.media" class="externalLink" target="_top"><code>AudioTrack</code></a> in
|
||||
passthrough mode for the specified <a href="../Format.html" title="class in com.google.android.exoplayer2"><code>Format</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i3" class="rowColor">
|
||||
<td class="colFirst"><code>int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMaxChannelCount()">getMaxChannelCount</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns the maximum number of channels the device can play at the same time.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i3" class="rowColor">
|
||||
<tr id="i4" class="altColor">
|
||||
<td class="colFirst"><code>int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hashCode()">hashCode</a></span>()</code></th>
|
||||
<td class="colLast"> </td>
|
||||
</tr>
|
||||
<tr id="i4" class="altColor">
|
||||
<tr id="i5" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isPassthroughPlaybackSupported(com.google.android.exoplayer2.Format)">isPassthroughPlaybackSupported</a></span>​(<a href="../Format.html" title="class in com.google.android.exoplayer2">Format</a> format)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns whether the device can do passthrough playback for <code>format</code>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i6" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#supportsEncoding(@com.google.android.exoplayer2.C.Encodingint)">supportsEncoding</a></span>​(@com.google.android.exoplayer2.C.Encoding int encoding)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns whether this device supports playback of the specified audio <code>encoding</code>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<tr id="i7" class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toString()">toString</a></span>()</code></th>
|
||||
<td class="colLast"> </td>
|
||||
|
|
@ -357,6 +372,36 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
<div class="block">Returns the maximum number of channels the device can play at the same time.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="isPassthroughPlaybackSupported(com.google.android.exoplayer2.Format)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isPassthroughPlaybackSupported</h4>
|
||||
<pre class="methodSignature">public boolean isPassthroughPlaybackSupported​(<a href="../Format.html" title="class in com.google.android.exoplayer2">Format</a> format)</pre>
|
||||
<div class="block">Returns whether the device can do passthrough playback for <code>format</code>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="getEncodingAndChannelConfigForPassthrough(com.google.android.exoplayer2.Format)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getEncodingAndChannelConfigForPassthrough</h4>
|
||||
<pre class="methodSignature">@Nullable
|
||||
public <a href="https://developer.android.com/reference/android/util/Pair.html" title="class or interface in android.util" class="externalLink">Pair</a><<a href="https://developer.android.com/reference/java/lang/Integer.html?is-external=true" title="class or interface in java.lang" class="externalLink">Integer</a>,​<a href="https://developer.android.com/reference/java/lang/Integer.html?is-external=true" title="class or interface in java.lang" class="externalLink">Integer</a>> getEncodingAndChannelConfigForPassthrough​(<a href="../Format.html" title="class in com.google.android.exoplayer2" target="_top">Format</a> format)</pre>
|
||||
<div class="block">Returns the encoding and channel config to use when configuring an <a href="https://developer.android.com/reference/android/media/AudioTrack.html" title="class or interface in android.media" class="externalLink" target="_top"><code>AudioTrack</code></a> in
|
||||
passthrough mode for the specified <a href="../Format.html" title="class in com.google.android.exoplayer2"><code>Format</code></a>. Returns <code>null</code> if passthrough of the
|
||||
format is unsupported.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>format</code> - The <a href="../Format.html" title="class in com.google.android.exoplayer2"><code>Format</code></a>.</dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
<dd>The encoding and channel config to use, or <code>null</code> if passthrough of the format is
|
||||
unsupported.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="equals(java.lang.Object)">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -163,7 +163,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</tr>
|
||||
<tr id="i2" class="altColor">
|
||||
<td class="colFirst"><code>default void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onOffloadBufferFull(long)">onOffloadBufferFull</a></span>​(long bufferEmptyingDeadlineMs)</code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onOffloadBufferFull()">onOffloadBufferFull</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the offload buffer has been filled completely.</div>
|
||||
</td>
|
||||
|
|
@ -291,18 +291,14 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<div class="block">Called when the offload buffer has been partially emptied.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="onOffloadBufferFull(long)">
|
||||
<a id="onOffloadBufferFull()">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>onOffloadBufferFull</h4>
|
||||
<pre class="methodSignature">default void onOffloadBufferFull​(long bufferEmptyingDeadlineMs)</pre>
|
||||
<pre class="methodSignature">default void onOffloadBufferFull()</pre>
|
||||
<div class="block">Called when the offload buffer has been filled completely.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>bufferEmptyingDeadlineMs</code> - Maximum time in milliseconds until <a href="#onOffloadBufferEmptying()"><code>onOffloadBufferEmptying()</code></a> will be called.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="onAudioSinkError(java.lang.Exception)">
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":10,"i1":6,"i2":10,"i3":10,"i4":6,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":6};
|
||||
var data = {"i0":10,"i1":6,"i2":10,"i3":10,"i4":6,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":6};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
|
|
@ -405,6 +405,15 @@ implements <a href="../util/MediaClock.html" title="interface in com.google.andr
|
|||
</td>
|
||||
</tr>
|
||||
<tr id="i18" class="altColor">
|
||||
<td class="colFirst"><code>protected void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onStreamChanged(com.google.android.exoplayer2.Format%5B%5D,long,long)">onStreamChanged</a></span>​(<a href="../Format.html" title="class in com.google.android.exoplayer2">Format</a>[] formats,
|
||||
long startPositionUs,
|
||||
long offsetUs)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Called when the renderer's stream has changed.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i19" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#render(long,long)">render</a></span>​(long positionUs,
|
||||
long elapsedRealtimeUs)</code></th>
|
||||
|
|
@ -412,28 +421,28 @@ implements <a href="../util/MediaClock.html" title="interface in com.google.andr
|
|||
<div class="block">Incrementally renders the <a href="../source/SampleStream.html" title="interface in com.google.android.exoplayer2.source"><code>SampleStream</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i19" class="rowColor">
|
||||
<tr id="i20" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setPlaybackParameters(com.google.android.exoplayer2.PlaybackParameters)">setPlaybackParameters</a></span>​(<a href="../PlaybackParameters.html" title="class in com.google.android.exoplayer2">PlaybackParameters</a> playbackParameters)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Attempts to set the playback parameters.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i20" class="altColor">
|
||||
<tr id="i21" class="rowColor">
|
||||
<td class="colFirst"><code>protected boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#sinkSupportsFormat(com.google.android.exoplayer2.Format)">sinkSupportsFormat</a></span>​(<a href="../Format.html" title="class in com.google.android.exoplayer2">Format</a> format)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns whether the renderer's <a href="AudioSink.html" title="interface in com.google.android.exoplayer2.audio"><code>AudioSink</code></a> supports a given <a href="../Format.html" title="class in com.google.android.exoplayer2"><code>Format</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i21" class="rowColor">
|
||||
<tr id="i22" class="altColor">
|
||||
<td class="colFirst"><code>@com.google.android.exoplayer2.RendererCapabilities.Capabilities int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#supportsFormat(com.google.android.exoplayer2.Format)">supportsFormat</a></span>​(<a href="../Format.html" title="class in com.google.android.exoplayer2">Format</a> format)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns the extent to which the <a href="../Renderer.html" title="interface in com.google.android.exoplayer2"><code>Renderer</code></a> supports a given format.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i22" class="altColor">
|
||||
<tr id="i23" class="rowColor">
|
||||
<td class="colFirst"><code>protected abstract @com.google.android.exoplayer2.C.FormatSupport int</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#supportsFormatInternal(com.google.android.exoplayer2.Format)">supportsFormatInternal</a></span>​(<a href="../Format.html" title="class in com.google.android.exoplayer2">Format</a> format)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -446,7 +455,7 @@ implements <a href="../util/MediaClock.html" title="interface in com.google.andr
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class com.google.android.exoplayer2.<a href="../BaseRenderer.html" title="class in com.google.android.exoplayer2">BaseRenderer</a></h3>
|
||||
<code><a href="../BaseRenderer.html#createRendererException(java.lang.Throwable,com.google.android.exoplayer2.Format,@com.google.android.exoplayer2.PlaybackException.ErrorCodeint)">createRendererException</a>, <a href="../BaseRenderer.html#createRendererException(java.lang.Throwable,com.google.android.exoplayer2.Format,boolean,@com.google.android.exoplayer2.PlaybackException.ErrorCodeint)">createRendererException</a>, <a href="../BaseRenderer.html#disable()">disable</a>, <a href="../BaseRenderer.html#enable(com.google.android.exoplayer2.RendererConfiguration,com.google.android.exoplayer2.Format%5B%5D,com.google.android.exoplayer2.source.SampleStream,long,boolean,boolean,long,long)">enable</a>, <a href="../BaseRenderer.html#getCapabilities()">getCapabilities</a>, <a href="../BaseRenderer.html#getConfiguration()">getConfiguration</a>, <a href="../BaseRenderer.html#getFormatHolder()">getFormatHolder</a>, <a href="../BaseRenderer.html#getIndex()">getIndex</a>, <a href="../BaseRenderer.html#getLastResetPositionUs()">getLastResetPositionUs</a>, <a href="../BaseRenderer.html#getPlayerId()">getPlayerId</a>, <a href="../BaseRenderer.html#getReadingPositionUs()">getReadingPositionUs</a>, <a href="../BaseRenderer.html#getState()">getState</a>, <a href="../BaseRenderer.html#getStream()">getStream</a>, <a href="../BaseRenderer.html#getStreamFormats()">getStreamFormats</a>, <a href="../BaseRenderer.html#getTrackType()">getTrackType</a>, <a href="../BaseRenderer.html#hasReadStreamToEnd()">hasReadStreamToEnd</a>, <a href="../BaseRenderer.html#init(int,com.google.android.exoplayer2.analytics.PlayerId)">init</a>, <a href="../BaseRenderer.html#isCurrentStreamFinal()">isCurrentStreamFinal</a>, <a href="../BaseRenderer.html#isSourceReady()">isSourceReady</a>, <a href="../BaseRenderer.html#maybeThrowStreamError()">maybeThrowStreamError</a>, <a href="../BaseRenderer.html#onReset()">onReset</a>, <a href="../BaseRenderer.html#onStreamChanged(com.google.android.exoplayer2.Format%5B%5D,long,long)">onStreamChanged</a>, <a href="../BaseRenderer.html#readSource(com.google.android.exoplayer2.FormatHolder,com.google.android.exoplayer2.decoder.DecoderInputBuffer,@com.google.android.exoplayer2.source.SampleStream.ReadFlagsint)">readSource</a>, <a href="../BaseRenderer.html#replaceStream(com.google.android.exoplayer2.Format%5B%5D,com.google.android.exoplayer2.source.SampleStream,long,long)">replaceStream</a>, <a href="../BaseRenderer.html#reset()">reset</a>, <a href="../BaseRenderer.html#resetPosition(long)">resetPosition</a>, <a href="../BaseRenderer.html#setCurrentStreamFinal()">setCurrentStreamFinal</a>, <a href="../BaseRenderer.html#skipSource(long)">skipSource</a>, <a href="../BaseRenderer.html#start()">start</a>, <a href="../BaseRenderer.html#stop()">stop</a>, <a href="../BaseRenderer.html#supportsMixedMimeTypeAdaptation()">supportsMixedMimeTypeAdaptation</a></code></li>
|
||||
<code><a href="../BaseRenderer.html#createRendererException(java.lang.Throwable,com.google.android.exoplayer2.Format,@com.google.android.exoplayer2.PlaybackException.ErrorCodeint)">createRendererException</a>, <a href="../BaseRenderer.html#createRendererException(java.lang.Throwable,com.google.android.exoplayer2.Format,boolean,@com.google.android.exoplayer2.PlaybackException.ErrorCodeint)">createRendererException</a>, <a href="../BaseRenderer.html#disable()">disable</a>, <a href="../BaseRenderer.html#enable(com.google.android.exoplayer2.RendererConfiguration,com.google.android.exoplayer2.Format%5B%5D,com.google.android.exoplayer2.source.SampleStream,long,boolean,boolean,long,long)">enable</a>, <a href="../BaseRenderer.html#getCapabilities()">getCapabilities</a>, <a href="../BaseRenderer.html#getConfiguration()">getConfiguration</a>, <a href="../BaseRenderer.html#getFormatHolder()">getFormatHolder</a>, <a href="../BaseRenderer.html#getIndex()">getIndex</a>, <a href="../BaseRenderer.html#getLastResetPositionUs()">getLastResetPositionUs</a>, <a href="../BaseRenderer.html#getPlayerId()">getPlayerId</a>, <a href="../BaseRenderer.html#getReadingPositionUs()">getReadingPositionUs</a>, <a href="../BaseRenderer.html#getState()">getState</a>, <a href="../BaseRenderer.html#getStream()">getStream</a>, <a href="../BaseRenderer.html#getStreamFormats()">getStreamFormats</a>, <a href="../BaseRenderer.html#getTrackType()">getTrackType</a>, <a href="../BaseRenderer.html#hasReadStreamToEnd()">hasReadStreamToEnd</a>, <a href="../BaseRenderer.html#init(int,com.google.android.exoplayer2.analytics.PlayerId)">init</a>, <a href="../BaseRenderer.html#isCurrentStreamFinal()">isCurrentStreamFinal</a>, <a href="../BaseRenderer.html#isSourceReady()">isSourceReady</a>, <a href="../BaseRenderer.html#maybeThrowStreamError()">maybeThrowStreamError</a>, <a href="../BaseRenderer.html#onReset()">onReset</a>, <a href="../BaseRenderer.html#readSource(com.google.android.exoplayer2.FormatHolder,com.google.android.exoplayer2.decoder.DecoderInputBuffer,@com.google.android.exoplayer2.source.SampleStream.ReadFlagsint)">readSource</a>, <a href="../BaseRenderer.html#replaceStream(com.google.android.exoplayer2.Format%5B%5D,com.google.android.exoplayer2.source.SampleStream,long,long)">replaceStream</a>, <a href="../BaseRenderer.html#reset()">reset</a>, <a href="../BaseRenderer.html#resetPosition(long)">resetPosition</a>, <a href="../BaseRenderer.html#setCurrentStreamFinal()">setCurrentStreamFinal</a>, <a href="../BaseRenderer.html#skipSource(long)">skipSource</a>, <a href="../BaseRenderer.html#start()">start</a>, <a href="../BaseRenderer.html#stop()">stop</a>, <a href="../BaseRenderer.html#supportsMixedMimeTypeAdaptation()">supportsMixedMimeTypeAdaptation</a></code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
|
||||
|
|
@ -981,6 +990,34 @@ protected void onPositionDiscontinuity()</pre>
|
|||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="onStreamChanged(com.google.android.exoplayer2.Format[],long,long)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>onStreamChanged</h4>
|
||||
<pre class="methodSignature">protected void onStreamChanged​(<a href="../Format.html" title="class in com.google.android.exoplayer2">Format</a>[] formats,
|
||||
long startPositionUs,
|
||||
long offsetUs)
|
||||
throws <a href="../ExoPlaybackException.html" title="class in com.google.android.exoplayer2">ExoPlaybackException</a></pre>
|
||||
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../BaseRenderer.html#onStreamChanged(com.google.android.exoplayer2.Format%5B%5D,long,long)">BaseRenderer</a></code></span></div>
|
||||
<div class="block">Called when the renderer's stream has changed. This occurs when the renderer is enabled after
|
||||
<a href="../BaseRenderer.html#onEnabled(boolean,boolean)"><code>BaseRenderer.onEnabled(boolean, boolean)</code></a> has been called, and also when the stream has been
|
||||
replaced whilst the renderer is enabled or started.
|
||||
|
||||
<p>The default implementation is a no-op.</div>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
|
||||
<dd><code><a href="../BaseRenderer.html#onStreamChanged(com.google.android.exoplayer2.Format%5B%5D,long,long)">onStreamChanged</a></code> in class <code><a href="../BaseRenderer.html" title="class in com.google.android.exoplayer2">BaseRenderer</a></code></dd>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>formats</code> - The enabled formats.</dd>
|
||||
<dd><code>startPositionUs</code> - The start position of the new stream in renderer time (microseconds).</dd>
|
||||
<dd><code>offsetUs</code> - The offset that will be added to the timestamps of buffers read via <a href="../BaseRenderer.html#readSource(com.google.android.exoplayer2.FormatHolder,com.google.android.exoplayer2.decoder.DecoderInputBuffer,@com.google.android.exoplayer2.source.SampleStream.ReadFlagsint)"><code>BaseRenderer.readSource(com.google.android.exoplayer2.FormatHolder, com.google.android.exoplayer2.decoder.DecoderInputBuffer, @com.google.android.exoplayer2.source.SampleStream.ReadFlags int)</code></a> so that decoder input buffers have monotonically increasing timestamps.</dd>
|
||||
<dt><span class="throwsLabel">Throws:</span></dt>
|
||||
<dd><code><a href="../ExoPlaybackException.html" title="class in com.google.android.exoplayer2">ExoPlaybackException</a></code> - If an error occurs.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="handleMessage(@com.google.android.exoplayer2.Renderer.MessageTypeint,java.lang.Object)">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -201,148 +201,154 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="AudioAttributes.AudioAttributesV21.html" title="class in com.google.android.exoplayer2.audio">AudioAttributes.AudioAttributesV21</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">A direct wrapper around <a href="https://developer.android.com/reference/android/media/AudioAttributes.html" title="class or interface in android.media" class="externalLink" target="_top"><code>AudioAttributes</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="AudioAttributes.Builder.html" title="class in com.google.android.exoplayer2.audio">AudioAttributes.Builder</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Builder for <a href="AudioAttributes.html" title="class in com.google.android.exoplayer2.audio"><code>AudioAttributes</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="AudioCapabilities.html" title="class in com.google.android.exoplayer2.audio">AudioCapabilities</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Represents the set of audio formats that a device is capable of playing.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="AudioCapabilitiesReceiver.html" title="class in com.google.android.exoplayer2.audio">AudioCapabilitiesReceiver</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Receives broadcast events indicating changes to the device's audio capabilities, notifying a
|
||||
<a href="AudioCapabilitiesReceiver.Listener.html" title="interface in com.google.android.exoplayer2.audio"><code>AudioCapabilitiesReceiver.Listener</code></a> when audio capability changes occur.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="AudioProcessor.AudioFormat.html" title="class in com.google.android.exoplayer2.audio">AudioProcessor.AudioFormat</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">PCM audio format that may be handled by an audio processor.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="AudioRendererEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.audio">AudioRendererEventListener.EventDispatcher</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Dispatches events to an <a href="AudioRendererEventListener.html" title="interface in com.google.android.exoplayer2.audio"><code>AudioRendererEventListener</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="AuxEffectInfo.html" title="class in com.google.android.exoplayer2.audio">AuxEffectInfo</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Represents auxiliary effect information, which can be used to attach an auxiliary effect to an
|
||||
underlying <a href="https://developer.android.com/reference/android/media/AudioTrack.html" title="class or interface in android.media" class="externalLink" target="_top"><code>AudioTrack</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="BaseAudioProcessor.html" title="class in com.google.android.exoplayer2.audio">BaseAudioProcessor</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Base class for audio processors that keep an output buffer and an internal buffer that is reused
|
||||
whenever input is queued.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="DecoderAudioRenderer.html" title="class in com.google.android.exoplayer2.audio">DecoderAudioRenderer</a><T extends <a href="../decoder/Decoder.html" title="interface in com.google.android.exoplayer2.decoder">Decoder</a><<a href="../decoder/DecoderInputBuffer.html" title="class in com.google.android.exoplayer2.decoder">DecoderInputBuffer</a>,​? extends <a href="../decoder/SimpleDecoderOutputBuffer.html" title="class in com.google.android.exoplayer2.decoder">SimpleDecoderOutputBuffer</a>,​? extends <a href="../decoder/DecoderException.html" title="class in com.google.android.exoplayer2.decoder">DecoderException</a>>></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Decodes and renders audio using a <a href="../decoder/Decoder.html" title="interface in com.google.android.exoplayer2.decoder"><code>Decoder</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="DefaultAudioSink.html" title="class in com.google.android.exoplayer2.audio">DefaultAudioSink</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Plays audio data.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="DefaultAudioSink.Builder.html" title="class in com.google.android.exoplayer2.audio">DefaultAudioSink.Builder</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">A builder to create <a href="DefaultAudioSink.html" title="class in com.google.android.exoplayer2.audio"><code>DefaultAudioSink</code></a> instances.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="DefaultAudioSink.DefaultAudioProcessorChain.html" title="class in com.google.android.exoplayer2.audio">DefaultAudioSink.DefaultAudioProcessorChain</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">The default audio processor chain, which applies a (possibly empty) chain of user-defined audio
|
||||
processors followed by <a href="SilenceSkippingAudioProcessor.html" title="class in com.google.android.exoplayer2.audio"><code>SilenceSkippingAudioProcessor</code></a> and <a href="SonicAudioProcessor.html" title="class in com.google.android.exoplayer2.audio"><code>SonicAudioProcessor</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="DefaultAudioTrackBufferSizeProvider.html" title="class in com.google.android.exoplayer2.audio">DefaultAudioTrackBufferSizeProvider</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Provide the buffer size to use when creating an <a href="https://developer.android.com/reference/android/media/AudioTrack.html" title="class or interface in android.media" class="externalLink" target="_top"><code>AudioTrack</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="DefaultAudioTrackBufferSizeProvider.Builder.html" title="class in com.google.android.exoplayer2.audio">DefaultAudioTrackBufferSizeProvider.Builder</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">A builder to create <a href="DefaultAudioTrackBufferSizeProvider.html" title="class in com.google.android.exoplayer2.audio"><code>DefaultAudioTrackBufferSizeProvider</code></a> instances.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="DtsUtil.html" title="class in com.google.android.exoplayer2.audio">DtsUtil</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Utility methods for parsing DTS frames.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="ForwardingAudioSink.html" title="class in com.google.android.exoplayer2.audio">ForwardingAudioSink</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">An overridable <a href="AudioSink.html" title="interface in com.google.android.exoplayer2.audio"><code>AudioSink</code></a> implementation forwarding all methods to another sink.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="MediaCodecAudioRenderer.html" title="class in com.google.android.exoplayer2.audio">MediaCodecAudioRenderer</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Decodes and renders audio using <a href="https://developer.android.com/reference/android/media/MediaCodec.html" title="class or interface in android.media" class="externalLink"><code>MediaCodec</code></a> and an <a href="AudioSink.html" title="interface in com.google.android.exoplayer2.audio" target="_top"><code>AudioSink</code></a>.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="MpegAudioUtil.html" title="class in com.google.android.exoplayer2.audio">MpegAudioUtil</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Utility methods for handling MPEG audio streams.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="MpegAudioUtil.Header.html" title="class in com.google.android.exoplayer2.audio">MpegAudioUtil.Header</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Stores the metadata for an MPEG audio frame.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="OpusUtil.html" title="class in com.google.android.exoplayer2.audio">OpusUtil</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Utility methods for handling Opus audio streams.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="SilenceSkippingAudioProcessor.html" title="class in com.google.android.exoplayer2.audio">SilenceSkippingAudioProcessor</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">An <a href="AudioProcessor.html" title="interface in com.google.android.exoplayer2.audio"><code>AudioProcessor</code></a> that skips silence in the input stream.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="SonicAudioProcessor.html" title="class in com.google.android.exoplayer2.audio">SonicAudioProcessor</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">An <a href="AudioProcessor.html" title="interface in com.google.android.exoplayer2.audio"><code>AudioProcessor</code></a> that uses the Sonic library to modify audio speed/pitch/sample rate.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="TeeAudioProcessor.html" title="class in com.google.android.exoplayer2.audio">TeeAudioProcessor</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Audio processor that outputs its input unmodified and also outputs its input to a given sink.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<th class="colFirst" scope="row"><a href="TeeAudioProcessor.WavFileAudioBufferSink.html" title="class in com.google.android.exoplayer2.audio">TeeAudioProcessor.WavFileAudioBufferSink</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">A sink for audio buffers that writes output audio as .wav files with a given path prefix.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="WavUtil.html" title="class in com.google.android.exoplayer2.audio">WavUtil</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Utilities for handling WAVE files.</div>
|
||||
|
|
|
|||
|
|
@ -110,6 +110,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<li class="circle">com.google.android.exoplayer2.audio.<a href="Ac4Util.html" title="class in com.google.android.exoplayer2.audio"><span class="typeNameLink">Ac4Util</span></a></li>
|
||||
<li class="circle">com.google.android.exoplayer2.audio.<a href="Ac4Util.SyncFrameInfo.html" title="class in com.google.android.exoplayer2.audio"><span class="typeNameLink">Ac4Util.SyncFrameInfo</span></a></li>
|
||||
<li class="circle">com.google.android.exoplayer2.audio.<a href="AudioAttributes.html" title="class in com.google.android.exoplayer2.audio"><span class="typeNameLink">AudioAttributes</span></a> (implements com.google.android.exoplayer2.<a href="../Bundleable.html" title="interface in com.google.android.exoplayer2">Bundleable</a>)</li>
|
||||
<li class="circle">com.google.android.exoplayer2.audio.<a href="AudioAttributes.AudioAttributesV21.html" title="class in com.google.android.exoplayer2.audio"><span class="typeNameLink">AudioAttributes.AudioAttributesV21</span></a></li>
|
||||
<li class="circle">com.google.android.exoplayer2.audio.<a href="AudioAttributes.Builder.html" title="class in com.google.android.exoplayer2.audio"><span class="typeNameLink">AudioAttributes.Builder</span></a></li>
|
||||
<li class="circle">com.google.android.exoplayer2.audio.<a href="AudioCapabilities.html" title="class in com.google.android.exoplayer2.audio"><span class="typeNameLink">AudioCapabilities</span></a></li>
|
||||
<li class="circle">com.google.android.exoplayer2.audio.<a href="AudioCapabilitiesReceiver.html" title="class in com.google.android.exoplayer2.audio"><span class="typeNameLink">AudioCapabilitiesReceiver</span></a></li>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10};
|
||||
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
|
|
@ -228,12 +228,19 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
</tr>
|
||||
<tr id="i7" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isFirstSample()">isFirstSample</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns whether the <a href="../C.html#BUFFER_FLAG_FIRST_SAMPLE"><code>C.BUFFER_FLAG_FIRST_SAMPLE</code></a> flag is set.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i8" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isKeyFrame()">isKeyFrame</a></span>()</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Returns whether the <a href="../C.html#BUFFER_FLAG_KEY_FRAME"><code>C.BUFFER_FLAG_KEY_FRAME</code></a> flag is set.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i8" class="altColor">
|
||||
<tr id="i9" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setFlags(@com.google.android.exoplayer2.C.BufferFlagsint)">setFlags</a></span>​(@com.google.android.exoplayer2.C.BufferFlags int flags)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -303,6 +310,16 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
<div class="block">Returns whether the <a href="../C.html#BUFFER_FLAG_DECODE_ONLY"><code>C.BUFFER_FLAG_DECODE_ONLY</code></a> flag is set.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="isFirstSample()">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isFirstSample</h4>
|
||||
<pre class="methodSignature">public final boolean isFirstSample()</pre>
|
||||
<div class="block">Returns whether the <a href="../C.html#BUFFER_FLAG_FIRST_SAMPLE"><code>C.BUFFER_FLAG_FIRST_SAMPLE</code></a> flag is set.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="isEndOfStream()">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -356,7 +356,7 @@ extends <a href="Buffer.html" title="class in com.google.android.exoplayer2.deco
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class com.google.android.exoplayer2.decoder.<a href="Buffer.html" title="class in com.google.android.exoplayer2.decoder">Buffer</a></h3>
|
||||
<code><a href="Buffer.html#addFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">addFlag</a>, <a href="Buffer.html#clearFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">clearFlag</a>, <a href="Buffer.html#getFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">getFlag</a>, <a href="Buffer.html#hasSupplementalData()">hasSupplementalData</a>, <a href="Buffer.html#isDecodeOnly()">isDecodeOnly</a>, <a href="Buffer.html#isEndOfStream()">isEndOfStream</a>, <a href="Buffer.html#isKeyFrame()">isKeyFrame</a>, <a href="Buffer.html#setFlags(@com.google.android.exoplayer2.C.BufferFlagsint)">setFlags</a></code></li>
|
||||
<code><a href="Buffer.html#addFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">addFlag</a>, <a href="Buffer.html#clearFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">clearFlag</a>, <a href="Buffer.html#getFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">getFlag</a>, <a href="Buffer.html#hasSupplementalData()">hasSupplementalData</a>, <a href="Buffer.html#isDecodeOnly()">isDecodeOnly</a>, <a href="Buffer.html#isEndOfStream()">isEndOfStream</a>, <a href="Buffer.html#isFirstSample()">isFirstSample</a>, <a href="Buffer.html#isKeyFrame()">isKeyFrame</a>, <a href="Buffer.html#setFlags(@com.google.android.exoplayer2.C.BufferFlagsint)">setFlags</a></code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
|
||||
|
|
|
|||
|
|
@ -252,7 +252,7 @@ extends <a href="Buffer.html" title="class in com.google.android.exoplayer2.deco
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class com.google.android.exoplayer2.decoder.<a href="Buffer.html" title="class in com.google.android.exoplayer2.decoder">Buffer</a></h3>
|
||||
<code><a href="Buffer.html#addFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">addFlag</a>, <a href="Buffer.html#clear()">clear</a>, <a href="Buffer.html#clearFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">clearFlag</a>, <a href="Buffer.html#getFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">getFlag</a>, <a href="Buffer.html#hasSupplementalData()">hasSupplementalData</a>, <a href="Buffer.html#isDecodeOnly()">isDecodeOnly</a>, <a href="Buffer.html#isEndOfStream()">isEndOfStream</a>, <a href="Buffer.html#isKeyFrame()">isKeyFrame</a>, <a href="Buffer.html#setFlags(@com.google.android.exoplayer2.C.BufferFlagsint)">setFlags</a></code></li>
|
||||
<code><a href="Buffer.html#addFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">addFlag</a>, <a href="Buffer.html#clear()">clear</a>, <a href="Buffer.html#clearFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">clearFlag</a>, <a href="Buffer.html#getFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">getFlag</a>, <a href="Buffer.html#hasSupplementalData()">hasSupplementalData</a>, <a href="Buffer.html#isDecodeOnly()">isDecodeOnly</a>, <a href="Buffer.html#isEndOfStream()">isEndOfStream</a>, <a href="Buffer.html#isFirstSample()">isFirstSample</a>, <a href="Buffer.html#isKeyFrame()">isKeyFrame</a>, <a href="Buffer.html#setFlags(@com.google.android.exoplayer2.C.BufferFlagsint)">setFlags</a></code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ extends <a href="DecoderOutputBuffer.html" title="class in com.google.android.ex
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class com.google.android.exoplayer2.decoder.<a href="Buffer.html" title="class in com.google.android.exoplayer2.decoder">Buffer</a></h3>
|
||||
<code><a href="Buffer.html#addFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">addFlag</a>, <a href="Buffer.html#clearFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">clearFlag</a>, <a href="Buffer.html#getFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">getFlag</a>, <a href="Buffer.html#hasSupplementalData()">hasSupplementalData</a>, <a href="Buffer.html#isDecodeOnly()">isDecodeOnly</a>, <a href="Buffer.html#isEndOfStream()">isEndOfStream</a>, <a href="Buffer.html#isKeyFrame()">isKeyFrame</a>, <a href="Buffer.html#setFlags(@com.google.android.exoplayer2.C.BufferFlagsint)">setFlags</a></code></li>
|
||||
<code><a href="Buffer.html#addFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">addFlag</a>, <a href="Buffer.html#clearFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">clearFlag</a>, <a href="Buffer.html#getFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">getFlag</a>, <a href="Buffer.html#hasSupplementalData()">hasSupplementalData</a>, <a href="Buffer.html#isDecodeOnly()">isDecodeOnly</a>, <a href="Buffer.html#isEndOfStream()">isEndOfStream</a>, <a href="Buffer.html#isFirstSample()">isFirstSample</a>, <a href="Buffer.html#isKeyFrame()">isKeyFrame</a>, <a href="Buffer.html#setFlags(@com.google.android.exoplayer2.C.BufferFlagsint)">setFlags</a></code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
|
||||
|
|
|
|||
|
|
@ -350,7 +350,7 @@ extends <a href="DecoderOutputBuffer.html" title="class in com.google.android.ex
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class com.google.android.exoplayer2.decoder.<a href="Buffer.html" title="class in com.google.android.exoplayer2.decoder">Buffer</a></h3>
|
||||
<code><a href="Buffer.html#addFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">addFlag</a>, <a href="Buffer.html#clear()">clear</a>, <a href="Buffer.html#clearFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">clearFlag</a>, <a href="Buffer.html#getFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">getFlag</a>, <a href="Buffer.html#hasSupplementalData()">hasSupplementalData</a>, <a href="Buffer.html#isDecodeOnly()">isDecodeOnly</a>, <a href="Buffer.html#isEndOfStream()">isEndOfStream</a>, <a href="Buffer.html#isKeyFrame()">isKeyFrame</a>, <a href="Buffer.html#setFlags(@com.google.android.exoplayer2.C.BufferFlagsint)">setFlags</a></code></li>
|
||||
<code><a href="Buffer.html#addFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">addFlag</a>, <a href="Buffer.html#clear()">clear</a>, <a href="Buffer.html#clearFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">clearFlag</a>, <a href="Buffer.html#getFlag(@com.google.android.exoplayer2.C.BufferFlagsint)">getFlag</a>, <a href="Buffer.html#hasSupplementalData()">hasSupplementalData</a>, <a href="Buffer.html#isDecodeOnly()">isDecodeOnly</a>, <a href="Buffer.html#isEndOfStream()">isEndOfStream</a>, <a href="Buffer.html#isFirstSample()">isFirstSample</a>, <a href="Buffer.html#isKeyFrame()">isKeyFrame</a>, <a href="Buffer.html#setFlags(@com.google.android.exoplayer2.C.BufferFlagsint)">setFlags</a></code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@
|
|||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var data = {"i0":10,"i1":10,"i2":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
|
||||
var data = {"i0":10,"i1":10,"i2":42};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
var tableTab = "tableTab";
|
||||
|
|
@ -172,7 +172,7 @@ implements <a href="DrmSessionManagerProvider.html" title="interface in com.goog
|
|||
</a>
|
||||
<h3>Method Summary</h3>
|
||||
<table class="memberSummary">
|
||||
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
|
||||
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd"> </span></span></caption>
|
||||
<tr>
|
||||
<th class="colFirst" scope="col">Modifier and Type</th>
|
||||
<th class="colSecond" scope="col">Method</th>
|
||||
|
|
@ -187,16 +187,20 @@ implements <a href="DrmSessionManagerProvider.html" title="interface in com.goog
|
|||
</tr>
|
||||
<tr id="i1" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setDrmHttpDataSourceFactory(com.google.android.exoplayer2.upstream.HttpDataSource.Factory)">setDrmHttpDataSourceFactory</a></span>​(<a href="../upstream/HttpDataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">HttpDataSource.Factory</a> drmHttpDataSourceFactory)</code></th>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setDrmHttpDataSourceFactory(com.google.android.exoplayer2.upstream.DataSource.Factory)">setDrmHttpDataSourceFactory</a></span>​(<a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">DataSource.Factory</a> drmDataSourceFactory)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the <a href="../upstream/HttpDataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream"><code>HttpDataSource.Factory</code></a> to be used for creating <a href="HttpMediaDrmCallback.html" title="class in com.google.android.exoplayer2.drm"><code>HttpMediaDrmCallbacks</code></a> which executes key and provisioning requests over HTTP.</div>
|
||||
<div class="block">Sets the <a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream"><code>DataSource.Factory</code></a> which is used to create <a href="HttpMediaDrmCallback.html" title="class in com.google.android.exoplayer2.drm"><code>HttpMediaDrmCallback</code></a>
|
||||
instances.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i2" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setDrmUserAgent(java.lang.String)">setDrmUserAgent</a></span>​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> userAgent)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Sets the optional user agent to be used for DRM requests.</div>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Pass a custom <a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream"><code>DataSource.Factory</code></a> to <a href="#setDrmHttpDataSourceFactory(com.google.android.exoplayer2.upstream.DataSource.Factory)"><code>setDrmHttpDataSourceFactory(DataSource.Factory)</code></a> which sets the desired user agent on
|
||||
outgoing requests.</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -242,19 +246,19 @@ implements <a href="DrmSessionManagerProvider.html" title="interface in com.goog
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Method Detail</h3>
|
||||
<a id="setDrmHttpDataSourceFactory(com.google.android.exoplayer2.upstream.HttpDataSource.Factory)">
|
||||
<a id="setDrmHttpDataSourceFactory(com.google.android.exoplayer2.upstream.DataSource.Factory)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setDrmHttpDataSourceFactory</h4>
|
||||
<pre class="methodSignature">public void setDrmHttpDataSourceFactory​(@Nullable
|
||||
<a href="../upstream/HttpDataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">HttpDataSource.Factory</a> drmHttpDataSourceFactory)</pre>
|
||||
<div class="block">Sets the <a href="../upstream/HttpDataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream"><code>HttpDataSource.Factory</code></a> to be used for creating <a href="HttpMediaDrmCallback.html" title="class in com.google.android.exoplayer2.drm"><code>HttpMediaDrmCallbacks</code></a> which executes key and provisioning requests over HTTP. If <code>null</code>
|
||||
is passed the <a href="../upstream/DefaultHttpDataSource.Factory.html" title="class in com.google.android.exoplayer2.upstream"><code>DefaultHttpDataSource.Factory</code></a> is used.</div>
|
||||
<a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">DataSource.Factory</a> drmDataSourceFactory)</pre>
|
||||
<div class="block">Sets the <a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream"><code>DataSource.Factory</code></a> which is used to create <a href="HttpMediaDrmCallback.html" title="class in com.google.android.exoplayer2.drm"><code>HttpMediaDrmCallback</code></a>
|
||||
instances. If <code>null</code> is passed a <a href="../upstream/DefaultHttpDataSource.Factory.html" title="class in com.google.android.exoplayer2.upstream"><code>DefaultHttpDataSource.Factory</code></a> is used.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>drmHttpDataSourceFactory</code> - The HTTP data source factory or <code>null</code> to use <a href="../upstream/DefaultHttpDataSource.Factory.html" title="class in com.google.android.exoplayer2.upstream"><code>DefaultHttpDataSource.Factory</code></a>.</dd>
|
||||
<dd><code>drmDataSourceFactory</code> - The data source factory or <code>null</code> to use <a href="../upstream/DefaultHttpDataSource.Factory.html" title="class in com.google.android.exoplayer2.upstream"><code>DefaultHttpDataSource.Factory</code></a>.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -264,15 +268,13 @@ implements <a href="DrmSessionManagerProvider.html" title="interface in com.goog
|
|||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setDrmUserAgent</h4>
|
||||
<pre class="methodSignature">public void setDrmUserAgent​(@Nullable
|
||||
<pre class="methodSignature"><a href="https://developer.android.com/reference/java/lang/Deprecated.html" title="class or interface in java.lang" class="externalLink" target="_top">@Deprecated</a>
|
||||
public void setDrmUserAgent​(@Nullable
|
||||
<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> userAgent)</pre>
|
||||
<div class="block">Sets the optional user agent to be used for DRM requests.
|
||||
|
||||
<p>In case a factory has been set by <a href="#setDrmHttpDataSourceFactory(com.google.android.exoplayer2.upstream.HttpDataSource.Factory)"><code>setDrmHttpDataSourceFactory(HttpDataSource.Factory)</code></a>, this user agent is ignored.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>userAgent</code> - The user agent to be used for DRM requests.</dd>
|
||||
</dl>
|
||||
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Pass a custom <a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream"><code>DataSource.Factory</code></a> to <a href="#setDrmHttpDataSourceFactory(com.google.android.exoplayer2.upstream.DataSource.Factory)"><code>setDrmHttpDataSourceFactory(DataSource.Factory)</code></a> which sets the desired user agent on
|
||||
outgoing requests.</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="get(com.google.android.exoplayer2.MediaItem)">
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<pre>public final class <span class="typeNameLabel">HttpMediaDrmCallback</span>
|
||||
extends <a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a>
|
||||
implements <a href="MediaDrmCallback.html" title="interface in com.google.android.exoplayer2.drm">MediaDrmCallback</a></pre>
|
||||
<div class="block">A <a href="MediaDrmCallback.html" title="interface in com.google.android.exoplayer2.drm"><code>MediaDrmCallback</code></a> that makes requests using <a href="../upstream/HttpDataSource.html" title="interface in com.google.android.exoplayer2.upstream"><code>HttpDataSource</code></a> instances.</div>
|
||||
<div class="block">A <a href="MediaDrmCallback.html" title="interface in com.google.android.exoplayer2.drm"><code>MediaDrmCallback</code></a> that makes requests using <a href="../upstream/DataSource.html" title="interface in com.google.android.exoplayer2.upstream"><code>DataSource</code></a> instances.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -157,15 +157,19 @@ implements <a href="MediaDrmCallback.html" title="interface in com.google.androi
|
|||
<th class="colLast" scope="col">Description</th>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(java.lang.String,boolean,com.google.android.exoplayer2.upstream.HttpDataSource.Factory)">HttpMediaDrmCallback</a></span>​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> defaultLicenseUrl,
|
||||
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(java.lang.String,boolean,com.google.android.exoplayer2.upstream.DataSource.Factory)">HttpMediaDrmCallback</a></span>​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> defaultLicenseUrl,
|
||||
boolean forceDefaultLicenseUrl,
|
||||
<a href="../upstream/HttpDataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">HttpDataSource.Factory</a> dataSourceFactory)</code></th>
|
||||
<td class="colLast"> </td>
|
||||
<a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">DataSource.Factory</a> dataSourceFactory)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Constructs an instance.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(java.lang.String,com.google.android.exoplayer2.upstream.HttpDataSource.Factory)">HttpMediaDrmCallback</a></span>​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> defaultLicenseUrl,
|
||||
<a href="../upstream/HttpDataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">HttpDataSource.Factory</a> dataSourceFactory)</code></th>
|
||||
<td class="colLast"> </td>
|
||||
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(java.lang.String,com.google.android.exoplayer2.upstream.DataSource.Factory)">HttpMediaDrmCallback</a></span>​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> defaultLicenseUrl,
|
||||
<a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">DataSource.Factory</a> dataSourceFactory)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Constructs an instance.</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
|
|
@ -247,7 +251,7 @@ implements <a href="MediaDrmCallback.html" title="interface in com.google.androi
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Constructor Detail</h3>
|
||||
<a id="<init>(java.lang.String,com.google.android.exoplayer2.upstream.HttpDataSource.Factory)">
|
||||
<a id="<init>(java.lang.String,com.google.android.exoplayer2.upstream.DataSource.Factory)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
|
|
@ -255,17 +259,19 @@ implements <a href="MediaDrmCallback.html" title="interface in com.google.androi
|
|||
<h4>HttpMediaDrmCallback</h4>
|
||||
<pre>public HttpMediaDrmCallback​(@Nullable
|
||||
<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> defaultLicenseUrl,
|
||||
<a href="../upstream/HttpDataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">HttpDataSource.Factory</a> dataSourceFactory)</pre>
|
||||
<a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">DataSource.Factory</a> dataSourceFactory)</pre>
|
||||
<div class="block">Constructs an instance.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>defaultLicenseUrl</code> - The default license URL. Used for key requests that do not specify
|
||||
their own license URL. May be <code>null</code> if it's known that all key requests will specify
|
||||
their own URLs.</dd>
|
||||
<dd><code>dataSourceFactory</code> - A factory from which to obtain <a href="../upstream/HttpDataSource.html" title="interface in com.google.android.exoplayer2.upstream"><code>HttpDataSource</code></a> instances.</dd>
|
||||
<dd><code>dataSourceFactory</code> - A factory from which to obtain <a href="../upstream/DataSource.html" title="interface in com.google.android.exoplayer2.upstream"><code>DataSource</code></a> instances. This will
|
||||
usually be an HTTP-based <a href="../upstream/DataSource.html" title="interface in com.google.android.exoplayer2.upstream"><code>DataSource</code></a>.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="<init>(java.lang.String,boolean,com.google.android.exoplayer2.upstream.HttpDataSource.Factory)">
|
||||
<a id="<init>(java.lang.String,boolean,com.google.android.exoplayer2.upstream.DataSource.Factory)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
|
|
@ -274,7 +280,8 @@ implements <a href="MediaDrmCallback.html" title="interface in com.google.androi
|
|||
<pre>public HttpMediaDrmCallback​(@Nullable
|
||||
<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> defaultLicenseUrl,
|
||||
boolean forceDefaultLicenseUrl,
|
||||
<a href="../upstream/HttpDataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">HttpDataSource.Factory</a> dataSourceFactory)</pre>
|
||||
<a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">DataSource.Factory</a> dataSourceFactory)</pre>
|
||||
<div class="block">Constructs an instance.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>defaultLicenseUrl</code> - The default license URL. Used for key requests that do not specify
|
||||
|
|
@ -283,7 +290,8 @@ implements <a href="MediaDrmCallback.html" title="interface in com.google.androi
|
|||
known that all key requests will specify their own URLs.</dd>
|
||||
<dd><code>forceDefaultLicenseUrl</code> - Whether to force use of <code>defaultLicenseUrl</code> for key
|
||||
requests that include their own license URL.</dd>
|
||||
<dd><code>dataSourceFactory</code> - A factory from which to obtain <a href="../upstream/HttpDataSource.html" title="interface in com.google.android.exoplayer2.upstream"><code>HttpDataSource</code></a> instances.</dd>
|
||||
<dd><code>dataSourceFactory</code> - A factory from which to obtain <a href="../upstream/DataSource.html" title="interface in com.google.android.exoplayer2.upstream"><code>DataSource</code></a> instances. This will
|
||||
* usually be an HTTP-based <a href="../upstream/DataSource.html" title="interface in com.google.android.exoplayer2.upstream"><code>DataSource</code></a>.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -206,9 +206,9 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
</tr>
|
||||
<tr id="i2" class="altColor">
|
||||
<td class="colFirst"><code>static <a href="OfflineLicenseHelper.html" title="class in com.google.android.exoplayer2.drm">OfflineLicenseHelper</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newWidevineInstance(java.lang.String,boolean,com.google.android.exoplayer2.upstream.HttpDataSource.Factory,com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher)">newWidevineInstance</a></span>​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> defaultLicenseUrl,
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newWidevineInstance(java.lang.String,boolean,com.google.android.exoplayer2.upstream.DataSource.Factory,com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher)">newWidevineInstance</a></span>​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> defaultLicenseUrl,
|
||||
boolean forceDefaultLicenseUrl,
|
||||
<a href="../upstream/HttpDataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">HttpDataSource.Factory</a> httpDataSourceFactory,
|
||||
<a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">DataSource.Factory</a> dataSourceFactory,
|
||||
<a href="DrmSessionEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.drm">DrmSessionEventListener.EventDispatcher</a> eventDispatcher)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Instantiates a new instance which uses Widevine CDM.</div>
|
||||
|
|
@ -216,9 +216,9 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
</tr>
|
||||
<tr id="i3" class="rowColor">
|
||||
<td class="colFirst"><code>static <a href="OfflineLicenseHelper.html" title="class in com.google.android.exoplayer2.drm">OfflineLicenseHelper</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newWidevineInstance(java.lang.String,boolean,com.google.android.exoplayer2.upstream.HttpDataSource.Factory,java.util.Map,com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher)">newWidevineInstance</a></span>​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> defaultLicenseUrl,
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newWidevineInstance(java.lang.String,boolean,com.google.android.exoplayer2.upstream.DataSource.Factory,java.util.Map,com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher)">newWidevineInstance</a></span>​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> defaultLicenseUrl,
|
||||
boolean forceDefaultLicenseUrl,
|
||||
<a href="../upstream/HttpDataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">HttpDataSource.Factory</a> httpDataSourceFactory,
|
||||
<a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">DataSource.Factory</a> dataSourceFactory,
|
||||
<a href="https://developer.android.com/reference/java/util/Map.html" title="class or interface in java.util" class="externalLink">Map</a><<a href="https://developer.android.com/reference/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>,​<a href="https://developer.android.com/reference/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_top">String</a>> optionalKeyRequestParameters,
|
||||
<a href="DrmSessionEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.drm">DrmSessionEventListener.EventDispatcher</a> eventDispatcher)</code></th>
|
||||
<td class="colLast">
|
||||
|
|
@ -227,8 +227,8 @@ extends <a href="https://developer.android.com/reference/java/lang/Object.html"
|
|||
</tr>
|
||||
<tr id="i4" class="altColor">
|
||||
<td class="colFirst"><code>static <a href="OfflineLicenseHelper.html" title="class in com.google.android.exoplayer2.drm">OfflineLicenseHelper</a></code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newWidevineInstance(java.lang.String,com.google.android.exoplayer2.upstream.HttpDataSource.Factory,com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher)">newWidevineInstance</a></span>​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> defaultLicenseUrl,
|
||||
<a href="../upstream/HttpDataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">HttpDataSource.Factory</a> httpDataSourceFactory,
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newWidevineInstance(java.lang.String,com.google.android.exoplayer2.upstream.DataSource.Factory,com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher)">newWidevineInstance</a></span>​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> defaultLicenseUrl,
|
||||
<a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">DataSource.Factory</a> dataSourceFactory,
|
||||
<a href="DrmSessionEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.drm">DrmSessionEventListener.EventDispatcher</a> eventDispatcher)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block">Instantiates a new instance which uses Widevine CDM.</div>
|
||||
|
|
@ -325,14 +325,14 @@ public OfflineLicenseHelper​(<a href="https://developer.android.com/r
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Method Detail</h3>
|
||||
<a id="newWidevineInstance(java.lang.String,com.google.android.exoplayer2.upstream.HttpDataSource.Factory,com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher)">
|
||||
<a id="newWidevineInstance(java.lang.String,com.google.android.exoplayer2.upstream.DataSource.Factory,com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>newWidevineInstance</h4>
|
||||
<pre class="methodSignature">public static <a href="OfflineLicenseHelper.html" title="class in com.google.android.exoplayer2.drm">OfflineLicenseHelper</a> newWidevineInstance​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> defaultLicenseUrl,
|
||||
<a href="../upstream/HttpDataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">HttpDataSource.Factory</a> httpDataSourceFactory,
|
||||
<a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">DataSource.Factory</a> dataSourceFactory,
|
||||
<a href="DrmSessionEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.drm">DrmSessionEventListener.EventDispatcher</a> eventDispatcher)</pre>
|
||||
<div class="block">Instantiates a new instance which uses Widevine CDM. Call <a href="#release()"><code>release()</code></a> when the instance
|
||||
is no longer required.</div>
|
||||
|
|
@ -340,7 +340,7 @@ public OfflineLicenseHelper​(<a href="https://developer.android.com/r
|
|||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>defaultLicenseUrl</code> - The default license URL. Used for key requests that do not specify
|
||||
their own license URL.</dd>
|
||||
<dd><code>httpDataSourceFactory</code> - A factory from which to obtain <a href="../upstream/HttpDataSource.html" title="interface in com.google.android.exoplayer2.upstream"><code>HttpDataSource</code></a> instances.</dd>
|
||||
<dd><code>dataSourceFactory</code> - A factory from which to obtain <a href="../upstream/DataSource.html" title="interface in com.google.android.exoplayer2.upstream"><code>DataSource</code></a> instances.</dd>
|
||||
<dd><code>eventDispatcher</code> - A <a href="DrmSessionEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.drm"><code>DrmSessionEventListener.EventDispatcher</code></a> used to distribute
|
||||
DRM-related events.</dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
|
|
@ -348,7 +348,7 @@ public OfflineLicenseHelper​(<a href="https://developer.android.com/r
|
|||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="newWidevineInstance(java.lang.String,boolean,com.google.android.exoplayer2.upstream.HttpDataSource.Factory,com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher)">
|
||||
<a id="newWidevineInstance(java.lang.String,boolean,com.google.android.exoplayer2.upstream.DataSource.Factory,com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
|
|
@ -356,7 +356,7 @@ public OfflineLicenseHelper​(<a href="https://developer.android.com/r
|
|||
<h4>newWidevineInstance</h4>
|
||||
<pre class="methodSignature">public static <a href="OfflineLicenseHelper.html" title="class in com.google.android.exoplayer2.drm">OfflineLicenseHelper</a> newWidevineInstance​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> defaultLicenseUrl,
|
||||
boolean forceDefaultLicenseUrl,
|
||||
<a href="../upstream/HttpDataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">HttpDataSource.Factory</a> httpDataSourceFactory,
|
||||
<a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">DataSource.Factory</a> dataSourceFactory,
|
||||
<a href="DrmSessionEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.drm">DrmSessionEventListener.EventDispatcher</a> eventDispatcher)</pre>
|
||||
<div class="block">Instantiates a new instance which uses Widevine CDM. Call <a href="#release()"><code>release()</code></a> when the instance
|
||||
is no longer required.</div>
|
||||
|
|
@ -366,7 +366,7 @@ public OfflineLicenseHelper​(<a href="https://developer.android.com/r
|
|||
their own license URL.</dd>
|
||||
<dd><code>forceDefaultLicenseUrl</code> - Whether to use <code>defaultLicenseUrl</code> for key requests that
|
||||
include their own license URL.</dd>
|
||||
<dd><code>httpDataSourceFactory</code> - A factory from which to obtain <a href="../upstream/HttpDataSource.html" title="interface in com.google.android.exoplayer2.upstream"><code>HttpDataSource</code></a> instances.</dd>
|
||||
<dd><code>dataSourceFactory</code> - A factory from which to obtain <a href="../upstream/DataSource.html" title="interface in com.google.android.exoplayer2.upstream"><code>DataSource</code></a> instances.</dd>
|
||||
<dd><code>eventDispatcher</code> - A <a href="DrmSessionEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.drm"><code>DrmSessionEventListener.EventDispatcher</code></a> used to distribute
|
||||
DRM-related events.</dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
|
|
@ -374,7 +374,7 @@ public OfflineLicenseHelper​(<a href="https://developer.android.com/r
|
|||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="newWidevineInstance(java.lang.String,boolean,com.google.android.exoplayer2.upstream.HttpDataSource.Factory,java.util.Map,com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher)">
|
||||
<a id="newWidevineInstance(java.lang.String,boolean,com.google.android.exoplayer2.upstream.DataSource.Factory,java.util.Map,com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher)">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
|
|
@ -382,7 +382,7 @@ public OfflineLicenseHelper​(<a href="https://developer.android.com/r
|
|||
<h4>newWidevineInstance</h4>
|
||||
<pre class="methodSignature">public static <a href="OfflineLicenseHelper.html" title="class in com.google.android.exoplayer2.drm">OfflineLicenseHelper</a> newWidevineInstance​(<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a> defaultLicenseUrl,
|
||||
boolean forceDefaultLicenseUrl,
|
||||
<a href="../upstream/HttpDataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">HttpDataSource.Factory</a> httpDataSourceFactory,
|
||||
<a href="../upstream/DataSource.Factory.html" title="interface in com.google.android.exoplayer2.upstream">DataSource.Factory</a> dataSourceFactory,
|
||||
@Nullable
|
||||
<a href="https://developer.android.com/reference/java/util/Map.html" title="class or interface in java.util" class="externalLink">Map</a><<a href="https://developer.android.com/reference/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>,​<a href="https://developer.android.com/reference/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_top">String</a>> optionalKeyRequestParameters,
|
||||
<a href="DrmSessionEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.drm">DrmSessionEventListener.EventDispatcher</a> eventDispatcher)</pre>
|
||||
|
|
|
|||
|
|
@ -275,7 +275,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||
<tr class="rowColor">
|
||||
<th class="colFirst" scope="row"><a href="HttpMediaDrmCallback.html" title="class in com.google.android.exoplayer2.drm">HttpMediaDrmCallback</a></th>
|
||||
<td class="colLast">
|
||||
<div class="block">A <a href="MediaDrmCallback.html" title="interface in com.google.android.exoplayer2.drm"><code>MediaDrmCallback</code></a> that makes requests using <a href="../upstream/HttpDataSource.html" title="interface in com.google.android.exoplayer2.upstream"><code>HttpDataSource</code></a> instances.</div>
|
||||
<div class="block">A <a href="MediaDrmCallback.html" title="interface in com.google.android.exoplayer2.drm"><code>MediaDrmCallback</code></a> that makes requests using <a href="../upstream/DataSource.html" title="interface in com.google.android.exoplayer2.upstream"><code>DataSource</code></a> instances.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -367,7 +367,9 @@ implements <a href="../../upstream/HttpDataSource.html" title="interface in com.
|
|||
<td class="colFirst"><code>void</code></td>
|
||||
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setContentTypePredicate(com.google.common.base.Predicate)">setContentTypePredicate</a></span>​(<a href="https://guava.dev/releases/31.0.1-android/api/docs/com/google/common/base/Predicate.html?is-external=true" title="class or interface in com.google.common.base" class="externalLink">Predicate</a><<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a>> contentTypePredicate)</code></th>
|
||||
<td class="colLast">
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="CronetDataSource.Factory.html#setContentTypePredicate(com.google.common.base.Predicate)"><code>CronetDataSource.Factory.setContentTypePredicate(Predicate)</code></a> instead.</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i13" class="rowColor">
|
||||
|
|
@ -495,14 +497,9 @@ implements <a href="../../upstream/HttpDataSource.html" title="interface in com.
|
|||
<pre class="methodSignature"><a href="https://developer.android.com/reference/java/lang/Deprecated.html" title="class or interface in java.lang" class="externalLink" target="_top">@Deprecated</a>
|
||||
public void setContentTypePredicate​(@Nullable
|
||||
<a href="https://guava.dev/releases/31.0.1-android/api/docs/com/google/common/base/Predicate.html?is-external=true" title="class or interface in com.google.common.base" class="externalLink">Predicate</a><<a href="https://developer.android.com/reference/java/lang/String.html" title="class or interface in java.lang" class="externalLink" target="_top">String</a>> contentTypePredicate)</pre>
|
||||
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
|
||||
<div class="block">Sets a content type <a href="https://guava.dev/releases/31.0.1-android/api/docs/com/google/common/base/Predicate.html?is-external=true" title="class or interface in com.google.common.base" class="externalLink"><code>Predicate</code></a>. If a content type is rejected by the predicate then a
|
||||
<a href="../../upstream/HttpDataSource.InvalidContentTypeException.html" title="class in com.google.android.exoplayer2.upstream"><code>HttpDataSource.InvalidContentTypeException</code></a> is thrown from <a href="#open(com.google.android.exoplayer2.upstream.DataSpec)"><code>open(DataSpec)</code></a>.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>contentTypePredicate</code> - The content type <a href="https://guava.dev/releases/31.0.1-android/api/docs/com/google/common/base/Predicate.html?is-external=true" title="class or interface in com.google.common.base" class="externalLink"><code>Predicate</code></a>, or <code>null</code> to clear a
|
||||
predicate that was previously set.</dd>
|
||||
</dl>
|
||||
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
|
||||
<div class="deprecationComment">Use <a href="CronetDataSource.Factory.html#setContentTypePredicate(com.google.common.base.Predicate)"><code>CronetDataSource.Factory.setContentTypePredicate(Predicate)</code></a> instead.</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="setRequestProperty(java.lang.String,java.lang.String)">
|
||||
|
|
|
|||
|
|
@ -294,14 +294,14 @@ extends <a href="../../audio/DecoderAudioRenderer.html" title="class in com.goog
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class com.google.android.exoplayer2.audio.<a href="../../audio/DecoderAudioRenderer.html" title="class in com.google.android.exoplayer2.audio">DecoderAudioRenderer</a></h3>
|
||||
<code><a href="../../audio/DecoderAudioRenderer.html#canReuseDecoder(java.lang.String,com.google.android.exoplayer2.Format,com.google.android.exoplayer2.Format)">canReuseDecoder</a>, <a href="../../audio/DecoderAudioRenderer.html#experimentalSetEnableKeepAudioTrackOnSeek(boolean)">experimentalSetEnableKeepAudioTrackOnSeek</a>, <a href="../../audio/DecoderAudioRenderer.html#getMediaClock()">getMediaClock</a>, <a href="../../audio/DecoderAudioRenderer.html#getPlaybackParameters()">getPlaybackParameters</a>, <a href="../../audio/DecoderAudioRenderer.html#getPositionUs()">getPositionUs</a>, <a href="../../audio/DecoderAudioRenderer.html#getSinkFormatSupport(com.google.android.exoplayer2.Format)">getSinkFormatSupport</a>, <a href="../../audio/DecoderAudioRenderer.html#handleMessage(@com.google.android.exoplayer2.Renderer.MessageTypeint,java.lang.Object)">handleMessage</a>, <a href="../../audio/DecoderAudioRenderer.html#isEnded()">isEnded</a>, <a href="../../audio/DecoderAudioRenderer.html#isReady()">isReady</a>, <a href="../../audio/DecoderAudioRenderer.html#onDisabled()">onDisabled</a>, <a href="../../audio/DecoderAudioRenderer.html#onEnabled(boolean,boolean)">onEnabled</a>, <a href="../../audio/DecoderAudioRenderer.html#onPositionDiscontinuity()">onPositionDiscontinuity</a>, <a href="../../audio/DecoderAudioRenderer.html#onPositionReset(long,boolean)">onPositionReset</a>, <a href="../../audio/DecoderAudioRenderer.html#onQueueInputBuffer(com.google.android.exoplayer2.decoder.DecoderInputBuffer)">onQueueInputBuffer</a>, <a href="../../audio/DecoderAudioRenderer.html#onStarted()">onStarted</a>, <a href="../../audio/DecoderAudioRenderer.html#onStopped()">onStopped</a>, <a href="../../audio/DecoderAudioRenderer.html#render(long,long)">render</a>, <a href="../../audio/DecoderAudioRenderer.html#setPlaybackParameters(com.google.android.exoplayer2.PlaybackParameters)">setPlaybackParameters</a>, <a href="../../audio/DecoderAudioRenderer.html#sinkSupportsFormat(com.google.android.exoplayer2.Format)">sinkSupportsFormat</a>, <a href="../../audio/DecoderAudioRenderer.html#supportsFormat(com.google.android.exoplayer2.Format)">supportsFormat</a></code></li>
|
||||
<code><a href="../../audio/DecoderAudioRenderer.html#canReuseDecoder(java.lang.String,com.google.android.exoplayer2.Format,com.google.android.exoplayer2.Format)">canReuseDecoder</a>, <a href="../../audio/DecoderAudioRenderer.html#experimentalSetEnableKeepAudioTrackOnSeek(boolean)">experimentalSetEnableKeepAudioTrackOnSeek</a>, <a href="../../audio/DecoderAudioRenderer.html#getMediaClock()">getMediaClock</a>, <a href="../../audio/DecoderAudioRenderer.html#getPlaybackParameters()">getPlaybackParameters</a>, <a href="../../audio/DecoderAudioRenderer.html#getPositionUs()">getPositionUs</a>, <a href="../../audio/DecoderAudioRenderer.html#getSinkFormatSupport(com.google.android.exoplayer2.Format)">getSinkFormatSupport</a>, <a href="../../audio/DecoderAudioRenderer.html#handleMessage(@com.google.android.exoplayer2.Renderer.MessageTypeint,java.lang.Object)">handleMessage</a>, <a href="../../audio/DecoderAudioRenderer.html#isEnded()">isEnded</a>, <a href="../../audio/DecoderAudioRenderer.html#isReady()">isReady</a>, <a href="../../audio/DecoderAudioRenderer.html#onDisabled()">onDisabled</a>, <a href="../../audio/DecoderAudioRenderer.html#onEnabled(boolean,boolean)">onEnabled</a>, <a href="../../audio/DecoderAudioRenderer.html#onPositionDiscontinuity()">onPositionDiscontinuity</a>, <a href="../../audio/DecoderAudioRenderer.html#onPositionReset(long,boolean)">onPositionReset</a>, <a href="../../audio/DecoderAudioRenderer.html#onQueueInputBuffer(com.google.android.exoplayer2.decoder.DecoderInputBuffer)">onQueueInputBuffer</a>, <a href="../../audio/DecoderAudioRenderer.html#onStarted()">onStarted</a>, <a href="../../audio/DecoderAudioRenderer.html#onStopped()">onStopped</a>, <a href="../../audio/DecoderAudioRenderer.html#onStreamChanged(com.google.android.exoplayer2.Format%5B%5D,long,long)">onStreamChanged</a>, <a href="../../audio/DecoderAudioRenderer.html#render(long,long)">render</a>, <a href="../../audio/DecoderAudioRenderer.html#setPlaybackParameters(com.google.android.exoplayer2.PlaybackParameters)">setPlaybackParameters</a>, <a href="../../audio/DecoderAudioRenderer.html#sinkSupportsFormat(com.google.android.exoplayer2.Format)">sinkSupportsFormat</a>, <a href="../../audio/DecoderAudioRenderer.html#supportsFormat(com.google.android.exoplayer2.Format)">supportsFormat</a></code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="methods.inherited.from.class.com.google.android.exoplayer2.BaseRenderer">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class com.google.android.exoplayer2.<a href="../../BaseRenderer.html" title="class in com.google.android.exoplayer2">BaseRenderer</a></h3>
|
||||
<code><a href="../../BaseRenderer.html#createRendererException(java.lang.Throwable,com.google.android.exoplayer2.Format,@com.google.android.exoplayer2.PlaybackException.ErrorCodeint)">createRendererException</a>, <a href="../../BaseRenderer.html#createRendererException(java.lang.Throwable,com.google.android.exoplayer2.Format,boolean,@com.google.android.exoplayer2.PlaybackException.ErrorCodeint)">createRendererException</a>, <a href="../../BaseRenderer.html#disable()">disable</a>, <a href="../../BaseRenderer.html#enable(com.google.android.exoplayer2.RendererConfiguration,com.google.android.exoplayer2.Format%5B%5D,com.google.android.exoplayer2.source.SampleStream,long,boolean,boolean,long,long)">enable</a>, <a href="../../BaseRenderer.html#getCapabilities()">getCapabilities</a>, <a href="../../BaseRenderer.html#getConfiguration()">getConfiguration</a>, <a href="../../BaseRenderer.html#getFormatHolder()">getFormatHolder</a>, <a href="../../BaseRenderer.html#getIndex()">getIndex</a>, <a href="../../BaseRenderer.html#getLastResetPositionUs()">getLastResetPositionUs</a>, <a href="../../BaseRenderer.html#getPlayerId()">getPlayerId</a>, <a href="../../BaseRenderer.html#getReadingPositionUs()">getReadingPositionUs</a>, <a href="../../BaseRenderer.html#getState()">getState</a>, <a href="../../BaseRenderer.html#getStream()">getStream</a>, <a href="../../BaseRenderer.html#getStreamFormats()">getStreamFormats</a>, <a href="../../BaseRenderer.html#getTrackType()">getTrackType</a>, <a href="../../BaseRenderer.html#hasReadStreamToEnd()">hasReadStreamToEnd</a>, <a href="../../BaseRenderer.html#init(int,com.google.android.exoplayer2.analytics.PlayerId)">init</a>, <a href="../../BaseRenderer.html#isCurrentStreamFinal()">isCurrentStreamFinal</a>, <a href="../../BaseRenderer.html#isSourceReady()">isSourceReady</a>, <a href="../../BaseRenderer.html#maybeThrowStreamError()">maybeThrowStreamError</a>, <a href="../../BaseRenderer.html#onReset()">onReset</a>, <a href="../../BaseRenderer.html#onStreamChanged(com.google.android.exoplayer2.Format%5B%5D,long,long)">onStreamChanged</a>, <a href="../../BaseRenderer.html#readSource(com.google.android.exoplayer2.FormatHolder,com.google.android.exoplayer2.decoder.DecoderInputBuffer,@com.google.android.exoplayer2.source.SampleStream.ReadFlagsint)">readSource</a>, <a href="../../BaseRenderer.html#replaceStream(com.google.android.exoplayer2.Format%5B%5D,com.google.android.exoplayer2.source.SampleStream,long,long)">replaceStream</a>, <a href="../../BaseRenderer.html#reset()">reset</a>, <a href="../../BaseRenderer.html#resetPosition(long)">resetPosition</a>, <a href="../../BaseRenderer.html#setCurrentStreamFinal()">setCurrentStreamFinal</a>, <a href="../../BaseRenderer.html#skipSource(long)">skipSource</a>, <a href="../../BaseRenderer.html#start()">start</a>, <a href="../../BaseRenderer.html#stop()">stop</a></code></li>
|
||||
<code><a href="../../BaseRenderer.html#createRendererException(java.lang.Throwable,com.google.android.exoplayer2.Format,@com.google.android.exoplayer2.PlaybackException.ErrorCodeint)">createRendererException</a>, <a href="../../BaseRenderer.html#createRendererException(java.lang.Throwable,com.google.android.exoplayer2.Format,boolean,@com.google.android.exoplayer2.PlaybackException.ErrorCodeint)">createRendererException</a>, <a href="../../BaseRenderer.html#disable()">disable</a>, <a href="../../BaseRenderer.html#enable(com.google.android.exoplayer2.RendererConfiguration,com.google.android.exoplayer2.Format%5B%5D,com.google.android.exoplayer2.source.SampleStream,long,boolean,boolean,long,long)">enable</a>, <a href="../../BaseRenderer.html#getCapabilities()">getCapabilities</a>, <a href="../../BaseRenderer.html#getConfiguration()">getConfiguration</a>, <a href="../../BaseRenderer.html#getFormatHolder()">getFormatHolder</a>, <a href="../../BaseRenderer.html#getIndex()">getIndex</a>, <a href="../../BaseRenderer.html#getLastResetPositionUs()">getLastResetPositionUs</a>, <a href="../../BaseRenderer.html#getPlayerId()">getPlayerId</a>, <a href="../../BaseRenderer.html#getReadingPositionUs()">getReadingPositionUs</a>, <a href="../../BaseRenderer.html#getState()">getState</a>, <a href="../../BaseRenderer.html#getStream()">getStream</a>, <a href="../../BaseRenderer.html#getStreamFormats()">getStreamFormats</a>, <a href="../../BaseRenderer.html#getTrackType()">getTrackType</a>, <a href="../../BaseRenderer.html#hasReadStreamToEnd()">hasReadStreamToEnd</a>, <a href="../../BaseRenderer.html#init(int,com.google.android.exoplayer2.analytics.PlayerId)">init</a>, <a href="../../BaseRenderer.html#isCurrentStreamFinal()">isCurrentStreamFinal</a>, <a href="../../BaseRenderer.html#isSourceReady()">isSourceReady</a>, <a href="../../BaseRenderer.html#maybeThrowStreamError()">maybeThrowStreamError</a>, <a href="../../BaseRenderer.html#onReset()">onReset</a>, <a href="../../BaseRenderer.html#readSource(com.google.android.exoplayer2.FormatHolder,com.google.android.exoplayer2.decoder.DecoderInputBuffer,@com.google.android.exoplayer2.source.SampleStream.ReadFlagsint)">readSource</a>, <a href="../../BaseRenderer.html#replaceStream(com.google.android.exoplayer2.Format%5B%5D,com.google.android.exoplayer2.source.SampleStream,long,long)">replaceStream</a>, <a href="../../BaseRenderer.html#reset()">reset</a>, <a href="../../BaseRenderer.html#resetPosition(long)">resetPosition</a>, <a href="../../BaseRenderer.html#setCurrentStreamFinal()">setCurrentStreamFinal</a>, <a href="../../BaseRenderer.html#skipSource(long)">skipSource</a>, <a href="../../BaseRenderer.html#start()">start</a>, <a href="../../BaseRenderer.html#stop()">stop</a></code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
|
||||
|
|
|
|||
|
|
@ -286,14 +286,14 @@ extends <a href="../../audio/DecoderAudioRenderer.html" title="class in com.goog
|
|||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class com.google.android.exoplayer2.audio.<a href="../../audio/DecoderAudioRenderer.html" title="class in com.google.android.exoplayer2.audio">DecoderAudioRenderer</a></h3>
|
||||
<code><a href="../../audio/DecoderAudioRenderer.html#canReuseDecoder(java.lang.String,com.google.android.exoplayer2.Format,com.google.android.exoplayer2.Format)">canReuseDecoder</a>, <a href="../../audio/DecoderAudioRenderer.html#experimentalSetEnableKeepAudioTrackOnSeek(boolean)">experimentalSetEnableKeepAudioTrackOnSeek</a>, <a href="../../audio/DecoderAudioRenderer.html#getMediaClock()">getMediaClock</a>, <a href="../../audio/DecoderAudioRenderer.html#getPlaybackParameters()">getPlaybackParameters</a>, <a href="../../audio/DecoderAudioRenderer.html#getPositionUs()">getPositionUs</a>, <a href="../../audio/DecoderAudioRenderer.html#getSinkFormatSupport(com.google.android.exoplayer2.Format)">getSinkFormatSupport</a>, <a href="../../audio/DecoderAudioRenderer.html#handleMessage(@com.google.android.exoplayer2.Renderer.MessageTypeint,java.lang.Object)">handleMessage</a>, <a href="../../audio/DecoderAudioRenderer.html#isEnded()">isEnded</a>, <a href="../../audio/DecoderAudioRenderer.html#isReady()">isReady</a>, <a href="../../audio/DecoderAudioRenderer.html#onDisabled()">onDisabled</a>, <a href="../../audio/DecoderAudioRenderer.html#onEnabled(boolean,boolean)">onEnabled</a>, <a href="../../audio/DecoderAudioRenderer.html#onPositionDiscontinuity()">onPositionDiscontinuity</a>, <a href="../../audio/DecoderAudioRenderer.html#onPositionReset(long,boolean)">onPositionReset</a>, <a href="../../audio/DecoderAudioRenderer.html#onQueueInputBuffer(com.google.android.exoplayer2.decoder.DecoderInputBuffer)">onQueueInputBuffer</a>, <a href="../../audio/DecoderAudioRenderer.html#onStarted()">onStarted</a>, <a href="../../audio/DecoderAudioRenderer.html#onStopped()">onStopped</a>, <a href="../../audio/DecoderAudioRenderer.html#render(long,long)">render</a>, <a href="../../audio/DecoderAudioRenderer.html#setPlaybackParameters(com.google.android.exoplayer2.PlaybackParameters)">setPlaybackParameters</a>, <a href="../../audio/DecoderAudioRenderer.html#sinkSupportsFormat(com.google.android.exoplayer2.Format)">sinkSupportsFormat</a>, <a href="../../audio/DecoderAudioRenderer.html#supportsFormat(com.google.android.exoplayer2.Format)">supportsFormat</a></code></li>
|
||||
<code><a href="../../audio/DecoderAudioRenderer.html#canReuseDecoder(java.lang.String,com.google.android.exoplayer2.Format,com.google.android.exoplayer2.Format)">canReuseDecoder</a>, <a href="../../audio/DecoderAudioRenderer.html#experimentalSetEnableKeepAudioTrackOnSeek(boolean)">experimentalSetEnableKeepAudioTrackOnSeek</a>, <a href="../../audio/DecoderAudioRenderer.html#getMediaClock()">getMediaClock</a>, <a href="../../audio/DecoderAudioRenderer.html#getPlaybackParameters()">getPlaybackParameters</a>, <a href="../../audio/DecoderAudioRenderer.html#getPositionUs()">getPositionUs</a>, <a href="../../audio/DecoderAudioRenderer.html#getSinkFormatSupport(com.google.android.exoplayer2.Format)">getSinkFormatSupport</a>, <a href="../../audio/DecoderAudioRenderer.html#handleMessage(@com.google.android.exoplayer2.Renderer.MessageTypeint,java.lang.Object)">handleMessage</a>, <a href="../../audio/DecoderAudioRenderer.html#isEnded()">isEnded</a>, <a href="../../audio/DecoderAudioRenderer.html#isReady()">isReady</a>, <a href="../../audio/DecoderAudioRenderer.html#onDisabled()">onDisabled</a>, <a href="../../audio/DecoderAudioRenderer.html#onEnabled(boolean,boolean)">onEnabled</a>, <a href="../../audio/DecoderAudioRenderer.html#onPositionDiscontinuity()">onPositionDiscontinuity</a>, <a href="../../audio/DecoderAudioRenderer.html#onPositionReset(long,boolean)">onPositionReset</a>, <a href="../../audio/DecoderAudioRenderer.html#onQueueInputBuffer(com.google.android.exoplayer2.decoder.DecoderInputBuffer)">onQueueInputBuffer</a>, <a href="../../audio/DecoderAudioRenderer.html#onStarted()">onStarted</a>, <a href="../../audio/DecoderAudioRenderer.html#onStopped()">onStopped</a>, <a href="../../audio/DecoderAudioRenderer.html#onStreamChanged(com.google.android.exoplayer2.Format%5B%5D,long,long)">onStreamChanged</a>, <a href="../../audio/DecoderAudioRenderer.html#render(long,long)">render</a>, <a href="../../audio/DecoderAudioRenderer.html#setPlaybackParameters(com.google.android.exoplayer2.PlaybackParameters)">setPlaybackParameters</a>, <a href="../../audio/DecoderAudioRenderer.html#sinkSupportsFormat(com.google.android.exoplayer2.Format)">sinkSupportsFormat</a>, <a href="../../audio/DecoderAudioRenderer.html#supportsFormat(com.google.android.exoplayer2.Format)">supportsFormat</a></code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="methods.inherited.from.class.com.google.android.exoplayer2.BaseRenderer">
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class com.google.android.exoplayer2.<a href="../../BaseRenderer.html" title="class in com.google.android.exoplayer2">BaseRenderer</a></h3>
|
||||
<code><a href="../../BaseRenderer.html#createRendererException(java.lang.Throwable,com.google.android.exoplayer2.Format,@com.google.android.exoplayer2.PlaybackException.ErrorCodeint)">createRendererException</a>, <a href="../../BaseRenderer.html#createRendererException(java.lang.Throwable,com.google.android.exoplayer2.Format,boolean,@com.google.android.exoplayer2.PlaybackException.ErrorCodeint)">createRendererException</a>, <a href="../../BaseRenderer.html#disable()">disable</a>, <a href="../../BaseRenderer.html#enable(com.google.android.exoplayer2.RendererConfiguration,com.google.android.exoplayer2.Format%5B%5D,com.google.android.exoplayer2.source.SampleStream,long,boolean,boolean,long,long)">enable</a>, <a href="../../BaseRenderer.html#getCapabilities()">getCapabilities</a>, <a href="../../BaseRenderer.html#getConfiguration()">getConfiguration</a>, <a href="../../BaseRenderer.html#getFormatHolder()">getFormatHolder</a>, <a href="../../BaseRenderer.html#getIndex()">getIndex</a>, <a href="../../BaseRenderer.html#getLastResetPositionUs()">getLastResetPositionUs</a>, <a href="../../BaseRenderer.html#getPlayerId()">getPlayerId</a>, <a href="../../BaseRenderer.html#getReadingPositionUs()">getReadingPositionUs</a>, <a href="../../BaseRenderer.html#getState()">getState</a>, <a href="../../BaseRenderer.html#getStream()">getStream</a>, <a href="../../BaseRenderer.html#getStreamFormats()">getStreamFormats</a>, <a href="../../BaseRenderer.html#getTrackType()">getTrackType</a>, <a href="../../BaseRenderer.html#hasReadStreamToEnd()">hasReadStreamToEnd</a>, <a href="../../BaseRenderer.html#init(int,com.google.android.exoplayer2.analytics.PlayerId)">init</a>, <a href="../../BaseRenderer.html#isCurrentStreamFinal()">isCurrentStreamFinal</a>, <a href="../../BaseRenderer.html#isSourceReady()">isSourceReady</a>, <a href="../../BaseRenderer.html#maybeThrowStreamError()">maybeThrowStreamError</a>, <a href="../../BaseRenderer.html#onReset()">onReset</a>, <a href="../../BaseRenderer.html#onStreamChanged(com.google.android.exoplayer2.Format%5B%5D,long,long)">onStreamChanged</a>, <a href="../../BaseRenderer.html#readSource(com.google.android.exoplayer2.FormatHolder,com.google.android.exoplayer2.decoder.DecoderInputBuffer,@com.google.android.exoplayer2.source.SampleStream.ReadFlagsint)">readSource</a>, <a href="../../BaseRenderer.html#replaceStream(com.google.android.exoplayer2.Format%5B%5D,com.google.android.exoplayer2.source.SampleStream,long,long)">replaceStream</a>, <a href="../../BaseRenderer.html#reset()">reset</a>, <a href="../../BaseRenderer.html#resetPosition(long)">resetPosition</a>, <a href="../../BaseRenderer.html#setCurrentStreamFinal()">setCurrentStreamFinal</a>, <a href="../../BaseRenderer.html#skipSource(long)">skipSource</a>, <a href="../../BaseRenderer.html#start()">start</a>, <a href="../../BaseRenderer.html#stop()">stop</a>, <a href="../../BaseRenderer.html#supportsMixedMimeTypeAdaptation()">supportsMixedMimeTypeAdaptation</a></code></li>
|
||||
<code><a href="../../BaseRenderer.html#createRendererException(java.lang.Throwable,com.google.android.exoplayer2.Format,@com.google.android.exoplayer2.PlaybackException.ErrorCodeint)">createRendererException</a>, <a href="../../BaseRenderer.html#createRendererException(java.lang.Throwable,com.google.android.exoplayer2.Format,boolean,@com.google.android.exoplayer2.PlaybackException.ErrorCodeint)">createRendererException</a>, <a href="../../BaseRenderer.html#disable()">disable</a>, <a href="../../BaseRenderer.html#enable(com.google.android.exoplayer2.RendererConfiguration,com.google.android.exoplayer2.Format%5B%5D,com.google.android.exoplayer2.source.SampleStream,long,boolean,boolean,long,long)">enable</a>, <a href="../../BaseRenderer.html#getCapabilities()">getCapabilities</a>, <a href="../../BaseRenderer.html#getConfiguration()">getConfiguration</a>, <a href="../../BaseRenderer.html#getFormatHolder()">getFormatHolder</a>, <a href="../../BaseRenderer.html#getIndex()">getIndex</a>, <a href="../../BaseRenderer.html#getLastResetPositionUs()">getLastResetPositionUs</a>, <a href="../../BaseRenderer.html#getPlayerId()">getPlayerId</a>, <a href="../../BaseRenderer.html#getReadingPositionUs()">getReadingPositionUs</a>, <a href="../../BaseRenderer.html#getState()">getState</a>, <a href="../../BaseRenderer.html#getStream()">getStream</a>, <a href="../../BaseRenderer.html#getStreamFormats()">getStreamFormats</a>, <a href="../../BaseRenderer.html#getTrackType()">getTrackType</a>, <a href="../../BaseRenderer.html#hasReadStreamToEnd()">hasReadStreamToEnd</a>, <a href="../../BaseRenderer.html#init(int,com.google.android.exoplayer2.analytics.PlayerId)">init</a>, <a href="../../BaseRenderer.html#isCurrentStreamFinal()">isCurrentStreamFinal</a>, <a href="../../BaseRenderer.html#isSourceReady()">isSourceReady</a>, <a href="../../BaseRenderer.html#maybeThrowStreamError()">maybeThrowStreamError</a>, <a href="../../BaseRenderer.html#onReset()">onReset</a>, <a href="../../BaseRenderer.html#readSource(com.google.android.exoplayer2.FormatHolder,com.google.android.exoplayer2.decoder.DecoderInputBuffer,@com.google.android.exoplayer2.source.SampleStream.ReadFlagsint)">readSource</a>, <a href="../../BaseRenderer.html#replaceStream(com.google.android.exoplayer2.Format%5B%5D,com.google.android.exoplayer2.source.SampleStream,long,long)">replaceStream</a>, <a href="../../BaseRenderer.html#reset()">reset</a>, <a href="../../BaseRenderer.html#resetPosition(long)">resetPosition</a>, <a href="../../BaseRenderer.html#setCurrentStreamFinal()">setCurrentStreamFinal</a>, <a href="../../BaseRenderer.html#skipSource(long)">skipSource</a>, <a href="../../BaseRenderer.html#start()">start</a>, <a href="../../BaseRenderer.html#stop()">stop</a>, <a href="../../BaseRenderer.html#supportsMixedMimeTypeAdaptation()">supportsMixedMimeTypeAdaptation</a></code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue