From 9fee0ec4ca0c5b7a334cc29dbb58e76c7a4c736e Mon Sep 17 00:00:00 2001 From: Michiel Van Der Kolk Date: Mon, 11 Jul 2005 15:42:37 +0000 Subject: Songdb java version, source. only 1.5 compatible git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7101 a1c6a512-1295-4272-9138-f99709370657 --- songdbj/org/tritonus/file/AiffAudioFileWriter.java | 104 +++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 songdbj/org/tritonus/file/AiffAudioFileWriter.java (limited to 'songdbj/org/tritonus/file/AiffAudioFileWriter.java') diff --git a/songdbj/org/tritonus/file/AiffAudioFileWriter.java b/songdbj/org/tritonus/file/AiffAudioFileWriter.java new file mode 100644 index 0000000000..cfd6996ae9 --- /dev/null +++ b/songdbj/org/tritonus/file/AiffAudioFileWriter.java @@ -0,0 +1,104 @@ +/* + * AiffAudioFileWriter.java + * + * This file is part of Tritonus: http://www.tritonus.org/ + */ + +/* + * Copyright (c) 2000 by Florian Bomers + * + * + * 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. + * + */ + +/* +|<--- this code is formatted to fit into 80 columns --->| +*/ + +package org.tritonus.sampled.file; + +import java.io.IOException; +import java.util.Arrays; + +import javax.sound.sampled.AudioFileFormat; +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; + +import org.tritonus.share.TDebug; +import org.tritonus.share.sampled.file.AudioOutputStream; +import org.tritonus.share.sampled.file.TAudioFileWriter; +import org.tritonus.share.sampled.file.TDataOutputStream; + + +/** + * Class for writing AIFF and AIFF-C files. + * + * @author Florian Bomers + */ + +public class AiffAudioFileWriter extends TAudioFileWriter { + + private static final AudioFileFormat.Type[] FILE_TYPES = + { + AudioFileFormat.Type.AIFF, + AudioFileFormat.Type.AIFC + }; + + private static final int ALL=AudioSystem.NOT_SPECIFIED; + private static final AudioFormat.Encoding PCM_SIGNED = AudioFormat.Encoding.PCM_SIGNED; + private static final AudioFormat.Encoding ULAW = AudioFormat.Encoding.ULAW; + private static final AudioFormat.Encoding IMA_ADPCM = new AudioFormat.Encoding("IMA_ADPCM"); + + // IMPORTANT: this array depends on the AudioFormat.match() algorithm which takes + // AudioSystem.NOT_SPECIFIED into account ! + private static final AudioFormat[] AUDIO_FORMATS = + { + new AudioFormat(PCM_SIGNED, ALL, 8, ALL, ALL, ALL, true), + new AudioFormat(PCM_SIGNED, ALL, 8, ALL, ALL, ALL, false), + new AudioFormat(ULAW, ALL, 8, ALL, ALL, ALL, false), + new AudioFormat(ULAW, ALL, 8, ALL, ALL, ALL, true), + new AudioFormat(PCM_SIGNED, ALL, 16, ALL, ALL, ALL, true), + new AudioFormat(PCM_SIGNED, ALL, 24, ALL, ALL, ALL, true), + new AudioFormat(PCM_SIGNED, ALL, 32, ALL, ALL, ALL, true), + new AudioFormat(IMA_ADPCM, ALL, 4, ALL, ALL, ALL, true), + new AudioFormat(IMA_ADPCM, ALL, 4, ALL, ALL, ALL, false), + }; + + public AiffAudioFileWriter() { + super(Arrays.asList(FILE_TYPES), + Arrays.asList(AUDIO_FORMATS)); + } + + + protected boolean isAudioFormatSupportedImpl(AudioFormat format, + AudioFileFormat.Type fileType) { + return AiffTool.getFormatCode(format)!=AiffTool.AIFF_COMM_UNSPECIFIED; + } + + + protected AudioOutputStream getAudioOutputStream(AudioFormat audioFormat, + long lLengthInBytes, + AudioFileFormat.Type fileType, + TDataOutputStream dataOutputStream) throws IOException { + return new AiffAudioOutputStream(audioFormat, fileType, + lLengthInBytes, + dataOutputStream); + } + +} + +/*** AiffAudioFileWriter.java ***/ -- cgit v1.2.3