/* * convertsound.h * Copyright 1988-89 NeXT, Inc. * */ #import "soundstruct.h" #import "sounderror.h" unsigned char SNDMulaw(short n); short SNDiMulaw(unsigned char m); /* * Routines to convert from 8 bit mulaw sound to/from 16 linear sound. * SNDMulaw returns the mulaw value for the given 16 bit linear value, * and SNDiMulaw returns the 16 bit linear value for the given mulaw value. */ int SNDConvertSound(SNDSoundStruct *s1, SNDSoundStruct **s2); /* * Routine to convert the sound specified by s1 into a new sound designated * by the header s2, which identifies the resultant data format, channel count, * and sampling rate. If the dataSize in s2 is non-zero, then the s2's data * contains optional arguments for the conversion (these arguments are * conversion-specific). A new SNDSoundStruct is created which contains the * converted sound, and s2 is set to point at it. An error code is returned. */ int SNDRunDSP(SNDSoundStruct *core, char *write_ptr, int write_count, int write_width, int write_buf_size, char **read_ptr, int *read_count, int read_width, int negotiation_timeout, int flush_timeout, int conversion_timeout); /* * This generic routine runs the DSP program represented by core, streaming * the specified input data to it, and collecting the output data into a * buffer that is returned in read_ptr, with a size returned in read_size. * The dsp program should implement the 'Complex DMA mode' in its output. * See /NextDeveloper/Examples/DSP/SoundDSPDriver for examples. */ int SNDCompressSound(SNDSoundStruct *s1, SNDSoundStruct **s2, int compressionType, int dropBits); /* * If the data format of sound s1 is SND_FORMAT_COMPRESSED * or SND_FORMAT_COMPRESSED_EMPHASIZED, the sound * is decompressed into s2. If s1 is SND_FORMAT_LINEAR_16 or * SND_FORMAT_EMPHASIZED, the sound is compressed into s2. * The compressionType and dropBits parameters are used when compressing. * There are currently three compress formats supported by NeXT system * software: * SND_CFORMAT_BITS_DROPPED - low bits removed for lossy compression * SND_CFORMAT_BIT_FAITHFUL - lossless compression * SND_CFORMAT_ATC - audio transform compression (lossy) * (constants defined in /usr/include/sound/soundstructs.h). * If the compression is lossless, * the recorded sound can be decompressed exactly back to its original samples. * Otherwise the decompressed sound will have some degradation. The dropBits * parameter specifies the number of bits to right shift off of each sample * before compressing for the dropped-bits compression type. DropBits * ranges from 4 to 8 bits, with higher numbers giving more compression * but less fidelity. A typical value is 4. In bit faithful mode, dropBits * may affect the amount of compression, but decompression will still be * exact. For type ATC, dropBits has no effect at present, but in the * future it may affect the compression quality such that dropBits = 0 * gives maximum quality, and dropBits = 8 would give maximum compression. * CompressionType defaults to SND_CFORMAT_ATC and dropBits defaults to 0. * A new SNDSoundStruct is created which contains the converted sound, and * s2 is set to point at it. An error code is returned. */