Package

Source Code of PlayerTest

/*
*   PlayerTest - JavaZOOM : http://www.javazoom.net
*
*   This program is free software; you can redistribute it and/or modify
*   it under the terms of the GNU Library General Public License as published
*   by the Free Software Foundation; either version 2 of the License, or
*   (at your option) any later version.
*
*   This program is distributed in the hope that it will be useful,
*   but WITHOUT ANY WARRANTY; without even the implied warranty of
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*   GNU Library General Public License for more details.
*
*   You should have received a copy of the GNU Library General Public
*   License along with this program; if not, write to the Free Software
*   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.util.Properties;

import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;

import javazoom.spi.PropertiesContainer;
import junit.framework.TestCase;

/**
* Simple player (based on MP3 SPI) unit test.
* It takes around 2-5% of CPU and 16MB RAM under Win2K/P4/1.6GHz/JDK1.5 beta
* It takes around 10-12% of CPU and 10MB RAM under Win2K/PIII/1GHz/JDK1.4.1
* It takes around 8-10% of CPU and 10MB RAM under Win2K/PIII/1GHz/JDK1.3.1
*/
public class PlayerTest extends TestCase
{
  private String basefile=null;
  private String filename=null;
  private String name=null;
  private Properties props = null;
  private PrintStream out = null;
 
  /**
   * Constructor for PlayerTest.
   * @param arg0
   */
  public PlayerTest(String arg0)
  {
    super(arg0);
  }

  /*
   * @see TestCase#setUp()
   */
  protected void setUp() throws Exception
  {
    super.setUp();
    props = new Properties();
    InputStream pin = getClass().getClassLoader().getResourceAsStream("test.mp3.properties");
    props.load(pin);
    basefile = (String) props.getProperty("basefile");
    name = (String) props.getProperty("filename");   
    filename = basefile + name; 
    out = System.out;
  }

  public void testPlay()
  {
   try
   {
    if (out != null) out.println("---  Start : "+filename+"  ---");
    File file = new File(filename);
    //URL file = new URL(props.getProperty("shoutcast"));
    AudioFileFormat aff = AudioSystem.getAudioFileFormat(file);
    if (out != null) out.println("Audio Type : "+aff.getType());
    AudioInputStream in= AudioSystem.getAudioInputStream(file);
    AudioInputStream din = null;
    if (in != null)
    {
      AudioFormat baseFormat = in.getFormat();
      if (out != null) out.println("Source Format : "+baseFormat.toString());
      AudioFormat  decodedFormat = new AudioFormat(
        AudioFormat.Encoding.PCM_SIGNED,
        baseFormat.getSampleRate(),
        16,
        baseFormat.getChannels(),
        baseFormat.getChannels() * 2,
        baseFormat.getSampleRate(),
        false);
      if (out != null) out.println("Target Format : "+decodedFormat.toString());
      din = AudioSystem.getAudioInputStream(decodedFormat, in);
      if (din instanceof PropertiesContainer)
      {
      assertTrue("PropertiesContainer : OK",true);
      }
      else
      {
      assertTrue("Wrong PropertiesContainer instance",false);
      }
      rawplay(decodedFormat, din);
      in.close();   
      if (out != null) out.println("---  Stop : "+filename+"  ---");
      assertTrue("testPlay : OK",true);
    }
   }
   catch (Exception e)
   {
    assertTrue("testPlay : "+e.getMessage(),false);
   }
  }

  private SourceDataLine getLine(AudioFormat audioFormat) throws LineUnavailableException
  {
    SourceDataLine res = null;
    DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
    res = (SourceDataLine) AudioSystem.getLine(info);
    res.open(audioFormat);
    return res;
  }
 
  private void rawplay(AudioFormat targetFormat, AudioInputStream din) throws IOException, LineUnavailableException
  {
    byte[] data = new byte[4096];
    SourceDataLine line = getLine(targetFormat);   
    if (line != null)
    {
      // Start
      line.start();
      int nBytesRead = 0, nBytesWritten = 0;
      while (nBytesRead != -1)
      {
      nBytesRead = din.read(data, 0, data.length);
      if (nBytesRead != -1) nBytesWritten = line.write(data, 0, nBytesRead);
      }
      // Stop
      line.drain();
      line.stop();
      line.close();
      din.close();
    }   
  }
}
TOP

Related Classes of PlayerTest

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.