Commit d5e53d11 by olly Committed by Oliver Woodman

Add Player.MetadataComponent for completeness

PiperOrigin-RevId: 225795581
parent 9198e4cf
...@@ -266,21 +266,30 @@ public final class CastPlayer extends BasePlayer { ...@@ -266,21 +266,30 @@ 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 @Override
@Nullable
public MetadataComponent getMetadataComponent() {
return null;
}
@Override
public Looper getApplicationLooper() { public Looper getApplicationLooper() {
return Looper.getMainLooper(); return Looper.getMainLooper();
} }
......
...@@ -145,21 +145,30 @@ import java.util.concurrent.CopyOnWriteArrayList; ...@@ -145,21 +145,30 @@ import java.util.concurrent.CopyOnWriteArrayList;
} }
@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 @Override
@Nullable
public MetadataComponent getMetadataComponent() {
return null;
}
@Override
public Looper getPlaybackLooper() { public Looper getPlaybackLooper() {
return internalPlayer.getPlaybackLooper(); return internalPlayer.getPlaybackLooper();
} }
......
...@@ -26,6 +26,7 @@ import com.google.android.exoplayer2.C.VideoScalingMode; ...@@ -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 { ...@@ -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.
...@@ -534,6 +553,12 @@ public interface Player { ...@@ -534,6 +553,12 @@ public interface Player {
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.
*/ */
......
...@@ -65,7 +65,11 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -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 ...@@ -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 ...@@ -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);
} }
......
...@@ -50,6 +50,11 @@ public abstract class StubExoPlayer extends BasePlayer implements ExoPlayer { ...@@ -50,6 +50,11 @@ public abstract class StubExoPlayer extends BasePlayer implements ExoPlayer {
} }
@Override @Override
public MetadataComponent getMetadataComponent() {
throw new UnsupportedOperationException();
}
@Override
public Looper getPlaybackLooper() { public Looper getPlaybackLooper() {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment