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

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

?? fir.h

?? 傳真通信V27 V29 V17 T38解調與解碼
?? H
字號:
/* * SpanDSP - a series of DSP components for telephony * * fir.h - General telephony FIR routines * * Written by Steve Underwood <steveu@coppice.org> * * Copyright (C) 2002 Steve Underwood * * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2, as * published by the Free Software Foundation. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: fir.h,v 1.11 2007/04/08 08:16:17 steveu Exp $ *//*! \page fir_page FIR filtering\section fir_page_sec_1 What does it do????.\section fir_page_sec_2 How does it work????.*/#if !defined(_SPANDSP_FIR_H_)#define _SPANDSP_FIR_H_#if defined(USE_MMX)  ||  defined(USE_SSE2)#include "mmx.h"#endif/*!    16 bit integer FIR descriptor. This defines the working state for a single    instance of an FIR filter using 16 bit integer coefficients.*/typedef struct{    int taps;    int curr_pos;    const int16_t *coeffs;    int16_t *history;} fir16_state_t;/*!    32 bit integer FIR descriptor. This defines the working state for a single    instance of an FIR filter using 32 bit integer coefficients, and filtering    16 bit integer data.*/typedef struct{    int taps;    int curr_pos;    const int32_t *coeffs;    int16_t *history;} fir32_state_t;/*!    Floating point FIR descriptor. This defines the working state for a single    instance of an FIR filter using floating point coefficients and data.*/typedef struct{    int taps;    int curr_pos;    const float *coeffs;    float *history;} fir_float_state_t;#if defined(__cplusplus)extern "C"{#endifstatic __inline__ const int16_t *fir16_create(fir16_state_t *fir,                                              const int16_t *coeffs,                                              int taps){    fir->taps = taps;    fir->curr_pos = taps - 1;    fir->coeffs = coeffs;#if defined(USE_MMX)  ||  defined(USE_SSE2)    if ((fir->history = malloc(2*taps*sizeof(int16_t))))        memset(fir->history, 0, 2*taps*sizeof(int16_t));#else    if ((fir->history = (int16_t *) malloc(taps*sizeof(int16_t))))        memset(fir->history, 0, taps*sizeof(int16_t));#endif    return fir->history;}/*- End of function --------------------------------------------------------*/static __inline__ void fir16_flush(fir16_state_t *fir){#if defined(USE_MMX)  ||  defined(USE_SSE2)    memset(fir->history, 0, 2*fir->taps*sizeof(int16_t));#else    memset(fir->history, 0, fir->taps*sizeof(int16_t));#endif}/*- End of function --------------------------------------------------------*/static __inline__ void fir16_free(fir16_state_t *fir){    free(fir->history);}/*- End of function --------------------------------------------------------*/static __inline__ int16_t fir16(fir16_state_t *fir, int16_t sample){    int i;    int32_t y;#if defined(USE_MMX)    mmx_t *mmx_coeffs;    mmx_t *mmx_hist;    fir->history[fir->curr_pos] = sample;    fir->history[fir->curr_pos + fir->taps] = sample;    mmx_coeffs = (mmx_t *) fir->coeffs;    mmx_hist = (mmx_t *) &fir->history[fir->curr_pos];    i = fir->taps;    pxor_r2r(mm4, mm4);    /* 8 samples per iteration, so the filter must be a multiple of 8 long. */    while (i > 0)    {        movq_m2r(mmx_coeffs[0], mm0);        movq_m2r(mmx_coeffs[1], mm2);        movq_m2r(mmx_hist[0], mm1);        movq_m2r(mmx_hist[1], mm3);        mmx_coeffs += 2;        mmx_hist += 2;        pmaddwd_r2r(mm1, mm0);        pmaddwd_r2r(mm3, mm2);        paddd_r2r(mm0, mm4);        paddd_r2r(mm2, mm4);        i -= 8;    }    movq_r2r(mm4, mm0);    psrlq_i2r(32, mm0);    paddd_r2r(mm0, mm4);    movd_r2m(mm4, y);    emms();#elif defined(USE_SSE2)    xmm_t *xmm_coeffs;    xmm_t *xmm_hist;    fir->history[fir->curr_pos] = sample;    fir->history[fir->curr_pos + fir->taps] = sample;    xmm_coeffs = (xmm_t *) fir->coeffs;    xmm_hist = (xmm_t *) &fir->history[fir->curr_pos];    i = fir->taps;    pxor_r2r(xmm4, xmm4);    /* 16 samples per iteration, so the filter must be a multiple of 16 long. */    while (i > 0)    {        movdqu_m2r(xmm_coeffs[0], xmm0);        movdqu_m2r(xmm_coeffs[1], xmm2);        movdqu_m2r(xmm_hist[0], xmm1);        movdqu_m2r(xmm_hist[1], xmm3);        xmm_coeffs += 2;        xmm_hist += 2;        pmaddwd_r2r(xmm1, xmm0);        pmaddwd_r2r(xmm3, xmm2);        paddd_r2r(xmm0, xmm4);        paddd_r2r(xmm2, xmm4);        i -= 16;    }    movdqa_r2r(xmm4, xmm0);    psrldq_i2r(8, xmm0);    paddd_r2r(xmm0, xmm4);    movdqa_r2r(xmm4, xmm0);    psrldq_i2r(4, xmm0);    paddd_r2r(xmm0, xmm4);    movd_r2m(xmm4, y);#else    int offset1;    int offset2;    fir->history[fir->curr_pos] = sample;    offset2 = fir->curr_pos;    offset1 = fir->taps - offset2;    y = 0;    for (i = fir->taps - 1;  i >= offset1;  i--)        y += fir->coeffs[i]*fir->history[i - offset1];    for (  ;  i >= 0;  i--)        y += fir->coeffs[i]*fir->history[i + offset2];#endif    if (fir->curr_pos <= 0)    	fir->curr_pos = fir->taps;    fir->curr_pos--;    return (int16_t) (y >> 15);}/*- End of function --------------------------------------------------------*/static __inline__ const int16_t *fir32_create(fir32_state_t *fir,                                              const int32_t *coeffs,                                              int taps){    fir->taps = taps;    fir->curr_pos = taps - 1;    fir->coeffs = coeffs;    fir->history = (int16_t *) malloc(taps*sizeof(int16_t));    if (fir->history)    	memset(fir->history, '\0', taps*sizeof(int16_t));    return fir->history;}/*- End of function --------------------------------------------------------*/static __inline__ void fir32_flush(fir32_state_t *fir){    memset(fir->history, 0, fir->taps*sizeof(int16_t));}/*- End of function --------------------------------------------------------*/static __inline__ void fir32_free(fir32_state_t *fir){    free(fir->history);}/*- End of function --------------------------------------------------------*/static __inline__ int16_t fir32(fir32_state_t *fir, int16_t sample){    int i;    int32_t y;    int offset1;    int offset2;    fir->history[fir->curr_pos] = sample;    offset2 = fir->curr_pos;    offset1 = fir->taps - offset2;    y = 0;    for (i = fir->taps - 1;  i >= offset1;  i--)        y += fir->coeffs[i]*fir->history[i - offset1];    for (  ;  i >= 0;  i--)        y += fir->coeffs[i]*fir->history[i + offset2];    if (fir->curr_pos <= 0)    	fir->curr_pos = fir->taps;    fir->curr_pos--;    return (int16_t) (y >> 15);}/*- End of function --------------------------------------------------------*/static __inline__ const float *fir_float_create(fir_float_state_t *fir,                                                const float *coeffs,    	    	    	                        int taps){    fir->taps = taps;    fir->curr_pos = taps - 1;    fir->coeffs = coeffs;    fir->history = (float *) malloc(taps*sizeof(float));    if (fir->history)        memset(fir->history, '\0', taps*sizeof(float));    return fir->history;}/*- End of function --------------------------------------------------------*/    static __inline__ void fir_float_free(fir_float_state_t *fir){    free(fir->history);}/*- End of function --------------------------------------------------------*/static __inline__ int16_t fir_float(fir_float_state_t *fir, int16_t sample){    int i;    float y;    int offset1;    int offset2;    fir->history[fir->curr_pos] = sample;    offset2 = fir->curr_pos;    offset1 = fir->taps - offset2;    y = 0;    for (i = fir->taps - 1;  i >= offset1;  i--)        y += fir->coeffs[i]*fir->history[i - offset1];    for (  ;  i >= 0;  i--)        y += fir->coeffs[i]*fir->history[i + offset2];    if (fir->curr_pos <= 0)    	fir->curr_pos = fir->taps;    fir->curr_pos--;    return  (int16_t) y;}/*- End of function --------------------------------------------------------*/#if defined(__cplusplus)}#endif#endif/*- End of file ------------------------------------------------------------*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产乱| 欧美一区二区三区在线视频| 91精品福利视频| 风流少妇一区二区| 免费成人av在线| 夜夜揉揉日日人人青青一国产精品| 国产性色一区二区| 2024国产精品视频| 精品国产乱码久久久久久蜜臀| 91精品国产福利在线观看| 亚洲人亚洲人成电影网站色| 宅男噜噜噜66一区二区66| 日韩午夜激情av| 久久新电视剧免费观看| 午夜国产不卡在线观看视频| 麻豆精品新av中文字幕| 日韩视频免费直播| 日韩一区二区三区av| 综合久久国产九一剧情麻豆| 国产精品进线69影院| 3d动漫精品啪啪1区2区免费| 最新欧美精品一区二区三区| 亚洲午夜久久久久久久久电影院 | 亚洲国产va精品久久久不卡综合| caoporen国产精品视频| 色又黄又爽网站www久久| 欧美色倩网站大全免费| 欧美一区二区三区四区高清| 午夜精品成人在线| 欧美日韩中字一区| 日精品一区二区三区| 狠狠色狠狠色合久久伊人| 国产91在线观看丝袜| 国产三级欧美三级日产三级99 | 欧美日韩免费视频| 亚洲地区一二三色| 成人av在线看| 日韩一区二区三区免费观看| 免费观看91视频大全| 精品国产电影一区二区| 国内国产精品久久| 中文字幕国产一区| 九九**精品视频免费播放| 欧美天堂亚洲电影院在线播放| 国产女人18毛片水真多成人如厕 | 另类中文字幕网| 在线一区二区三区做爰视频网站| 亚洲三级电影网站| 欧美乱熟臀69xxxxxx| 亚洲私人影院在线观看| 91黄色在线观看| 秋霞电影一区二区| 中文字幕欧美三区| 91九色02白丝porn| 蓝色福利精品导航| 日本一区二区三区视频视频| 91久久精品一区二区二区| 欧美aaaaaa午夜精品| 国产免费观看久久| 在线观看不卡视频| 亚洲三级在线免费| 欧美一区二区三区男人的天堂| 国产真实乱子伦精品视频| 中文字幕在线不卡视频| 51精品国自产在线| 波多野结衣精品在线| 日韩制服丝袜先锋影音| 国产亚洲精品超碰| 4438x成人网最大色成网站| 国产成人免费视频精品含羞草妖精| 日韩三级免费观看| 成人av电影免费观看| 日韩av网站免费在线| 欧美一级片在线观看| 成人免费视频app| 中文在线资源观看网站视频免费不卡| 91麻豆成人久久精品二区三区| 亚洲欧洲色图综合| 欧美一二三区精品| 在线欧美小视频| 不卡av免费在线观看| 久久av资源网| 日本中文一区二区三区| 亚洲视频免费看| 久久影院视频免费| 制服丝袜亚洲色图| 91精彩视频在线观看| 波多野结衣中文一区| 国产美女一区二区三区| 成人欧美一区二区三区黑人麻豆 | 欧美三级在线播放| 成人h动漫精品一区二区| 精品在线观看免费| 午夜精品免费在线观看| 依依成人综合视频| 欧美一区2区视频在线观看| 99精品热视频| 日韩成人精品在线| 亚洲在线成人精品| 精品久久一二三区| 成人动漫视频在线| 国产毛片一区二区| 国产一区 二区| 国内偷窥港台综合视频在线播放| 日韩精品视频网站| 亚洲国产日韩精品| 亚洲一区二区三区四区在线观看| 亚洲欧美日韩电影| 亚洲精品国产a久久久久久| 综合久久久久久| 亚洲免费在线观看视频| 夜夜爽夜夜爽精品视频| 亚洲电影视频在线| 亚洲成人免费av| 青青青爽久久午夜综合久久午夜| 亚洲小少妇裸体bbw| 日韩精品1区2区3区| 日日欢夜夜爽一区| 免费欧美在线视频| 激情小说亚洲一区| 国产精品99久久久久| 亚洲第一二三四区| 首页国产欧美久久| 麻豆91在线观看| 国产精品伊人色| 不卡视频免费播放| 91精品1区2区| 欧美一级理论片| 久久精品亚洲国产奇米99| 国产精品萝li| 久久久久久亚洲综合影院红桃| 欧美羞羞免费网站| 欧美一区二区三区视频在线| 久久日一线二线三线suv| 国产精品入口麻豆九色| 亚洲国产精品影院| 麻豆精品久久精品色综合| 国产成人精品免费网站| 91亚洲国产成人精品一区二三| 欧美曰成人黄网| 久久无码av三级| 亚洲视频在线一区观看| 免费的成人av| av不卡在线播放| 欧美一区二区二区| 1024国产精品| 美女脱光内衣内裤视频久久影院| 国产成人在线视频网站| 欧美三级中文字幕| 亚洲国产精品成人久久综合一区| 一区二区理论电影在线观看| 国产真实乱子伦精品视频| 在线观看日韩国产| 欧美xxxxx牲另类人与| 一区二区三区精密机械公司| 久久91精品久久久久久秒播| 色诱视频网站一区| 国产亚洲短视频| 天天影视涩香欲综合网| jlzzjlzz欧美大全| 日韩欧美国产一区在线观看| 日韩女优毛片在线| 亚洲精品免费在线观看| 国产精品主播直播| 欧美一区二区三区啪啪| 亚洲精品国产一区二区精华液| 久久不见久久见免费视频7| 在线视频欧美精品| 国产精品剧情在线亚洲| 久久99精品久久久久久动态图| 欧美性生活一区| 一区二区中文视频| 国产毛片精品视频| 日韩视频在线永久播放| 午夜在线成人av| 91久久精品一区二区三| 国产精品人妖ts系列视频| 国产一区二区三区四区五区美女 | 蜜臀av性久久久久蜜臀aⅴ流畅| 91一区在线观看| 久久精品无码一区二区三区| 久久精品国产99国产精品| 欧美精品视频www在线观看| 亚洲人xxxx| av一区二区久久| 国产精品理伦片| 国产aⅴ精品一区二区三区色成熟| 欧美一级国产精品| 日本成人在线看| 精品视频1区2区3区| 亚洲综合在线观看视频| 91免费视频网| 1024成人网| 日本韩国欧美三级| 亚洲精品国产高清久久伦理二区| 99re热视频精品| 亚洲色图一区二区| 色国产综合视频| 亚洲一区二区在线观看视频 | 久久久久久久久99精品|