Package net.sf.fmj.capture.test

Source Code of net.sf.fmj.capture.test.MergeTest

package net.sf.fmj.capture.test;

import java.awt.event.ContainerEvent;
import java.awt.event.ContainerListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.protocol.DataSource;
import javax.swing.JFrame;

import net.sf.fmj.ejmf.toolkit.util.PlayerPanel;
import net.sf.fmj.utility.FmjStartup;

/**
* Test for Manager.createMergingDataSource.  Plays video in window while feeding back audio in to audio out.
*
* @author Ken Larson
*
*/
public class MergeTest
{
  public static void main(String[] args) throws Exception
  {
    // init FMJ/JMF logging/classpath
    FmjStartup.init();
   
    // create both data sources:
    final DataSource dsAudio = Manager.createDataSource(new MediaLocator("javasound://"));
    final DataSource dsVideo = Manager.createDataSource(new MediaLocator("civil:/0"));
   
    // merge them:
    final DataSource ds = Manager.createMergingDataSource(new DataSource[] {dsAudio, dsVideo});
   
    // create a player:
    final Player player = Manager.createRealizedPlayer(ds);
   
    // create GUI frame, add player's GUI components to it:
    final PlayerPanel playerpanel = new PlayerPanel(player);

    // already realized so this will work:
        playerpanel.addControlComponent();
        playerpanel.addVisualComponent();
       
    final JFrame frame = new JFrame( "A/V Merge Test" );

    // exit on close:
        //  Allow window to close
        frame.addWindowListener(
            new WindowAdapter() {
                @Override
        public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            }
        );

        //  Resize frame whenever new Component is added
        playerpanel.getMediaPanel().addContainerListener(
            new ContainerListener() {
                public void componentAdded(ContainerEvent e) {
                    frame.pack();
                }
                public void componentRemoved(ContainerEvent e) {
                    frame.pack();
                }
            }
        );

        // finish constructing window, and open it
        frame.getContentPane().add(playerpanel);

        frame.pack();
        frame.setVisible(true);
       
        // start playback:
        player.start();
       
        // TODO: we don't have much in place to handle problems starting, or anything else really
        // after this point...
  }
}
TOP

Related Classes of net.sf.fmj.capture.test.MergeTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.