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

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

?? interpolate8x8_mmx.asm

?? xvid的視頻編解碼庫文件
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;/*****************************************************************************; *; *  XVID MPEG-4 VIDEO CODEC; *  - mmx 8x8 block-based halfpel interpolation -; *; *  Copyright(C) 2001 Peter Ross <pross@xvid.org>; *               2002 Michael Militzer <isibaar@xvid.org>; *; *  This program is free software ; you can redistribute it and/or modify; *  it under the terms of the GNU General Public License as published by; *  the Free Software Foundation ; either version 2 of the License, or; *  (at your option) any later version.; *; *  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA; *; ****************************************************************************/BITS 32%macro cglobal 1	%ifdef PREFIX		global _%1		%define %1 _%1	%else		global %1	%endif%endmacro;=============================================================================; Read only data;=============================================================================%ifdef FORMAT_COFFSECTION .rodata data%elseSECTION .rodata data align=16%endif;-----------------------------------------------------------------------------; (16 - r) rounding table;-----------------------------------------------------------------------------ALIGN 16rounding_lowpass_mmx:	times 4 dw 16	times 4 dw 15;-----------------------------------------------------------------------------; (1 - r) rounding table;-----------------------------------------------------------------------------rounding1_mmx:	times 4 dw 1	times 4 dw 0;-----------------------------------------------------------------------------; (2 - r) rounding table;-----------------------------------------------------------------------------rounding2_mmx:	times 4 dw 2	times 4 dw 1mmx_one:	times 8 db 1mmx_two:	times 8 db 2mmx_three:	times 8 db 3mmx_five:	times 4 dw 5mmx_mask:	times 8 db 254mmx_mask2:	times 8 db 252;=============================================================================; Code;=============================================================================SECTION .textcglobal interpolate8x8_halfpel_h_mmxcglobal interpolate8x8_halfpel_v_mmxcglobal interpolate8x8_halfpel_hv_mmxcglobal interpolate8x8_avg4_mmxcglobal interpolate8x8_avg2_mmxcglobal interpolate8x8_6tap_lowpass_h_mmxcglobal interpolate8x8_6tap_lowpass_v_mmx%macro  CALC_AVG 6  punpcklbw %3, %6  punpckhbw %4, %6  paddusw %1, %3    ; mm01 += mm23  paddusw %2, %4  paddusw %1, %5    ; mm01 += rounding  paddusw %2, %5  psrlw %1, 1   ; mm01 >>= 1  psrlw %2, 1%endmacro;-----------------------------------------------------------------------------;; void interpolate8x8_halfpel_h_mmx(uint8_t * const dst,;                       const uint8_t * const src,;                       const uint32_t stride,;                       const uint32_t rounding);;;-----------------------------------------------------------------------------%macro COPY_H_MMX 0  movq mm0, [esi]  movq mm2, [esi + 1]  movq mm1, mm0  movq mm3, mm2  punpcklbw mm0, mm6        ; mm01 = [src]  punpckhbw mm1, mm6        ; mm23 = [src + 1]  CALC_AVG mm0, mm1, mm2, mm3, mm7, mm6  packuswb mm0, mm1  movq [edi], mm0           ; [dst] = mm01  add esi, edx              ; src += stride  add edi, edx              ; dst += stride%endmacroALIGN 16interpolate8x8_halfpel_h_mmx:  push esi  push edi  mov eax, [esp + 8 + 16]       ; rounding  movq mm7, [rounding1_mmx + eax * 8]  mov edi, [esp + 8 + 4]        ; dst  mov esi, [esp + 8 + 8]        ; src  mov edx, [esp + 8 + 12]       ; stride  pxor mm6, mm6                 ; zero  COPY_H_MMX  COPY_H_MMX  COPY_H_MMX  COPY_H_MMX  COPY_H_MMX  COPY_H_MMX  COPY_H_MMX  COPY_H_MMX  pop edi  pop esi  ret;-----------------------------------------------------------------------------;; void interpolate8x8_halfpel_v_mmx(uint8_t * const dst,;                       const uint8_t * const src,;                       const uint32_t stride,;                       const uint32_t rounding);;;-----------------------------------------------------------------------------%macro COPY_V_MMX 0  movq mm0, [esi]  movq mm2, [esi + edx]  movq mm1, mm0  movq mm3, mm2  punpcklbw mm0, mm6    ; mm01 = [src]  punpckhbw mm1, mm6    ; mm23 = [src + 1]  CALC_AVG mm0, mm1, mm2, mm3, mm7, mm6  packuswb mm0, mm1  movq [edi], mm0       ; [dst] = mm01  add esi, edx          ; src += stride  add edi, edx          ; dst += stride%endmacroALIGN 16interpolate8x8_halfpel_v_mmx:  push esi  push edi  mov eax, [esp + 8 + 16]       ; rounding  movq mm7, [rounding1_mmx + eax * 8]  mov edi, [esp + 8 + 4]        ; dst  mov esi, [esp + 8 + 8]        ; src  mov edx, [esp + 8 + 12]       ; stride  pxor mm6, mm6                 ; zero  COPY_V_MMX  COPY_V_MMX  COPY_V_MMX  COPY_V_MMX  COPY_V_MMX  COPY_V_MMX  COPY_V_MMX  COPY_V_MMX  pop edi  pop esi  ret;-----------------------------------------------------------------------------;; void interpolate8x8_halfpel_hv_mmx(uint8_t * const dst,;                       const uint8_t * const src,;                       const uint32_t stride,;                       const uint32_t rounding);;;;-----------------------------------------------------------------------------%macro COPY_HV_MMX 0    ; current row  movq mm0, [esi]  movq mm2, [esi + 1]  movq mm1, mm0  movq mm3, mm2  punpcklbw mm0, mm6        ; mm01 = [src]  punpcklbw mm2, mm6        ; mm23 = [src + 1]  punpckhbw mm1, mm6  punpckhbw mm3, mm6  paddusw mm0, mm2          ; mm01 += mm23  paddusw mm1, mm3    ; next row  movq mm4, [esi + edx]  movq mm2, [esi + edx + 1]  movq mm5, mm4  movq mm3, mm2  punpcklbw mm4, mm6        ; mm45 = [src + stride]  punpcklbw mm2, mm6        ; mm23 = [src + stride + 1]  punpckhbw mm5, mm6  punpckhbw mm3, mm6  paddusw mm4, mm2          ; mm45 += mm23  paddusw mm5, mm3    ; add current + next row  paddusw mm0, mm4          ; mm01 += mm45  paddusw mm1, mm5  paddusw mm0, mm7          ; mm01 += rounding2  paddusw mm1, mm7  psrlw mm0, 2              ; mm01 >>= 2  psrlw mm1, 2  packuswb mm0, mm1  movq [edi], mm0           ; [dst] = mm01  add esi, edx              ; src += stride  add edi, edx              ; dst += stride%endmacroALIGN 16interpolate8x8_halfpel_hv_mmx:  push esi  push edi  mov eax, [esp + 8 + 16]   ; rounding  movq mm7, [rounding2_mmx + eax * 8]  mov edi, [esp + 8 + 4]    ; dst  mov esi, [esp + 8 + 8]    ; src  mov eax, 8  pxor mm6, mm6             ; zero  mov edx, [esp + 8 + 12]   ; stride  COPY_HV_MMX  COPY_HV_MMX  COPY_HV_MMX  COPY_HV_MMX  COPY_HV_MMX  COPY_HV_MMX  COPY_HV_MMX  COPY_HV_MMX  pop edi  pop esi  ret;-----------------------------------------------------------------------------;; void interpolate8x8_avg2_mmx(uint8_t const *dst,;                              const uint8_t * const src1,;                              const uint8_t * const src2,;                              const uint32_t stride,;                              const uint32_t rounding,;                              const uint32_t height);;;-----------------------------------------------------------------------------%macro AVG2_MMX_RND0 0  movq mm0, [eax]           ; src1 -> mm0  movq mm1, [ebx]           ; src2 -> mm1  movq mm4, [eax+edx]  movq mm5, [ebx+edx]  movq mm2, mm0             ; src1 -> mm2  movq mm3, mm1             ; src2 -> mm3  pand mm2, mm7             ; isolate the lsb  pand mm3, mm7             ; isolate the lsb  por mm2, mm3              ; ODD(src1) OR ODD(src2) -> mm2  movq mm3, mm4  movq mm6, mm5  pand mm3, mm7  pand mm6, mm7  por mm3, mm6  pand mm0, [mmx_mask]  pand mm1, [mmx_mask]  pand mm4, [mmx_mask]  pand mm5, [mmx_mask]  psrlq mm0, 1              ; src1 / 2  psrlq mm1, 1              ; src2 / 2  psrlq mm4, 1  psrlq mm5, 1  paddb mm0, mm1            ; src1/2 + src2/2 -> mm0  paddb mm0, mm2            ; correct rounding error  paddb mm4, mm5  paddb mm4, mm3  lea eax, [eax+2*edx]  lea ebx, [ebx+2*edx]  movq [ecx], mm0           ; (src1 + src2 + 1) / 2 -> dst  movq [ecx+edx], mm4%endmacro%macro AVG2_MMX_RND1 0  movq mm0, [eax]           ; src1 -> mm0  movq mm1, [ebx]           ; src2 -> mm1  movq mm4, [eax+edx]  movq mm5, [ebx+edx]  movq mm2, mm0             ; src1 -> mm2  movq mm3, mm1             ; src2 -> mm3  pand mm2, mm7             ; isolate the lsb  pand mm3, mm7             ; isolate the lsb  pand mm2, mm3             ; ODD(src1) AND ODD(src2) -> mm2  movq mm3, mm4  movq mm6, mm5  pand mm3, mm7  pand mm6, mm7  pand mm3, mm6  pand mm0, [mmx_mask]  pand mm1, [mmx_mask]  pand mm4, [mmx_mask]  pand mm5, [mmx_mask]  psrlq mm0, 1              ; src1 / 2  psrlq mm1, 1              ; src2 / 2  psrlq mm4, 1  psrlq mm5, 1  paddb mm0, mm1            ; src1/2 + src2/2 -> mm0  paddb mm0, mm2            ; correct rounding error  paddb mm4, mm5  paddb mm4, mm3  lea eax, [eax+2*edx]  lea ebx, [ebx+2*edx]  movq [ecx], mm0           ; (src1 + src2 + 1) / 2 -> dst  movq [ecx+edx], mm4%endmacroALIGN 16interpolate8x8_avg2_mmx:  push ebx  mov eax, [esp + 4 + 20]   ; rounding  test eax, eax  jnz near .rounding1  mov eax, [esp + 4 + 24]   ; height -> eax  sub eax, 8  test eax, eax  mov ecx, [esp + 4 + 4]    ; dst -> edi  mov eax, [esp + 4 + 8]    ; src1 -> esi  mov ebx, [esp + 4 + 12]   ; src2 -> eax  mov edx, [esp + 4 + 16]   ; stride -> edx  movq mm7, [mmx_one]  jz near .start0  AVG2_MMX_RND0  lea ecx, [ecx+2*edx].start0  AVG2_MMX_RND0

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久亚洲伦 | 成人sese在线| 国产成人99久久亚洲综合精品| 久久精品国产亚洲高清剧情介绍| 国产一区二区不卡在线| 99久久精品国产导航| 欧美电影一区二区| 久久精品视频一区二区三区| 国产精品久久久久婷婷二区次| 一区二区三区四区五区视频在线观看| 午夜成人免费视频| 国产福利精品一区| 色播五月激情综合网| 精品欧美一区二区在线观看 | 欧美三级视频在线播放| 精品久久久久久无| 亚洲激情图片一区| 狠狠色丁香久久婷婷综合丁香| 91蝌蚪国产九色| 精品国产一区二区三区久久久蜜月| 国产精品美女久久久久av爽李琼| 日韩高清不卡在线| www.日韩在线| 久久理论电影网| 五月天精品一区二区三区| 国产iv一区二区三区| 欧美人动与zoxxxx乱| 国产精品久久久久7777按摩| 蜜臀av性久久久久蜜臀aⅴ四虎| 99精品久久久久久| 久久色在线观看| 日韩综合在线视频| 91国内精品野花午夜精品| 91精品黄色片免费大全| 亚洲精品欧美专区| 久久99精品国产.久久久久| 在线成人小视频| 亚洲综合图片区| 色悠悠亚洲一区二区| 精品国产髙清在线看国产毛片 | 福利电影一区二区三区| 日韩亚洲国产中文字幕欧美| 亚洲一区二区视频在线观看| 99在线热播精品免费| 国产亚洲精品久| 国产一区二区看久久| 欧美成人精品二区三区99精品| 日日骚欧美日韩| 欧美三级欧美一级| 亚洲宅男天堂在线观看无病毒| 不卡一区二区三区四区| 26uuu精品一区二区在线观看| 视频一区二区不卡| 91视频观看视频| 亚洲另类中文字| 欧美性感一类影片在线播放| 亚洲丝袜制服诱惑| 日本久久电影网| 亚洲最大成人综合| 欧美性色欧美a在线播放| 亚洲综合小说图片| 精品视频在线免费观看| 日韩在线a电影| 欧美日韩国产综合一区二区| 亚洲成人免费av| 欧美性大战久久久久久久蜜臀| 亚洲午夜电影在线观看| 色综合天天综合给合国产| 亚洲天堂中文字幕| 欧美熟乱第一页| 麻豆极品一区二区三区| 欧美三级在线播放| 日本欧美肥老太交大片| 日本一区二区三区四区在线视频| 91福利视频网站| 国产美女av一区二区三区| 一区二区三区美女视频| 欧美mv和日韩mv国产网站| 97久久精品人人爽人人爽蜜臀| 奇米四色…亚洲| 亚洲免费av高清| 久久久久久久久久久久久女国产乱| 97se狠狠狠综合亚洲狠狠| 蜜臀久久99精品久久久久宅男| 国产精品卡一卡二卡三| 欧美一区二区三区在| 一本一道久久a久久精品| 久久69国产一区二区蜜臀| 一区二区在线免费| 国产农村妇女精品| 日韩精品综合一本久道在线视频| 91一区二区三区在线播放| 国产一区二区在线看| 日本不卡高清视频| 一区二区三区在线视频免费| 日韩欧美卡一卡二| 欧美在线影院一区二区| av在线这里只有精品| 国产精品66部| 老司机精品视频导航| 天天操天天综合网| 亚洲精品ww久久久久久p站| 国产女人18水真多18精品一级做 | 99精品视频在线免费观看| 极品少妇xxxx精品少妇偷拍| 五月天激情综合网| 亚洲午夜一二三区视频| 亚洲免费观看高清完整版在线| 国产精品私人自拍| 亚洲国产精品t66y| 国产午夜精品一区二区| 久久久亚洲综合| 久久精品在这里| 国产欧美日韩亚州综合| 久久亚洲综合色| 久久嫩草精品久久久精品一| 精品少妇一区二区三区视频免付费 | 精品乱码亚洲一区二区不卡| 91精品久久久久久久久99蜜臂| 欧美日韩色一区| 欧美色电影在线| 91精品免费在线观看| 51久久夜色精品国产麻豆| 91精品国产综合久久精品app| 欧美顶级少妇做爰| 精品奇米国产一区二区三区| 亚洲精品一区二区三区精华液 | 日韩福利电影在线观看| 日本欧美肥老太交大片| 麻豆成人久久精品二区三区红 | 成人一道本在线| 成人免费毛片app| 色婷婷av一区二区三区软件 | 国产农村妇女精品| 国产精品传媒入口麻豆| 亚洲精品一二三| 五月开心婷婷久久| 国产在线国偷精品免费看| 国产精品香蕉一区二区三区| 99精品偷自拍| 日韩午夜在线影院| 国产欧美一二三区| 一区二区日韩电影| 免费成人在线影院| 成人免费视频app| 欧美色综合影院| 久久久久久夜精品精品免费| 最新日韩在线视频| 亚洲va韩国va欧美va| 国产一区二区免费视频| 一本久久a久久免费精品不卡| 欧美精品久久久久久久多人混战| 精品国产污网站| 亚洲日本在线视频观看| 久久97超碰国产精品超碰| 99re成人在线| 精品国产乱码久久久久久夜甘婷婷| 欧美极品aⅴ影院| 香蕉久久夜色精品国产使用方法 | 亚洲黄色小视频| 捆绑紧缚一区二区三区视频| av一区二区三区| 日韩欧美国产不卡| 中文字幕精品三区| 免费高清成人在线| 91视频www| 国产日韩欧美a| 日韩av一区二区三区四区| 91香蕉视频黄| 久久精品一区八戒影视| 亚洲va欧美va人人爽午夜| 国产98色在线|日韩| 91精品国产一区二区人妖| 一区精品在线播放| 国产一区二区三区免费看 | 亚洲国产精品嫩草影院| 国产成人精品亚洲日本在线桃色| 欧美撒尿777hd撒尿| 亚洲天堂福利av| 成人三级伦理片| 久久嫩草精品久久久久| 美女一区二区三区在线观看| 91久久精品日日躁夜夜躁欧美| 久久久国际精品| 黄网站免费久久| 欧美成人三级电影在线| 日本最新不卡在线| 欧美无人高清视频在线观看| 中文字幕欧美一| jvid福利写真一区二区三区| 久久理论电影网| 国产激情偷乱视频一区二区三区| 日韩欧美国产综合一区 | 日韩欧美美女一区二区三区| 亚洲一区免费观看| 欧美私人免费视频| 亚洲大片免费看| 欧美裸体一区二区三区| 亚洲国产精品一区二区www在线| 99久久精品情趣|