Package net.sf.fmj.media.cdp.javasound

Source Code of net.sf.fmj.media.cdp.javasound.CaptureDevicePlugger

package net.sf.fmj.media.cdp.javasound;

import java.util.logging.Logger;

import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.Format;
import javax.media.MediaLocator;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Mixer;

import net.sf.fmj.utility.LoggerSingleton;

/**
* Dynamically adds CaptureDeviceInfo to the CaptureDeviceManager.  Does not commit.
* @author Ken Larson
*
*/
public class CaptureDevicePlugger
{
  private static final Logger logger = LoggerSingleton.logger;

  public void addCaptureDevices()
  {
    int index = 0;
   
    Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
    for (int i=0; i<mixerInfo.length; i++)
    {
      Mixer mixer = AudioSystem.getMixer(mixerInfo[i]);
     
      // if sample rate is not specified, we leave it unknown (unkown means it supports a variety of sample rates ) 0 to 96kHz,
      // if we add only a small subset, we miss some, building the graph is faster with leaving it as it is
      Format[] formats = net.sf.fmj.media.protocol.javasound.DataSource.querySupportedFormats(i);
     
      if ( (null != formats) && (formats.length > 0) )
      {
        CaptureDeviceInfo jmfInfo = new CaptureDeviceInfo("javasound:" + mixerInfo[i].getName() + ":" + index, new MediaLocator("javasound:#" + i), formats);
        index++;
       
        if (CaptureDeviceManager.getDevice(jmfInfo.getName()) == null)
        {
          CaptureDeviceManager.addDevice(jmfInfo);
          logger.fine("CaptureDevicePlugger: Added " + jmfInfo.getLocator());
        }
        else
        {
          logger.fine("CaptureDevicePlugger: Already present, skipping " + jmfInfo.getLocator());
        }
      }
    }
  }
}
TOP

Related Classes of net.sf.fmj.media.cdp.javasound.CaptureDevicePlugger

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.