Wed, 1 Dec 1999 19:46:33 +0100 (CET)

Uros Bizjak <uros@kss-loka.si>
  Included in this message, you will find a diff to alsa-lib, which
implements g721 adpcm codec. It works well (only consumes a lot of CPU),
and it plays back the same data as is recorded.

  Also added is CSP patch, which adds noise suppression when CSP is
started or stopped (A few TODOs less :) Also changed is copyright for
mulaw, alaw and adpcm codecs (Based on sun implementation ... + I added
myself - if you don't mind. Please check this copyright, if it is OK)
This commit is contained in:
Jaroslav Kysela 1999-12-01 19:44:14 +00:00
parent 34018cf902
commit 12e03f1928
4 changed files with 23 additions and 3 deletions

View file

@ -248,7 +248,7 @@ double snd_pcm_plugin_hardware_ratio(snd_pcm_t *pcm, int channel)
static unsigned int snd_pcm_plugin_formats(snd_pcm_t *pcm, unsigned int formats)
{
formats |= SND_PCM_FMT_MU_LAW | SND_PCM_FMT_A_LAW;
formats |= SND_PCM_FMT_MU_LAW | SND_PCM_FMT_A_LAW | SND_PCM_FMT_IMA_ADPCM;
if (formats & (SND_PCM_FMT_U8|SND_PCM_FMT_S8|
SND_PCM_FMT_U16_LE|SND_PCM_FMT_S16_LE))
formats |= SND_PCM_FMT_U8|SND_PCM_FMT_S8|
@ -393,6 +393,18 @@ int snd_pcm_plugin_params(snd_pcm_t *pcm, snd_pcm_channel_params_t *params)
} else {
return -EINVAL;
}
case SND_PCM_SFMT_IMA_ADPCM:
if (sinfo.formats & SND_PCM_FMT_S16_LE) {
sparams.format.format = SND_PCM_SFMT_S16_LE;
} else if (sinfo.formats & SND_PCM_FMT_U16_LE) {
sparams.format.format = SND_PCM_SFMT_U16_LE;
} else if (sinfo.formats & SND_PCM_FMT_S8) {
sparams.format.format = SND_PCM_SFMT_S8;
} else if (sinfo.formats & SND_PCM_FMT_U8) {
sparams.format.format = SND_PCM_SFMT_U8;
} else {
return -EINVAL;
}
break;
default:
return -EINVAL;
@ -449,6 +461,12 @@ int snd_pcm_plugin_params(snd_pcm_t *pcm, snd_pcm_channel_params_t *params)
swap_formats(params->channel, &srcfmt, &dstfmt);
err = snd_pcm_plugin_build_alaw(srcfmt, dstfmt, &plugin);
break;
case SND_PCM_SFMT_IMA_ADPCM:
srcfmt = SND_PCM_SFMT_IMA_ADPCM;
dstfmt = sparams.format.format;
swap_formats(params->channel, &srcfmt, &dstfmt);
err = snd_pcm_plugin_build_adpcm(srcfmt, dstfmt, &plugin);
break;
default:
srcfmt = params->format.format;
dstfmt = sparams.format.format;