codec.c

来自「linux下的sip voip程序」· C语言 代码 · 共 54 行

C
54
字号
#include <stdio.h>#include "codec.h"unsigned char g711encode2(short audio_sample){    static short i = -32768;    if (i>=32000){        i=-32000;    }else{        i+=100;    }       return g711encode(i);}unsigned char g711encode(short audio_sample){    int i;    int mask;    int range;    unsigned char mulaw_val;        if ( audio_sample > 0 && audio_sample > CLIP ) audio_sample = CLIP;    if ( audio_sample < 0 && audio_sample < -CLIP ) audio_sample = -CLIP;    if ( audio_sample < 0 ){        mask = 0x7f;        audio_sample = -audio_sample;    }else{        mask = 0xff;    }        audio_sample += BIAS;    for ( i = 7, range = 0x4000; range >= 0x80; range >>= 1, i-- ){        if ( range & audio_sample ) break;    }    mulaw_val =  (i << 4) +  ( ( audio_sample >> ( i + 3 ) ) & 0x0f);    return mulaw_val ^ mask;}short g711decode2(unsigned char ulaw_sample){    return ulaw_sample<<8;}short g711decode(unsigned char ulaw_sample){    short audio_sample;    int t;        ulaw_sample = ~ulaw_sample;    t = ((ulaw_sample & 0x0f) << 3) + BIAS;    t <<= (ulaw_sample & 0x70) >> 4;    audio_sample = ((ulaw_sample & 0x80) ? (BIAS - t) : (t - BIAS));    return audio_sample;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?