/*------------------------------------------------------------------------ * * Copyright (c) 1997-1998 by Cornell University. * * See the file "license.txt" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * changevol.c * * Haye Hsi Chan haye@cs.cornell.edu * * Usage : changevol inputWav outputWav * * Takes in a stereo, 8-bit, pcm wav files, and double the volume of the * left channel. *------------------------------------------------------------------------ */ #include <dvmbasic.h> #include <dvmamap.h> #include <dvmwave.h> void ReadWave (char *, WaveHdr ** hdr, Audio ** audio, BitStream ** inbs); void WriteWave (WaveHdr * hdr, Audio * audio, char *); int main (int argc, char *argv[]) { AudioMap *map; unsigned char list[255]; int i; WaveHdr *hdr; Audio *audio; BitStream *inbs; /* * Parse the arguments. */ if (argc != 3) { fprintf (stderr, "%s input output\n", argv[0]); exit (1); } /* * Initialize the volumn-change mappings. * This maps i -> 2i - 128, clipped at 0 and 255 */ for (i = 0; i < 256; i++) { int v; v = i + i - 128; if (v < 0) list[i] = 0; else if (v > 255) list[i] = 255; else list[i] = v; } map = AudioMap8To8New (); AudioMap8To8InitCustom (list, map); /* * Read in the input wav file, apply the mapping and write it out. */ ReadWave (argv[1], &hdr, &audio, &inbs); AudioMap8To8ApplySome (map, audio, 0, 2, 0, 2, audio); WriteWave (hdr, audio, argv[2]); /* * Clean up stuffs. */ BitStreamFree (inbs); AudioFree (audio); AudioMapFree (map); WaveHdrFree (hdr); return 0; }