/*
 * Jitsi, the OpenSource Java VoIP and Instant Messaging client.
 * 
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */
package org.jitsi.impl.neomedia.device;

import java.lang.reflect.*;

/**
 * Auto-detection of FMJ audio capture devices.
 * 
 * @author Ken Larson
 */
public class JavaSoundSystem
    extends AudioSystem
{
    private static final String LOCATOR_PROTOCOL = LOCATOR_PROTOCOL_JAVASOUND;

    public JavaSoundSystem()
        throws Exception
    {
        super(LOCATOR_PROTOCOL);
    }

    protected void doInitialize()
        throws Exception
    {
        // Done using reflection to avoid compile-time dependency on FMJ.
        Class<?> clazz
            = Class.forName(
                    "net.sf.fmj.media.cdp.javasound.CaptureDevicePlugger");
        Method addCaptureDevices = clazz.getMethod("addCaptureDevices");
        Object captureDevicePlugger = clazz.newInstance();

        addCaptureDevices.invoke(captureDevicePlugger);
    }

    @Override
    protected String getRendererClassName()
    {
        return "net.sf.fmj.media.renderer.audio.JavaSoundRenderer";
    }

    @Override
    public String toString()
    {
        return "JavaSound";
    }
}