/*****************************************************************************
mu-law
sub-format 7 of .WAV format
*****************************************************************************/
#include <stdio.h> /* EOF, fgetc() */
#include "sound.h"
/* in MISC.C */
short mulaw_expand(unsigned char data);
/* in WAV.C */
int wav_validate(sound_info_t *info, unsigned sub_type);
/*****************************************************************************
*****************************************************************************/
static int get_sample(sound_info_t *info, short *left, short *right)
{
int temp;
temp = fgetc(info->infile);
if(temp == EOF)
return -1;
info->bytes_left--;
*left = mulaw_expand(temp);
if(info->channels == 1)
{
*right = *left;
return 0;
}
temp = fgetc(info->infile);
if(temp == EOF)
return -1;
info->bytes_left--;
*right = mulaw_expand(temp);
return 0;
}
/*****************************************************************************
*****************************************************************************/
static int validate(sound_info_t *info)
{
int err;
fseek(info->infile, 0, SEEK_SET);
/* WAV sub-format #7 is u-law */
err = wav_validate(info, 7);
info->depth = 16;
return err;
}
/*****************************************************************************
*****************************************************************************/
codec_t _wav07 =
{
".wav mu-law", validate, get_sample
};