亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? g726.c

?? Trolltech公司發布的圖形界面操作系統。可在qt-embedded-2.3.10平臺上編譯為嵌入式圖形界面操作系統。
?? C
字號:
/* * G.726 ADPCM audio codec  * Copyright (c) 2004 Roman Shaposhnik. * * This is a very straightforward rendition of the G.726 * Section 4 "Computational Details".  * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#include <limits.h>#include "avcodec.h"#include "common.h"/* * G.726 Standard uses rather odd 11bit floating point arithmentic for  * numerous occasions. It's a mistery to me why they did it this way * instead of simply using 32bit integer arithmetic. */typedef struct Float11 {	int sign;   /* 1bit sign */	int exp;    /* 4bit exponent */	int mant;   /* 6bit mantissa */} Float11;static inline Float11* i2f(int16_t i, Float11* f){	f->sign = (i < 0);	if (f->sign)		i = -i;	f->exp = av_log2_16bit(i) + !!i;	f->mant = i? (i<<6) >> f->exp : 		         1<<5;	return f;}static inline int16_t mult(Float11* f1, Float11* f2){	int res, exp;	exp = f1->exp + f2->exp;	res = (((f1->mant * f2->mant) + 0x30) >> 4) << 7;	res = exp > 26 ? res << (exp - 26) : res >> (26 - exp);	return (f1->sign ^ f2->sign) ? -res : res;}static inline int sgn(int value){   return (value < 0) ? -1 : 1;}typedef struct G726Tables {	int  bits;            /* bits per sample */	int* quant;           /* quantization table */	int* iquant;          /* inverse quantization table */	int* W;               /* special table #1 ;-) */	int* F;               /* special table #2 */} G726Tables;typedef struct G726Context {	 G726Tables* tbls;    /* static tables needed for computation */	 	 Float11 sr[2];       /* prev. reconstructed samples */	 Float11 dq[6];       /* prev. difference */	 int a[2];            /* second order predictor coeffs */	 int b[6];            /* sixth order predictor coeffs */	 int pk[2];           /* signs of prev. 2 sez + dq */	 	 int ap;              /* scale factor control */	 int yu;              /* fast scale factor */	 int yl;              /* slow scale factor */	 int dms;             /* short average magnitude of F[i] */	 int dml;             /* long average magnitude of F[i] */	 int td;              /* tone detect */	 int se;              /* estimated signal for the next iteration */	 int sez;             /* estimated second order prediction */	 int y;               /* quantizer scaling factor for the next iteration */} G726Context;static int quant_tbl16[] =                       /* 16kbit/s 2bits per sample */           { 260, INT_MAX }; static int iquant_tbl16[] =           { 116, 365, 365, 116 };static int W_tbl16[] =            { -22, 439, 439, -22 };static int F_tbl16[] =           { 0, 7, 7, 0 };	   static int quant_tbl24[] =                       /* 24kbit/s 3bits per sample */           {  7, 217, 330, INT_MAX };static int iquant_tbl24[] =           { INT_MIN, 135, 273, 373, 373, 273, 135, INT_MIN };static int W_tbl24[] =            { -4,  30, 137, 582, 582, 137,  30, -4 }; static int F_tbl24[] =           { 0, 1, 2, 7, 7, 2, 1, 0 };	   static int quant_tbl32[] =                       /* 32kbit/s 4bits per sample */           { -125,  79, 177, 245, 299, 348, 399, INT_MAX };static int iquant_tbl32[] =           { INT_MIN,   4, 135, 213, 273, 323, 373, 425,  	         425, 373, 323, 273, 213, 135,   4, INT_MIN };static int W_tbl32[] =            { -12,  18,  41,  64, 112, 198, 355, 1122,	    1122, 355, 198, 112,  64,  41,  18, -12};static int F_tbl32[] =            { 0, 0, 0, 1, 1, 1, 3, 7, 7, 3, 1, 1, 1, 0, 0, 0 };	   static int quant_tbl40[] =                      /* 40kbit/s 5bits per sample */           { -122, -16,  67, 138, 197, 249, 297, 338,	      377, 412, 444, 474, 501, 527, 552, INT_MAX };static int iquant_tbl40[] =           { INT_MIN, -66,  28, 104, 169, 224, 274, 318,  	         358, 395, 429, 459, 488, 514, 539, 566,	         566, 539, 514, 488, 459, 429, 395, 358,	         318, 274, 224, 169, 104,  28, -66, INT_MIN };static int W_tbl40[] =            {   14,  14,  24,  39,  40,  41,   58,  100,	      141, 179, 219, 280, 358, 440,  529,  696, 	      696, 529, 440, 358, 280, 219,  179,  141,	      100,  58,  41,  40,  39,  24,   14,   14 };static int F_tbl40[] =            { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 6,	     6, 6, 5, 4, 3, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };static G726Tables G726Tables_pool[] =            {{ 2, quant_tbl16, iquant_tbl16, W_tbl16, F_tbl16 },	    { 3, quant_tbl24, iquant_tbl24, W_tbl24, F_tbl24 },	    { 4, quant_tbl32, iquant_tbl32, W_tbl32, F_tbl32 },            { 5, quant_tbl40, iquant_tbl40, W_tbl40, F_tbl40 }};					       /* * Para 4.2.2 page 18: Adaptive quantizer.  */static inline uint8_t quant(G726Context* c, int d){   int sign, exp, i, dln;      sign = i = 0;   if (d < 0) {       sign = 1;       d = -d;   }   exp = av_log2_16bit(d);   dln = ((exp<<7) + (((d<<7)>>exp)&0x7f)) - (c->y>>2);      while (c->tbls->quant[i] < INT_MAX && c->tbls->quant[i] < dln)        ++i;      if (sign)       i = ~i;   if (c->tbls->bits != 2 && i == 0) /* I'm not sure this is a good idea */       i = 0xff;   return i; }/*  * Para 4.2.3 page 22: Inverse adaptive quantizer. */static inline int16_t inverse_quant(G726Context* c, int i){    int dql, dex, dqt;	    dql = c->tbls->iquant[i] + (c->y >> 2);    dex = (dql>>7) & 0xf;        /* 4bit exponent */    dqt = (1<<7) + (dql & 0x7f); /* log2 -> linear */    return (dql < 0) ? 0 : ((dqt<<7) >> (14-dex)); }static inline int16_t g726_iterate(G726Context* c, int16_t I){    int dq, re_signal, pk0, fa1, i, tr, ylint, ylfrac, thr2, al, dq0;    Float11 f;        dq = inverse_quant(c, I);    if (I >> (c->tbls->bits - 1))  /* get the sign */        dq = -dq;    re_signal = c->se + dq;    /* Transition detect */    ylint = (c->yl >> 15);    ylfrac = (c->yl >> 10) & 0x1f;    thr2 = (ylint > 9) ? 0x1f << 10 : (0x20 + ylfrac) << ylint;    if (c->td == 1 && abs(dq) > ((thr2+(thr2>>1))>>1))        tr = 1;    else        tr = 0;        /* Update second order predictor coefficient A2 and A1 */    pk0 = (c->sez + dq) ? sgn(c->sez + dq) : 0;    dq0 = dq ? sgn(dq) : 0;    if (tr) {        c->a[0] = 0;	c->a[1] = 0;        for (i=0; i<6; i++)	   c->b[i] = 0;    } else {	/* This is a bit crazy, but it really is +255 not +256 */	fa1 = clip((-c->a[0]*c->pk[0]*pk0)>>5, -256, 255);		c->a[1] += 128*pk0*c->pk[1] + fa1 - (c->a[1]>>7);	c->a[1] = clip(c->a[1], -12288, 12288);        c->a[0] += 64*3*pk0*c->pk[0] - (c->a[0] >> 8);	c->a[0] = clip(c->a[0], -(15360 - c->a[1]), 15360 - c->a[1]);        for (i=0; i<6; i++)	     c->b[i] += 128*dq0*sgn(-c->dq[i].sign) - (c->b[i]>>8);    }    /* Update Dq and Sr and Pk */    c->pk[1] = c->pk[0];    c->pk[0] = pk0 ? pk0 : 1;    c->sr[1] = c->sr[0];    i2f(re_signal, &c->sr[0]);    for (i=5; i>0; i--)       c->dq[i] = c->dq[i-1];    i2f(dq, &c->dq[0]);    c->dq[0].sign = I >> (c->tbls->bits - 1); /* Isn't it crazy ?!?! */        /* Update tone detect [I'm not sure 'tr == 0' is really needed] */    c->td = (tr == 0 && c->a[1] < -11776);            /* Update Ap */    c->dms += ((c->tbls->F[I]<<9) - c->dms) >> 5;    c->dml += ((c->tbls->F[I]<<11) - c->dml) >> 7;    if (tr)        c->ap = 256;    else if (c->y > 1535 && !c->td && (abs((c->dms << 2) - c->dml) < (c->dml >> 3)))       c->ap += (-c->ap) >> 4;    else       c->ap += (0x200 - c->ap) >> 4;     /* Update Yu and Yl */    c->yu = clip(c->y + (((c->tbls->W[I] << 5) - c->y) >> 5), 544, 5120);    c->yl += c->yu + ((-c->yl)>>6);     /* Next iteration for Y */    al = (c->ap >= 256) ? 1<<6 : c->ap >> 2;    c->y = (c->yl + (c->yu - (c->yl>>6))*al) >> 6;	    /* Next iteration for SE and SEZ */    c->se = 0;    for (i=0; i<6; i++)       c->se += mult(i2f(c->b[i] >> 2, &f), &c->dq[i]);    c->sez = c->se >> 1;    for (i=0; i<2; i++)       c->se += mult(i2f(c->a[i] >> 2, &f), &c->sr[i]);    c->se >>= 1;    return clip(re_signal << 2, -0xffff, 0xffff);}static int g726_reset(G726Context* c, int bit_rate){    int i;    c->tbls = &G726Tables_pool[bit_rate/8000 - 2];    for (i=0; i<2; i++) {       i2f(0, &c->sr[i]);       c->a[i] = 0;       c->pk[i] = 1;    }    for (i=0; i<6; i++) {       i2f(0, &c->dq[i]);       c->b[i] = 0;    }    c->ap = 0;    c->dms = 0;    c->dml = 0;    c->yu = 544;    c->yl = 34816;    c->td = 0;    c->se = 0;    c->sez = 0;    c->y = 544;    return 0;}static int16_t g726_decode(G726Context* c, int16_t i){    return g726_iterate(c, i);}static int16_t g726_encode(G726Context* c, int16_t sig){   uint8_t i;      i = quant(c, sig/4 - c->se) & ((1<<c->tbls->bits) - 1);   g726_iterate(c, i);   return i;}/* Interfacing to the libavcodec */typedef struct AVG726Context {   G726Context c;   int bits_left;   int bit_buffer;   int code_size;} AVG726Context;static int g726_init(AVCodecContext * avctx){    AVG726Context* c = (AVG726Context*)avctx->priv_data;        if (avctx->channels != 1 ||        (avctx->bit_rate != 16000 && avctx->bit_rate != 24000 &&	 avctx->bit_rate != 32000 && avctx->bit_rate != 40000)) {        av_log(avctx, AV_LOG_ERROR, "G726: unsupported audio format\n");	return -1;    }    if (avctx->sample_rate != 8000 && avctx->strict_std_compliance>=0) {        av_log(avctx, AV_LOG_ERROR, "G726: unsupported audio format\n");	return -1;    }    g726_reset(&c->c, avctx->bit_rate);    c->code_size = c->c.tbls->bits;    c->bit_buffer = 0;    c->bits_left = 0;    avctx->coded_frame = avcodec_alloc_frame();    if (!avctx->coded_frame)        return -ENOMEM;    avctx->coded_frame->key_frame = 1;    return 0;}static int g726_close(AVCodecContext *avctx){    av_freep(&avctx->coded_frame);    return 0;}static int g726_encode_frame(AVCodecContext *avctx,                            uint8_t *dst, int buf_size, void *data){    AVG726Context *c = avctx->priv_data;    short *samples = data;    PutBitContext pb;    init_put_bits(&pb, dst, 1024*1024);    for (; buf_size; buf_size--)       put_bits(&pb, c->code_size, g726_encode(&c->c, *samples++));    flush_put_bits(&pb);    return put_bits_count(&pb)>>3; }		static int g726_decode_frame(AVCodecContext *avctx,                             void *data, int *data_size,                             uint8_t *buf, int buf_size){    AVG726Context *c = avctx->priv_data;    short *samples = data;    uint8_t code;    uint8_t mask;    GetBitContext gb;        if (!buf_size)        goto out;        mask = (1<<c->code_size) - 1;    init_get_bits(&gb, buf, buf_size * 8);    if (c->bits_left) {        int s = c->code_size - c->bits_left;;	code = (c->bit_buffer << s) | get_bits(&gb, s);	*samples++ = g726_decode(&c->c, code & mask);    }        while (get_bits_count(&gb) + c->code_size <= buf_size*8)	*samples++ = g726_decode(&c->c, get_bits(&gb, c->code_size) & mask);        c->bits_left = buf_size*8 - get_bits_count(&gb);    c->bit_buffer = get_bits(&gb, c->bits_left);    out:    *data_size = (uint8_t*)samples - (uint8_t*)data;    return buf_size;}#ifdef CONFIG_ENCODERSAVCodec adpcm_g726_encoder = {    "g726",    CODEC_TYPE_AUDIO,    CODEC_ID_ADPCM_G726,    sizeof(AVG726Context),    g726_init,    g726_encode_frame,    g726_close,    NULL,};#endif //CONFIG_ENCODERSAVCodec adpcm_g726_decoder = {    "g726",    CODEC_TYPE_AUDIO,    CODEC_ID_ADPCM_G726,    sizeof(AVG726Context),    g726_init,    NULL,    g726_close,    g726_decode_frame,};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
曰韩精品一区二区| 国产日韩一级二级三级| 国产精品一二二区| 日韩激情视频网站| 亚洲免费资源在线播放| 国产欧美一区二区三区鸳鸯浴 | 日韩欧美国产精品一区| 国产成人亚洲综合a∨猫咪| 一区二区欧美在线观看| 欧美经典一区二区| 欧美激情中文不卡| 国产精品你懂的在线欣赏| 久久网站热最新地址| 日韩欧美国产麻豆| 精品剧情在线观看| 日韩精品一区二区三区四区| 欧美又粗又大又爽| 欧美在线免费观看视频| 色综合一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 国产凹凸在线观看一区二区| 国产盗摄一区二区| 99精品视频在线观看免费| 国产一区二区三区免费| 蜜臀久久99精品久久久久宅男| 亚洲国产精品久久久久婷婷884| 国产精品久久久久久久久晋中| 久久久精品免费网站| 日韩欧美一区电影| 精品88久久久久88久久久| 精品日韩在线观看| 欧美美女直播网站| 日韩精品一区二区三区在线播放 | av中文字幕在线不卡| 懂色av一区二区三区免费观看| 国产美女在线观看一区| 懂色av噜噜一区二区三区av| av不卡免费电影| 欧美偷拍一区二区| 日韩欧美一区二区久久婷婷| 久久只精品国产| 亚洲少妇屁股交4| 亚洲一区在线看| 老汉av免费一区二区三区| 国产精品综合一区二区三区| 91一区一区三区| 欧美日韩亚州综合| 国产网红主播福利一区二区| 亚洲欧洲综合另类| 久久草av在线| 一本大道久久a久久精品综合| 在线观看91av| 国产精品入口麻豆九色| 日日夜夜精品视频免费| 国产精品99久| 欧美精品777| 亚洲精品在线电影| 亚洲男人天堂一区| 美女视频黄久久| 欧美性视频一区二区三区| 久久久亚洲国产美女国产盗摄| 玉米视频成人免费看| 国产美女视频91| 久久综合精品国产一区二区三区| 自拍偷拍欧美激情| 国产一区二区三区综合| 欧美日韩亚洲国产综合| 国产精品国产三级国产普通话蜜臀| 午夜av电影一区| 91美女片黄在线观看| 国产亚洲人成网站| 精品亚洲aⅴ乱码一区二区三区| 日本高清成人免费播放| 欧美国产一区在线| 狠狠色综合日日| 91精品国产综合久久久久久久久久| 国产精品美女一区二区三区| 国内精品久久久久影院薰衣草 | caoporn国产精品| 欧美电影免费提供在线观看| 日韩电影在线观看一区| 欧美日韩一级大片网址| 肉色丝袜一区二区| 欧美日韩在线播放一区| 亚洲一区二区在线视频| 91免费国产在线| 日本一区二区三区在线观看| 国内精品免费**视频| 欧美一级xxx| 日韩1区2区3区| 欧美福利视频导航| 亚洲高清久久久| 欧美午夜一区二区三区| 亚洲午夜久久久久久久久电影网| 一本到不卡精品视频在线观看| 1000部国产精品成人观看| 99亚偷拍自图区亚洲| 亚洲欧美日韩久久| 色域天天综合网| 亚洲一区二区三区四区五区黄| 欧美专区日韩专区| 五月天丁香久久| 在线观看日韩一区| 亚洲国产精品尤物yw在线观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲国产高清不卡| 91啦中文在线观看| 午夜激情综合网| 日韩一区二区三区观看| 狠狠色狠狠色综合| 国产女人18毛片水真多成人如厕| 成人a免费在线看| 亚洲美女精品一区| 制服丝袜激情欧洲亚洲| 捆绑调教一区二区三区| 日韩精品一区二区三区四区| 99久久精品国产导航| 亚洲综合另类小说| 精品国产污网站| 成人黄页毛片网站| 亚洲动漫第一页| 久久影音资源网| 日本精品视频一区二区| 美女视频免费一区| 亚洲男同性恋视频| 久久色中文字幕| 色94色欧美sute亚洲13| 免费视频一区二区| 中文字幕日韩一区二区| 777色狠狠一区二区三区| 日韩精品福利网| 久久久影院官网| 国产精品系列在线播放| 亚洲视频免费看| 国产亚洲欧美日韩在线一区| 在线精品视频小说1| 国产精品一区二区三区99| 亚洲综合丝袜美腿| 中文字幕av一区 二区| 欧美三级电影在线看| 成人精品免费网站| 蜜桃久久久久久| 亚洲自拍偷拍综合| 国产欧美一区二区精品性色超碰| 欧美无砖砖区免费| 国产1区2区3区精品美女| 日韩高清不卡一区二区| 国产欧美日韩精品在线| 一本在线高清不卡dvd| 国产.欧美.日韩| 国产一区欧美二区| 日本不卡免费在线视频| 亚洲激情图片qvod| 国产精品久久久久久久裸模| 欧美不卡一二三| 在线成人免费视频| 色偷偷88欧美精品久久久| 国产伦精品一区二区三区视频青涩 | 国产在线播放一区三区四| 亚洲成人一区二区在线观看| 亚洲欧洲日韩在线| 欧美国产精品一区| 久久一区二区视频| 日韩丝袜情趣美女图片| 在线成人av网站| 欧美日韩黄色影视| 欧美精品久久天天躁| 日韩一区二区三| 久久久一区二区三区| 中文字幕av一区二区三区 | 色婷婷av一区二区三区gif | 欧美在线999| 7777精品伊人久久久大香线蕉经典版下载| 欧美日本高清视频在线观看| 91麻豆精品国产91久久久久 | 国产精品视频九色porn| 中文字幕亚洲成人| 天天综合天天综合色| 久久精品国产亚洲a| 国产成人精品一区二区三区四区 | 国产欧美一二三区| 亚洲美女视频在线观看| 免费观看在线综合色| 高清在线观看日韩| 欧美视频精品在线观看| 精品国产亚洲在线| 亚洲欧美视频在线观看| 免费成人在线视频观看| 成人免费黄色大片| 欧美精选一区二区| 国产女人水真多18毛片18精品视频 | 国产精品久久久久四虎| 石原莉奈在线亚洲二区| 高清日韩电视剧大全免费| 欧美美女激情18p| 国产精品乱人伦中文| 蜜桃av一区二区| 91亚洲精华国产精华精华液| 日韩视频免费直播| 一区二区三区在线视频观看|