Add Player.MetadataComponent for completeness

PiperOrigin-RevId: 225795581
This commit is contained in:
olly 2018-12-17 10:48:01 +00:00 committed by Oliver Woodman
parent f41dadca58
commit abdb58485f
5 changed files with 64 additions and 11 deletions

View File

@ -283,20 +283,29 @@ public final class CastPlayer extends BasePlayer {
// Player implementation. // Player implementation.
@Override @Override
@Nullable
public AudioComponent getAudioComponent() { public AudioComponent getAudioComponent() {
return null; return null;
} }
@Override @Override
@Nullable
public VideoComponent getVideoComponent() { public VideoComponent getVideoComponent() {
return null; return null;
} }
@Override @Override
@Nullable
public TextComponent getTextComponent() { public TextComponent getTextComponent() {
return null; return null;
} }
@Override
@Nullable
public MetadataComponent getMetadataComponent() {
return null;
}
@Override @Override
public Looper getApplicationLooper() { public Looper getApplicationLooper() {
return Looper.getMainLooper(); return Looper.getMainLooper();

View File

@ -144,20 +144,29 @@ import java.util.concurrent.CopyOnWriteArraySet;
} }
@Override @Override
@Nullable
public AudioComponent getAudioComponent() { public AudioComponent getAudioComponent() {
return null; return null;
} }
@Override @Override
@Nullable
public VideoComponent getVideoComponent() { public VideoComponent getVideoComponent() {
return null; return null;
} }
@Override @Override
@Nullable
public TextComponent getTextComponent() { public TextComponent getTextComponent() {
return null; return null;
} }
@Override
@Nullable
public MetadataComponent getMetadataComponent() {
return null;
}
@Override @Override
public Looper getPlaybackLooper() { public Looper getPlaybackLooper() {
return internalPlayer.getPlaybackLooper(); return internalPlayer.getPlaybackLooper();

View File

@ -26,6 +26,7 @@ import com.google.android.exoplayer2.C.VideoScalingMode;
import com.google.android.exoplayer2.audio.AudioAttributes; import com.google.android.exoplayer2.audio.AudioAttributes;
import com.google.android.exoplayer2.audio.AudioListener; import com.google.android.exoplayer2.audio.AudioListener;
import com.google.android.exoplayer2.audio.AuxEffectInfo; import com.google.android.exoplayer2.audio.AuxEffectInfo;
import com.google.android.exoplayer2.metadata.MetadataOutput;
import com.google.android.exoplayer2.source.TrackGroupArray; import com.google.android.exoplayer2.source.TrackGroupArray;
import com.google.android.exoplayer2.text.TextOutput; import com.google.android.exoplayer2.text.TextOutput;
import com.google.android.exoplayer2.trackselection.TrackSelectionArray; import com.google.android.exoplayer2.trackselection.TrackSelectionArray;
@ -299,6 +300,24 @@ public interface Player {
void removeTextOutput(TextOutput listener); void removeTextOutput(TextOutput listener);
} }
/** The metadata component of a {@link Player}. */
interface MetadataComponent {
/**
* Adds a {@link MetadataOutput} to receive metadata.
*
* @param output The output to register.
*/
void addMetadataOutput(MetadataOutput output);
/**
* Removes a {@link MetadataOutput}.
*
* @param output The output to remove.
*/
void removeMetadataOutput(MetadataOutput output);
}
/** /**
* Listener of changes in player state. All methods have no-op default implementations to allow * Listener of changes in player state. All methods have no-op default implementations to allow
* selective overrides. * selective overrides.
@ -533,6 +552,12 @@ public interface Player {
@Nullable @Nullable
TextComponent getTextComponent(); TextComponent getTextComponent();
/**
* Returns the component of this player for metadata output, or null if metadata is not supported.
*/
@Nullable
MetadataComponent getMetadataComponent();
/** /**
* Returns the {@link Looper} associated with the application thread that's used to access the * Returns the {@link Looper} associated with the application thread that's used to access the
* player and on which player events are received. * player and on which player events are received.

View File

@ -65,7 +65,11 @@ import java.util.concurrent.CopyOnWriteArraySet;
*/ */
@TargetApi(16) @TargetApi(16)
public class SimpleExoPlayer extends BasePlayer public class SimpleExoPlayer extends BasePlayer
implements ExoPlayer, Player.AudioComponent, Player.VideoComponent, Player.TextComponent { implements ExoPlayer,
Player.AudioComponent,
Player.VideoComponent,
Player.TextComponent,
Player.MetadataComponent {
/** @deprecated Use {@link com.google.android.exoplayer2.video.VideoListener}. */ /** @deprecated Use {@link com.google.android.exoplayer2.video.VideoListener}. */
@Deprecated @Deprecated
@ -243,20 +247,29 @@ public class SimpleExoPlayer extends BasePlayer
} }
@Override @Override
@Nullable
public AudioComponent getAudioComponent() { public AudioComponent getAudioComponent() {
return this; return this;
} }
@Override @Override
@Nullable
public VideoComponent getVideoComponent() { public VideoComponent getVideoComponent() {
return this; return this;
} }
@Override @Override
@Nullable
public TextComponent getTextComponent() { public TextComponent getTextComponent() {
return this; return this;
} }
@Override
@Nullable
public MetadataComponent getMetadataComponent() {
return this;
}
/** /**
* Sets the video scaling mode. * Sets the video scaling mode.
* *
@ -713,20 +726,12 @@ public class SimpleExoPlayer extends BasePlayer
removeTextOutput(output); removeTextOutput(output);
} }
/** @Override
* Adds a {@link MetadataOutput} to receive metadata.
*
* @param listener The output to register.
*/
public void addMetadataOutput(MetadataOutput listener) { public void addMetadataOutput(MetadataOutput listener) {
metadataOutputs.add(listener); metadataOutputs.add(listener);
} }
/** @Override
* Removes a {@link MetadataOutput}.
*
* @param listener The output to remove.
*/
public void removeMetadataOutput(MetadataOutput listener) { public void removeMetadataOutput(MetadataOutput listener) {
metadataOutputs.remove(listener); metadataOutputs.remove(listener);
} }

View File

@ -49,6 +49,11 @@ public abstract class StubExoPlayer extends BasePlayer implements ExoPlayer {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@Override
public MetadataComponent getMetadataComponent() {
throw new UnsupportedOperationException();
}
@Override @Override
public Looper getPlaybackLooper() { public Looper getPlaybackLooper() {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();