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
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
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:
|
Before filing a bug:
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
- Search existing issues, including issues that are closed: https://github.com/androidx/media/issues?q=is%3Aissue
|
- Search existing issues, including issues that are closed:
|
||||||
- For ExoPlayer-related bugs, please also check the ExoPlayer tracker: https://github.com/google/ExoPlayer/issues?q=is%3Aissue
|
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
|
- type: dropdown
|
||||||
attributes:
|
attributes:
|
||||||
label: Media3 Version
|
label: Media3 Version
|
||||||
description: What version of Media3 are you using?
|
description: What version of Media3 are you using?
|
||||||
options:
|
options:
|
||||||
|
- 1.0.0
|
||||||
- 1.0.0-rc02
|
- 1.0.0-rc02
|
||||||
- 1.0.0-rc01
|
- 1.0.0-rc01
|
||||||
- 1.0.0-beta03
|
- 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’:
|
- Search existing open issues, specifically with the label ‘enhancement’:
|
||||||
https://github.com/androidx/media/labels/enhancement
|
https://github.com/androidx/media/labels/enhancement
|
||||||
- For ExoPlayer-related feature requests, please also check the ExoPlayer
|
- For ExoPlayer-related feature requests, please also check for existing feature
|
||||||
tracker:
|
requests on the ExoPlayer tracker:
|
||||||
https://github.com/google/ExoPlayer/labels/enhancement
|
https://github.com/google/ExoPlayer/labels/enhancement
|
||||||
- Search existing pull requests: https://github.com/androidx/media/pulls,
|
- Search existing pull requests:
|
||||||
https://github.com/google/ExoPlayer/pulls
|
- On this tracker: https://github.com/androidx/media/pulls,
|
||||||
|
- On the ExoPlayer tracker: https://github.com/google/ExoPlayer/pulls
|
||||||
|
|
||||||
When filing a feature request:
|
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
|
- Ask general Android development questions on Stack Overflow
|
||||||
- Search existing issues, including issues that are closed
|
- Search existing issues, including issues that are closed
|
||||||
https://github.com/androidx/media/issues?q=is%3Aissue
|
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
|
https://github.com/google/ExoPlayer/issues?q=is%3Aissue
|
||||||
|
|
||||||
When filing a question:
|
When filing a question:
|
||||||
|
@ -5,12 +5,10 @@
|
|||||||
We use the [AndroidX Media issue tracker][] to track bugs, feature requests and
|
We use the [AndroidX Media issue tracker][] to track bugs, feature requests and
|
||||||
questions.
|
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
|
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
|
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
|
When filing an issue, be sure to provide enough information for us to
|
||||||
efficiently diagnose and reproduce the problem. In particular, please include
|
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
|
AndroidX Media is a collection of libraries for implementing media use cases on
|
||||||
Android, including local playback (via ExoPlayer) and media sessions.
|
Android, including local playback (via ExoPlayer) and media sessions.
|
||||||
|
|
||||||
## Current status
|
## Documentation
|
||||||
|
|
||||||
AndroidX Media is currently in release candidate and we welcome your feedback
|
* The [developer guide][] provides a wealth of information.
|
||||||
via the [issue tracker][]. Please consult the [release notes][] for more details
|
* The [class reference][] documents the classes and methods.
|
||||||
about the current release.
|
* 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
|
[developer guide]: https://developer.android.com/guide/topics/media/media3
|
||||||
both in AndroidX Media and via the existing [ExoPlayer project][] and we are
|
[class reference]: https://developer.android.com/reference/androidx/media3/common/package-summary
|
||||||
still handling ExoPlayer issues on the [ExoPlayer issue tracker][].
|
[release notes]: RELEASENOTES.md
|
||||||
|
[developer blog]: https://medium.com/google-exoplayer
|
||||||
|
|
||||||
You'll find some [Media3 documentation on developer.android.com][], including a
|
## Migration for existing ExoPlayer and MediaSession projects
|
||||||
[migration guide for existing ExoPlayer and MediaSession users][].
|
|
||||||
|
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
|
AndroidX Media releases provide API stability guarantees, ensuring that the API
|
||||||
surface remains backwards compatible for the most commonly used APIs. APIs
|
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
|
method or class without lint warnings, you’ll need to add the OptIn annotation
|
||||||
before using it. For more information see the [UnstableApi][] documentation.
|
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
|
[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
|
## Using the libraries
|
||||||
|
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
# Release notes
|
# 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)
|
### 1.0.0-rc02 (2023-03-02)
|
||||||
|
|
||||||
This release corresponds to the
|
This release corresponds to the
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
project.ext {
|
project.ext {
|
||||||
releaseVersion = '1.0.0-rc02'
|
releaseVersion = '1.0.0'
|
||||||
releaseVersionCode = 1_000_000_2_02
|
releaseVersionCode = 1_000_000_3_00
|
||||||
minSdkVersion = 16
|
minSdkVersion = 16
|
||||||
appTargetSdkVersion = 33
|
appTargetSdkVersion = 33
|
||||||
// API version before restricting local file access.
|
// 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". */
|
/** 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.
|
// 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}. */
|
/** The version of the library expressed as {@code TAG + "/" + VERSION}. */
|
||||||
// Intentionally hardcoded. Do not derive from other constants (e.g. VERSION) or vice versa.
|
// 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.
|
* 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).
|
* (123-045-006-3-00).
|
||||||
*/
|
*/
|
||||||
// Intentionally hardcoded. Do not derive from other constants (e.g. VERSION) or vice versa.
|
// 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. */
|
/** Whether the library was compiled with {@link Assertions} checks enabled. */
|
||||||
public static final boolean ASSERTIONS_ENABLED = true;
|
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.
|
* adGroupIndex}, or {@link AdPlaybackState#AD_STATE_UNAVAILABLE} if not yet known.
|
||||||
*
|
*
|
||||||
* @param adGroupIndex The ad group index.
|
* @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
|
* @return The state of the ad, or {@link AdPlaybackState#AD_STATE_UNAVAILABLE} if not yet
|
||||||
* known.
|
* known.
|
||||||
*/
|
*/
|
||||||
|
@ -297,6 +297,7 @@ public final class Tracks implements Bundleable {
|
|||||||
* Returns true if at least one track of type {@code trackType} is {@link
|
* Returns true if at least one track of type {@code trackType} is {@link
|
||||||
* Group#isTrackSupported(int, boolean) supported}.
|
* 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
|
* @param allowExceedsCapabilities Whether to consider the track as supported if it has a
|
||||||
* supported {@link Format#sampleMimeType MIME type}, but otherwise exceeds the advertised
|
* 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
|
* 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.
|
* Returns the playout duration of {@code mediaDuration} of media.
|
||||||
*
|
*
|
||||||
* @param mediaDuration The duration to scale.
|
* @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}.
|
* @return The scaled duration, in the same units as {@code mediaDuration}.
|
||||||
*/
|
*/
|
||||||
@UnstableApi
|
@UnstableApi
|
||||||
|
@ -56,6 +56,7 @@ public final class DataSourceUtil {
|
|||||||
* array containing the read data.
|
* array containing the read data.
|
||||||
*
|
*
|
||||||
* @param dataSource The source from which to read.
|
* @param dataSource The source from which to read.
|
||||||
|
* @param length The number of bytes to read.
|
||||||
* @return The read data.
|
* @return The read data.
|
||||||
* @throws IOException If an error occurs reading from the source.
|
* @throws IOException If an error occurs reading from the source.
|
||||||
* @throws IllegalStateException If the end of the source was reached before {@code length} bytes
|
* @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.
|
* Constructs a new instance, optionally configured to follow cross-protocol redirects.
|
||||||
*
|
*
|
||||||
* @param context A context.
|
* @param context A context.
|
||||||
|
* @param allowCrossProtocolRedirects Whether to allow cross-protocol redirects.
|
||||||
*/
|
*/
|
||||||
@UnstableApi
|
@UnstableApi
|
||||||
public DefaultDataSource(Context context, boolean allowCrossProtocolRedirects) {
|
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.
|
* 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}.
|
* @param color An RGBA color created by {@link Color}.
|
||||||
*/
|
*/
|
||||||
public static Bitmap createArgb8888BitmapWithSolidColor(int width, int height, int 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}.
|
* Creates an instance of type {@link #TYPE_RENDERER}.
|
||||||
*
|
*
|
||||||
* @param cause The cause of the failure.
|
* @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 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,
|
* @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}.
|
* or null if the renderer wasn't using a {@link Format}.
|
||||||
|
@ -100,6 +100,7 @@ public final class OfflineLicenseHelper {
|
|||||||
* their own license URL.
|
* their own license URL.
|
||||||
* @param forceDefaultLicenseUrl Whether to use {@code defaultLicenseUrl} for key requests that
|
* @param forceDefaultLicenseUrl Whether to use {@code defaultLicenseUrl} for key requests that
|
||||||
* include their own license URL.
|
* 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
|
* @param optionalKeyRequestParameters An optional map of parameters to pass as the last argument
|
||||||
* to {@link MediaDrm#getKeyRequest}. May be null.
|
* to {@link MediaDrm#getKeyRequest}. May be null.
|
||||||
* @param eventDispatcher A {@link DrmSessionEventListener.EventDispatcher} used to distribute
|
* @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 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 mediaCodecSelector A decoder selector.
|
||||||
* @param enableDecoderFallback Whether to enable fallback to lower-priority decoders if decoder
|
* @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
|
* 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.
|
* Loads and parses a manifest.
|
||||||
*
|
*
|
||||||
|
* @param dataSource The source to use when loading the manifest.
|
||||||
* @param dataSpec The manifest {@link DataSpec}.
|
* @param dataSpec The manifest {@link DataSpec}.
|
||||||
* @param removing Whether the manifest is being loaded as part of the download being removed.
|
* @param removing Whether the manifest is being loaded as part of the download being removed.
|
||||||
* @return The loaded manifest.
|
* @return The loaded manifest.
|
||||||
|
@ -2446,6 +2446,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||||||
* renderer, track group and track (in that order).
|
* renderer, track group and track (in that order).
|
||||||
* @param rendererMixedMimeTypeAdaptationSupports The {@link AdaptiveSupport} for mixed MIME type
|
* @param rendererMixedMimeTypeAdaptationSupports The {@link AdaptiveSupport} for mixed MIME type
|
||||||
* adaptation for the renderer.
|
* 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
|
* @return The {@link ExoTrackSelection.Definition}s for the renderers. A null entry indicates no
|
||||||
* selection was made.
|
* selection was made.
|
||||||
* @throws ExoPlaybackException If an error occurs while selecting the tracks.
|
* @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 rendererIndex The renderer index.
|
||||||
* @param groupIndex The index of the track group.
|
* @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}.
|
* @return The {@link AdaptiveSupport}.
|
||||||
*/
|
*/
|
||||||
public @AdaptiveSupport int getAdaptiveSupport(
|
public @AdaptiveSupport int getAdaptiveSupport(
|
||||||
|
@ -68,12 +68,15 @@ public final class RandomTrackSelection extends BaseTrackSelection {
|
|||||||
private int selectedIndex;
|
private int selectedIndex;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Creates a new instance.
|
||||||
|
*
|
||||||
* @param group The {@link TrackGroup}. Must not be null.
|
* @param group The {@link TrackGroup}. Must not be null.
|
||||||
* @param tracks The indices of the selected tracks within the {@link TrackGroup}. Must not be
|
* @param tracks The indices of the selected tracks within the {@link TrackGroup}. Must not be
|
||||||
* null or empty. May be in any order.
|
* null or empty. May be in any order.
|
||||||
|
* @param type The {@link Type} of this track selection.
|
||||||
* @param random A source of random numbers.
|
* @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);
|
super(group, tracks, type);
|
||||||
this.random = random;
|
this.random = random;
|
||||||
selectedIndex = random.nextInt(length);
|
selectedIndex = random.nextInt(length);
|
||||||
|
@ -651,6 +651,7 @@ public abstract class DecoderVideoRenderer extends BaseRenderer {
|
|||||||
*
|
*
|
||||||
* <p>The default implementation does not allow decoder reuse.
|
* <p>The default implementation does not allow decoder reuse.
|
||||||
*
|
*
|
||||||
|
* @param decoderName The name of the decoder.
|
||||||
* @param oldFormat The previous format.
|
* @param oldFormat The previous format.
|
||||||
* @param newFormat The new format.
|
* @param newFormat The new format.
|
||||||
* @return The result of the evaluation.
|
* @return The result of the evaluation.
|
||||||
|
@ -50,6 +50,8 @@ public interface DashChunkSource extends ChunkSource {
|
|||||||
* if unknown.
|
* if unknown.
|
||||||
* @param enableEventMessageTrack Whether to output an event message track.
|
* @param enableEventMessageTrack Whether to output an event message track.
|
||||||
* @param closedCaptionFormats The {@link Format Formats} of closed caption tracks to be output.
|
* @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.
|
* @param transferListener The transfer listener which should be informed of any data transfers.
|
||||||
* May be null if no listener is available.
|
* May be null if no listener is available.
|
||||||
* @param playerId The {@link PlayerId} of the player using this chunk source.
|
* @param playerId The {@link PlayerId} of the player using this chunk source.
|
||||||
@ -75,8 +77,9 @@ public interface DashChunkSource extends ChunkSource {
|
|||||||
* Updates the manifest.
|
* Updates the manifest.
|
||||||
*
|
*
|
||||||
* @param newManifest The new 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.
|
* Updates the track selection.
|
||||||
|
@ -104,13 +104,17 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsPlaylistTracker.Pla
|
|||||||
* be null if no listener is available.
|
* be null if no listener is available.
|
||||||
* @param drmSessionManager The {@link DrmSessionManager} to acquire {@link DrmSession
|
* @param drmSessionManager The {@link DrmSessionManager} to acquire {@link DrmSession
|
||||||
* DrmSessions} with.
|
* DrmSessions} with.
|
||||||
|
* @param drmEventDispatcher A {@link DrmSessionEventListener.EventDispatcher} used to distribute
|
||||||
|
* DRM-related events.
|
||||||
* @param loadErrorHandlingPolicy A {@link LoadErrorHandlingPolicy}.
|
* @param loadErrorHandlingPolicy A {@link LoadErrorHandlingPolicy}.
|
||||||
* @param eventDispatcher A dispatcher to notify of events.
|
* @param eventDispatcher A dispatcher to notify of events.
|
||||||
* @param allocator An {@link Allocator} from which to obtain media buffer allocations.
|
* @param allocator An {@link Allocator} from which to obtain media buffer allocations.
|
||||||
* @param compositeSequenceableLoaderFactory A factory to create composite {@link
|
* @param compositeSequenceableLoaderFactory A factory to create composite {@link
|
||||||
* SequenceableLoader}s for when this media source loads data from multiple streams.
|
* SequenceableLoader}s for when this media source loads data from multiple streams.
|
||||||
* @param allowChunklessPreparation Whether chunkless preparation is allowed.
|
* @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 useSessionKeys Whether to use #EXT-X-SESSION-KEY tags.
|
||||||
|
* @param playerId The ID of the current player.
|
||||||
*/
|
*/
|
||||||
public HlsMediaPeriod(
|
public HlsMediaPeriod(
|
||||||
HlsExtractorFactory extractorFactory,
|
HlsExtractorFactory extractorFactory,
|
||||||
|
@ -462,16 +462,20 @@ public final class HlsMediaPlaylist extends HlsPlaylist {
|
|||||||
public final ServerControl serverControl;
|
public final ServerControl serverControl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Constructs an instance.
|
||||||
|
*
|
||||||
* @param playlistType See {@link #playlistType}.
|
* @param playlistType See {@link #playlistType}.
|
||||||
* @param baseUri See {@link #baseUri}.
|
* @param baseUri See {@link #baseUri}.
|
||||||
* @param tags See {@link #tags}.
|
* @param tags See {@link #tags}.
|
||||||
* @param startOffsetUs See {@link #startOffsetUs}.
|
* @param startOffsetUs See {@link #startOffsetUs}.
|
||||||
|
* @param preciseStart See {@link #preciseStart}.
|
||||||
* @param startTimeUs See {@link #startTimeUs}.
|
* @param startTimeUs See {@link #startTimeUs}.
|
||||||
* @param hasDiscontinuitySequence See {@link #hasDiscontinuitySequence}.
|
* @param hasDiscontinuitySequence See {@link #hasDiscontinuitySequence}.
|
||||||
* @param discontinuitySequence See {@link #discontinuitySequence}.
|
* @param discontinuitySequence See {@link #discontinuitySequence}.
|
||||||
* @param mediaSequence See {@link #mediaSequence}.
|
* @param mediaSequence See {@link #mediaSequence}.
|
||||||
* @param version See {@link #version}.
|
* @param version See {@link #version}.
|
||||||
* @param targetDurationUs See {@link #targetDurationUs}.
|
* @param targetDurationUs See {@link #targetDurationUs}.
|
||||||
|
* @param partTargetDurationUs See {@link #partTargetDurationUs}.
|
||||||
* @param hasIndependentSegments See {@link #hasIndependentSegments}.
|
* @param hasIndependentSegments See {@link #hasIndependentSegments}.
|
||||||
* @param hasEndTag See {@link #hasEndTag}.
|
* @param hasEndTag See {@link #hasEndTag}.
|
||||||
* @param hasProgramDateTime See {@link #hasProgramDateTime}.
|
* @param hasProgramDateTime See {@link #hasProgramDateTime}.
|
||||||
|
@ -132,6 +132,7 @@ public final class FlacFrameReader {
|
|||||||
* there is no guarantee on the peek position.
|
* there is no guarantee on the peek position.
|
||||||
*
|
*
|
||||||
* @param input Input stream to get the sample number from (starting from the read 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.
|
* @return The frame first sample number.
|
||||||
* @throws ParserException If an error occurs parsing the sample number.
|
* @throws ParserException If an error occurs parsing the sample number.
|
||||||
* @throws IOException If peeking from the input fails.
|
* @throws IOException If peeking from the input fails.
|
||||||
|
@ -152,12 +152,13 @@ public final class WebvttCssStyle {
|
|||||||
* <li>Universal selector matching scores 1.
|
* <li>Universal selector matching scores 1.
|
||||||
* </ul>
|
* </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 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 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 classes An array containing the classes the tag belongs to. Must not be null.
|
||||||
* @param voice Annotated voice if present, {@code null} otherwise.
|
* @param voice Annotated voice if present, {@code null} otherwise.
|
||||||
* @return The score of the match, zero if there is no match.
|
* @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(
|
public int getSpecificityScore(
|
||||||
@Nullable String id, @Nullable String tag, Set<String> classes, @Nullable String voice) {
|
@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.
|
* 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
|
* <p>Interoperability: When connected to {@link
|
||||||
* android.support.v4.media.session.MediaSessionCompat}, {@link SessionResult#resultCode} will
|
* android.support.v4.media.session.MediaSessionCompat}, {@link SessionResult#resultCode} will
|
||||||
* return the custom result code from the {@code android.os.ResultReceiver#onReceiveResult(int,
|
* 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}.
|
* 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 command The custom command.
|
||||||
* @param args The additional arguments. May be empty.
|
* @param args The additional arguments. May be empty.
|
||||||
* @return A {@link ListenableFuture} of {@link SessionResult} representing the pending
|
* @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.
|
* <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 command A custom command.
|
||||||
* @param args A {@link Bundle} for additional arguments. May be empty.
|
* @param args A {@link Bundle} for additional arguments. May be empty.
|
||||||
* @return A {@link ListenableFuture} of {@link SessionResult} from the controller.
|
* @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
|
* Called when a controller sent a custom command through {@link
|
||||||
* MediaController#sendCustomCommand(SessionCommand, Bundle)}.
|
* 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
|
* <p>Interoperability: This will be also called by {@link
|
||||||
* android.support.v4.media.MediaBrowserCompat#sendCustomAction}. If so, {@code extras} from
|
* android.support.v4.media.MediaBrowserCompat#sendCustomAction}. If so, {@code extras} from
|
||||||
* {@link android.support.v4.media.MediaBrowserCompat#sendCustomAction} will be considered as
|
* {@link android.support.v4.media.MediaBrowserCompat#sendCustomAction} will be considered as
|
||||||
|
@ -1098,7 +1098,10 @@ public abstract class Action {
|
|||||||
private final Runnable runnable;
|
private final Runnable runnable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Constructs an instance.
|
||||||
|
*
|
||||||
* @param tag A tag to use for logging.
|
* @param tag A tag to use for logging.
|
||||||
|
* @param runnable The runnable to run.
|
||||||
*/
|
*/
|
||||||
public ExecuteRunnable(@Size(max = 23) String tag, Runnable runnable) {
|
public ExecuteRunnable(@Size(max = 23) String tag, Runnable runnable) {
|
||||||
super(tag, "ExecuteRunnable");
|
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
|
* @param mediaItemIndex The media item index to start playback from or {@link C#INDEX_UNSET} if
|
||||||
* the playback position should not be reset.
|
* 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
|
* 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
|
* mediaItemIndex} is set to {@link C#INDEX_UNSET} the position is not reset at all and this
|
||||||
* parameter is ignored.
|
* parameter is ignored.
|
||||||
|
* @param sources The media sources to be set on the player.
|
||||||
* @return The builder, for convenience.
|
* @return The builder, for convenience.
|
||||||
*/
|
*/
|
||||||
@CanIgnoreReturnValue
|
@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 resetPosition Whether the playback position should be reset.
|
||||||
|
* @param sources The media sources to be set on the player.
|
||||||
* @return The builder, for convenience.
|
* @return The builder, for convenience.
|
||||||
*/
|
*/
|
||||||
@CanIgnoreReturnValue
|
@CanIgnoreReturnValue
|
||||||
@ -490,6 +492,7 @@ public final class ActionSchedule {
|
|||||||
/**
|
/**
|
||||||
* Schedules sending a {@link PlayerMessage}.
|
* 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,
|
* @param positionMs The position in the current media item at which the message should be sent,
|
||||||
* in milliseconds.
|
* in milliseconds.
|
||||||
* @return The builder, for convenience.
|
* @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.
|
* <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 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.
|
* @param simulationConfig Details on the environment to simulate and behaviours to assert.
|
||||||
* @throws IOException If reading from the input fails.
|
* @throws IOException If reading from the input fails.
|
||||||
|
@ -375,6 +375,7 @@ public class FakeMediaPeriod implements MediaPeriod {
|
|||||||
/**
|
/**
|
||||||
* Creates a new {@link FakeSampleStream}.
|
* 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
|
* @param mediaSourceEventDispatcher A {@link MediaSourceEventListener.EventDispatcher} to notify
|
||||||
* of media events.
|
* of media events.
|
||||||
* @param drmSessionManager A {@link DrmSessionManager} for DRM interactions.
|
* @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 allocator An {@link Allocator} from which to obtain media buffer allocations.
|
||||||
* @param mediaSourceEventDispatcher An {@link MediaSourceEventListener.EventDispatcher} to
|
* @param mediaSourceEventDispatcher An {@link MediaSourceEventListener.EventDispatcher} to
|
||||||
* dispatch media source events.
|
* dispatch media source events.
|
||||||
|
* @param drmSessionManager A {@link DrmSessionManager} to allow DRM interactions.
|
||||||
* @param drmEventDispatcher An {@link MediaSourceEventListener.EventDispatcher} to dispatch DRM
|
* @param drmEventDispatcher An {@link MediaSourceEventListener.EventDispatcher} to dispatch DRM
|
||||||
* events.
|
* events.
|
||||||
* @param transferListener The transfer listener which should be informed of any data transfers.
|
* @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.
|
* Creates a fake timeline with the given window definitions.
|
||||||
*
|
*
|
||||||
|
* @param manifests The manifests of the windows.
|
||||||
* @param windowDefinitions A list of {@link TimelineWindowDefinition}s.
|
* @param windowDefinitions A list of {@link TimelineWindowDefinition}s.
|
||||||
*/
|
*/
|
||||||
public FakeTimeline(Object[] manifests, TimelineWindowDefinition... windowDefinitions) {
|
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
|
* Creates a fake timeline with the given window definitions and {@link
|
||||||
* androidx.media3.exoplayer.source.ShuffleOrder}.
|
* 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.
|
* @param windowDefinitions A list of {@link TimelineWindowDefinition}s.
|
||||||
*/
|
*/
|
||||||
public FakeTimeline(
|
public FakeTimeline(
|
||||||
|
@ -152,6 +152,7 @@ public class MediaSourceTestRunner {
|
|||||||
* playback thread, asserting that a non-null {@link MediaPeriod} is returned.
|
* playback thread, asserting that a non-null {@link MediaPeriod} is returned.
|
||||||
*
|
*
|
||||||
* @param periodId The id of the period to create.
|
* @param periodId The id of the period to create.
|
||||||
|
* @param startPositionUs The expected start position, in microseconds.
|
||||||
* @return The created {@link MediaPeriod}.
|
* @return The created {@link MediaPeriod}.
|
||||||
*/
|
*/
|
||||||
public MediaPeriod createPeriod(final MediaPeriodId periodId, long startPositionUs) {
|
public MediaPeriod createPeriod(final MediaPeriodId periodId, long startPositionUs) {
|
||||||
|
@ -50,6 +50,7 @@ public final class TimelineAsserts {
|
|||||||
/**
|
/**
|
||||||
* Asserts that window tags are set correctly.
|
* 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
|
* @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.
|
* {@code null} can be passed to skip this window.
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user