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

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

?? codec_g72x.c

?? G.729 and G.723.1 codecs x86 (and x86_64) Linux and FreeBSD source code for Asterisk open source PBX
?? C
?? 第 1 頁 / 共 2 頁
字號:
            ast_log(LOG_WARNING, "Out of buffer space\n");            return -1;        }        frametype = *((unsigned char *)f->data + x) & (short)0x0003;        framesize = g723_frame_length(frametype);        apiG723Decode(state->coder, (void *)f->data + x, badframe, dst + pvt->samples);        pvt->samples += G723_SAMPLES;        pvt->datalen += 2*G723_SAMPLES;    }    return 0;}#endifstatic int lintog72x_framein(struct ast_trans_pvt *pvt, struct ast_frame *f){    struct g72x_coder_pvt *state = pvt->pvt;    memcpy(state->buf + pvt->samples, f->data, f->datalen);    pvt->samples += f->samples;    return 0;}#if G72X_9/* length != 10 can't happen but let it be here for reference */static int g729_frame_length(int frametype){    switch (frametype) {        case 0: return 0;  /* not transmited  */        case 1: return 2;  /* SID */        case 2: return 8;  /* 729d */        case 3: return 10; /* 729, 729a */        case 4: return 15; /* 729e */    }    return 0;}#endifstatic struct ast_frame *lintog72x_frameout(struct ast_trans_pvt *pvt){    struct g72x_coder_pvt *state = pvt->pvt;    int datalen = 0;    int samples = 0;#if G72X_9    int frametype;#endif    /* We can't work on anything less than a frame in size */    if (pvt->samples < G72X_SAMPLES)        return NULL;    while (pvt->samples >= G72X_SAMPLES) {#if G72X_9        apiG729Encode(state->coder, state->buf + samples, (unsigned char *)(pvt->outbuf + datalen), G729A_CODEC, &frametype);        datalen += g729_frame_length(frametype);        /* if (frametype == 1) break; if encoding with VAD enabled terminate the frame */#else        apiG723Encode(state->coder, state->buf + samples, g723_sendrate, (void *)(pvt->outbuf + datalen));        datalen += (g723_sendrate == G723_RATE_63) ? 24 : 20;#endif        samples += G72X_SAMPLES;        pvt->samples -= G72X_SAMPLES;    }    /* Move the data at the end of the buffer to the front */    if (pvt->samples)        memmove(state->buf, state->buf + samples, pvt->samples * 2);    return ast_trans_frameout(pvt, datalen, samples);}static void g72x_destroy(struct ast_trans_pvt *pvt){    int i;    struct g72x_coder_pvt *state = pvt->pvt;    ippsFree(state->coder);    ippsFree(state->scratch_mem);    /* output the sizes of frames passed to decoder */    if (option_verbose > 2 && frame_sizes != NULL) {        ast_verbose(VERBOSE_PREFIX_3 G72X_CODEC " frames\n");        ast_verbose(VERBOSE_PREFIX_3 "length: count\n");        for (i = 0; i <= DEBUG_MAX_FRAME_SIZE; ++i) {            if (frame_sizes[i] > 0)                ast_verbose(VERBOSE_PREFIX_3 "%6d: %d\n", i, frame_sizes[i]);        }    }}static struct ast_translator g72xtolin = {    .name = G72X_CODEC "tolin",#if G72X_CALLWEAVER    .src_format = G72X_AST_FORMAT,    .dst_format = AST_FORMAT_SLINEAR,#else    .srcfmt = G72X_AST_FORMAT,    .dstfmt = AST_FORMAT_SLINEAR,#endif    .newpvt = g72xtolin_new,    .framein = g72xtolin_framein,    .destroy = g72x_destroy,    .sample = g72xtolin_sample,#if G72X_CALLWEAVER    .src_rate = 8000,    .dst_rate = 8000#elif G72X_ASTERISK >= 14    .desc_size = sizeof(struct g72x_coder_pvt) - BUFFER_SAMPLES*2, /* buffer is not needed for g723/9 -> slin */    .buf_size = SLIN_FRAME_LEN*100, /* 1 second */    .native_plc = 1#endif};static struct ast_translator lintog72x = {    .name = "linto" G72X_CODEC,#if G72X_CALLWEAVER    .src_format = AST_FORMAT_SLINEAR,    .dst_format = G72X_AST_FORMAT,#else    .srcfmt = AST_FORMAT_SLINEAR,    .dstfmt = G72X_AST_FORMAT,#endif    .newpvt = lintog72x_new,    .framein = lintog72x_framein,    .frameout = lintog72x_frameout,    .destroy = g72x_destroy,    .sample = lintog72x_sample,#if G72X_CALLWEAVER    .src_rate = 8000,    .dst_rate = 8000#elif G72X_ASTERISK >= 14    .desc_size = sizeof(struct g72x_coder_pvt), /* buffer up-to 1 second of speech */#if G72X_9    .buf_size = G729_FRAME_LEN*100 /* 1 sec of g729 */#else    .buf_size = G723_FRAME_LEN*33 /* almost 1 sec of g723 at 6.3kbps */#endif#endif};#if G72X_3static void parse_config(void){#if G72X_ASTERISK >= 15    /* XXX struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 }; */    struct ast_flags config_flags = { 0 };    struct ast_config *cfg = ast_config_load("codecs.conf", config_flags);#else    struct ast_config *cfg = ast_config_load("codecs.conf");#endif    struct ast_variable *var;    int rate;    if (cfg == NULL)        return;    for (var = ast_variable_browse(cfg, "g723"); var; var = var->next) {        if (!strcasecmp(var->name, "sendrate")) {            rate = atoi(var->value);            if (rate == 53 || rate == 63) {                if (option_verbose > 2)                    ast_verbose(VERBOSE_PREFIX_3 "G.723.1 setting sendrate to %d\n", rate);                g723_sendrate = (rate == 63) ? G723_RATE_63 : G723_RATE_53;            } else {                ast_log(LOG_ERROR, "G.723.1 sendrate must be 53 or 63\n");            }        } else {            ast_log(LOG_ERROR, "G.723.1 has only one option \"sendrate=<53|63>\" for 5.3 and 6.3Kbps respectivelly\n");        }    }    ast_config_destroy(cfg);}#endif#if G72X_ASTERISK >= 16static char* g72x_toggle_debug(int fd)#elsestatic int g72x_toggle_debug(int fd)#define CLI_SUCCESS RESULT_SUCCESS#define CLI_FAILURE RESULT_FAILURE#endif{    struct timespec delay = { 0, 100000000 }; /* 100ms */    void *tmp;    /* no locking intentionally */    if (frame_sizes != NULL) {        tmp = frame_sizes;        frame_sizes = NULL;        nanosleep(&delay, NULL); /* hope all users are gone */        ast_free(tmp);        ast_cli(fd, G72X_CODEC " debug disabled\n");    } else {        frame_sizes = (int*)ast_malloc((DEBUG_MAX_FRAME_SIZE+1)*sizeof(int));        if (frame_sizes == NULL)            return CLI_FAILURE;        memset(frame_sizes, 0, (DEBUG_MAX_FRAME_SIZE+1)*sizeof(int));        ast_cli(fd, G72X_CODEC " debug enabled\n");    }    return CLI_SUCCESS;}static char g72x_toggle_debug_desc[] = "Toggle " G72X_CODEC " codec frame size statistics";static char g72x_usage[] =    "Usage: " G72X_CODEC " debug\n"    "       Toggle " G72X_CODEC " codec frame size statistics\n";#if G72X_ASTERISK >= 16static char *handle_cli_g72x_toggle_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a){    switch (cmd) {    case CLI_INIT:        e->command = G72X_CODEC " debug";        e->usage = g72x_usage;        return NULL;    case CLI_GENERATE:        return NULL;    }    if (a->argc != 2)        return CLI_SHOWUSAGE;    g72x_toggle_debug(a->fd);    return CLI_SUCCESS;}static struct ast_cli_entry cli_g72x = AST_CLI_DEFINE(handle_cli_g72x_toggle_debug, g72x_toggle_debug_desc);#else /* 1.4 or Callweaver */static int handle_cli_g72x_toggle_debug(int fd, int argc, char **argv){    if (argc != 2)        return RESULT_SHOWUSAGE;    return g72x_toggle_debug(fd);}static struct ast_cli_entry cli_g72x = {    { G72X_CODEC, "debug", NULL }, handle_cli_g72x_toggle_debug,    g72x_toggle_debug_desc, g72x_usage, NULL};#endifstatic int load_module(void){    int res;#ifdef IPPCORE_STATIC_INIT    ippStaticInit();#endif#if G72X_3    parse_config();#endif#if G72X_9    apiG729Decoder_Alloc(G729A_CODEC, &decoder_size);    apiG729Encoder_Alloc(G729A_CODEC, &encoder_size);    apiG729Codec_ScratchMemoryAlloc(&coder_size_scratch);#else    apiG723Decoder_Alloc(&decoder_size);    apiG723Encoder_Alloc(&encoder_size);    apiG723Codec_ScratchMemoryAlloc(&coder_size_scratch);#endif    res = ast_register_translator(&g72xtolin);    if (!res)        res = ast_register_translator(&lintog72x);    else        ast_unregister_translator(&g72xtolin);    ast_cli_register(&cli_g72x);    return res;}static int unload_module(void){    int res;    res = ast_unregister_translator(&lintog72x);    res |= ast_unregister_translator(&g72xtolin);    ast_cli_unregister(&cli_g72x);    return res;}ASTERISK_FILE_VERSION(__FILE__, "1.0")#if G72X_ASTERISK >= 14/* AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, G72X_CODEC " Coder/Decoder"); */AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, G72X_DESC, .load = load_module, .unload = unload_module, .buildopt_sum = "");#else /* Asterisk 1.2 or Callweaver */static int localusecnt = 0;static char *tdesc = G72X_DESC;char *description(void) {        return tdesc;}int usecount(void) {        int res;        STANDARD_USECOUNT(res);        return res;}#if G72X_ASTERISKchar *key() {        return ASTERISK_GPL_KEY;}#endif#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电影一区二区三区| 国产午夜久久久久| 日本一区二区三区电影| 亚洲成人av福利| 成人午夜大片免费观看| 91精品国产91久久久久久最新毛片 | 欧美日韩aaaaa| 亚洲国产精品99久久久久久久久 | 久久久久97国产精华液好用吗| 玉米视频成人免费看| 国产黑丝在线一区二区三区| 欧美日韩一级黄| 国产精品传媒在线| 国内成人免费视频| 在线电影一区二区三区| 亚洲精品v日韩精品| 成人免费观看av| 国产亚洲精品精华液| 日韩电影在线一区二区三区| 91行情网站电视在线观看高清版| 国产欧美一区二区精品性色| 精品在线免费观看| 日韩欧美成人午夜| 日本少妇一区二区| 欧美日韩成人综合| 亚洲国产成人va在线观看天堂| 色哟哟国产精品| 亚洲精品欧美激情| 91免费看`日韩一区二区| 国产精品久久看| 91麻豆蜜桃一区二区三区| 国产精品久久三| 99国产精品久久久久久久久久 | zzijzzij亚洲日本少妇熟睡| 久久色视频免费观看| 激情综合网av| 亚洲精品在线观| 国产精品一区三区| 国产清纯在线一区二区www| 国产精一区二区三区| 久久久99久久| 91影院在线免费观看| 亚洲视频免费看| 欧美日韩综合一区| 日韩成人免费电影| 欧美不卡在线视频| 国产91丝袜在线18| 亚洲免费在线观看视频| 欧美性感一类影片在线播放| 午夜精品在线视频一区| 欧美xxxx老人做受| 丁香五精品蜜臀久久久久99网站| 国产精品国产三级国产普通话三级 | 国产精品久久久久久久岛一牛影视 | 东方欧美亚洲色图在线| 国产精品久久久久久亚洲伦| 日本乱人伦aⅴ精品| 日韩电影在线观看一区| 欧美精品一区二区三| 99re在线精品| 日韩成人一区二区三区在线观看| 精品国产乱码久久久久久闺蜜| 成人一二三区视频| 性欧美大战久久久久久久久| 日韩欧美国产wwwww| aaa亚洲精品| 蜜桃视频在线观看一区| 国产精品久久久久久久久快鸭| 精品视频在线免费观看| 国产大陆亚洲精品国产| 亚洲一区二区视频在线| 精品国产91乱码一区二区三区| 成人av网址在线| 日韩av一区二区在线影视| 樱桃视频在线观看一区| 日韩一二三区不卡| 97se亚洲国产综合自在线| 久久99精品久久久久久国产越南 | 亚洲第一二三四区| 国产亚洲一区字幕| 欧美精品一卡两卡| 99精品热视频| 国产一区二区三区高清播放| 亚洲福利视频一区| 亚洲视频你懂的| 久久久久久9999| 日韩一区二区三区精品视频| 91亚洲永久精品| 国产iv一区二区三区| 另类小说视频一区二区| 亚洲线精品一区二区三区| 欧美激情一区二区| 精品久久人人做人人爱| 欧美丰满一区二区免费视频 | 国产一区二区看久久| 日韩和的一区二区| 樱花草国产18久久久久| 国产精品久久久久aaaa樱花| 久久在线观看免费| 欧美大度的电影原声| 欧美久久久久久久久久| 在线亚洲欧美专区二区| 97国产精品videossex| 不卡的av在线播放| 国产激情91久久精品导航| 国产一区在线精品| 激情久久久久久久久久久久久久久久| 午夜国产精品影院在线观看| 亚洲影视资源网| 亚洲自拍偷拍麻豆| 亚洲一区在线电影| 亚洲大片在线观看| 亚洲国产裸拍裸体视频在线观看乱了 | 9i在线看片成人免费| 国产一区二区免费视频| 狠狠色丁香婷婷综合久久片| 捆绑变态av一区二区三区| 精品在线一区二区三区| 国产一区二区三区久久久| 国产精品一色哟哟哟| 成人性生交大片免费看中文网站| 国产精品一区二区黑丝| 国产不卡视频在线播放| 不卡一区中文字幕| 91免费版在线| 欧美午夜精品电影| 91 com成人网| 精品久久久久香蕉网| 2024国产精品视频| 国产精品视频免费看| 亚洲日本免费电影| 亚洲成av人片| 久久99久久久欧美国产| 国产激情视频一区二区三区欧美 | 国内精品免费**视频| 国产大陆a不卡| 91在线视频网址| 欧美日韩在线直播| 欧美一卡二卡三卡| 欧美激情资源网| 亚洲视频香蕉人妖| 视频一区二区不卡| 国产精品一区二区你懂的| 99久久精品免费精品国产| 精品污污网站免费看| 精品国产乱码久久久久久影片| 中文字幕成人网| 亚洲成人精品一区| 国产精品538一区二区在线| 91亚洲精品久久久蜜桃| 欧美一区二区啪啪| 中文字幕精品一区二区三区精品| 一区二区三区四区av| 精品亚洲欧美一区| 一本久道久久综合中文字幕| 91精品国产高清一区二区三区| 国产视频一区二区在线观看| 亚洲电影激情视频网站| 国产精品亚洲一区二区三区妖精 | 91网上在线视频| 日韩欧美一区二区久久婷婷| 中文子幕无线码一区tr| 亚洲成人你懂的| www.av精品| 久久综合九色综合欧美98| 亚洲自拍偷拍欧美| 成人性视频免费网站| 日韩欧美国产系列| 亚洲制服丝袜在线| 国产91综合网| 日韩欧美不卡在线观看视频| 亚洲国产中文字幕在线视频综合| 国产a视频精品免费观看| 538prom精品视频线放| 亚洲免费在线观看| 国产99精品国产| 欧美mv和日韩mv国产网站| 亚洲国产精品久久不卡毛片 | 欧美亚洲动漫另类| 国产精品色在线观看| 国产在线精品视频| 这里是久久伊人| 亚洲一区二区三区免费视频| 成人av在线资源| 国产视频911| 免费欧美高清视频| 91精品欧美久久久久久动漫 | 久久99久久精品| 91麻豆精品国产| 亚州成人在线电影| 欧美日韩亚洲高清一区二区| 一区二区三区在线免费视频| 国产91色综合久久免费分享| 欧美精品一区二区三区很污很色的 | 国产高清精品在线| 久久久久久亚洲综合| 国内成人自拍视频| 国产日本欧美一区二区| 国产电影精品久久禁18| 久久精品一区二区三区四区|