home *** CD-ROM | disk | FTP | other *** search
- package sun.audio;
-
- import java.io.DataInputStream;
- import java.io.FilterInputStream;
- import java.io.IOException;
- import java.io.InputStream;
-
- public class NativeAudioStream extends FilterInputStream {
- private final int SUN_MAGIC = 779316836;
- private final int DEC_MAGIC = 779314176;
- private final int MINHDRSIZE = 24;
- private final int TYPE_ULAW = 1;
- private int length;
-
- public NativeAudioStream(InputStream in) throws IOException {
- super(in);
- DataInputStream data = new DataInputStream(in);
- int magic = data.readInt();
- if (magic != 779316836 && magic != 779314176) {
- System.out.println("NativeAudioStream: invalid file type.");
- throw new InvalidAudioFormatException();
- } else {
- int hdr_size = data.readInt();
- if (hdr_size < 24) {
- System.out.println("NativeAudioStream: wrong header size of " + hdr_size + ".");
- throw new InvalidAudioFormatException();
- } else {
- this.length = data.readInt();
- int encoding = data.readInt();
- if (encoding != 1) {
- System.out.println("NativeAudioStream: invalid audio encoding.");
- throw new InvalidAudioFormatException();
- } else {
- int sample_rate = data.readInt();
- if (sample_rate / 1000 != 8) {
- System.out.println("NativeAudioStream: invalid sample rate of " + sample_rate + ".");
- throw new InvalidAudioFormatException();
- } else {
- int channels = data.readInt();
- if (channels != 1) {
- System.out.println("NativeAudioStream: wrong number of channels. (wanted 1, actual " + channels + ")");
- throw new InvalidAudioFormatException();
- } else {
- in.skip((long)(hdr_size - 24));
- }
- }
- }
- }
- }
- }
-
- public int getLength() {
- return this.length;
- }
- }
-