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 {
// Player implementation.
@Override
@Nullable
public AudioComponent getAudioComponent() {
return null;
}
@Override
@Nullable
public VideoComponent getVideoComponent() {
return null;
}
@Override
@Nullable
public TextComponent getTextComponent() {
return null;
}
@Override
@Nullable
public MetadataComponent getMetadataComponent() {
return null;
}
@Override
public Looper getApplicationLooper() {
return Looper.getMainLooper();
}
......
......@@ -145,21 +145,30 @@ import java.util.concurrent.CopyOnWriteArrayList;
}
@Override
@Nullable
public AudioComponent getAudioComponent() {
return null;
}
@Override
@Nullable
public VideoComponent getVideoComponent() {
return null;
}
@Override
@Nullable
public TextComponent getTextComponent() {
return null;
}
@Override
@Nullable
public MetadataComponent getMetadataComponent() {
return null;
}
@Override
public Looper getPlaybackLooper() {
return internalPlayer.getPlaybackLooper();
}
......
......@@ -26,6 +26,7 @@ import com.google.android.exoplayer2.C.VideoScalingMode;
import com.google.android.exoplayer2.audio.AudioAttributes;
import com.google.android.exoplayer2.audio.AudioListener;
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.text.TextOutput;
import com.google.android.exoplayer2.trackselection.TrackSelectionArray;
......@@ -299,6 +300,24 @@ public interface Player {
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
* selective overrides.
......@@ -534,6 +553,12 @@ public interface Player {
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
* player and on which player events are received.
*/
......
......@@ -65,7 +65,11 @@ import java.util.concurrent.CopyOnWriteArraySet;
*/
@TargetApi(16)
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
......@@ -243,20 +247,29 @@ public class SimpleExoPlayer extends BasePlayer
}
@Override
@Nullable
public AudioComponent getAudioComponent() {
return this;
}
@Override
@Nullable
public VideoComponent getVideoComponent() {
return this;
}
@Override
@Nullable
public TextComponent getTextComponent() {
return this;
}
@Override
@Nullable
public MetadataComponent getMetadataComponent() {
return this;
}
/**
* Sets the video scaling mode.
*
......@@ -713,20 +726,12 @@ public class SimpleExoPlayer extends BasePlayer
removeTextOutput(output);
}
/**
* Adds a {@link MetadataOutput} to receive metadata.
*
* @param listener The output to register.
*/
@Override
public void addMetadataOutput(MetadataOutput listener) {
metadataOutputs.add(listener);
}
/**
* Removes a {@link MetadataOutput}.
*
* @param listener The output to remove.
*/
@Override
public void removeMetadataOutput(MetadataOutput listener) {
metadataOutputs.remove(listener);
}
......
......@@ -50,6 +50,11 @@ public abstract class StubExoPlayer extends BasePlayer implements ExoPlayer {
}
@Override
public MetadataComponent getMetadataComponent() {
throw new UnsupportedOperationException();
}
@Override
public Looper getPlaybackLooper() {
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