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

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

?? mc-a.asm

?? 從服務器上下的x264編碼器C源碼……希望對大家有幫助……這個是09年4月的
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;*****************************************************************************;* mc-a.asm: h264 encoder library;*****************************************************************************;* Copyright (C) 2003-2008 x264 project;*;* Authors: Loren Merritt <lorenm@u.washington.edu>;*          Jason Garrett-Glaser <darkshikari@gmail.com>;*          Laurent Aimar <fenrir@via.ecp.fr>;*          Min Chen <chenm001.163.com>;*;* 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., 51 Franklin Street, Fifth Floor, Boston, MA  02111, USA.;*****************************************************************************%include "x86inc.asm"SECTION_RODATApw_4:  times 8 dw  4pw_8:  times 8 dw  8pw_32: times 8 dw 32pw_64: times 8 dw 64sw_64: dd 64SECTION .text;=============================================================================; weighted prediction;=============================================================================; implicit bipred only:; assumes log2_denom = 5, offset = 0, weight1 + weight2 = 64%ifdef ARCH_X86_64    DECLARE_REG_TMP 0,1,2,3,4,5,10,11    %macro AVG_START 0-1 0        PROLOGUE 6,7,%1%ifdef WIN64        movsxd r5, r5d%endif        .height_loop:    %endmacro%else    DECLARE_REG_TMP 1,2,3,4,5,6,1,2    %macro AVG_START 0-1 0        PROLOGUE 0,7,%1        mov t0, r0m        mov t1, r1m        mov t2, r2m        mov t3, r3m        mov t4, r4m        mov t5, r5m        .height_loop:    %endmacro%endif%macro SPLATW 2%if mmsize==16    pshuflw  %1, %2, 0    punpcklqdq %1, %1%else    pshufw   %1, %2, 0%endif%endmacro%macro BIWEIGHT_MMX 2    movh      m0, %1    movh      m1, %2    punpcklbw m0, m5    punpcklbw m1, m5    pmullw    m0, m2    pmullw    m1, m3    paddw     m0, m1    paddw     m0, m4    psraw     m0, 6%endmacro%macro BIWEIGHT_START_MMX 0    movd    m2, r6m    SPLATW  m2, m2   ; weight_dst    mova    m3, [pw_64 GLOBAL]    psubw   m3, m2   ; weight_src    mova    m4, [pw_32 GLOBAL] ; rounding    pxor    m5, m5%endmacro%macro BIWEIGHT_SSSE3 2    movh      m0, %1    movh      m1, %2    punpcklbw m0, m1    pmaddubsw m0, m3    paddw     m0, m4    psraw     m0, 6%endmacro%macro BIWEIGHT_START_SSSE3 0    movzx  t6d, byte r6m ; FIXME x86_64    mov    t7d, 64    sub    t7d, t6d    shl    t7d, 8    add    t6d, t7d    movd    m3, t6d    mova    m4, [pw_32 GLOBAL]    SPLATW  m3, m3   ; weight_dst,src%endmacro%macro BIWEIGHT_ROW 4    BIWEIGHT [%2], [%3]%if %4==mmsize/2    packuswb   m0, m0    movh     [%1], m0%else    SWAP 0, 6    BIWEIGHT [%2+mmsize/2], [%3+mmsize/2]    packuswb   m6, m0    mova     [%1], m6%endif%endmacro;-----------------------------------------------------------------------------; int x264_pixel_avg_weight_w16_mmxext( uint8_t *dst, int, uint8_t *src1, int, uint8_t *src2, int, int i_weight );-----------------------------------------------------------------------------%macro AVG_WEIGHT 2-3 0cglobal x264_pixel_avg_weight_w%2_%1    BIWEIGHT_START    AVG_START %3%if %2==8 && mmsize==16    BIWEIGHT [t2], [t4]    SWAP 0, 6    BIWEIGHT [t2+t3], [t4+t5]    packuswb m6, m0    movlps   [t0], m6    movhps   [t0+t1], m6%else%assign x 0%rep 1+%2/(mmsize*2)    BIWEIGHT_ROW t0+x,    t2+x,    t4+x,    %2    BIWEIGHT_ROW t0+x+t1, t2+x+t3, t4+x+t5, %2%assign x x+mmsize%endrep%endif    lea  t0, [t0+t1*2]    lea  t2, [t2+t3*2]    lea  t4, [t4+t5*2]    sub  eax, 2    jg   .height_loop    REP_RET%endmacro%define BIWEIGHT BIWEIGHT_MMX%define BIWEIGHT_START BIWEIGHT_START_MMXINIT_MMXAVG_WEIGHT mmxext, 4AVG_WEIGHT mmxext, 8AVG_WEIGHT mmxext, 16INIT_XMM%define x264_pixel_avg_weight_w4_sse2 x264_pixel_avg_weight_w4_mmxextAVG_WEIGHT sse2, 8,  7AVG_WEIGHT sse2, 16, 7%define BIWEIGHT BIWEIGHT_SSSE3%define BIWEIGHT_START BIWEIGHT_START_SSSE3INIT_MMXAVG_WEIGHT ssse3, 4INIT_XMMAVG_WEIGHT ssse3, 8,  7AVG_WEIGHT ssse3, 16, 7;=============================================================================; pixel avg;=============================================================================;-----------------------------------------------------------------------------; void x264_pixel_avg_4x4_mmxext( uint8_t *dst, int dst_stride,;                                 uint8_t *src1, int src1_stride, uint8_t *src2, int src2_stride, int weight );;-----------------------------------------------------------------------------%macro AVGH 3cglobal x264_pixel_avg_%1x%2_%3    mov eax, %2    cmp dword r6m, 32    jne x264_pixel_avg_weight_w%1_%3%if mmsize == 16 && %1 == 16    test dword r4m, 15    jz x264_pixel_avg_w%1_sse2%endif    jmp x264_pixel_avg_w%1_mmxext%endmacro;-----------------------------------------------------------------------------; void x264_pixel_avg_w4_mmxext( uint8_t *dst, int dst_stride,;                                uint8_t *src1, int src1_stride, uint8_t *src2, int src2_stride,;                                int height, int weight );;-----------------------------------------------------------------------------%macro AVG_END 0    sub    eax, 2    lea    t4, [t4+t5*2]    lea    t2, [t2+t3*2]    lea    t0, [t0+t1*2]    jg     .height_loop    REP_RET%endmacro%macro AVG_FUNC 3cglobal %1    AVG_START    %2     m0, [t2]    %2     m1, [t2+t3]    pavgb  m0, [t4]    pavgb  m1, [t4+t5]    %3     [t0], m0    %3     [t0+t1], m1    AVG_END%endmacroINIT_MMXAVG_FUNC x264_pixel_avg_w4_mmxext, movd, movdAVGH 4, 8, mmxextAVGH 4, 4, mmxextAVGH 4, 2, mmxextAVG_FUNC x264_pixel_avg_w8_mmxext, movq, movqAVGH 8, 16, mmxextAVGH 8, 8,  mmxextAVGH 8, 4,  mmxextcglobal x264_pixel_avg_w16_mmxext    AVG_START    movq   mm0, [t2  ]    movq   mm1, [t2+8]    movq   mm2, [t2+t3  ]    movq   mm3, [t2+t3+8]    pavgb  mm0, [t4  ]    pavgb  mm1, [t4+8]    pavgb  mm2, [t4+t5  ]    pavgb  mm3, [t4+t5+8]    movq   [t0  ], mm0    movq   [t0+8], mm1    movq   [t0+t1  ], mm2    movq   [t0+t1+8], mm3    AVG_ENDAVGH 16, 16, mmxextAVGH 16, 8,  mmxextINIT_XMMAVG_FUNC x264_pixel_avg_w16_sse2, movdqu, movdqaAVGH 16, 16, sse2AVGH 16,  8, sse2AVGH  8, 16, sse2AVGH  8,  8, sse2AVGH  8,  4, sse2AVGH 16, 16, ssse3AVGH 16,  8, ssse3AVGH  8, 16, ssse3AVGH  8,  8, ssse3AVGH  8,  4, ssse3INIT_MMXAVGH  4,  8, ssse3AVGH  4,  4, ssse3AVGH  4,  2, ssse3;=============================================================================; pixel avg2;=============================================================================;-----------------------------------------------------------------------------; void x264_pixel_avg2_w4_mmxext( uint8_t *dst, int dst_stride,;                                 uint8_t *src1, int src_stride,;                                 uint8_t *src2, int height );;-----------------------------------------------------------------------------%macro AVG2_W8 2cglobal x264_pixel_avg2_w%1_mmxext, 6,7    sub    r4, r2    lea    r6, [r4+r3].height_loop:    %2     mm0, [r2]    %2     mm1, [r2+r3]    pavgb  mm0, [r2+r4]    pavgb  mm1, [r2+r6]    %2     [r0], mm0    %2     [r0+r1], mm1    sub    r5d, 2    lea    r2, [r2+r3*2]    lea    r0, [r0+r1*2]    jg     .height_loop    REP_RET%endmacroAVG2_W8 4, movdAVG2_W8 8, movq%macro AVG2_W16 2cglobal x264_pixel_avg2_w%1_mmxext, 6,7    sub    r4, r2    lea    r6, [r4+r3].height_loop:    movq   mm0, [r2]    %2     mm1, [r2+8]    movq   mm2, [r2+r3]    %2     mm3, [r2+r3+8]    pavgb  mm0, [r2+r4]    pavgb  mm1, [r2+r4+8]    pavgb  mm2, [r2+r6]    pavgb  mm3, [r2+r6+8]    movq   [r0], mm0    %2     [r0+8], mm1    movq   [r0+r1], mm2    %2     [r0+r1+8], mm3    lea    r2, [r2+r3*2]    lea    r0, [r0+r1*2]    sub    r5d, 2    jg     .height_loop    REP_RET%endmacroAVG2_W16 12, movdAVG2_W16 16, movqcglobal x264_pixel_avg2_w20_mmxext, 6,7    sub    r4, r2    lea    r6, [r4+r3].height_loop:    movq   mm0, [r2]    movq   mm1, [r2+8]    movd   mm2, [r2+16]    movq   mm3, [r2+r3]    movq   mm4, [r2+r3+8]    movd   mm5, [r2+r3+16]    pavgb  mm0, [r2+r4]    pavgb  mm1, [r2+r4+8]    pavgb  mm2, [r2+r4+16]    pavgb  mm3, [r2+r6]    pavgb  mm4, [r2+r6+8]    pavgb  mm5, [r2+r6+16]    movq   [r0], mm0    movq   [r0+8], mm1    movd   [r0+16], mm2    movq   [r0+r1], mm3    movq   [r0+r1+8], mm4    movd   [r0+r1+16], mm5    lea    r2, [r2+r3*2]    lea    r0, [r0+r1*2]    sub    r5d, 2    jg     .height_loop    REP_RETcglobal x264_pixel_avg2_w16_sse2, 6,7    sub    r4, r2    lea    r6, [r4+r3].height_loop:    movdqu xmm0, [r2]    movdqu xmm2, [r2+r3]    movdqu xmm1, [r2+r4]    movdqu xmm3, [r2+r6]    pavgb  xmm0, xmm1    pavgb  xmm2, xmm3    movdqa [r0], xmm0    movdqa [r0+r1], xmm2    lea    r2, [r2+r3*2]    lea    r0, [r0+r1*2]    sub    r5d, 2    jg     .height_loop    REP_RET%macro AVG2_W20 1cglobal x264_pixel_avg2_w20_%1, 6,7    sub    r4, r2    lea    r6, [r4+r3].height_loop:    movdqu xmm0, [r2]    movdqu xmm2, [r2+r3]    movd   mm4,  [r2+16]    movd   mm5,  [r2+r3+16]%ifidn %1, sse2_misalign    pavgb  xmm0, [r2+r4]    pavgb  xmm2, [r2+r6]%else    movdqu xmm1, [r2+r4]    movdqu xmm3, [r2+r6]    pavgb  xmm0, xmm1    pavgb  xmm2, xmm3%endif    pavgb  mm4,  [r2+r4+16]    pavgb  mm5,  [r2+r6+16]    movdqa [r0], xmm0    movd   [r0+16], mm4    movdqa [r0+r1], xmm2    movd   [r0+r1+16], mm5    lea    r2, [r2+r3*2]    lea    r0, [r0+r1*2]    sub    r5d, 2    jg     .height_loop    REP_RET%endmacroAVG2_W20 sse2AVG2_W20 sse2_misalign; Cacheline split code for processors with high latencies for loads; split over cache lines.  See sad-a.asm for a more detailed explanation.; This particular instance is complicated by the fact that src1 and src2; can have different alignments.  For simplicity and code size, only the; MMX cacheline workaround is used.  As a result, in the case of SSE2; pixel_avg, the cacheline check functions calls the SSE2 version if there; is no cacheline split, and the MMX workaround if there is.%macro INIT_SHIFT 2    and    eax, 7    shl    eax, 3    movd   %1, [sw_64 GLOBAL]    movd   %2, eax    psubw  %1, %2%endmacro%macro AVG_CACHELINE_CHECK 3 ; width, cacheline, instruction setcglobal x264_pixel_avg2_w%1_cache%2_%3    mov    eax, r2m    and    eax, 0x1f|(%2>>1)    cmp    eax, (32-%1)|(%2>>1)    jle x264_pixel_avg2_w%1_%3;w12 isn't needed because w16 is just as fast if there's no cacheline split%if %1 == 12    jmp x264_pixel_avg2_w16_cache_mmxext%else    jmp x264_pixel_avg2_w%1_cache_mmxext%endif%endmacro%macro AVG_CACHELINE_START 0    %assign stack_offset 0    INIT_SHIFT mm6, mm7    mov    eax, r4m    INIT_SHIFT mm4, mm5    PROLOGUE 6,6    and    r2, ~7    and    r4, ~7    sub    r4, r2.height_loop:%endmacro%macro AVG_CACHELINE_LOOP 2    movq   mm0, [r2+8+%1]    movq   mm1, [r2+%1]    movq   mm2, [r2+r4+8+%1]    movq   mm3, [r2+r4+%1]    psllq  mm0, mm6    psrlq  mm1, mm7    psllq  mm2, mm4    psrlq  mm3, mm5    por    mm0, mm1    por    mm2, mm3    pavgb  mm0, mm2    %2 [r0+%1], mm0%endmacrox264_pixel_avg2_w8_cache_mmxext:    AVG_CACHELINE_START    AVG_CACHELINE_LOOP 0, movq    add    r2, r3    add    r0, r1    dec    r5d    jg     .height_loop    REP_RETx264_pixel_avg2_w16_cache_mmxext:    AVG_CACHELINE_START    AVG_CACHELINE_LOOP 0, movq    AVG_CACHELINE_LOOP 8, movq    add    r2, r3    add    r0, r1    dec    r5d    jg .height_loop    REP_RET

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产精品亚洲精品| 欧美三级在线播放| 欧美丝袜丝交足nylons图片| 精品成人在线观看| 一区二区三区欧美| 国产乱一区二区| 91精品一区二区三区在线观看| 国产欧美日韩卡一| 狠狠色狠狠色综合| 欧美日本精品一区二区三区| 中文字幕精品在线不卡| 免费av成人在线| 色伊人久久综合中文字幕| 日韩一级黄色大片| 亚洲狠狠丁香婷婷综合久久久| 激情文学综合网| 欧美日韩高清不卡| 亚洲男人天堂av网| 99久久精品情趣| 国内精品免费**视频| 日韩三级视频中文字幕| 久久久久久久精| 国产丝袜欧美中文另类| 亚洲aaa精品| 97se亚洲国产综合自在线观| 日韩欧美在线不卡| 一区二区三区**美女毛片| 丰满少妇久久久久久久| 日韩欧美一区二区视频| 亚洲欧洲国产日韩| 国产综合久久久久影院| 欧美日韩午夜影院| 日本一区二区在线不卡| 成人一区二区三区视频| 色菇凉天天综合网| 国产三区在线成人av| 极品少妇一区二区三区精品视频| 色久优优欧美色久优优| 亚洲bt欧美bt精品777| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲人成在线播放网站岛国| 日韩高清不卡一区二区三区| 91视频一区二区| 久久免费视频色| 亚洲一区二区欧美| www.66久久| 亚洲国产精品成人综合色在线婷婷| 亚洲一区二区三区中文字幕在线 | 国产精品超碰97尤物18| 精品制服美女丁香| 久久午夜色播影院免费高清| 国产成人午夜精品5599| 一区二区在线看| 色国产综合视频| 亚洲电影在线播放| 欧美丰满少妇xxxbbb| 免费成人性网站| 国产欧美一区二区精品婷婷| caoporen国产精品视频| 亚洲六月丁香色婷婷综合久久| 一本久久a久久免费精品不卡| 亚洲综合色噜噜狠狠| 日韩免费高清视频| 日韩一区二区三区视频| 亚洲人成亚洲人成在线观看图片| 6080yy午夜一二三区久久| 99久久精品一区| 成人国产精品免费观看视频| 蜜桃视频一区二区三区| 亚洲午夜久久久久久久久电影院| 欧美激情一区二区三区在线| 国产一区二区三区免费| av在线播放成人| 日本va欧美va瓶| 中文字幕一区二区三区在线播放| 7777精品伊人久久久大香线蕉经典版下载 | 日韩综合一区二区| 日本一区二区三区在线不卡| 欧美日韩国产乱码电影| 99久久国产综合色|国产精品| 久久电影国产免费久久电影| 亚洲一区二三区| **网站欧美大片在线观看| 精品乱人伦一区二区三区| 在线观看一区日韩| 欧美网站一区二区| 日韩三级免费观看| 久久精品亚洲精品国产欧美kt∨ | 一区二区三区日本| 亚洲一区二区三区激情| 另类小说一区二区三区| 国产乱码字幕精品高清av| 91色婷婷久久久久合中文| 欧美少妇一区二区| 久久久亚洲午夜电影| 国产精品动漫网站| 蜜臀久久久99精品久久久久久| 国产不卡一区视频| 在线观看日韩电影| 久久久午夜电影| 亚洲第一成年网| 福利电影一区二区三区| 欧美日韩中文一区| 欧美视频一区二| 精品国产青草久久久久福利| 久久久噜噜噜久久中文字幕色伊伊| 久久久久综合网| 中文字幕欧美国产| 亚洲大片一区二区三区| 日韩av在线发布| 国产成人av一区二区三区在线 | 国产一区在线看| 成人ar影院免费观看视频| 色诱亚洲精品久久久久久| 91精品久久久久久蜜臀| 欧美精彩视频一区二区三区| 亚洲 欧美综合在线网络| 色噜噜狠狠一区二区三区果冻| 国产乱码精品一区二区三区五月婷| 国产成人综合自拍| 日韩欧美色综合网站| 亚洲精品免费电影| 波多野结衣欧美| 中国色在线观看另类| 韩国精品久久久| 欧美成人官网二区| 久久久av毛片精品| 欧美日韩精品福利| 久久精品夜色噜噜亚洲a∨| 亚洲欧美综合另类在线卡通| 天堂va蜜桃一区二区三区| 丁香六月综合激情| 91精品国产色综合久久不卡蜜臀 | 亚洲国产综合在线| 国产精品亚洲午夜一区二区三区 | 国产精品成人一区二区艾草| 天天av天天翘天天综合网| 国产传媒久久文化传媒| 日韩一区二区三免费高清| 亚洲丝袜制服诱惑| 国产.欧美.日韩| 日韩精品综合一本久道在线视频| 亚洲色图视频免费播放| 激情另类小说区图片区视频区| 日本高清视频一区二区| 中文字幕精品三区| 成人午夜激情在线| 欧美激情在线观看视频免费| 日韩高清不卡一区二区三区| 欧洲色大大久久| 18成人在线观看| 色94色欧美sute亚洲线路二| 国产蜜臀av在线一区二区三区| 激情综合亚洲精品| 精品国产一区二区三区av性色| 日韩精品一级二级| 欧美精三区欧美精三区| 三级成人在线视频| 91精品国产欧美日韩| 日韩国产精品久久| 欧美大度的电影原声| 黑人巨大精品欧美一区| 久久在线观看免费| 成人美女视频在线观看| 亚洲欧洲日韩在线| 欧美日韩国产123区| 日本三级亚洲精品| 国产亚洲自拍一区| 色婷婷综合久久久中文一区二区| 亚洲免费成人av| 91精品国产欧美日韩| 国产一区在线不卡| 中文字幕一区二区三区不卡在线| 91色porny| 久久精品国产亚洲一区二区三区| 久久久久久影视| 91福利在线观看| 国产综合色在线| 一区二区欧美国产| 精品国产乱码久久久久久闺蜜 | 日韩精品一区二区三区视频在线观看 | 偷拍与自拍一区| 国产清纯在线一区二区www| 欧美综合色免费| 国产伦精品一区二区三区视频青涩 | 亚洲天天做日日做天天谢日日欢| 欧美猛男男办公室激情| 国产99精品国产| 青青草国产成人99久久| 国产精品初高中害羞小美女文| 在线播放91灌醉迷j高跟美女| 精彩视频一区二区三区| 亚洲第一在线综合网站| 国产精品久久久久久久久久免费看| 欧美日韩精品综合在线| eeuss鲁片一区二区三区在线观看| 日韩电影在线观看电影| 亚洲日本一区二区三区| 欧美经典一区二区| 久久久久久黄色|