mirror of https://github.com/ericonr/sndio.git
merge alaw and mulaw code
This commit is contained in:
parent
3871e138eb
commit
7e4b5c54d9
|
@ -466,10 +466,10 @@ play_filt_dec(struct slot *s, void *in, void *out, int todo)
|
||||||
dec_do(&s->conv, in, tmp, todo);
|
dec_do(&s->conv, in, tmp, todo);
|
||||||
break;
|
break;
|
||||||
case ENC_ULAW:
|
case ENC_ULAW:
|
||||||
dec_do_ulaw(&s->conv, in, tmp, todo);
|
dec_do_ulaw(&s->conv, in, tmp, todo, 0);
|
||||||
break;
|
break;
|
||||||
case ENC_ALAW:
|
case ENC_ALAW:
|
||||||
dec_do_alaw(&s->conv, in, tmp, todo);
|
dec_do_ulaw(&s->conv, in, tmp, todo, 1);
|
||||||
break;
|
break;
|
||||||
case ENC_FLOAT:
|
case ENC_FLOAT:
|
||||||
dec_do_float(&s->conv, in, tmp, todo);
|
dec_do_float(&s->conv, in, tmp, todo);
|
||||||
|
|
31
aucat/dsp.c
31
aucat/dsp.c
|
@ -660,14 +660,15 @@ dec_do_float(struct conv *p, unsigned char *in, unsigned char *out, int todo)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* convert samples from ulaw to adata_t
|
* convert samples from ulaw/alaw to adata_t
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
dec_do_ulaw(struct conv *p, unsigned char *in, unsigned char *out, int todo)
|
dec_do_ulaw(struct conv *p, unsigned char *in, unsigned char *out, int todo, int is_alaw)
|
||||||
{
|
{
|
||||||
unsigned int f;
|
unsigned int f;
|
||||||
unsigned char *idata;
|
unsigned char *idata;
|
||||||
adata_t *odata;
|
adata_t *odata;
|
||||||
|
short *map;
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if (log_level >= 4) {
|
if (log_level >= 4) {
|
||||||
|
@ -676,33 +677,11 @@ dec_do_ulaw(struct conv *p, unsigned char *in, unsigned char *out, int todo)
|
||||||
log_puts(" frames\n");
|
log_puts(" frames\n");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
map = is_alaw ? wav_alawmap : wav_ulawmap;
|
||||||
idata = in;
|
idata = in;
|
||||||
odata = (adata_t *)out;
|
odata = (adata_t *)out;
|
||||||
for (f = todo * p->nch; f > 0; f--)
|
for (f = todo * p->nch; f > 0; f--)
|
||||||
*odata++ = wav_ulawmap[*idata++] << (ADATA_BITS - 16);
|
*odata++ = map[*idata++] << (ADATA_BITS - 16);
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* convert samples from alaw to adata_t
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
dec_do_alaw(struct conv *p, unsigned char *in, unsigned char *out, int todo)
|
|
||||||
{
|
|
||||||
unsigned int f;
|
|
||||||
unsigned char *idata;
|
|
||||||
adata_t *odata;
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
if (log_level >= 4) {
|
|
||||||
log_puts("dec_alaw: copying ");
|
|
||||||
log_putu(todo);
|
|
||||||
log_puts(" frames\n");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
idata = in;
|
|
||||||
odata = (adata_t *)out;
|
|
||||||
for (f = todo * p->nch; f > 0; f--)
|
|
||||||
*odata++ = wav_alawmap[*idata++] << (ADATA_BITS - 16);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -154,8 +154,7 @@ void enc_sil_do(struct conv *, unsigned char *, int);
|
||||||
void enc_init(struct conv *, struct aparams *, int);
|
void enc_init(struct conv *, struct aparams *, int);
|
||||||
void dec_do(struct conv *, unsigned char *, unsigned char *, int);
|
void dec_do(struct conv *, unsigned char *, unsigned char *, int);
|
||||||
void dec_do_float(struct conv *, unsigned char *, unsigned char *, int);
|
void dec_do_float(struct conv *, unsigned char *, unsigned char *, int);
|
||||||
void dec_do_alaw(struct conv *, unsigned char *, unsigned char *, int);
|
void dec_do_ulaw(struct conv *, unsigned char *, unsigned char *, int, int);
|
||||||
void dec_do_ulaw(struct conv *, unsigned char *, unsigned char *, int);
|
|
||||||
void dec_init(struct conv *, struct aparams *, int);
|
void dec_init(struct conv *, struct aparams *, int);
|
||||||
void cmap_add(struct cmap *, void *, void *, int, int);
|
void cmap_add(struct cmap *, void *, void *, int, int);
|
||||||
void cmap_copy(struct cmap *, void *, void *, int, int);
|
void cmap_copy(struct cmap *, void *, void *, int, int);
|
||||||
|
|
Loading…
Reference in New Issue