static void alaw_dec_process(MSFilter *obj){ mblk_t *m; while((m=ms_queue_get(obj->inputs[0]))!=NULL){ mblk_t *o; msgpullup(m,-1); o=allocb((m->b_wptr-m->b_rptr)*2,0); for(;m->b_rptr<m->b_wptr;m->b_rptr++,o->b_wptr+=2){ *((int16_t*)(o->b_wptr))=alaw_to_s16(*m->b_rptr); } freemsg(m); ms_queue_put(obj->outputs[0],o); } }
static void alaw_decode(unsigned char *buf, short *sample, size_t n) { for (; n > 0; --n) *(sample++) = alaw_to_s16(*(buf++)); }