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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? filters_sse.h

?? 語音濾波源代碼
?? H
字號:
/* Copyright (C) 2002 Jean-Marc Valin *//**   @file filters_sse.h   @brief Various analysis/synthesis filters (SSE version)*//*   Redistribution and use in source and binary forms, with or without   modification, are permitted provided that the following conditions   are met:      - Redistributions of source code must retain the above copyright   notice, this list of conditions and the following disclaimer.      - Redistributions in binary form must reproduce the above copyright   notice, this list of conditions and the following disclaimer in the   documentation and/or other materials provided with the distribution.      - Neither the name of the Xiph.org Foundation nor the names of its   contributors may be used to endorse or promote products derived from   this software without specific prior written permission.      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/#include <xmmintrin.h>void filter_mem2_10(const float *x, const float *_num, const float *_den, float *y, int N, int ord, float *_mem){   __m128 num[3], den[3], mem[3];   int i;   /* Copy numerator, denominator and memory to aligned xmm */   for (i=0;i<2;i++)   {      mem[i] = _mm_loadu_ps(_mem+4*i);      num[i] = _mm_loadu_ps(_num+4*i);      den[i] = _mm_loadu_ps(_den+4*i);   }   mem[2] = _mm_setr_ps(_mem[8], _mem[9], 0, 0);   num[2] = _mm_setr_ps(_num[8], _num[9], 0, 0);   den[2] = _mm_setr_ps(_den[8], _den[9], 0, 0);      for (i=0;i<N;i++)   {      __m128 xx;      __m128 yy;      /* Compute next filter result */      xx = _mm_load_ps1(x+i);      yy = _mm_add_ss(xx, mem[0]);      _mm_store_ss(y+i, yy);      yy = _mm_shuffle_ps(yy, yy, 0);            /* Update memory */      mem[0] = _mm_move_ss(mem[0], mem[1]);      mem[0] = _mm_shuffle_ps(mem[0], mem[0], 0x39);      mem[0] = _mm_add_ps(mem[0], _mm_mul_ps(xx, num[0]));      mem[0] = _mm_sub_ps(mem[0], _mm_mul_ps(yy, den[0]));      mem[1] = _mm_move_ss(mem[1], mem[2]);      mem[1] = _mm_shuffle_ps(mem[1], mem[1], 0x39);      mem[1] = _mm_add_ps(mem[1], _mm_mul_ps(xx, num[1]));      mem[1] = _mm_sub_ps(mem[1], _mm_mul_ps(yy, den[1]));      mem[2] = _mm_shuffle_ps(mem[2], mem[2], 0xfd);      mem[2] = _mm_add_ps(mem[2], _mm_mul_ps(xx, num[2]));      mem[2] = _mm_sub_ps(mem[2], _mm_mul_ps(yy, den[2]));   }   /* Put memory back in its place */   _mm_storeu_ps(_mem, mem[0]);   _mm_storeu_ps(_mem+4, mem[1]);   _mm_store_ss(_mem+8, mem[2]);   mem[2] = _mm_shuffle_ps(mem[2], mem[2], 0x55);   _mm_store_ss(_mem+9, mem[2]);}void filter_mem2_8(const float *x, const float *_num, const float *_den, float *y, int N, int ord, float *_mem){   __m128 num[2], den[2], mem[2];   int i;   /* Copy numerator, denominator and memory to aligned xmm */   for (i=0;i<2;i++)   {      mem[i] = _mm_loadu_ps(_mem+4*i);      num[i] = _mm_loadu_ps(_num+4*i);      den[i] = _mm_loadu_ps(_den+4*i);   }      for (i=0;i<N;i++)   {      __m128 xx;      __m128 yy;      /* Compute next filter result */      xx = _mm_load_ps1(x+i);      yy = _mm_add_ss(xx, mem[0]);      _mm_store_ss(y+i, yy);      yy = _mm_shuffle_ps(yy, yy, 0);            /* Update memory */      mem[0] = _mm_move_ss(mem[0], mem[1]);      mem[0] = _mm_shuffle_ps(mem[0], mem[0], 0x39);      mem[0] = _mm_add_ps(mem[0], _mm_mul_ps(xx, num[0]));      mem[0] = _mm_sub_ps(mem[0], _mm_mul_ps(yy, den[0]));      mem[1] = _mm_sub_ss(mem[1], mem[1]);      mem[1] = _mm_shuffle_ps(mem[1], mem[1], 0x39);      mem[1] = _mm_add_ps(mem[1], _mm_mul_ps(xx, num[1]));      mem[1] = _mm_sub_ps(mem[1], _mm_mul_ps(yy, den[1]));   }   /* Put memory back in its place */   _mm_storeu_ps(_mem, mem[0]);   _mm_storeu_ps(_mem+4, mem[1]);}#define OVERRIDE_FILTER_MEM2void filter_mem2(const float *x, const float *_num, const float *_den, float *y, int N, int ord, float *_mem){   if(ord==10)      filter_mem2_10(x, _num, _den, y, N, ord, _mem);   else if (ord==8)      filter_mem2_8(x, _num, _den, y, N, ord, _mem);}void iir_mem2_10(const float *x, const float *_den, float *y, int N, int ord, float *_mem){   __m128 den[3], mem[3];   int i;   /* Copy numerator, denominator and memory to aligned xmm */   for (i=0;i<2;i++)   {      mem[i] = _mm_loadu_ps(_mem+4*i);      den[i] = _mm_loadu_ps(_den+4*i);   }   mem[2] = _mm_setr_ps(_mem[8], _mem[9], 0, 0);   den[2] = _mm_setr_ps(_den[8], _den[9], 0, 0);      for (i=0;i<N;i++)   {      __m128 xx;      __m128 yy;      /* Compute next filter result */      xx = _mm_load_ps1(x+i);      yy = _mm_add_ss(xx, mem[0]);      _mm_store_ss(y+i, yy);      yy = _mm_shuffle_ps(yy, yy, 0);            /* Update memory */      mem[0] = _mm_move_ss(mem[0], mem[1]);      mem[0] = _mm_shuffle_ps(mem[0], mem[0], 0x39);      mem[0] = _mm_sub_ps(mem[0], _mm_mul_ps(yy, den[0]));      mem[1] = _mm_move_ss(mem[1], mem[2]);      mem[1] = _mm_shuffle_ps(mem[1], mem[1], 0x39);      mem[1] = _mm_sub_ps(mem[1], _mm_mul_ps(yy, den[1]));      mem[2] = _mm_shuffle_ps(mem[2], mem[2], 0xfd);      mem[2] = _mm_sub_ps(mem[2], _mm_mul_ps(yy, den[2]));   }   /* Put memory back in its place */   _mm_storeu_ps(_mem, mem[0]);   _mm_storeu_ps(_mem+4, mem[1]);   _mm_store_ss(_mem+8, mem[2]);   mem[2] = _mm_shuffle_ps(mem[2], mem[2], 0x55);   _mm_store_ss(_mem+9, mem[2]);}void iir_mem2_8(const float *x, const float *_den, float *y, int N, int ord, float *_mem){   __m128 den[2], mem[2];   int i;   /* Copy numerator, denominator and memory to aligned xmm */   for (i=0;i<2;i++)   {      mem[i] = _mm_loadu_ps(_mem+4*i);      den[i] = _mm_loadu_ps(_den+4*i);   }      for (i=0;i<N;i++)   {      __m128 xx;      __m128 yy;      /* Compute next filter result */      xx = _mm_load_ps1(x+i);      yy = _mm_add_ss(xx, mem[0]);      _mm_store_ss(y+i, yy);      yy = _mm_shuffle_ps(yy, yy, 0);            /* Update memory */      mem[0] = _mm_move_ss(mem[0], mem[1]);      mem[0] = _mm_shuffle_ps(mem[0], mem[0], 0x39);      mem[0] = _mm_sub_ps(mem[0], _mm_mul_ps(yy, den[0]));      mem[1] = _mm_sub_ss(mem[1], mem[1]);      mem[1] = _mm_shuffle_ps(mem[1], mem[1], 0x39);      mem[1] = _mm_sub_ps(mem[1], _mm_mul_ps(yy, den[1]));   }   /* Put memory back in its place */   _mm_storeu_ps(_mem, mem[0]);   _mm_storeu_ps(_mem+4, mem[1]);}#define OVERRIDE_IIR_MEM2void iir_mem2(const float *x, const float *_den, float *y, int N, int ord, float *_mem){   if(ord==10)      iir_mem2_10(x, _den, y, N, ord, _mem);   else if (ord==8)      iir_mem2_8(x, _den, y, N, ord, _mem);}void fir_mem2_10(const float *x, const float *_num, float *y, int N, int ord, float *_mem){   __m128 num[3], mem[3];   int i;   /* Copy numerator, denominator and memory to aligned xmm */   for (i=0;i<2;i++)   {      mem[i] = _mm_loadu_ps(_mem+4*i);      num[i] = _mm_loadu_ps(_num+4*i);   }   mem[2] = _mm_setr_ps(_mem[8], _mem[9], 0, 0);   num[2] = _mm_setr_ps(_num[8], _num[9], 0, 0);      for (i=0;i<N;i++)   {      __m128 xx;      __m128 yy;      /* Compute next filter result */      xx = _mm_load_ps1(x+i);      yy = _mm_add_ss(xx, mem[0]);      _mm_store_ss(y+i, yy);      yy = _mm_shuffle_ps(yy, yy, 0);            /* Update memory */      mem[0] = _mm_move_ss(mem[0], mem[1]);      mem[0] = _mm_shuffle_ps(mem[0], mem[0], 0x39);      mem[0] = _mm_add_ps(mem[0], _mm_mul_ps(xx, num[0]));      mem[1] = _mm_move_ss(mem[1], mem[2]);      mem[1] = _mm_shuffle_ps(mem[1], mem[1], 0x39);      mem[1] = _mm_add_ps(mem[1], _mm_mul_ps(xx, num[1]));      mem[2] = _mm_shuffle_ps(mem[2], mem[2], 0xfd);      mem[2] = _mm_add_ps(mem[2], _mm_mul_ps(xx, num[2]));   }   /* Put memory back in its place */   _mm_storeu_ps(_mem, mem[0]);   _mm_storeu_ps(_mem+4, mem[1]);   _mm_store_ss(_mem+8, mem[2]);   mem[2] = _mm_shuffle_ps(mem[2], mem[2], 0x55);   _mm_store_ss(_mem+9, mem[2]);}void fir_mem2_8(const float *x, const float *_num, float *y, int N, int ord, float *_mem){   __m128 num[2], mem[2];   int i;   /* Copy numerator, denominator and memory to aligned xmm */   for (i=0;i<2;i++)   {      mem[i] = _mm_loadu_ps(_mem+4*i);      num[i] = _mm_loadu_ps(_num+4*i);   }      for (i=0;i<N;i++)   {      __m128 xx;      __m128 yy;      /* Compute next filter result */      xx = _mm_load_ps1(x+i);      yy = _mm_add_ss(xx, mem[0]);      _mm_store_ss(y+i, yy);      yy = _mm_shuffle_ps(yy, yy, 0);            /* Update memory */      mem[0] = _mm_move_ss(mem[0], mem[1]);      mem[0] = _mm_shuffle_ps(mem[0], mem[0], 0x39);      mem[0] = _mm_add_ps(mem[0], _mm_mul_ps(xx, num[0]));      mem[1] = _mm_sub_ss(mem[1], mem[1]);      mem[1] = _mm_shuffle_ps(mem[1], mem[1], 0x39);      mem[1] = _mm_add_ps(mem[1], _mm_mul_ps(xx, num[1]));   }   /* Put memory back in its place */   _mm_storeu_ps(_mem, mem[0]);   _mm_storeu_ps(_mem+4, mem[1]);}#define OVERRIDE_FIR_MEM2void fir_mem2(const float *x, const float *_num, float *y, int N, int ord, float *_mem){   if(ord==10)      fir_mem2_10(x, _num, y, N, ord, _mem);   else if (ord==8)      fir_mem2_8(x, _num, y, N, ord, _mem);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲免费观看视频| 日韩欧美中文一区二区| 免费成人在线观看视频| 亚洲国产欧美日韩另类综合| 国产精品久久久久永久免费观看 | 国产乱码精品一区二区三区忘忧草 | 国产精品 欧美精品| 国内精品国产三级国产a久久| 日韩av不卡一区二区| 国产精品久久久久9999吃药| 国产精品无遮挡| 综合av第一页| 一区二区三区精品久久久| 伊人色综合久久天天人手人婷| ...av二区三区久久精品| 亚洲柠檬福利资源导航| 亚洲欧美另类图片小说| 亚洲美女视频在线| 亚欧色一区w666天堂| 老司机精品视频一区二区三区| 激情五月播播久久久精品| 国产成人在线免费观看| 成人福利电影精品一区二区在线观看| 成人av网站免费观看| 在线免费观看视频一区| 91精品国产色综合久久不卡蜜臀| 日韩区在线观看| 国产精品免费人成网站| 亚洲愉拍自拍另类高清精品| 六月丁香综合在线视频| 盗摄精品av一区二区三区| 91小视频免费观看| 日韩一级精品视频在线观看| 久久久久久久综合日本| 樱花影视一区二区| 韩国女主播成人在线观看| 99久久免费国产| 精品免费99久久| 一区二区三区欧美在线观看| 美女网站色91| 色菇凉天天综合网| 精品福利在线导航| 中文字幕亚洲欧美在线不卡| 婷婷一区二区三区| 99re视频这里只有精品| 精品国内二区三区| 午夜国产精品一区| 97成人超碰视| 久久久欧美精品sm网站| 五月激情丁香一区二区三区| 国产在线麻豆精品观看| 日本乱人伦一区| 亚洲国产成人自拍| 黑人巨大精品欧美黑白配亚洲| 色吧成人激情小说| 中文无字幕一区二区三区| 天堂va蜜桃一区二区三区| 色综合中文字幕国产 | 欧美一卡二卡三卡四卡| 中文字幕综合网| 国产在线精品视频| 51精品国自产在线| 夜夜嗨av一区二区三区| www.亚洲人| 中文字幕一区二区三区乱码在线| 国产在线精品一区二区夜色| 日韩一区二区在线看| 午夜欧美大尺度福利影院在线看 | 欧美视频在线一区| 亚洲丝袜自拍清纯另类| av电影天堂一区二区在线观看| 久久香蕉国产线看观看99| 久久国产精品色婷婷| 欧美电视剧在线看免费| 蜜桃av一区二区在线观看| 日韩欧美一区二区视频| 人人狠狠综合久久亚洲| 日韩欧美激情四射| 久久99国产乱子伦精品免费| 日韩欧美国产一区二区在线播放| 蜜芽一区二区三区| 日韩欧美国产小视频| 国内精品视频666| 久久亚区不卡日本| 成人高清视频免费观看| 中文字幕一区二区三区乱码在线| 国产99久久久国产精品免费看 | 日本精品免费观看高清观看| 亚洲一区二区三区国产| 欧美亚洲自拍偷拍| 美腿丝袜亚洲三区| 久久亚洲捆绑美女| 97国产一区二区| 亚洲成人激情av| 欧美大片免费久久精品三p| 国产美女娇喘av呻吟久久| 亚洲国产精品精华液2区45| 不卡一区中文字幕| 亚洲成av人片在www色猫咪| 91精品视频网| 国产精品主播直播| 成人免费在线视频| 欧美日韩电影在线播放| 韩国欧美国产1区| 亚洲免费观看高清完整版在线 | 亚洲高清中文字幕| 欧美丰满嫩嫩电影| 日精品一区二区三区| 日本久久一区二区三区| 日韩综合在线视频| 欧美日韩一级大片网址| 美女视频第一区二区三区免费观看网站 | 9i在线看片成人免费| 午夜影院久久久| 久久久三级国产网站| 欧美午夜精品免费| 国产精品一区久久久久| 亚洲精品伦理在线| 久久精品视频在线免费观看| 91影院在线观看| 经典三级一区二区| 亚洲国产欧美在线| 国产精品另类一区| 久久亚洲综合色一区二区三区| 欧美日韩中字一区| 不卡在线观看av| 国产精品伊人色| 日韩经典一区二区| 亚洲免费伊人电影| 中文字幕av一区二区三区免费看| 欧美日韩国产电影| www.亚洲色图.com| 国产999精品久久| 蜜臀av一区二区在线免费观看| 亚洲视频 欧洲视频| 久久亚洲欧美国产精品乐播 | 国产99精品国产| 日韩国产高清在线| 夜色激情一区二区| 亚洲黄色小视频| 中文字幕在线观看一区二区| 久久久久久久久久久99999| 正在播放一区二区| 欧美日韩精品欧美日韩精品| 色综合久久久久综合99| 丰满白嫩尤物一区二区| 国产精品白丝av| 国产乱子伦视频一区二区三区| 久久国产精品99久久人人澡| 香蕉成人啪国产精品视频综合网| 亚洲综合色丁香婷婷六月图片| 亚洲欧洲99久久| 国产精品久久午夜| 中文字幕在线观看不卡视频| 久久久www免费人成精品| 久久网站最新地址| 久久久久久久久97黄色工厂| 精品国产乱子伦一区| 精品国产一区a| 久久天天做天天爱综合色| 26uuu久久综合| 欧美激情一区二区三区四区 | 中文字幕综合网| 亚洲精品v日韩精品| 亚洲男人天堂av网| 香蕉成人伊视频在线观看| 午夜精品久久久久久久99水蜜桃| 图片区小说区区亚洲影院| 亚洲成人在线网站| 激情综合色播五月| 高清成人免费视频| 色偷偷一区二区三区| 欧美系列亚洲系列| 日韩一区二区免费视频| 2023国产精品| 亚洲欧美成人一区二区三区| 亚洲综合一区二区| 男人的天堂久久精品| 国产精品一品二品| 在线欧美日韩国产| 精品国精品自拍自在线| 一区在线观看视频| 日精品一区二区三区| 成人免费毛片aaaaa**| 欧美日韩免费观看一区二区三区 | 亚洲欧美福利一区二区| 亚洲国产日韩av| 国产成人午夜精品影院观看视频| eeuss鲁片一区二区三区| 欧美日韩午夜在线视频| 欧美精品一区二区三区蜜臀| 亚洲视频一区二区在线观看| 美女视频一区二区| 色一区在线观看| 国产性做久久久久久| 亚洲在线成人精品| av在线综合网| ww亚洲ww在线观看国产| 亚洲午夜久久久久久久久电影院| 国产麻豆精品久久一二三|