Essential JMF - Java Media Framework
"Essential JMF: Java Media Framework" helps you master the key elements of JMF development, including class structure and Player Design, plus advanced techniques such as synchronizing multiple Players and creating Player controls. Walk step-by-step through constructing robust JMF-based software. Learn how to extend the support of the Java Media Framework by creating Players for new media formats and protocols. Discover straightfoward ways to produce media-enabled software that works with web browsers and plug-ins.
- Paperback | 672 pages
- 152.4 x 228.6 x 30.48mm | 816.46g
- 01 Jan 1999
- Pearson Education (US)
- Prentice Hall
- Upper Saddle River, United States
Table of contents
I. USING THE JAVA MEDIA. Framework Chapter 1Introduction.2. Why JMF? Introduction. The Java Media Framework. The Java Media Player. The Java Media APIs. Related Products. Well, Why? Summary.3. The Basics of JMF Programming. Introduction. An AudioClip Example. Playing Audio Using JMF. 1-Shot Play of Audio Using JMF. Looping Play of Audio Using JMF. The Control Panel Component. The Visual Component. Introducing the EJMF Toolkit. EJMF Toolkit PlayerDriver. EJMF Toolkit PlayerPanel. The GenericPlayer. Summary.4. JMF Architecture. Introduction. Overview of a JMF Player. The User's View: A Synopsis. The Player Interface. Rendering Data. Access to AWT Components. Managing Multiple Controllers. The MediaHandler Interface. The DataSource Interface. The Controller Interface. Controller States. State Transitions. The Duration Interface. The Clock Interface. Media Time. Time-Base Time. Mapping Time-Base Time to Media Time. Building a Player. Manager: The Player Factory. Identifying Media. The Player as Implemented. Summary.5. The Clock. Introduction. What's Time? Time Base Time. Media Time. Mapping Time-Base Time to Media Time. Mapping Media Time to Time-Base Time. Starting a Clock. Immediate Time-Base Synchronization with syncStart. Deferred Time-Base Synchronization with syncStart. Tracking Time to Time-Base Synchronization. Accessing Media Time. Clock Rate. Setting Clock Rate. Getting Clock Rate. Stopping a Clock. Stopping Immediately. Stopping at a Specified Time. Restrictions on Clock Methods. Summary.6. The Controller. Introduction. Controller States. Unrealized. Realizing. Realized. Prefetching. Prefetched. Started. State Transitions. State Transition Methods. Controller State Transition Methods. Clock State Transition Methods. Controller Events. Transition Events. Change Events. Close Events. Control Events. Controller Events Class Hierarchy. Stopping a Player. Controller State Machine In Action. The StateChanger Example. Identifying Controller State. Getting Controller Status. Controller Duration. Restriction s on Method Invocation. Events, Errors, and Exceptions. Media Errors. Media Exceptions. More from the EJMF Toolkit. The StateWaiter Class. BlockingPlayer Example. Asynchronous Stop and Deallocate. Summary.7. The Player. Introduction. Visual and Control Panel Components. GainControl. The Start Method. When You Gotta Play ASAP. Relaxed Method Restrictions. Restrictions on Method Invocation. DataSource Support. The DataSource. Connecting to the Media. Synchronized Managed Controllers. Summary.8. Player Controls. Introduction. Controls: An Overview. The Control Component. Whence Controls? Controller Controls. Gain Control. Manipulating Gain Value. Listening for Changes to Gain Value. Muting an Audio Signal. Caching Control. User Control. Programmatic Control. Caching Events. Monitoring Media Download: An Example. CachingControlEvents: Reality Check. Summary.9. Synchronizing Multiple Players. Introduction. Explicit Synchronization: The Building Blocks. Sharing a TimeBase. Accommodating Start Latency. Tracking State Changes. Rate, Media Time, Stop Time and Explicit Synchronization. Explicit Synchronization: An Example. XSync: A Class for Explicit Synchronization. XSListener: A ControllerListener for Explicit Synchronization. Starting Multiple Players with syncStart. An Augmented SyncStartStrategy? Running XSync. Synchronization Using addController. Adding a Controller. Managing Slave Co ntrollers. Removing a Controller. addController Synchronization: An Example. Which Control Panel? Running ACSync. A Discussion of Trade-Offs. Summary.10. Locating the Player. Introduction. Stepping Stones to a Player. createPlayer: The Complete Algorithm. Creating a Player from a URL. Creating a Player from a MediaLocator. Creating a Player from a DataSource. The MediaProxy Interface. The PackageManager Class. Locating a DataSource. Locating a MediaHandler. Retrieving the Package Prefix Lists. Manipulating the Package Prefix Lists. Registering JMF Extensions: An Example. More from the EJMF Toolkit. Summary.II. EXTENDING THE JAVA MEDIA FRAMEWORK. 11. Introduction. 12. Designing an Abstract Player Framework. Introduction. Player Methods. Why Interfaces? A Solution. Framework Structure. Requirements for JMF API Compliance. A Framework Model. Implementing the Model. Model Assumptions. Summary.13. Implementing the Clock Interface. Introduction. Selecting a TimeBase. Clock Rate. Media Time. Setting The Media Time. Getting The Media Time. Mapping Media Time to TimeBase Time. Starting and Stopping the Clock. Time-Base Synchronization Time. Interpretation of getSyncTime API. Stop Time. Summary.14. Implementing the Controller Interface. Introduction. State Manipulation. Event Handling. Dispatching ControllerEvents. Using the ControllerEventQueue. Clock Methods. Selecting a TimeBase. Controller Rate. Media Time. Stop Time. Enforcing the Stop Time. Duration Methods. Control Methods. Obtaining a Controller's Controls. Adding and Removing Controls. Integrating a Custom Control. An Example: Integrating the Rate Control. Summary.15. Implementing the Controller Transitions. Introduction. Forward vs Backward Transitions. To Thread or Not to Thread. Asynchronous Forward Transitions. Synchronous Backward Transitions. Changing the Default Thread Behavior. Playing It (Thread-)Safe. Synchronizing the Forward Transitions. Using the ThreadQueue Class. Synchronizing the Backward Transitions. action/doAction Revisited. Realizing the AbstractController. The synchronousRealize Method. Prefetching the AbstractController. The synchronousPrefetch Method. SyncStarting the AbstractCo ntroller. The synchronousSyncStart Method. Blocking the Current Thread Until the Playback Start Time. Stopping the AbstractController. More Than One Way to Stop. The Last Stop: End of Media. Deallocating the AbstractController. Closing the AbstractController. Summary.16. Implementing the Player Interface. Introduction. Why a Player? Player Functionality. Augmenting the action/doAction Model. Player Components and Controls. The Visual Component. The Control Panel Component. The GainControl. Acquiring the Media: DataSource Support. Relaxed Restrictions on Clock Methods. A More Flexible setMediaTime. A More Flexible setRate. Further Relaxation: The start Method. The synchronousStart Method. Adding a Managed Controller. Removing a Managed Controller. Implications of Managed Controller Support. Player D uration. Calculating the Aggregate Duration. Getting the Aggregate Duration. Player Start Latency. Calculating the Aggregate Start Latency. Putting the Algorithm into Practice. Setting the Media Time. Setting the Rate. Getting the Managed Controllers. Summary.17. Implementing the Player Transitions. Introduction. Player Transition Model. Managing Controller Transition Failure. The ManagedControllerErrorEvent Class. Realizing the Player. Prefetching the Player. Starting the Player. Stopping the Player. End of Media. Deallocating the Player. Closing the Player. Summary.18. Creating a Custom Player. Introduction. Four Steps to a Custom Player. The Text Player. The TickerTape Component. Implementing the Player Interface. Player Initialization. Realizing the Text Player. Prefetching the Text Player. Starting the Text Player. Stopping the Text Player. Deallocating the Text Player. Closing the Text Player. Implementing the Clock and Duration Operations. Integrating the Text Player. Running the Text Player. Moving On. The Multi-Image Video Player. The MIV Format. Creating Your Own MIV File. The Mu ltiImageRenderer Component. Implementing the Player Interface. Player Initialization. Realizing the MIV Player. Prefetching the MIV Player. Starting the MIV Player. Stopping the MIV Player. Deallocating the MIV Player. Closing the MIV Player. Implementing the Clock and Duration Operations. Integrating the MIV Player. Registering a New Content-type. Creating the Package. Running the MIV Player. Summary.19. Creating Custom Controls. Introduction. Some Design Issues. Rate Control. TimeDisplay Control. Implementing ControllerListener. Implementing SourcedTimerListener. Implementing TimeSource. Caching Control. BasicCachingControl Constructor. Implementation of the CachingControl Interface. BasicCachingControl: The Meat. Summary.20. Creating Control Panel Controls. Introduction. A Custom Control Model. The AbstractListenerControl. AbstractListenerControl Class Diagram. AbstractListenerControl Constructors. The Control Interface. Providing the Default Component and Listener. Managing Component-Listener Association. Determining Whether a Control Is Operational. Setting the Component and Control Listener. The ListenerControl Classes. Managing the Control Listener. Type-Safe Setters. Control Panel Controls. The Standard Controls. Start, Stop and Pause Controls. Fast Forward and Reverse Controls. Progress Slider Control. Gain-Related Controls. Summary.21. Creating a Custom Control Panel. Introduction. The EJMF Toolkit Control Panel Package. The AbstractControlPanel. AbstractControlPanel Constructor. Layout Management Support. Accessing Controls. The AbstractControls Class. AbstractControls Constructor. Accessing Controls. AbstractControls as a ControllerListener. Building a Concrete Control Panel Class. The StandardControlPanel. Extending AbstractControlPanel. The StandardControls. Implementing makeControls. Implementing setControlComponentState. Overriding controllerUpdate. Using the StandardControlPanel. Customizing StandardControlPanel. StandardControlPanel Setters. StandardControlPanel Setters In Action. The EjmfControlPanel. Extending StandardControlPanel. Extending StandardControls. The Essential JMF Control Components. The Essential JMF Controls. Summary.22. Creating a Custom DataSource. Introduction. The NNTP Protocol. Constructing a MediaLocator. The NNTP MediaLocator. Retrieving An Article. Five Steps to a Custom DataSource. DataSource Structure. Implementing the DataSource Class. Initializing the DataSource. Connecting the DataSource. Starting the DataSource. Stopping the DataSource. Disconnecting the DataSource. Tying the DataSource to the SourceStream. Additional DataSource Methods. Implementing the SourceStream Interface. Constructing the NNTPSourceStream. The SourceStream Methods. The PullSourceStream Methods. Integrating the NNTP DataSource. Using the DataSource. Summary.III. BUILDING JMF APPLETS AND APPLICATIONS. 23. Introduction. 24. A Simple Mixer. Introduction. A Simple Mixer. Running SimpleMixer. The SimpleMixer Interface. The Design of SimpleMixer. The MultiPlayer: An Overview. MultiPlayer Class Diagram. The Details of the MultiPlayer. Creating a MultiPlayer. MultiPlayer Control Operations. MultiPlayer States. MultiPlayer State Change Notification. MultiPlayer as ControllerListener. MultiPlayer ViewingPanel. The MultiPlayerControl. The TimerMultiPlayerControl. TimerMultiPlayerControl Class Diagram. The MixerEvent List. Creating the Event List. Normalizing the Event List. Timer Ticks and MixerEvents. Executing a MixerCommand. The MixerCommand Interface. Starting the TimerMultiPlayerControl. Stopping the TimerMultiPlayerControl. Summary.25. A MultiPlayer Applet. Introduction. The MIX File. HTML Output from SimpleMixer. A MultiPlayer Applet. The init Method. The start Method. The destroy Method. Summary.IV. APPENDICES. Appendix A: Supported Media Types. Appendix B: JMF, Browsers and The Java Plug-in. Introduction. Current JMF Implementations. Browser Compatibility. Downloading Netscape Communicator. The Java Plug-In. What is Java Plug-In? How Does Java Plug-In Work? HTML Conversion. Compatibility Matrix Using Java Plug-In. Downloading The Java Plug-In. The JMF Run-Time. appletviewer and HotJava.Appendix C: Configuring the Java Media Framework. Configuring JMF. Configurable Properties. jmfconfig Actions.Appendix D: Resources. Multimedia Resources. Discussion Lists. Glossary.Appendix E: Unified Modeling Language Notation. A UML Example.Appendix F: Java Media Framework API. Index.
About Rob Gordon
Rob Gordonis a software consultant for Sun Microsystems, Inc., serving on the JMF development team. He has extensive experience as a Java software developer and as a developer of educational materials on advanced information technology. Stephen Talleyis a software engineer for Sun Microsystems, Inc., and a member of the JMF development team.