diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index ab94d9922e4..ed6cef06fd8 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -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 diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 28967398b74..df760b72db6 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -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: ----------------------- diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md index 820c3149c57..725b774911d 100644 --- a/.github/ISSUE_TEMPLATE/question.md +++ b/.github/ISSUE_TEMPLATE/question.md @@ -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: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 18b494425ad..87bf3280197 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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 diff --git a/README.md b/README.md index d0b375b92da..39a1e3e868e 100644 --- a/README.md +++ b/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 + +## 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 -You'll find some [Media3 documentation on developer.android.com][], including a -[migration guide for existing ExoPlayer and MediaSession users][]. +## 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 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b5a6a75e466..535e4e4f1fa 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -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 diff --git a/constants.gradle b/constants.gradle index f1fa589e943..c07fb57692c 100644 --- a/constants.gradle +++ b/constants.gradle @@ -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. diff --git a/libraries/common/src/main/java/androidx/media3/common/MediaLibraryInfo.java b/libraries/common/src/main/java/androidx/media3/common/MediaLibraryInfo.java index 64cdc2d9964..f1f2f0a81ca 100644 --- a/libraries/common/src/main/java/androidx/media3/common/MediaLibraryInfo.java +++ b/libraries/common/src/main/java/androidx/media3/common/MediaLibraryInfo.java @@ -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; diff --git a/libraries/common/src/main/java/androidx/media3/common/Timeline.java b/libraries/common/src/main/java/androidx/media3/common/Timeline.java index d470b37b52f..81459888a15 100644 --- a/libraries/common/src/main/java/androidx/media3/common/Timeline.java +++ b/libraries/common/src/main/java/androidx/media3/common/Timeline.java @@ -813,6 +813,7 @@ public long getAdDurationUs(int adGroupIndex, int adIndexInAdGroup) { * 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. */ diff --git a/libraries/common/src/main/java/androidx/media3/common/Tracks.java b/libraries/common/src/main/java/androidx/media3/common/Tracks.java index 28d2e89a974..734a8306b8b 100644 --- a/libraries/common/src/main/java/androidx/media3/common/Tracks.java +++ b/libraries/common/src/main/java/androidx/media3/common/Tracks.java @@ -297,6 +297,7 @@ public boolean isTypeSupported(@C.TrackType int trackType) { * 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 diff --git a/libraries/common/src/main/java/androidx/media3/common/util/Util.java b/libraries/common/src/main/java/androidx/media3/common/util/Util.java index a079c488d97..638dce58136 100644 --- a/libraries/common/src/main/java/androidx/media3/common/util/Util.java +++ b/libraries/common/src/main/java/androidx/media3/common/util/Util.java @@ -1555,6 +1555,7 @@ public static long getMediaDurationForPlayoutDuration(long playoutDuration, floa * 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 diff --git a/libraries/datasource/src/main/java/androidx/media3/datasource/DataSourceUtil.java b/libraries/datasource/src/main/java/androidx/media3/datasource/DataSourceUtil.java index e604619c7a9..aa14615c8e0 100644 --- a/libraries/datasource/src/main/java/androidx/media3/datasource/DataSourceUtil.java +++ b/libraries/datasource/src/main/java/androidx/media3/datasource/DataSourceUtil.java @@ -56,6 +56,7 @@ public static byte[] readToEnd(DataSource dataSource) throws IOException { * 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 diff --git a/libraries/datasource/src/main/java/androidx/media3/datasource/DefaultDataSource.java b/libraries/datasource/src/main/java/androidx/media3/datasource/DefaultDataSource.java index 8a5e9d7df02..83de6a66e2e 100644 --- a/libraries/datasource/src/main/java/androidx/media3/datasource/DefaultDataSource.java +++ b/libraries/datasource/src/main/java/androidx/media3/datasource/DefaultDataSource.java @@ -148,6 +148,7 @@ public DefaultDataSource createDataSource() { * 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) { diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/BitmapTestUtil.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/BitmapTestUtil.java index dcab6d098e0..5892df10cf7 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/BitmapTestUtil.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/BitmapTestUtil.java @@ -106,6 +106,8 @@ public static Bitmap createArgb8888BitmapFromRgba8888Image(Image image) { /** * 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) { diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlaybackException.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlaybackException.java index 82a958ce16a..3dc08580afa 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlaybackException.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlaybackException.java @@ -131,6 +131,8 @@ public static ExoPlaybackException createForSource(IOException cause, int errorC * 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}. diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/OfflineLicenseHelper.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/OfflineLicenseHelper.java index 3da5a1dbcd5..ab7d4745d14 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/OfflineLicenseHelper.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/OfflineLicenseHelper.java @@ -100,6 +100,7 @@ public static OfflineLicenseHelper newWidevineInstance( * 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 diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java index a752432fa04..1263bad9074 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java @@ -362,6 +362,7 @@ private static String buildCustomDiagnosticInfo(int errorCode) { /** * @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 diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/offline/SegmentDownloader.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/offline/SegmentDownloader.java index 7a8ac0ba2bf..9026fe11faa 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/offline/SegmentDownloader.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/offline/SegmentDownloader.java @@ -326,6 +326,7 @@ public final void remove() { /** * 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. diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java index 50a0ab216d4..fcb61e3e8c8 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java @@ -2446,6 +2446,7 @@ private void setParametersInternal(Parameters parameters) { * 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. diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/MappingTrackSelector.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/MappingTrackSelector.java index 8f111e73abe..de8f026c391 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/MappingTrackSelector.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/MappingTrackSelector.java @@ -289,6 +289,7 @@ public TrackGroupArray getTrackGroups(int rendererIndex) { * * @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( diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/RandomTrackSelection.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/RandomTrackSelection.java index 0db95a86bc2..9e5d9a1b71e 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/RandomTrackSelection.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/RandomTrackSelection.java @@ -68,12 +68,15 @@ public Factory(int seed) { 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); diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/DecoderVideoRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/DecoderVideoRenderer.java index 2f247237d29..e1e03f875ba 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/DecoderVideoRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/DecoderVideoRenderer.java @@ -651,6 +651,7 @@ protected final void setOutput(@Nullable Object output) { * *

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. diff --git a/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DashChunkSource.java b/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DashChunkSource.java index 11c18a39700..f26c8fd734b 100644 --- a/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DashChunkSource.java +++ b/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DashChunkSource.java @@ -50,6 +50,8 @@ interface Factory { * 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 @@ DashChunkSource createDashChunkSource( * 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. diff --git a/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/HlsMediaPeriod.java b/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/HlsMediaPeriod.java index c4bcfc50ecd..63d2b931d19 100644 --- a/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/HlsMediaPeriod.java +++ b/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/HlsMediaPeriod.java @@ -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, diff --git a/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/playlist/HlsMediaPlaylist.java b/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/playlist/HlsMediaPlaylist.java index fb2444d4bb1..5e6baec46be 100644 --- a/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/playlist/HlsMediaPlaylist.java +++ b/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/playlist/HlsMediaPlaylist.java @@ -462,16 +462,20 @@ public RenditionReport(Uri playlistUri, long lastMediaSequence, int lastPartInde 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}. diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/FlacFrameReader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/FlacFrameReader.java index 078982c6f0e..79123d3c691 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/FlacFrameReader.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/FlacFrameReader.java @@ -132,6 +132,7 @@ public static boolean checkFrameHeaderFromPeek( * 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. diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/text/webvtt/WebvttCssStyle.java b/libraries/extractor/src/main/java/androidx/media3/extractor/text/webvtt/WebvttCssStyle.java index e27eefdb0fe..9908fe5a7bc 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/text/webvtt/WebvttCssStyle.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/text/webvtt/WebvttCssStyle.java @@ -152,12 +152,13 @@ public void setTargetVoice(String targetVoice) { *

  • Universal selector matching scores 1. * * + *

    See also CSS Cascading. + * * @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 CSS Cascading */ public int getSpecificityScore( @Nullable String id, @Nullable String tag, Set classes, @Nullable String voice) { diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaController.java b/libraries/session/src/main/java/androidx/media3/session/MediaController.java index 529be85dcc2..44acda8293c 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaController.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaController.java @@ -905,13 +905,14 @@ public ListenableFuture setRating(Rating rating) { /** * Sends a custom command to the session. * + *

    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}. + * *

    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}. * - *

    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 diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaSession.java b/libraries/session/src/main/java/androidx/media3/session/MediaSession.java index c1cd0c6e4aa..3c82ec75d2e 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaSession.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaSession.java @@ -816,6 +816,7 @@ public BitmapLoader getBitmapLoader() { * *

    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 @@ default ListenableFuture onSetRating( * Called when a controller sent a custom command through {@link * MediaController#sendCustomCommand(SessionCommand, Bundle)}. * + *

    {@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}. + * *

    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 diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/Action.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/Action.java index 5b5ed5b678a..ac5aff56115 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/Action.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/Action.java @@ -1098,7 +1098,10 @@ public static final class ExecuteRunnable extends 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"); diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/ActionSchedule.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/ActionSchedule.java index 019b9c46993..beafa0419e3 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/ActionSchedule.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/ActionSchedule.java @@ -349,7 +349,7 @@ public Builder setAudioAttributes(AudioAttributes audioAttributes, boolean handl } /** - * 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 Builder setAudioAttributes(AudioAttributes audioAttributes, boolean handl * 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 Builder setMediaSources(int mediaItemIndex, long positionMs, MediaSource. } /** - * 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 Builder setShuffleModeEnabled(boolean shuffleModeEnabled) { /** * 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. diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/ExtractorAsserts.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/ExtractorAsserts.java index 3ed82c380a9..979ac9d0972 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/ExtractorAsserts.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/ExtractorAsserts.java @@ -360,6 +360,9 @@ public static void assertBehavior( * *

    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. diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaPeriod.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaPeriod.java index cd804fe5fe8..7ec904028e6 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaPeriod.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaPeriod.java @@ -375,6 +375,7 @@ public boolean isLoading() { /** * 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. diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaSource.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaSource.java index c1c206ebf10..ee34c7db658 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaSource.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaSource.java @@ -339,6 +339,7 @@ public List getCreatedMediaPeriods() { * @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. diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeTimeline.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeTimeline.java index 668da3bfdcd..8b7ff8cad47 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeTimeline.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeTimeline.java @@ -393,6 +393,7 @@ public FakeTimeline(TimelineWindowDefinition... windowDefinitions) { /** * 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 FakeTimeline(Object[] manifests, TimelineWindowDefinition... windowDefini * 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( diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/MediaSourceTestRunner.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/MediaSourceTestRunner.java index c6c3970a79f..7946e943454 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/MediaSourceTestRunner.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/MediaSourceTestRunner.java @@ -152,6 +152,7 @@ public MediaPeriod createPeriod(final MediaPeriodId periodId) { * 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) { diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/TimelineAsserts.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/TimelineAsserts.java index 241a179fc45..c28e0f09269 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/TimelineAsserts.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/TimelineAsserts.java @@ -50,6 +50,7 @@ public static void assertEmpty(Timeline timeline) { /** * 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. */