mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
commit
95f9e8f8ff
10
.github/ISSUE_TEMPLATE/bug.yml
vendored
10
.github/ISSUE_TEMPLATE/bug.yml
vendored
@ -5,18 +5,22 @@ body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
We can only process bug reports that are actionable. Unclear bug reports or reports with insufficient information may not get attention.
|
||||
We can only process bug reports that are actionable. Unclear bug reports or reports with
|
||||
insufficient information may not get attention.
|
||||
|
||||
Before filing a bug:
|
||||
-------------------------
|
||||
|
||||
- Search existing issues, including issues that are closed: https://github.com/androidx/media/issues?q=is%3Aissue
|
||||
- For ExoPlayer-related bugs, please also check the ExoPlayer tracker: https://github.com/google/ExoPlayer/issues?q=is%3Aissue
|
||||
- Search existing issues, including issues that are closed:
|
||||
https://github.com/androidx/media/issues?q=is%3Aissue
|
||||
- For ExoPlayer-related bugs, please also check for existing issues on the ExoPlayer
|
||||
tracker: https://github.com/google/ExoPlayer/issues?q=is%3Aissue
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Media3 Version
|
||||
description: What version of Media3 are you using?
|
||||
options:
|
||||
- 1.0.0
|
||||
- 1.0.0-rc02
|
||||
- 1.0.0-rc01
|
||||
- 1.0.0-beta03
|
||||
|
9
.github/ISSUE_TEMPLATE/feature_request.md
vendored
9
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -10,11 +10,12 @@ Before filing a feature request:
|
||||
-----------------------
|
||||
- Search existing open issues, specifically with the label ‘enhancement’:
|
||||
https://github.com/androidx/media/labels/enhancement
|
||||
- For ExoPlayer-related feature requests, please also check the ExoPlayer
|
||||
tracker:
|
||||
- For ExoPlayer-related feature requests, please also check for existing feature
|
||||
requests on the ExoPlayer tracker:
|
||||
https://github.com/google/ExoPlayer/labels/enhancement
|
||||
- Search existing pull requests: https://github.com/androidx/media/pulls,
|
||||
https://github.com/google/ExoPlayer/pulls
|
||||
- Search existing pull requests:
|
||||
- On this tracker: https://github.com/androidx/media/pulls,
|
||||
- On the ExoPlayer tracker: https://github.com/google/ExoPlayer/pulls
|
||||
|
||||
When filing a feature request:
|
||||
-----------------------
|
||||
|
3
.github/ISSUE_TEMPLATE/question.md
vendored
3
.github/ISSUE_TEMPLATE/question.md
vendored
@ -15,7 +15,8 @@ Before filing a question:
|
||||
- Ask general Android development questions on Stack Overflow
|
||||
- Search existing issues, including issues that are closed
|
||||
https://github.com/androidx/media/issues?q=is%3Aissue
|
||||
- For ExoPlayer-related questions, please also check the ExoPlayer tracker:
|
||||
- For ExoPlayer-related questions, please also check for existing questions on
|
||||
the ExoPlayer tracker:
|
||||
https://github.com/google/ExoPlayer/issues?q=is%3Aissue
|
||||
|
||||
When filing a question:
|
||||
|
@ -5,12 +5,10 @@
|
||||
We use the [AndroidX Media issue tracker][] to track bugs, feature requests and
|
||||
questions.
|
||||
|
||||
We are still handling ExoPlayer issues on the [ExoPlayer GitHub issue tracker][]
|
||||
while the ExoPlayer and AndroidX Media projects coexist.
|
||||
|
||||
Before filing a new issue, please search the trackers to check if it's already
|
||||
covered by an existing report. Avoiding duplicates helps us maximize the time we
|
||||
can spend fixing bugs and adding new features.
|
||||
can spend fixing bugs and adding new features. You will also find older issues
|
||||
on our [ExoPlayer GitHub issue tracker][].
|
||||
|
||||
When filing an issue, be sure to provide enough information for us to
|
||||
efficiently diagnose and reproduce the problem. In particular, please include
|
||||
|
37
README.md
37
README.md
@ -3,18 +3,27 @@
|
||||
AndroidX Media is a collection of libraries for implementing media use cases on
|
||||
Android, including local playback (via ExoPlayer) and media sessions.
|
||||
|
||||
## Current status
|
||||
## Documentation
|
||||
|
||||
AndroidX Media is currently in release candidate and we welcome your feedback
|
||||
via the [issue tracker][]. Please consult the [release notes][] for more details
|
||||
about the current release.
|
||||
* The [developer guide][] provides a wealth of information.
|
||||
* The [class reference][] documents the classes and methods.
|
||||
* The [release notes][] document the major changes in each release.
|
||||
* Follow our [developer blog][] to keep up to date with the latest
|
||||
developments!
|
||||
|
||||
ExoPlayer's new home will be in AndroidX Media, but for now we are publishing it
|
||||
both in AndroidX Media and via the existing [ExoPlayer project][] and we are
|
||||
still handling ExoPlayer issues on the [ExoPlayer issue tracker][].
|
||||
[developer guide]: https://developer.android.com/guide/topics/media/media3
|
||||
[class reference]: https://developer.android.com/reference/androidx/media3/common/package-summary
|
||||
[release notes]: RELEASENOTES.md
|
||||
[developer blog]: https://medium.com/google-exoplayer
|
||||
|
||||
You'll find some [Media3 documentation on developer.android.com][], including a
|
||||
[migration guide for existing ExoPlayer and MediaSession users][].
|
||||
## Migration for existing ExoPlayer and MediaSession projects
|
||||
|
||||
You'll find a [migration guide for existing ExoPlayer and MediaSession users][]
|
||||
on developer.android.com.
|
||||
|
||||
[migration guide for existing ExoPlayer and MediaSession users]: https://developer.android.com/guide/topics/media/media3/getting-started/migration-guide
|
||||
|
||||
## API stability
|
||||
|
||||
AndroidX Media releases provide API stability guarantees, ensuring that the API
|
||||
surface remains backwards compatible for the most commonly used APIs. APIs
|
||||
@ -22,17 +31,7 @@ intended for more advanced use cases are marked as unstable. To use an unstable
|
||||
method or class without lint warnings, you’ll need to add the OptIn annotation
|
||||
before using it. For more information see the [UnstableApi][] documentation.
|
||||
|
||||
For a high level overview of the initial version of AndroidX Media please see
|
||||
the Android Dev Summit talk [What's next for AndroidX Media and ExoPlayer][].
|
||||
|
||||
[release notes]: RELEASENOTES.md
|
||||
[issue tracker]: https://github.com/androidx/media/issues/new
|
||||
[ExoPlayer project]: https://github.com/google/ExoPlayer
|
||||
[ExoPlayer issue tracker]: https://github.com/google/ExoPlayer/issues
|
||||
[UnstableApi]: https://github.com/androidx/media/blob/main/libraries/common/src/main/java/androidx/media3/common/util/UnstableApi.java
|
||||
[What's next for AndroidX Media and ExoPlayer]: https://youtu.be/sTIBDcyCmCg
|
||||
[Media3 documentation on developer.android.com]: https://developer.android.com/guide/topics/media/media3
|
||||
[migration guide for existing ExoPlayer and MediaSession users]: https://developer.android.com/guide/topics/media/media3/getting-started/migration-guide
|
||||
|
||||
## Using the libraries
|
||||
|
||||
|
@ -1,5 +1,12 @@
|
||||
# Release notes
|
||||
|
||||
### 1.0.0 (2023-03-22)
|
||||
|
||||
This release corresponds to the
|
||||
[ExoPlayer 2.18.5 release](https://github.com/google/ExoPlayer/releases/tag/r2.18.5).
|
||||
|
||||
There are no changes since 1.0.0-rc02.
|
||||
|
||||
### 1.0.0-rc02 (2023-03-02)
|
||||
|
||||
This release corresponds to the
|
||||
|
@ -12,8 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
project.ext {
|
||||
releaseVersion = '1.0.0-rc02'
|
||||
releaseVersionCode = 1_000_000_2_02
|
||||
releaseVersion = '1.0.0'
|
||||
releaseVersionCode = 1_000_000_3_00
|
||||
minSdkVersion = 16
|
||||
appTargetSdkVersion = 33
|
||||
// API version before restricting local file access.
|
||||
|
@ -29,11 +29,11 @@ public final class MediaLibraryInfo {
|
||||
|
||||
/** The version of the library expressed as a string, for example "1.2.3" or "1.2.3-beta01". */
|
||||
// Intentionally hardcoded. Do not derive from other constants (e.g. VERSION_INT) or vice versa.
|
||||
public static final String VERSION = "1.0.0-rc02";
|
||||
public static final String VERSION = "1.0.0";
|
||||
|
||||
/** The version of the library expressed as {@code TAG + "/" + VERSION}. */
|
||||
// Intentionally hardcoded. Do not derive from other constants (e.g. VERSION) or vice versa.
|
||||
public static final String VERSION_SLASHY = "AndroidXMedia3/1.0.0-rc02";
|
||||
public static final String VERSION_SLASHY = "AndroidXMedia3/1.0.0";
|
||||
|
||||
/**
|
||||
* The version of the library expressed as an integer, for example 1002003300.
|
||||
@ -47,7 +47,7 @@ public final class MediaLibraryInfo {
|
||||
* (123-045-006-3-00).
|
||||
*/
|
||||
// Intentionally hardcoded. Do not derive from other constants (e.g. VERSION) or vice versa.
|
||||
public static final int VERSION_INT = 1_000_000_2_02;
|
||||
public static final int VERSION_INT = 1_000_000_3_00;
|
||||
|
||||
/** Whether the library was compiled with {@link Assertions} checks enabled. */
|
||||
public static final boolean ASSERTIONS_ENABLED = true;
|
||||
|
@ -813,6 +813,7 @@ public abstract class Timeline implements Bundleable {
|
||||
* adGroupIndex}, or {@link AdPlaybackState#AD_STATE_UNAVAILABLE} if not yet known.
|
||||
*
|
||||
* @param adGroupIndex The ad group index.
|
||||
* @param adIndexInAdGroup The index of the ad in the ad group.
|
||||
* @return The state of the ad, or {@link AdPlaybackState#AD_STATE_UNAVAILABLE} if not yet
|
||||
* known.
|
||||
*/
|
||||
|
@ -297,6 +297,7 @@ public final class Tracks implements Bundleable {
|
||||
* Returns true if at least one track of type {@code trackType} is {@link
|
||||
* Group#isTrackSupported(int, boolean) supported}.
|
||||
*
|
||||
* @param trackType The track type to query support for.
|
||||
* @param allowExceedsCapabilities Whether to consider the track as supported if it has a
|
||||
* supported {@link Format#sampleMimeType MIME type}, but otherwise exceeds the advertised
|
||||
* capabilities of the device. For example, a video track for which there's a corresponding
|
||||
|
@ -1555,6 +1555,7 @@ public final class Util {
|
||||
* Returns the playout duration of {@code mediaDuration} of media.
|
||||
*
|
||||
* @param mediaDuration The duration to scale.
|
||||
* @param speed The factor by which playback is sped up.
|
||||
* @return The scaled duration, in the same units as {@code mediaDuration}.
|
||||
*/
|
||||
@UnstableApi
|
||||
|
@ -56,6 +56,7 @@ public final class DataSourceUtil {
|
||||
* array containing the read data.
|
||||
*
|
||||
* @param dataSource The source from which to read.
|
||||
* @param length The number of bytes to read.
|
||||
* @return The read data.
|
||||
* @throws IOException If an error occurs reading from the source.
|
||||
* @throws IllegalStateException If the end of the source was reached before {@code length} bytes
|
||||
|
@ -148,6 +148,7 @@ public final class DefaultDataSource implements DataSource {
|
||||
* Constructs a new instance, optionally configured to follow cross-protocol redirects.
|
||||
*
|
||||
* @param context A context.
|
||||
* @param allowCrossProtocolRedirects Whether to allow cross-protocol redirects.
|
||||
*/
|
||||
@UnstableApi
|
||||
public DefaultDataSource(Context context, boolean allowCrossProtocolRedirects) {
|
||||
|
@ -106,6 +106,8 @@ public class BitmapTestUtil {
|
||||
/**
|
||||
* Returns a solid {@link Bitmap} with every pixel having the same color.
|
||||
*
|
||||
* @param width The width of image to create, in pixels.
|
||||
* @param height The height of image to create, in pixels.
|
||||
* @param color An RGBA color created by {@link Color}.
|
||||
*/
|
||||
public static Bitmap createArgb8888BitmapWithSolidColor(int width, int height, int color) {
|
||||
|
@ -131,6 +131,8 @@ public final class ExoPlaybackException extends PlaybackException {
|
||||
* Creates an instance of type {@link #TYPE_RENDERER}.
|
||||
*
|
||||
* @param cause The cause of the failure.
|
||||
* @param rendererName The {@linkplain Renderer#getName() name} of the renderer in which the
|
||||
* failure occurred.
|
||||
* @param rendererIndex The index of the renderer in which the failure occurred.
|
||||
* @param rendererFormat The {@link Format} the renderer was using at the time of the exception,
|
||||
* or null if the renderer wasn't using a {@link Format}.
|
||||
|
@ -100,6 +100,7 @@ public final class OfflineLicenseHelper {
|
||||
* their own license URL.
|
||||
* @param forceDefaultLicenseUrl Whether to use {@code defaultLicenseUrl} for key requests that
|
||||
* include their own license URL.
|
||||
* @param dataSourceFactory A factory from which to obtain {@link DataSource} instances.
|
||||
* @param optionalKeyRequestParameters An optional map of parameters to pass as the last argument
|
||||
* to {@link MediaDrm#getKeyRequest}. May be null.
|
||||
* @param eventDispatcher A {@link DrmSessionEventListener.EventDispatcher} used to distribute
|
||||
|
@ -362,6 +362,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
|
||||
|
||||
/**
|
||||
* @param trackType The {@link C.TrackType track type} that the renderer handles.
|
||||
* @param codecAdapterFactory A factory for {@link MediaCodecAdapter} instances.
|
||||
* @param mediaCodecSelector A decoder selector.
|
||||
* @param enableDecoderFallback Whether to enable fallback to lower-priority decoders if decoder
|
||||
* initialization fails. This may result in using a decoder that is less efficient or slower
|
||||
|
@ -326,6 +326,7 @@ public abstract class SegmentDownloader<M extends FilterableManifest<M>> impleme
|
||||
/**
|
||||
* Loads and parses a manifest.
|
||||
*
|
||||
* @param dataSource The source to use when loading the manifest.
|
||||
* @param dataSpec The manifest {@link DataSpec}.
|
||||
* @param removing Whether the manifest is being loaded as part of the download being removed.
|
||||
* @return The loaded manifest.
|
||||
|
@ -2446,6 +2446,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
||||
* renderer, track group and track (in that order).
|
||||
* @param rendererMixedMimeTypeAdaptationSupports The {@link AdaptiveSupport} for mixed MIME type
|
||||
* adaptation for the renderer.
|
||||
* @param params The parameters to use for the track selection.
|
||||
* @return The {@link ExoTrackSelection.Definition}s for the renderers. A null entry indicates no
|
||||
* selection was made.
|
||||
* @throws ExoPlaybackException If an error occurs while selecting the tracks.
|
||||
|
@ -289,6 +289,7 @@ public abstract class MappingTrackSelector extends TrackSelector {
|
||||
*
|
||||
* @param rendererIndex The renderer index.
|
||||
* @param groupIndex The index of the track group.
|
||||
* @param trackIndices The indices of the tracks in the track group for which to query support.
|
||||
* @return The {@link AdaptiveSupport}.
|
||||
*/
|
||||
public @AdaptiveSupport int getAdaptiveSupport(
|
||||
|
@ -68,12 +68,15 @@ public final class RandomTrackSelection extends BaseTrackSelection {
|
||||
private int selectedIndex;
|
||||
|
||||
/**
|
||||
* Creates a new instance.
|
||||
*
|
||||
* @param group The {@link TrackGroup}. Must not be null.
|
||||
* @param tracks The indices of the selected tracks within the {@link TrackGroup}. Must not be
|
||||
* null or empty. May be in any order.
|
||||
* @param type The {@link Type} of this track selection.
|
||||
* @param random A source of random numbers.
|
||||
*/
|
||||
public RandomTrackSelection(TrackGroup group, int[] tracks, int type, Random random) {
|
||||
public RandomTrackSelection(TrackGroup group, int[] tracks, @Type int type, Random random) {
|
||||
super(group, tracks, type);
|
||||
this.random = random;
|
||||
selectedIndex = random.nextInt(length);
|
||||
|
@ -651,6 +651,7 @@ public abstract class DecoderVideoRenderer extends BaseRenderer {
|
||||
*
|
||||
* <p>The default implementation does not allow decoder reuse.
|
||||
*
|
||||
* @param decoderName The name of the decoder.
|
||||
* @param oldFormat The previous format.
|
||||
* @param newFormat The new format.
|
||||
* @return The result of the evaluation.
|
||||
|
@ -50,6 +50,8 @@ public interface DashChunkSource extends ChunkSource {
|
||||
* if unknown.
|
||||
* @param enableEventMessageTrack Whether to output an event message track.
|
||||
* @param closedCaptionFormats The {@link Format Formats} of closed caption tracks to be output.
|
||||
* @param playerEmsgHandler The track output to write emsg messages to, or null if emsgs
|
||||
* shouldn't be written.
|
||||
* @param transferListener The transfer listener which should be informed of any data transfers.
|
||||
* May be null if no listener is available.
|
||||
* @param playerId The {@link PlayerId} of the player using this chunk source.
|
||||
@ -75,8 +77,9 @@ public interface DashChunkSource extends ChunkSource {
|
||||
* Updates the manifest.
|
||||
*
|
||||
* @param newManifest The new manifest.
|
||||
* @param newPeriodIndex The index of the period covered by {@code newManifest}.
|
||||
*/
|
||||
void updateManifest(DashManifest newManifest, int periodIndex);
|
||||
void updateManifest(DashManifest newManifest, int newPeriodIndex);
|
||||
|
||||
/**
|
||||
* Updates the track selection.
|
||||
|
@ -104,13 +104,17 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsPlaylistTracker.Pla
|
||||
* be null if no listener is available.
|
||||
* @param drmSessionManager The {@link DrmSessionManager} to acquire {@link DrmSession
|
||||
* DrmSessions} with.
|
||||
* @param drmEventDispatcher A {@link DrmSessionEventListener.EventDispatcher} used to distribute
|
||||
* DRM-related events.
|
||||
* @param loadErrorHandlingPolicy A {@link LoadErrorHandlingPolicy}.
|
||||
* @param eventDispatcher A dispatcher to notify of events.
|
||||
* @param allocator An {@link Allocator} from which to obtain media buffer allocations.
|
||||
* @param compositeSequenceableLoaderFactory A factory to create composite {@link
|
||||
* SequenceableLoader}s for when this media source loads data from multiple streams.
|
||||
* @param allowChunklessPreparation Whether chunkless preparation is allowed.
|
||||
* @param metadataType The type of metadata to extract from the period.
|
||||
* @param useSessionKeys Whether to use #EXT-X-SESSION-KEY tags.
|
||||
* @param playerId The ID of the current player.
|
||||
*/
|
||||
public HlsMediaPeriod(
|
||||
HlsExtractorFactory extractorFactory,
|
||||
|
@ -462,16 +462,20 @@ public final class HlsMediaPlaylist extends HlsPlaylist {
|
||||
public final ServerControl serverControl;
|
||||
|
||||
/**
|
||||
* Constructs an instance.
|
||||
*
|
||||
* @param playlistType See {@link #playlistType}.
|
||||
* @param baseUri See {@link #baseUri}.
|
||||
* @param tags See {@link #tags}.
|
||||
* @param startOffsetUs See {@link #startOffsetUs}.
|
||||
* @param preciseStart See {@link #preciseStart}.
|
||||
* @param startTimeUs See {@link #startTimeUs}.
|
||||
* @param hasDiscontinuitySequence See {@link #hasDiscontinuitySequence}.
|
||||
* @param discontinuitySequence See {@link #discontinuitySequence}.
|
||||
* @param mediaSequence See {@link #mediaSequence}.
|
||||
* @param version See {@link #version}.
|
||||
* @param targetDurationUs See {@link #targetDurationUs}.
|
||||
* @param partTargetDurationUs See {@link #partTargetDurationUs}.
|
||||
* @param hasIndependentSegments See {@link #hasIndependentSegments}.
|
||||
* @param hasEndTag See {@link #hasEndTag}.
|
||||
* @param hasProgramDateTime See {@link #hasProgramDateTime}.
|
||||
|
@ -132,6 +132,7 @@ public final class FlacFrameReader {
|
||||
* there is no guarantee on the peek position.
|
||||
*
|
||||
* @param input Input stream to get the sample number from (starting from the read position).
|
||||
* @param flacStreamMetadata The FLAC metadata of the stream.
|
||||
* @return The frame first sample number.
|
||||
* @throws ParserException If an error occurs parsing the sample number.
|
||||
* @throws IOException If peeking from the input fails.
|
||||
|
@ -152,12 +152,13 @@ public final class WebvttCssStyle {
|
||||
* <li>Universal selector matching scores 1.
|
||||
* </ul>
|
||||
*
|
||||
* <p>See also <a href="https://www.w3.org/TR/CSS2/cascade.html">CSS Cascading</a>.
|
||||
*
|
||||
* @param id The id of the cue if present, {@code null} otherwise.
|
||||
* @param tag Name of the tag, {@code null} if it refers to the entire cue.
|
||||
* @param classes An array containing the classes the tag belongs to. Must not be null.
|
||||
* @param voice Annotated voice if present, {@code null} otherwise.
|
||||
* @return The score of the match, zero if there is no match.
|
||||
* @see <a href="https://www.w3.org/TR/CSS2/cascade.html">CSS Cascading</a>
|
||||
*/
|
||||
public int getSpecificityScore(
|
||||
@Nullable String id, @Nullable String tag, Set<String> classes, @Nullable String voice) {
|
||||
|
@ -905,13 +905,14 @@ public class MediaController implements Player {
|
||||
/**
|
||||
* Sends a custom command to the session.
|
||||
*
|
||||
* <p>A command is not accepted if it is not a custom command or the command is not in the list of
|
||||
* {@linkplain #getAvailableSessionCommands() available session commands}.
|
||||
*
|
||||
* <p>Interoperability: When connected to {@link
|
||||
* android.support.v4.media.session.MediaSessionCompat}, {@link SessionResult#resultCode} will
|
||||
* return the custom result code from the {@code android.os.ResultReceiver#onReceiveResult(int,
|
||||
* Bundle)} instead of the standard result codes defined in the {@link SessionResult}.
|
||||
*
|
||||
* <p>A command is not accepted if it is not a custom command.
|
||||
*
|
||||
* @param command The custom command.
|
||||
* @param args The additional arguments. May be empty.
|
||||
* @return A {@link ListenableFuture} of {@link SessionResult} representing the pending
|
||||
|
@ -816,6 +816,7 @@ public class MediaSession {
|
||||
*
|
||||
* <p>A command is not accepted if it is not a custom command.
|
||||
*
|
||||
* @param controller The controller to send the custom command to.
|
||||
* @param command A custom command.
|
||||
* @param args A {@link Bundle} for additional arguments. May be empty.
|
||||
* @return A {@link ListenableFuture} of {@link SessionResult} from the controller.
|
||||
@ -1041,6 +1042,10 @@ public class MediaSession {
|
||||
* Called when a controller sent a custom command through {@link
|
||||
* MediaController#sendCustomCommand(SessionCommand, Bundle)}.
|
||||
*
|
||||
* <p>{@link MediaController} instances are only allowed to send a command if the command has
|
||||
* been added to the {@link MediaSession.ConnectionResult#availableSessionCommands list of
|
||||
* available session commands} in {@link #onConnect} or set via {@link #setAvailableCommands}.
|
||||
*
|
||||
* <p>Interoperability: This will be also called by {@link
|
||||
* android.support.v4.media.MediaBrowserCompat#sendCustomAction}. If so, {@code extras} from
|
||||
* {@link android.support.v4.media.MediaBrowserCompat#sendCustomAction} will be considered as
|
||||
|
@ -1098,7 +1098,10 @@ public abstract class Action {
|
||||
private final Runnable runnable;
|
||||
|
||||
/**
|
||||
* Constructs an instance.
|
||||
*
|
||||
* @param tag A tag to use for logging.
|
||||
* @param runnable The runnable to run.
|
||||
*/
|
||||
public ExecuteRunnable(@Size(max = 23) String tag, Runnable runnable) {
|
||||
super(tag, "ExecuteRunnable");
|
||||
|
@ -349,7 +349,7 @@ public final class ActionSchedule {
|
||||
}
|
||||
|
||||
/**
|
||||
* Schedules a set media items action to be executed.
|
||||
* Schedules a set media source actions to be executed.
|
||||
*
|
||||
* @param mediaItemIndex The media item index to start playback from or {@link C#INDEX_UNSET} if
|
||||
* the playback position should not be reset.
|
||||
@ -357,6 +357,7 @@ public final class ActionSchedule {
|
||||
* C#TIME_UNSET} is passed the default position is used. In any case, if {@code
|
||||
* mediaItemIndex} is set to {@link C#INDEX_UNSET} the position is not reset at all and this
|
||||
* parameter is ignored.
|
||||
* @param sources The media sources to be set on the player.
|
||||
* @return The builder, for convenience.
|
||||
*/
|
||||
@CanIgnoreReturnValue
|
||||
@ -365,9 +366,10 @@ public final class ActionSchedule {
|
||||
}
|
||||
|
||||
/**
|
||||
* Schedules a set media items action to be executed.
|
||||
* Schedules a set media sources action to be executed.
|
||||
*
|
||||
* @param resetPosition Whether the playback position should be reset.
|
||||
* @param sources The media sources to be set on the player.
|
||||
* @return The builder, for convenience.
|
||||
*/
|
||||
@CanIgnoreReturnValue
|
||||
@ -490,6 +492,7 @@ public final class ActionSchedule {
|
||||
/**
|
||||
* Schedules sending a {@link PlayerMessage}.
|
||||
*
|
||||
* @param target A message target.
|
||||
* @param positionMs The position in the current media item at which the message should be sent,
|
||||
* in milliseconds.
|
||||
* @return The builder, for convenience.
|
||||
|
@ -360,6 +360,9 @@ public final class ExtractorAsserts {
|
||||
*
|
||||
* <p>The output of the extractor is compared against prerecorded dump files.
|
||||
*
|
||||
* @param factory An {@link ExtractorFactory} which creates instances of the {@link Extractor}
|
||||
* class which is to be tested.
|
||||
* @param file The input file to pass to the extractor.
|
||||
* @param assertionConfig Details of how to read and process the source and dump files.
|
||||
* @param simulationConfig Details on the environment to simulate and behaviours to assert.
|
||||
* @throws IOException If reading from the input fails.
|
||||
|
@ -375,6 +375,7 @@ public class FakeMediaPeriod implements MediaPeriod {
|
||||
/**
|
||||
* Creates a new {@link FakeSampleStream}.
|
||||
*
|
||||
* @param allocator An {@link Allocator} from which to obtain media buffer allocations.
|
||||
* @param mediaSourceEventDispatcher A {@link MediaSourceEventListener.EventDispatcher} to notify
|
||||
* of media events.
|
||||
* @param drmSessionManager A {@link DrmSessionManager} for DRM interactions.
|
||||
|
@ -339,6 +339,7 @@ public class FakeMediaSource extends BaseMediaSource {
|
||||
* @param allocator An {@link Allocator} from which to obtain media buffer allocations.
|
||||
* @param mediaSourceEventDispatcher An {@link MediaSourceEventListener.EventDispatcher} to
|
||||
* dispatch media source events.
|
||||
* @param drmSessionManager A {@link DrmSessionManager} to allow DRM interactions.
|
||||
* @param drmEventDispatcher An {@link MediaSourceEventListener.EventDispatcher} to dispatch DRM
|
||||
* events.
|
||||
* @param transferListener The transfer listener which should be informed of any data transfers.
|
||||
|
@ -393,6 +393,7 @@ public final class FakeTimeline extends Timeline {
|
||||
/**
|
||||
* Creates a fake timeline with the given window definitions.
|
||||
*
|
||||
* @param manifests The manifests of the windows.
|
||||
* @param windowDefinitions A list of {@link TimelineWindowDefinition}s.
|
||||
*/
|
||||
public FakeTimeline(Object[] manifests, TimelineWindowDefinition... windowDefinitions) {
|
||||
@ -403,6 +404,8 @@ public final class FakeTimeline extends Timeline {
|
||||
* Creates a fake timeline with the given window definitions and {@link
|
||||
* androidx.media3.exoplayer.source.ShuffleOrder}.
|
||||
*
|
||||
* @param manifests The manifests of the windows.
|
||||
* @param shuffleOrder A shuffle ordering for the windows.
|
||||
* @param windowDefinitions A list of {@link TimelineWindowDefinition}s.
|
||||
*/
|
||||
public FakeTimeline(
|
||||
|
@ -152,6 +152,7 @@ public class MediaSourceTestRunner {
|
||||
* playback thread, asserting that a non-null {@link MediaPeriod} is returned.
|
||||
*
|
||||
* @param periodId The id of the period to create.
|
||||
* @param startPositionUs The expected start position, in microseconds.
|
||||
* @return The created {@link MediaPeriod}.
|
||||
*/
|
||||
public MediaPeriod createPeriod(final MediaPeriodId periodId, long startPositionUs) {
|
||||
|
@ -50,6 +50,7 @@ public final class TimelineAsserts {
|
||||
/**
|
||||
* Asserts that window tags are set correctly.
|
||||
*
|
||||
* @param timeline The timeline to read actual window tags from.
|
||||
* @param expectedWindowTags A list of expected window tags. If a tag is unknown or not important
|
||||
* {@code null} can be passed to skip this window.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user