From 14167948ed25b4af6a88a8f79c3615feb85cbd74 Mon Sep 17 00:00:00 2001 From: Santiago Seifert Date: Tue, 10 Dec 2019 17:47:39 +0000 Subject: [PATCH] Make MediaParser.SeekMap a final class This will allow future extensiblity. Bug: 132153067 Bug: 134057371 Test: Pending. Change-Id: Ib86f80aa84db7835add8eb7148873ad7d54b9ad9 --- api/current.txt | 2 +- .../apex/java/android/media/MediaParser.java | 51 +++++++------------ 2 files changed, 20 insertions(+), 33 deletions(-) diff --git a/api/current.txt b/api/current.txt index 472c516e2d685..98a4299951882 100644 --- a/api/current.txt +++ b/api/current.txt @@ -25646,7 +25646,7 @@ package android.media { method public void onTracksFound(int); } - public static interface MediaParser.SeekMap { + public static final class MediaParser.SeekMap { method public long getDurationUs(); method @NonNull public android.util.Pair getSeekPoints(long); method public boolean isSeekable(); diff --git a/media/apex/java/android/media/MediaParser.java b/media/apex/java/android/media/MediaParser.java index 8824269ea0c05..b83f445409552 100644 --- a/media/apex/java/android/media/MediaParser.java +++ b/media/apex/java/android/media/MediaParser.java @@ -156,19 +156,29 @@ public final class MediaParser { *

A {@link SeekPoint} is a position in the stream from which a player may successfully start * playing media samples. */ - public interface SeekMap { + public static final class SeekMap { /** Returned by {@link #getDurationUs()} when the duration is unknown. */ - int UNKNOWN_DURATION = Integer.MIN_VALUE; + public static final int UNKNOWN_DURATION = Integer.MIN_VALUE; + + private final com.google.android.exoplayer2.extractor.SeekMap mExoPlayerSeekMap; + + private SeekMap(com.google.android.exoplayer2.extractor.SeekMap exoplayerSeekMap) { + mExoPlayerSeekMap = exoplayerSeekMap; + } /** Returns whether seeking is supported. */ - boolean isSeekable(); + public boolean isSeekable() { + return mExoPlayerSeekMap.isSeekable(); + } /** * Returns the duration of the stream in microseconds or {@link #UNKNOWN_DURATION} if the * duration is unknown. */ - long getDurationUs(); + public long getDurationUs() { + return mExoPlayerSeekMap.getDurationUs(); + } /** * Obtains {@link SeekPoint SeekPoints} for the specified seek time in microseconds. @@ -184,7 +194,10 @@ public final class MediaParser { * @return The corresponding {@link SeekPoint SeekPoints}. */ @NonNull - Pair getSeekPoints(long timeUs); + public Pair getSeekPoints(long timeUs) { + SeekPoints seekPoints = mExoPlayerSeekMap.getSeekPoints(timeUs); + return new Pair<>(toSeekPoint(seekPoints.first), toSeekPoint(seekPoints.second)); + } } /** Defines a seek point in a media stream. */ @@ -647,7 +660,7 @@ public final class MediaParser { @Override public void seekMap(com.google.android.exoplayer2.extractor.SeekMap exoplayerSeekMap) { - mOutputConsumer.onSeekMap(new ExoToMediaParserSeekMapAdapter(exoplayerSeekMap)); + mOutputConsumer.onSeekMap(new SeekMap(exoplayerSeekMap)); } } @@ -764,32 +777,6 @@ public final class MediaParser { Extractor createInstance(); } - private static class ExoToMediaParserSeekMapAdapter implements SeekMap { - - private final com.google.android.exoplayer2.extractor.SeekMap mExoPlayerSeekMap; - - private ExoToMediaParserSeekMapAdapter( - com.google.android.exoplayer2.extractor.SeekMap exoplayerSeekMap) { - mExoPlayerSeekMap = exoplayerSeekMap; - } - - @Override - public boolean isSeekable() { - return mExoPlayerSeekMap.isSeekable(); - } - - @Override - public long getDurationUs() { - return mExoPlayerSeekMap.getDurationUs(); - } - - @Override - public Pair getSeekPoints(long timeUs) { - SeekPoints seekPoints = mExoPlayerSeekMap.getSeekPoints(timeUs); - return new Pair<>(toSeekPoint(seekPoints.first), toSeekPoint(seekPoints.second)); - } - } - // Private static methods. private static MediaFormat toMediaFormat(Format format) {