Java browser: test/demux/DeMux.java

Content of test/demux/DeMux.java extracted from visualap.jar

// ONLY FOR DEMO PURPOSE
package test.demux;
import common.SampledAudio;
import java.io.Serializable;
import javax.sound.sampled.*;
 
/**
 * 
 * DeMux is a component used to split stereo audio in two mono audio.
 * Note: visualap components shall implement Serializable and Cloneable
 * 
 * @author      javalc6
 * @version     1.0
 */
public class DeMux implements Serializable, Cloneable {
	public static final long serialVersionUID = 7150038053989176116L;
 
	public Object clone() {
		DeMux cloning = new DeMux();
//		cloning.setValue(value);
		return cloning;
	}
 
// method accessible from the outside world!
    public SampledAudio channel0(SampledAudio sa) throws Exception {
		if (sa==null) return null;
		if (sa.length==0) return null;
		if (sa.format.getChannels() != 2) throw new Exception("stereo audio input is required");
		AudioFormat	format = new AudioFormat(
			sa.format.getEncoding(),
			sa.format.getSampleRate(),
			sa.format.getSampleSizeInBits(),
			1, // channels = 1
			sa.format.getFrameSize()/2,
			sa.format.getFrameRate(),
			sa.format.isBigEndian());
		SampledAudio out = new SampledAudio(format, sa.length / 2);
		int numbytes = sa.format.getSampleSizeInBits() / 8; // sample size in bytes
		out.length = sa.length/2;
		for (int j = 0; j < numbytes; j++)
			for (int k = 0; k < sa.length/(2*numbytes); k++)
				out.buffer[j+k*numbytes] = sa.buffer[j+k*numbytes*2];
		return out;
    }
    public SampledAudio channel1(SampledAudio sa) throws Exception {
		if (sa==null) return null;
		if (sa.length==0) return null;
		if (sa.format.getChannels() != 2) throw new Exception("stereo audio input is required");
		AudioFormat	format = new AudioFormat(
			sa.format.getEncoding(),
			sa.format.getSampleRate(),
			sa.format.getSampleSizeInBits(),
			1, // channels = 1
			sa.format.getFrameSize()/2,
			sa.format.getFrameRate(),
			sa.format.isBigEndian());
		SampledAudio out = new SampledAudio(format, sa.length / 2);
		int numbytes = sa.format.getSampleSizeInBits() / 8; // sample size in bytes
		out.length = sa.length/2;
		for (int j = 0; j < numbytes; j++)
			for (int k = 0; k < sa.length/(2*numbytes); k++)
				out.buffer[j+k*numbytes] = sa.buffer[j+k*numbytes*2+numbytes];
		return out;
    }
 
	public static String getToolTipText() {
		return "split stereo audio in two mono audio";
	}
 
}
 
Share Share on Facebook Share on Twitter Bookmark on Reddit Share via mail
Privacy Policy Creative Commons Attribution-Share Alike Trovami