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

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

?? gmc_altivec.c

?? TCPMP 0.72rc2已經添加FLV的支持
?? C
字號:
/* * GMC (Global Motion Compensation) * AltiVec-enabled * Copyright (c) 2003 Romain Dolbeau <romain@dolbeau.org> * * 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 "../dsputil.h"#include "gcc_fixes.h"#include "dsputil_altivec.h"/*  altivec-enhanced gmc1. ATM this code assume stride is a multiple of 8,  to preserve proper dst alignement.*/#define GMC1_PERF_COND (h==8)void gmc1_altivec(uint8_t *dst /* align 8 */, uint8_t *src /* align1 */, int stride, int h, int x16, int y16, int rounder){POWERPC_PERF_DECLARE(altivec_gmc1_num, GMC1_PERF_COND);#ifdef ALTIVEC_USE_REFERENCE_C_CODE    const int A=(16-x16)*(16-y16);    const int B=(   x16)*(16-y16);    const int C=(16-x16)*(   y16);    const int D=(   x16)*(   y16);    int i;POWERPC_PERF_START_COUNT(altivec_gmc1_num, GMC1_PERF_COND);        for(i=0; i<h; i++)    {        dst[0]= (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1] + rounder)>>8;        dst[1]= (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2] + rounder)>>8;        dst[2]= (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3] + rounder)>>8;        dst[3]= (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4] + rounder)>>8;        dst[4]= (A*src[4] + B*src[5] + C*src[stride+4] + D*src[stride+5] + rounder)>>8;        dst[5]= (A*src[5] + B*src[6] + C*src[stride+5] + D*src[stride+6] + rounder)>>8;        dst[6]= (A*src[6] + B*src[7] + C*src[stride+6] + D*src[stride+7] + rounder)>>8;        dst[7]= (A*src[7] + B*src[8] + C*src[stride+7] + D*src[stride+8] + rounder)>>8;        dst+= stride;        src+= stride;    }POWERPC_PERF_STOP_COUNT(altivec_gmc1_num, GMC1_PERF_COND);#else /* ALTIVEC_USE_REFERENCE_C_CODE */    const unsigned short __attribute__ ((aligned(16))) rounder_a[8] =      {rounder, rounder, rounder, rounder,       rounder, rounder, rounder, rounder};    const unsigned short __attribute__ ((aligned(16))) ABCD[8] =      {        (16-x16)*(16-y16), /* A */        (   x16)*(16-y16), /* B */        (16-x16)*(   y16), /* C */        (   x16)*(   y16), /* D */        0, 0, 0, 0         /* padding */      };    register const_vector unsigned char vczero = (const_vector unsigned char)vec_splat_u8(0);    register const_vector unsigned short vcsr8 = (const_vector unsigned short)vec_splat_u16(8);    register vector unsigned char dstv, dstv2, src_0, src_1, srcvA, srcvB, srcvC, srcvD;    register vector unsigned short Av, Bv, Cv, Dv, rounderV, tempA, tempB, tempC, tempD;    int i;    unsigned long dst_odd = (unsigned long)dst & 0x0000000F;    unsigned long src_really_odd = (unsigned long)src & 0x0000000F;POWERPC_PERF_START_COUNT(altivec_gmc1_num, GMC1_PERF_COND);    tempA = vec_ld(0, (unsigned short*)ABCD);    Av = vec_splat(tempA, 0);    Bv = vec_splat(tempA, 1);    Cv = vec_splat(tempA, 2);    Dv = vec_splat(tempA, 3);    rounderV = vec_ld(0, (unsigned short*)rounder_a);        // we'll be able to pick-up our 9 char elements    // at src from those 32 bytes    // we load the first batch here, as inside the loop    // we can re-use 'src+stride' from one iteration    // as the 'src' of the next.    src_0 = vec_ld(0, src);    src_1 = vec_ld(16, src);    srcvA = vec_perm(src_0, src_1, vec_lvsl(0, src));        if (src_really_odd != 0x0000000F)    { // if src & 0xF == 0xF, then (src+1) is properly aligned on the second vector.      srcvB = vec_perm(src_0, src_1, vec_lvsl(1, src));    }    else    {      srcvB = src_1;    }    srcvA = vec_mergeh(vczero, srcvA);    srcvB = vec_mergeh(vczero, srcvB);        for(i=0; i<h; i++)    {      dst_odd = (unsigned long)dst & 0x0000000F;      src_really_odd = (((unsigned long)src) + stride) & 0x0000000F;            dstv = vec_ld(0, dst);            // we we'll be able to pick-up our 9 char elements      // at src + stride from those 32 bytes      // then reuse the resulting 2 vectors srvcC and srcvD      // as the next srcvA and srcvB      src_0 = vec_ld(stride + 0, src);      src_1 = vec_ld(stride + 16, src);      srcvC = vec_perm(src_0, src_1, vec_lvsl(stride + 0, src));            if (src_really_odd != 0x0000000F)      { // if src & 0xF == 0xF, then (src+1) is properly aligned on the second vector.        srcvD = vec_perm(src_0, src_1, vec_lvsl(stride + 1, src));      }      else      {        srcvD = src_1;      }            srcvC = vec_mergeh(vczero, srcvC);      srcvD = vec_mergeh(vczero, srcvD);            // OK, now we (finally) do the math :-)      // those four instructions replaces 32 int muls & 32 int adds.      // isn't AltiVec nice ?      tempA = vec_mladd((vector unsigned short)srcvA, Av, rounderV);      tempB = vec_mladd((vector unsigned short)srcvB, Bv, tempA);      tempC = vec_mladd((vector unsigned short)srcvC, Cv, tempB);      tempD = vec_mladd((vector unsigned short)srcvD, Dv, tempC);            srcvA = srcvC;      srcvB = srcvD;            tempD = vec_sr(tempD, vcsr8);            dstv2 = vec_pack(tempD, (vector unsigned short)vczero);            if (dst_odd)      {        dstv2 = vec_perm(dstv, dstv2, vcprm(0,1,s0,s1));      }      else      {        dstv2 = vec_perm(dstv, dstv2, vcprm(s0,s1,2,3));      }            vec_st(dstv2, 0, dst);            dst += stride;      src += stride;    }POWERPC_PERF_STOP_COUNT(altivec_gmc1_num, GMC1_PERF_COND);#endif /* ALTIVEC_USE_REFERENCE_C_CODE */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本va欧美va瓶| 狠狠久久亚洲欧美| 国产精品888| 欧美日韩国产首页| 欧美国产国产综合| 国模娜娜一区二区三区| 欧洲av一区二区嗯嗯嗯啊| 久久精品亚洲国产奇米99| 日韩精品福利网| 欧美日韩免费观看一区三区| 亚洲美女区一区| 国产成人超碰人人澡人人澡| 欧美大黄免费观看| 亚洲精品老司机| 成人国产精品免费观看视频| 久久久久久久久久久99999| 蜜臂av日日欢夜夜爽一区| 精品视频999| 亚洲乱码中文字幕| www.视频一区| 国产精品福利在线播放| 国产成人在线视频网站| 久久欧美中文字幕| 韩国一区二区三区| 日韩免费一区二区| 午夜av一区二区三区| 欧美日韩一级二级三级| 91丨porny丨国产| 久久男人中文字幕资源站| 亚洲123区在线观看| 91麻豆精品秘密| 亚洲欧美一区二区视频| 在线免费观看日韩欧美| 性久久久久久久| 欧美成人精品福利| 欧美第一区第二区| 亚洲国产精品自拍| 不卡一区二区三区四区| 国产成人小视频| 国产原创一区二区三区| 国产suv精品一区二区三区| 秋霞影院一区二区| 国产一区二区三区免费看| 91久久国产最好的精华液| 亚洲精品免费一二三区| 91成人在线免费观看| 天堂蜜桃91精品| 精品入口麻豆88视频| 国产一区欧美二区| 中国av一区二区三区| 国产精品久久久久久亚洲伦| 欧美视频一区二区三区在线观看| 91精品国产色综合久久不卡蜜臀 | 成人午夜视频福利| 国产精品久久久久永久免费观看| 91片在线免费观看| 天堂久久一区二区三区| 久久精品欧美日韩| 91一区二区在线| 日韩中文字幕不卡| 久久久国产精华| 欧美在线免费观看视频| 免费观看在线色综合| 国产精品国产三级国产普通话三级 | 国产亚洲欧美一级| 95精品视频在线| 蜜臀av一区二区| 综合婷婷亚洲小说| 91精品国产免费久久综合| 国产精品99久久久久| 亚洲一区二区三区中文字幕在线| 欧美成人猛片aaaaaaa| 91麻豆产精品久久久久久 | 26uuu欧美| 欧美视频在线一区| 成人综合激情网| 天天色天天操综合| 中文字幕一区二区三区蜜月| 欧美一区二区三区小说| av爱爱亚洲一区| 国产毛片一区二区| 午夜激情综合网| 亚洲精品视频观看| 国产欧美日韩麻豆91| 91麻豆精品91久久久久久清纯| 成人妖精视频yjsp地址| 久久国产尿小便嘘嘘尿| 一二三区精品视频| 国产精品福利av| 国产亚洲欧美日韩日本| 欧美一二三区在线观看| 91免费看视频| 99久久精品免费看国产| 国产一区二区三区四区在线观看| 日韩va欧美va亚洲va久久| 亚洲日本va午夜在线影院| 国产日产欧产精品推荐色| 日韩一区二区三区在线| 欧美日本国产一区| 欧美私人免费视频| 欧美午夜一区二区三区| 99re热视频这里只精品| 国产不卡免费视频| 国产成人午夜99999| 精品系列免费在线观看| 日本aⅴ精品一区二区三区 | 亚洲自拍偷拍综合| 亚洲人成精品久久久久久| 中文字幕乱码久久午夜不卡| 久久久不卡网国产精品一区| 日韩欧美国产1| 欧美成人一级视频| 日韩精品最新网址| 日韩你懂的电影在线观看| 日韩免费福利电影在线观看| 日韩限制级电影在线观看| 91精品国产一区二区三区蜜臀| 欧美一级艳片视频免费观看| 3atv在线一区二区三区| 欧美一级高清片在线观看| 精品久久久久久久久久久久包黑料| 欧美一区二区三区公司| 欧美成人精品二区三区99精品| 日韩精品一区二区三区swag| 欧美精品一区二| 国产精品国产自产拍高清av| 亚洲老妇xxxxxx| 亚洲一区二区欧美日韩| 午夜精品久久久久久| 日本成人在线一区| 国产精品影视在线| 成人精品小蝌蚪| 欧美最猛黑人xxxxx猛交| 678五月天丁香亚洲综合网| 精品国产一区二区三区久久久蜜月| 精品久久久久久无| 最新不卡av在线| 午夜成人免费视频| 国产成人免费9x9x人网站视频| 成人免费va视频| 欧美人动与zoxxxx乱| 久久久不卡影院| 一区二区三区毛片| 国产综合久久久久久鬼色| 白白色 亚洲乱淫| 欧美日本乱大交xxxxx| 久久久亚洲国产美女国产盗摄| 国产精品国产三级国产有无不卡| 天堂一区二区在线| 成人美女在线视频| 在线播放中文字幕一区| 国产午夜精品久久久久久免费视| 一区二区三区丝袜| 国产一区二区三区在线观看精品| 91国产成人在线| 久久久久久久性| 视频在线观看一区| 成人久久18免费网站麻豆 | 国产一区二区网址| 欧美日本一道本| 亚洲婷婷综合久久一本伊一区| 久久99久久精品欧美| 91社区在线播放| 久久久久久久综合| 日本不卡在线视频| 在线精品亚洲一区二区不卡| 国产网站一区二区| 久久精品国产色蜜蜜麻豆| 欧美在线你懂的| 国产精品午夜电影| 蜜臀av性久久久久蜜臀aⅴ四虎 | 色8久久人人97超碰香蕉987| 日韩精品在线看片z| 亚洲视频1区2区| 不卡一区在线观看| 日韩欧美一级精品久久| 中文字幕一区三区| 国产高清视频一区| 欧美一区二区三区视频免费| 亚洲色图制服丝袜| 成人综合日日夜夜| 日韩精品一区二区三区在线 | 日韩免费一区二区| 国产视频一区二区三区在线观看 | 亚洲天天做日日做天天谢日日欢| 美女任你摸久久| 91免费看视频| 亚洲精品视频观看| a级精品国产片在线观看| 欧美一级欧美三级| 麻豆久久一区二区| 91行情网站电视在线观看高清版| 久久综合国产精品| 亚洲高清久久久| 在线免费观看日本欧美| 中文字幕一区二区视频| 老司机一区二区| 欧美刺激午夜性久久久久久久| 亚洲123区在线观看| 成人av在线影院|