sm64pc/tools/audiofile-0.3.6/libaudiofile/units.cpp

369 lines
8.7 KiB
C++

/*
Audio File Library
Copyright (C) 2000-2001, Silicon Graphics, Inc.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301 USA
*/
/*
units.cpp
This file contains the file format units.
*/
#include "config.h"
#include "Features.h"
#include "audiofile.h"
#include "afinternal.h"
#include "units.h"
#include "AIFF.h"
#include "AVR.h"
#include "CAF.h"
#include "FLACFile.h"
#include "IFF.h"
#include "IRCAM.h"
#include "NeXT.h"
#include "NIST.h"
#include "Raw.h"
#include "SampleVision.h"
#include "VOC.h"
#include "WAVE.h"
#include "compression.h"
#include "modules/ALAC.h"
#include "modules/FLAC.h"
#include "modules/G711.h"
#include "modules/IMA.h"
#include "modules/MSADPCM.h"
#include "modules/PCM.h"
const Unit _af_units[_AF_NUM_UNITS] =
{
{
AF_FILE_RAWDATA,
"Raw Data", "Raw Sound Data", "raw",
true,
&RawFile::completeSetup,
&RawFile::recognize,
AF_SAMPFMT_TWOSCOMP, 16,
_AF_RAW_NUM_COMPTYPES,
_af_raw_compression_types,
0, /* maximum marker count */
0, /* maximum instrument count */
0, /* maxium number of loops per instrument */
0, NULL,
},
{
AF_FILE_AIFFC,
"AIFF-C", "AIFF-C File Format", "aifc",
true,
AIFFFile::completeSetup,
AIFFFile::recognizeAIFFC,
AF_SAMPFMT_TWOSCOMP, 16,
_AF_AIFFC_NUM_COMPTYPES,
_af_aiffc_compression_types,
65535, /* maximum marker count */
1, /* maximum instrument count */
2, /* maximum number of loops per instrument */
_AF_AIFF_NUM_INSTPARAMS,
_af_aiff_inst_params
},
{
AF_FILE_AIFF,
"AIFF", "Audio Interchange File Format", "aiff",
true,
AIFFFile::completeSetup,
AIFFFile::recognizeAIFF,
AF_SAMPFMT_TWOSCOMP, 16,
0, /* supported compression types */
NULL,
65535, /* maximum marker count */
1, /* maximum instrument count */
2, /* maximum number of loops per instrument */
_AF_AIFF_NUM_INSTPARAMS,
_af_aiff_inst_params
},
{
AF_FILE_NEXTSND,
"NeXT .snd/Sun .au", "NeXT .snd/Sun .au Format", "next",
true,
NeXTFile::completeSetup,
NeXTFile::recognize,
AF_SAMPFMT_TWOSCOMP, 16,
_AF_NEXT_NUM_COMPTYPES,
_af_next_compression_types,
0, /* maximum marker count */
0, /* maximum instrument count */
0, /* maximum number of loops per instrument */
0, NULL
},
{
AF_FILE_WAVE,
"MS RIFF WAVE", "Microsoft RIFF WAVE Format", "wave",
true,
WAVEFile::completeSetup,
WAVEFile::recognize,
AF_SAMPFMT_TWOSCOMP, 16,
_AF_WAVE_NUM_COMPTYPES,
_af_wave_compression_types,
AF_NUM_UNLIMITED, /* maximum marker count */
1, /* maximum instrument count */
AF_NUM_UNLIMITED, /* maximum number of loops per instrument */
_AF_WAVE_NUM_INSTPARAMS,
_af_wave_inst_params
},
{
AF_FILE_IRCAM,
"BICSF", "Berkeley/IRCAM/CARL Sound Format", "bicsf",
true,
IRCAMFile::completeSetup,
IRCAMFile::recognize,
AF_SAMPFMT_TWOSCOMP, 16,
_AF_IRCAM_NUM_COMPTYPES,
_af_ircam_compression_types,
0, // maximum marker count
0, // maximum instrument count
0, // maximum number of loops per instrument
0, // number of instrument parameters
NULL // instrument parameters
},
{
AF_FILE_MPEG1BITSTREAM,
"MPEG", "MPEG Audio Bitstream", "mpeg",
false
},
{
AF_FILE_SOUNDDESIGNER1,
"Sound Designer 1", "Sound Designer 1 File Format", "sd1",
false
},
{
AF_FILE_SOUNDDESIGNER2,
"Sound Designer 2", "Sound Designer 2 File Format", "sd2",
false
},
{
AF_FILE_AVR,
"AVR", "Audio Visual Research File Format", "avr",
true,
AVRFile::completeSetup,
AVRFile::recognize,
AF_SAMPFMT_TWOSCOMP, 16,
0, /* number of compression types */
NULL, /* compression types */
0, /* maximum marker count */
0, /* maximum instrument count */
0, /* maximum number of loops per instrument */
0, /* number of instrument parameters */
},
{
AF_FILE_IFF_8SVX,
"IFF/8SVX", "Amiga IFF/8SVX Sound File Format", "iff",
true,
IFFFile::completeSetup,
IFFFile::recognize,
AF_SAMPFMT_TWOSCOMP, 8,
0, /* number of compression types */
NULL, /* compression types */
0, /* maximum marker count */
0, /* maximum instrument count */
0, /* maximum number of loops per instrument */
0, /* number of instrument parameters */
},
{
AF_FILE_SAMPLEVISION,
"Sample Vision", "Sample Vision File Format", "smp",
true,
SampleVisionFile::completeSetup,
SampleVisionFile::recognize,
AF_SAMPFMT_TWOSCOMP, 16,
0, // number of compression types
NULL, // compression types
0, // maximum marker count
0, // maximum instrument count
0, // maximum number of loops per instrument
0, // number of instrument parameters
NULL // instrument parameters
},
{
AF_FILE_VOC,
"VOC", "Creative Voice File Format", "voc",
true,
VOCFile::completeSetup,
VOCFile::recognize,
AF_SAMPFMT_TWOSCOMP, 16,
_AF_VOC_NUM_COMPTYPES,
_af_voc_compression_types,
0, // maximum marker count
0, // maximum instrument count
0, // maximum number of loops per instrument
0, // number of instrument parameters
NULL // instrument parameters
},
{
AF_FILE_NIST_SPHERE,
"NIST SPHERE", "NIST SPHERE File Format", "nist",
true,
NISTFile::completeSetup,
NISTFile::recognize,
AF_SAMPFMT_TWOSCOMP, 16,
0, /* number of compression types */
NULL, /* compression types */
0, /* maximum marker count */
0, /* maximum instrument count */
0, /* maximum number of loops per instrument */
0, /* number of instrument parameters */
NULL /* instrument parameters */
},
{
AF_FILE_SOUNDFONT2,
"SoundFont 2", "SoundFont 2 File Format", "sf2",
false
},
{
AF_FILE_CAF,
"CAF", "Core Audio Format", "caf",
true,
CAFFile::completeSetup,
CAFFile::recognize,
AF_SAMPFMT_TWOSCOMP, 16,
_AF_CAF_NUM_COMPTYPES,
_af_caf_compression_types,
0, // maximum marker count
0, // maximum instrument count
0, // maximum number of loops per instrument
0, // number of instrument parameters
NULL // instrument parameters
},
{
AF_FILE_FLAC,
"FLAC", "Free Lossless Audio Codec", "flac",
true,
FLACFile::completeSetup,
FLACFile::recognize,
AF_SAMPFMT_TWOSCOMP, 16,
_AF_FLAC_NUM_COMPTYPES,
_af_flac_compression_types,
0, // maximum marker count
0, // maximum instrument count
0, // maximum number of loops per instrument
0, // number of instrument parameters
NULL // instrument parameters
}
};
const CompressionUnit _af_compression[_AF_NUM_COMPRESSION] =
{
{
AF_COMPRESSION_NONE,
true,
"none", /* label */
"none", /* short name */
"not compressed",
1.0,
AF_SAMPFMT_TWOSCOMP, 16,
false, /* needsRebuffer */
false, /* multiple_of */
_af_pcm_format_ok,
_AFpcminitcompress, _AFpcminitdecompress
},
{
AF_COMPRESSION_G711_ULAW,
true,
"ulaw", /* label */
"CCITT G.711 u-law", /* shortname */
"CCITT G.711 u-law",
2.0,
AF_SAMPFMT_TWOSCOMP, 16,
false, /* needsRebuffer */
false, /* multiple_of */
_af_g711_format_ok,
_AFg711initcompress, _AFg711initdecompress
},
{
AF_COMPRESSION_G711_ALAW,
true,
"alaw", /* label */
"CCITT G.711 A-law", /* short name */
"CCITT G.711 A-law",
2.0,
AF_SAMPFMT_TWOSCOMP, 16,
false, /* needsRebuffer */
false, /* multiple_of */
_af_g711_format_ok,
_AFg711initcompress, _AFg711initdecompress
},
{
AF_COMPRESSION_IMA,
true,
"ima4", /* label */
"IMA ADPCM", /* short name */
"IMA DVI ADPCM",
4.0,
AF_SAMPFMT_TWOSCOMP, 16,
true, /* needsRebuffer */
false, /* multiple_of */
_af_ima_adpcm_format_ok,
_af_ima_adpcm_init_compress, _af_ima_adpcm_init_decompress
},
{
AF_COMPRESSION_MS_ADPCM,
true,
"msadpcm", /* label */
"MS ADPCM", /* short name */
"Microsoft ADPCM",
4.0,
AF_SAMPFMT_TWOSCOMP, 16,
true, /* needsRebuffer */
false, /* multiple_of */
_af_ms_adpcm_format_ok,
_af_ms_adpcm_init_compress, _af_ms_adpcm_init_decompress
},
{
AF_COMPRESSION_FLAC,
#if ENABLE(FLAC)
true,
#else
false,
#endif
"flac", // label
"FLAC", // short name
"Free Lossless Audio Codec",
1.0,
AF_SAMPFMT_TWOSCOMP, 16,
false, // needsRebuffer
false, // multiple_of
_af_flac_format_ok,
_af_flac_init_compress, _af_flac_init_decompress
},
{
AF_COMPRESSION_ALAC,
true,
"alac", // label
"ALAC", // short name
"Apple Lossless Audio Codec",
1.0,
AF_SAMPFMT_TWOSCOMP, 16,
true, // needsRebuffer
false, // multiple_of
_af_alac_format_ok,
_af_alac_init_compress, _af_alac_init_decompress
}
};