public abstract class NativeMediaPlayer extends java.lang.Object implements MediaPlayer, MarkerStateListener
MediaPlayer
.Modifier and Type | Class and Description |
---|---|
private class |
NativeMediaPlayer.EventQueueThread
Thread for media player event processing.
|
private static class |
NativeMediaPlayer.FrameSizeChangedEvent
Event to be posted to any registered
VideoTrackSizeListener s. |
static class |
NativeMediaPlayer.MediaErrorEvent
Event to be posted to any registered (@link MediaErrorListener)s
|
private static class |
NativeMediaPlayer.PlayerTimeEvent |
private static class |
NativeMediaPlayer.TrackEvent
Event to be posted to any registered
PlayerStateListener s. |
private class |
NativeMediaPlayer.VideoRenderer
Helper class which managers
VideoRendererListener s. |
private static class |
NativeMediaPlayer.WarningEvent
Event to be posted to any registered
MediaErrorListener s. |
Modifier and Type | Field and Description |
---|---|
private java.util.List<java.lang.ref.WeakReference<AudioSpectrumListener>> |
audioSpectrumListeners |
private java.util.List<java.lang.ref.WeakReference<BufferListener>> |
bufferListeners |
private java.util.List<BufferProgressEvent> |
cachedBufferEvents |
private java.util.List<NativeMediaPlayer.MediaErrorEvent> |
cachedErrorEvents |
private java.util.List<PlayerStateEvent> |
cachedStateEvents |
private java.util.List<NativeMediaPlayer.PlayerTimeEvent> |
cachedTimeEvents |
private boolean |
checkSeek |
private double |
decodedFrameRate |
private java.util.concurrent.locks.Lock |
disposeLock |
private double |
encodedFrameRate |
private java.util.List<java.lang.ref.WeakReference<MediaErrorListener>> |
errorListeners |
private NativeMediaPlayer.EventQueueThread |
eventLoop |
static int |
eventPlayerError |
static int |
eventPlayerFinished |
static int |
eventPlayerPaused |
static int |
eventPlayerPlaying |
static int |
eventPlayerReady |
static int |
eventPlayerStalled |
static int |
eventPlayerStopped |
static int |
eventPlayerUnknown |
private double |
firedMarkerTime |
private NewFrameEvent |
firstFrameEvent |
private java.lang.Object |
firstFrameLock |
private double |
firstFrameTime |
private int |
frameHeight |
private int |
frameWidth |
private boolean |
isDisposed |
private boolean |
isFirstFrame |
private java.util.concurrent.atomic.AtomicBoolean |
isMediaPulseEnabled |
private boolean |
isStartTimeUpdated |
private boolean |
isStopTimeSet |
private java.util.List<java.lang.ref.WeakReference<MarkerListener>> |
markerListeners |
private java.util.concurrent.locks.Lock |
markerLock |
private double |
meanFrameDuration |
private NativeMedia |
media
The
Media corresponding to the media source. |
private java.util.concurrent.locks.Lock |
mediaPulseLock |
private java.util.Timer |
mediaPulseTimer |
private static int |
NOMINAL_VIDEO_FPS |
private long |
numFramesSincePlaying |
private java.lang.Runnable |
onDispose |
static long |
ONE_SECOND |
private PlayerStateEvent.PlayerState |
playerState |
private java.util.List<java.lang.ref.WeakReference<PlayerStateListener>> |
playerStateListeners |
private java.util.List<java.lang.ref.WeakReference<PlayerTimeListener>> |
playerTimeListeners |
private double |
previousFrameTime |
private double |
previousTime |
private boolean |
recomputeFrameRate |
private double |
startTime |
private double |
stopTime |
private double |
timeAfterSeek |
private double |
timeBeforeSeek |
private java.util.List<java.lang.ref.WeakReference<VideoFrameRateListener>> |
videoFrameRateListeners |
private VideoRenderControl |
videoRenderControl |
private java.util.List<java.lang.ref.WeakReference<VideoTrackSizeListener>> |
videoTrackSizeListeners |
private java.util.List<java.lang.ref.WeakReference<VideoRendererListener>> |
videoUpdateListeners |
Modifier | Constructor and Description |
---|---|
protected |
NativeMediaPlayer(NativeMedia clip)
Construct a NativeMediaPlayer for the referenced clip.
|
Modifier and Type | Method and Description |
---|---|
void |
addAudioSpectrumListener(AudioSpectrumListener listener)
Adds a listener for audio spectrum events.
|
void |
addBufferListener(BufferListener listener)
Adds a listener for all buffer events.
|
void |
addMarkerListener(MarkerListener listener)
Adds a listener for marker events.
|
void |
addMediaErrorListener(MediaErrorListener listener)
Adds a listener for warnings which occur within the lifespan of the player.
|
void |
addMediaPlayerListener(PlayerStateListener listener)
Adds a listener for media state.
|
void |
addMediaTimeListener(PlayerTimeListener listener)
Adds a listener for player time events.
|
void |
addVideoTrackSizeListener(VideoTrackSizeListener listener)
Adds a listener for video track frame dimensions.
|
private void |
createMediaPulse() |
protected AudioEqualizer |
createNativeAudioEqualizer(long nativeRef) |
protected AudioSpectrum |
createNativeAudioSpectrum(long nativeRef) |
private void |
destroyMediaPulse() |
void |
dispose()
Release any resources held by this player.
|
(package private) boolean |
doMediaPulseTask() |
abstract AudioSpectrum |
getAudioSpectrum()
Gets the audio spectrum controller for the player.
|
long |
getAudioSyncDelay()
Retrieve the audio rendering delay.
|
float |
getBalance()
Gets the current balance.
|
double |
getDuration()
Gets the duration in seconds.
|
abstract AudioEqualizer |
getEqualizer()
Gets the master audio equalizer for the player.
|
Media |
getMedia()
Gets a Media object.
|
boolean |
getMute()
Gets the muted state.
|
double |
getPresentationTime()
Gets the current presentation time.
|
float |
getRate()
Get the rate of playback.
|
double |
getStartTime()
Gets the time within the duration of the media to start playing.
|
PlayerStateEvent.PlayerState |
getState()
Retrieves the current
state of the player. |
double |
getStopTime()
Gets the time within the duration of the media to stop playing.
|
VideoRenderControl |
getVideoRenderControl()
Returns the video rendering support interface.
|
float |
getVolume()
Gets the current volume.
|
protected void |
init()
Initialization method which must be called after construction to
initialize the internal state of the player.
|
void |
markerStateChanged(boolean hasMarkers) |
private void |
onNativeInit()
Internal function to get called when the native player is ready.
|
void |
pause()
Pauses the media playing.
|
void |
play()
Begins playing of the media.
|
protected abstract void |
playerDispose() |
protected abstract void |
playerFinish() |
protected abstract long |
playerGetAudioSyncDelay() |
protected abstract float |
playerGetBalance() |
protected abstract double |
playerGetDuration() |
protected abstract boolean |
playerGetMute() |
protected abstract double |
playerGetPresentationTime() |
protected abstract float |
playerGetRate() |
protected abstract float |
playerGetVolume() |
protected abstract void |
playerInit() |
protected abstract void |
playerPause() |
protected abstract void |
playerPlay() |
protected abstract void |
playerSeek(double streamTime) |
protected abstract void |
playerSetAudioSyncDelay(long delay) |
protected abstract void |
playerSetBalance(float balance) |
protected abstract void |
playerSetMute(boolean state) |
protected abstract void |
playerSetRate(float rate) |
protected abstract void |
playerSetVolume(float volume) |
protected abstract void |
playerStop() |
void |
removeAudioSpectrumListener(AudioSpectrumListener listener)
Removes a listener for audio spectrum events.
|
void |
removeBufferListener(BufferListener listener)
Removes a listener for buffer events.
|
void |
removeMarkerListener(MarkerListener listener)
Removes a listener for marker events.
|
void |
removeMediaErrorListener(MediaErrorListener listener)
Removes a listener for warnings.
|
void |
removeMediaPlayerListener(PlayerStateListener listener)
Removes a listener for media state.
|
void |
removeMediaTimeListener(PlayerTimeListener listener)
Removes a listener for player time events.
|
void |
removeVideoTrackSizeListener(VideoTrackSizeListener listener)
Removes a listener for video track frame dimensions.
|
void |
seek(double streamTime)
Seeks playback to the specified time.
|
protected void |
sendAudioSpectrumEvent(double timestamp,
double duration) |
protected void |
sendAudioTrack(boolean enabled,
long trackID,
java.lang.String name,
int encoding,
java.lang.String language,
int numChannels,
int channelMask,
float sampleRate) |
protected void |
sendBufferProgressEvent(double clipDuration,
long bufferStart,
long bufferStop,
long bufferPosition) |
protected void |
sendDurationUpdateEvent(double duration) |
protected void |
sendFrameSizeChangedEvent(int width,
int height) |
protected void |
sendMarkerEvent(java.lang.String name,
double time) |
protected void |
sendNewFrameEvent(long nativeRef) |
protected void |
sendPlayerEvent(PlayerEvent evt) |
protected void |
sendPlayerHaltEvent(java.lang.String message,
double time) |
protected void |
sendPlayerMediaErrorEvent(int errorCode) |
protected void |
sendPlayerStateEvent(int eventID,
double time) |
protected void |
sendSubtitleTrack(boolean enabled,
long trackID,
java.lang.String name,
int encoding,
java.lang.String language) |
protected void |
sendVideoTrack(boolean enabled,
long trackID,
java.lang.String name,
int encoding,
int width,
int height,
float frameRate,
boolean hasAlphaChannel) |
protected void |
sendWarning(int warningCode,
java.lang.String warningMessage) |
void |
setAudioSyncDelay(long delay)
Set the amount of time to delay the audio.
|
void |
setBalance(float bal)
Sets the balance.
|
void |
setMute(boolean enable)
Enables/disable mute.
|
(package private) void |
setOnDispose(java.lang.Runnable onDispose)
Set a callback to invoke when the player is disposed.
|
void |
setRate(float rate)
Sets the rate of playback.
|
void |
setStartTime(double startTime)
Sets the start time within the media to play.
|
void |
setStopTime(double stopTime)
Sets the stop time within the media to stop playback.
|
void |
setVolume(float vol)
Sets the volume.
|
void |
stop()
Stops playing of the media and resets the play time to 0.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getMediaPlayerOverlay
@Native public static final int eventPlayerUnknown
@Native public static final int eventPlayerReady
@Native public static final int eventPlayerPlaying
@Native public static final int eventPlayerPaused
@Native public static final int eventPlayerStopped
@Native public static final int eventPlayerStalled
@Native public static final int eventPlayerFinished
@Native public static final int eventPlayerError
@Native private static final int NOMINAL_VIDEO_FPS
@Native public static final long ONE_SECOND
private NativeMedia media
Media
corresponding to the media source.private VideoRenderControl videoRenderControl
private final java.util.List<java.lang.ref.WeakReference<MediaErrorListener>> errorListeners
private final java.util.List<java.lang.ref.WeakReference<PlayerStateListener>> playerStateListeners
private final java.util.List<java.lang.ref.WeakReference<PlayerTimeListener>> playerTimeListeners
private final java.util.List<java.lang.ref.WeakReference<VideoTrackSizeListener>> videoTrackSizeListeners
private final java.util.List<java.lang.ref.WeakReference<VideoRendererListener>> videoUpdateListeners
private final java.util.List<java.lang.ref.WeakReference<VideoFrameRateListener>> videoFrameRateListeners
private final java.util.List<java.lang.ref.WeakReference<MarkerListener>> markerListeners
private final java.util.List<java.lang.ref.WeakReference<BufferListener>> bufferListeners
private final java.util.List<java.lang.ref.WeakReference<AudioSpectrumListener>> audioSpectrumListeners
private final java.util.List<PlayerStateEvent> cachedStateEvents
private final java.util.List<NativeMediaPlayer.PlayerTimeEvent> cachedTimeEvents
private final java.util.List<BufferProgressEvent> cachedBufferEvents
private final java.util.List<NativeMediaPlayer.MediaErrorEvent> cachedErrorEvents
private boolean isFirstFrame
private NewFrameEvent firstFrameEvent
private double firstFrameTime
private final java.lang.Object firstFrameLock
private NativeMediaPlayer.EventQueueThread eventLoop
private int frameWidth
private int frameHeight
private final java.util.concurrent.atomic.AtomicBoolean isMediaPulseEnabled
private final java.util.concurrent.locks.Lock mediaPulseLock
private java.util.Timer mediaPulseTimer
private final java.util.concurrent.locks.Lock markerLock
private boolean checkSeek
private double timeBeforeSeek
private double timeAfterSeek
private double previousTime
private double firedMarkerTime
private double startTime
private double stopTime
private boolean isStartTimeUpdated
private boolean isStopTimeSet
private double encodedFrameRate
private boolean recomputeFrameRate
private double previousFrameTime
private long numFramesSincePlaying
private double meanFrameDuration
private double decodedFrameRate
private PlayerStateEvent.PlayerState playerState
private final java.util.concurrent.locks.Lock disposeLock
private boolean isDisposed
private java.lang.Runnable onDispose
protected NativeMediaPlayer(NativeMedia clip)
clip
- Media objectjava.lang.IllegalArgumentException
- if
clip
is
null
.protected void init()
void setOnDispose(java.lang.Runnable onDispose)
onDispose
- object on which to invoke Runnable.run()
in
dispose()
.private void onNativeInit()
public void addMediaErrorListener(MediaErrorListener listener)
MediaPlayer
addMediaErrorListener
in interface MediaPlayer
listener
- The warning listener.public void removeMediaErrorListener(MediaErrorListener listener)
MediaPlayer
removeMediaErrorListener
in interface MediaPlayer
listener
- The warning listener.public void addMediaPlayerListener(PlayerStateListener listener)
MediaPlayer
addMediaPlayerListener
in interface MediaPlayer
public void removeMediaPlayerListener(PlayerStateListener listener)
MediaPlayer
removeMediaPlayerListener
in interface MediaPlayer
public void addMediaTimeListener(PlayerTimeListener listener)
MediaPlayer
addMediaTimeListener
in interface MediaPlayer
public void removeMediaTimeListener(PlayerTimeListener listener)
MediaPlayer
removeMediaTimeListener
in interface MediaPlayer
public void addVideoTrackSizeListener(VideoTrackSizeListener listener)
MediaPlayer
addVideoTrackSizeListener
in interface MediaPlayer
public void removeVideoTrackSizeListener(VideoTrackSizeListener listener)
MediaPlayer
removeVideoTrackSizeListener
in interface MediaPlayer
public void addMarkerListener(MarkerListener listener)
MediaPlayer
addMarkerListener
in interface MediaPlayer
public void removeMarkerListener(MarkerListener listener)
MediaPlayer
removeMarkerListener
in interface MediaPlayer
public void addBufferListener(BufferListener listener)
MediaPlayer
addBufferListener
in interface MediaPlayer
public void removeBufferListener(BufferListener listener)
MediaPlayer
removeBufferListener
in interface MediaPlayer
public void addAudioSpectrumListener(AudioSpectrumListener listener)
MediaPlayer
addAudioSpectrumListener
in interface MediaPlayer
public void removeAudioSpectrumListener(AudioSpectrumListener listener)
MediaPlayer
removeAudioSpectrumListener
in interface MediaPlayer
public VideoRenderControl getVideoRenderControl()
MediaPlayer
getVideoRenderControl
in interface MediaPlayer
VideoRenderControl
instance.public Media getMedia()
MediaPlayer
getMedia
in interface MediaPlayer
public void setAudioSyncDelay(long delay)
MediaPlayer
setAudioSyncDelay
in interface MediaPlayer
delay
- time in millisecondspublic long getAudioSyncDelay()
MediaPlayer
getAudioSyncDelay
in interface MediaPlayer
public void play()
MediaPlayer
play
in interface MediaPlayer
public void stop()
MediaPlayer
stop
in interface MediaPlayer
public void pause()
MediaPlayer
pause
in interface MediaPlayer
public float getRate()
MediaPlayer
getRate
in interface MediaPlayer
public void setRate(float rate)
MediaPlayer
setRate
in interface MediaPlayer
public double getPresentationTime()
MediaPlayer
getPresentationTime
in interface MediaPlayer
public float getVolume()
MediaPlayer
getVolume
in interface MediaPlayer
public void setVolume(float vol)
MediaPlayer
[0, 1.0]
.setVolume
in interface MediaPlayer
vol
- A value in the range [0, 1.0]
.public boolean getMute()
MediaPlayer
getMute
in interface MediaPlayer
public void setMute(boolean enable)
setMute
in interface MediaPlayer
public float getBalance()
MediaPlayer
getBalance
in interface MediaPlayer
public void setBalance(float bal)
MediaPlayer
[-1.0, 1.0]
.setBalance
in interface MediaPlayer
bal
- A value in the range [-1.0, 1.0]
.public abstract AudioEqualizer getEqualizer()
MediaPlayer
getEqualizer
in interface MediaPlayer
public abstract AudioSpectrum getAudioSpectrum()
MediaPlayer
getAudioSpectrum
in interface MediaPlayer
public double getDuration()
MediaPlayer
getDuration
in interface MediaPlayer
public double getStartTime()
getStartTime
in interface MediaPlayer
public void setStartTime(double startTime)
setStartTime
in interface MediaPlayer
public double getStopTime()
getStopTime
in interface MediaPlayer
public void setStopTime(double stopTime)
setStopTime
in interface MediaPlayer
public void seek(double streamTime)
MediaPlayer
seek
in interface MediaPlayer
streamTime
- The time in seconds to which to seek.protected abstract long playerGetAudioSyncDelay() throws MediaException
MediaException
protected abstract void playerSetAudioSyncDelay(long delay) throws MediaException
MediaException
protected abstract void playerPlay() throws MediaException
MediaException
protected abstract void playerStop() throws MediaException
MediaException
protected abstract void playerPause() throws MediaException
MediaException
protected abstract void playerFinish() throws MediaException
MediaException
protected abstract float playerGetRate() throws MediaException
MediaException
protected abstract void playerSetRate(float rate) throws MediaException
MediaException
protected abstract double playerGetPresentationTime() throws MediaException
MediaException
protected abstract boolean playerGetMute() throws MediaException
MediaException
protected abstract void playerSetMute(boolean state) throws MediaException
MediaException
protected abstract float playerGetVolume() throws MediaException
MediaException
protected abstract void playerSetVolume(float volume) throws MediaException
MediaException
protected abstract float playerGetBalance() throws MediaException
MediaException
protected abstract void playerSetBalance(float balance) throws MediaException
MediaException
protected abstract double playerGetDuration() throws MediaException
MediaException
protected abstract void playerSeek(double streamTime) throws MediaException
MediaException
protected abstract void playerInit() throws MediaException
MediaException
protected abstract void playerDispose()
public PlayerStateEvent.PlayerState getState()
state
of the player.getState
in interface MediaPlayer
public final void dispose()
MediaPlayer
dispose
in interface MediaPlayer
protected void sendWarning(int warningCode, java.lang.String warningMessage)
protected void sendPlayerEvent(PlayerEvent evt)
protected void sendPlayerHaltEvent(java.lang.String message, double time)
protected void sendPlayerMediaErrorEvent(int errorCode)
protected void sendPlayerStateEvent(int eventID, double time)
protected void sendNewFrameEvent(long nativeRef)
protected void sendFrameSizeChangedEvent(int width, int height)
protected void sendAudioTrack(boolean enabled, long trackID, java.lang.String name, int encoding, java.lang.String language, int numChannels, int channelMask, float sampleRate)
protected void sendVideoTrack(boolean enabled, long trackID, java.lang.String name, int encoding, int width, int height, float frameRate, boolean hasAlphaChannel)
protected void sendSubtitleTrack(boolean enabled, long trackID, java.lang.String name, int encoding, java.lang.String language)
protected void sendMarkerEvent(java.lang.String name, double time)
protected void sendDurationUpdateEvent(double duration)
protected void sendBufferProgressEvent(double clipDuration, long bufferStart, long bufferStop, long bufferPosition)
protected void sendAudioSpectrumEvent(double timestamp, double duration)
public void markerStateChanged(boolean hasMarkers)
markerStateChanged
in interface MarkerStateListener
private void createMediaPulse()
private void destroyMediaPulse()
boolean doMediaPulseTask()
protected AudioEqualizer createNativeAudioEqualizer(long nativeRef)
protected AudioSpectrum createNativeAudioSpectrum(long nativeRef)