< prev index next >
src/java.desktop/share/classes/com/sun/media/sound/WaveFloatFileReader.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
--- 1,7 ----
/*
! * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
*** 20,67 ****
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.media.sound;
- import java.io.BufferedInputStream;
- import java.io.File;
- import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
- import java.net.URL;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioFormat.Encoding;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.UnsupportedAudioFileException;
- import javax.sound.sampled.spi.AudioFileReader;
/**
* Floating-point encoded (format 3) WAVE file loader.
*
* @author Karl Helgason
*/
! public final class WaveFloatFileReader extends AudioFileReader {
! public AudioFileFormat getAudioFileFormat(InputStream stream)
! throws UnsupportedAudioFileException, IOException {
!
! stream.mark(200);
! AudioFileFormat format;
! try {
! format = internal_getAudioFileFormat(stream);
! } finally {
! stream.reset();
! }
! return format;
! }
!
! private AudioFileFormat internal_getAudioFileFormat(InputStream stream)
throws UnsupportedAudioFileException, IOException {
RIFFReader riffiterator = new RIFFReader(stream);
if (!riffiterator.getFormat().equals("RIFF"))
throw new UnsupportedAudioFileException();
--- 20,51 ----
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
+
package com.sun.media.sound;
import java.io.IOException;
import java.io.InputStream;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioFormat.Encoding;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.UnsupportedAudioFileException;
/**
* Floating-point encoded (format 3) WAVE file loader.
*
* @author Karl Helgason
*/
! public final class WaveFloatFileReader extends SunFileReader {
! @Override
! AudioFileFormat getAudioFileFormatImpl(final InputStream stream)
throws UnsupportedAudioFileException, IOException {
RIFFReader riffiterator = new RIFFReader(stream);
if (!riffiterator.getFormat().equals("RIFF"))
throw new UnsupportedAudioFileException();
*** 94,167 ****
if (chunk.getFormat().equals("data")) {
data_found = true;
break;
}
}
!
! if (!fmt_found)
throw new UnsupportedAudioFileException();
! if (!data_found)
! throw new UnsupportedAudioFileException();
!
AudioFormat audioformat = new AudioFormat(
Encoding.PCM_FLOAT, samplerate, bits, channels,
framesize, samplerate, false);
! AudioFileFormat fileformat = new AudioFileFormat(
! AudioFileFormat.Type.WAVE, audioformat,
AudioSystem.NOT_SPECIFIED);
- return fileformat;
}
! public AudioInputStream getAudioInputStream(InputStream stream)
throws UnsupportedAudioFileException, IOException {
AudioFileFormat format = getAudioFileFormat(stream);
RIFFReader riffiterator = new RIFFReader(stream);
- if (!riffiterator.getFormat().equals("RIFF"))
- throw new UnsupportedAudioFileException();
- if (!riffiterator.getType().equals("WAVE"))
- throw new UnsupportedAudioFileException();
while (riffiterator.hasNextChunk()) {
RIFFReader chunk = riffiterator.nextChunk();
if (chunk.getFormat().equals("data")) {
return new AudioInputStream(chunk, format.getFormat(),
chunk.getSize());
}
}
throw new UnsupportedAudioFileException();
}
-
- public AudioFileFormat getAudioFileFormat(URL url)
- throws UnsupportedAudioFileException, IOException {
- InputStream stream = url.openStream();
- AudioFileFormat format;
- try {
- format = getAudioFileFormat(new BufferedInputStream(stream));
- } finally {
- stream.close();
- }
- return format;
- }
-
- public AudioFileFormat getAudioFileFormat(File file)
- throws UnsupportedAudioFileException, IOException {
- InputStream stream = new FileInputStream(file);
- AudioFileFormat format;
- try {
- format = getAudioFileFormat(new BufferedInputStream(stream));
- } finally {
- stream.close();
- }
- return format;
- }
-
- public AudioInputStream getAudioInputStream(URL url)
- throws UnsupportedAudioFileException, IOException {
- return getAudioInputStream(new BufferedInputStream(url.openStream()));
- }
-
- public AudioInputStream getAudioInputStream(File file)
- throws UnsupportedAudioFileException, IOException {
- return getAudioInputStream(new BufferedInputStream(new FileInputStream(
- file)));
- }
}
--- 78,111 ----
if (chunk.getFormat().equals("data")) {
data_found = true;
break;
}
}
! if (!fmt_found || !data_found) {
throw new UnsupportedAudioFileException();
! }
AudioFormat audioformat = new AudioFormat(
Encoding.PCM_FLOAT, samplerate, bits, channels,
framesize, samplerate, false);
! return new AudioFileFormat(AudioFileFormat.Type.WAVE, audioformat,
AudioSystem.NOT_SPECIFIED);
}
! @Override
! public AudioInputStream getAudioInputStream(final InputStream stream)
throws UnsupportedAudioFileException, IOException {
AudioFileFormat format = getAudioFileFormat(stream);
+ // we've got everything, the stream is supported and it is at the
+ // beginning of the header, so find the data chunk again and return an
+ // AudioInputStream
RIFFReader riffiterator = new RIFFReader(stream);
while (riffiterator.hasNextChunk()) {
RIFFReader chunk = riffiterator.nextChunk();
if (chunk.getFormat().equals("data")) {
return new AudioInputStream(chunk, format.getFormat(),
chunk.getSize());
}
}
throw new UnsupportedAudioFileException();
}
}
< prev index next >