/*
* @(#)MediaPlayer.java 1.13 02/08/21
*
* Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved.
*/
package com.sun.media;
import java.io.*;
import java.awt.*;
import javax.media.*;
/**
* MediaPlayer extends BasicPlayer and uses PlaybackEngine to play media.
*/
public class MediaPlayer extends BasicPlayer {
protected PlaybackEngine engine;
public MediaPlayer() {
engine = new PlaybackEngine(this);
}
public void setSource(javax.media.protocol.DataSource source)
throws IOException, IncompatibleSourceException {
// Ask the engine to verify the source.
engine.setSource(source);
// Put the media engine under the management of this player.
// BasicPlayer will be responsible to transition the engine
// to the realized state.
manageController(engine);
super.setSource(source);
}
/**
* Obtain the visiual component from the media engine.
*/
public Component getVisualComponent() {
/**
* Call the superclass method to ensure that restrictions
* on player methods are enforced
*/
super.getVisualComponent();
return engine.getVisualComponent();
}
/**
* Obtain the gain control from the media engine.
*/
public GainControl getGainControl() {
int state = getState();
if (state < Realized) {
throwError(new NotRealizedError("Cannot get gain control on an unrealized player"));
}
return engine.getGainControl();
}
/**
* Obtain media time directly from the engine.
*/
public Time getMediaTime() {
// When add controller is used, we want to use the
// less accurate clock but still allows the time base
// to take consideration of the slave controllers.
// Otherwise, we'll use the more accurate engine time.
if (controllerList.size() > 1)
return super.getMediaTime();
else
return engine.getMediaTime();
}
public long getMediaNanoseconds() {
// When add controller is used, we want to use the
// less accurate clock but still allows the time base
// to take consideration of the slave controllers.
// Otherwise, we'll use the more accurate engine time.
if (controllerList.size() > 1)
return super.getMediaNanoseconds();
else
return engine.getMediaNanoseconds();
}
/**
* Obtain the time base from the media engine.
*/
protected TimeBase getMasterTimeBase() {
return engine.getTimeBase();
}
protected boolean audioEnabled() {
return engine.audioEnabled();
}
protected boolean videoEnabled() {
return engine.videoEnabled();
}
public void updateStats() {
engine.updateRates();
}
public void setProgressControl(com.sun.media.controls.ProgressControl p){
engine.setProgressControl(p);
}
}
|