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

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

?? quant-a.asm

?? 絕對好的源碼
?? ASM
字號:
;*****************************************************************************;* quant-a.asm: h264 encoder library;*****************************************************************************;* Copyright (C) 2005 x264 project;*;* Authors: Alex Izvorski <aizvorksi@gmail.com>;*          Christian Heine <sennindemokrit@gmx.net>;*;* 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, USA.;*****************************************************************************;*****************************************************************************;*                                                                           *;*  Revision history:                                                        *;*                                                                           *;*  2005.07.26  quant 4x4 & 8x8 MMX functions (AI)                           *;*  2005.09.04  quant MMXEXT (added precision) and DC (CH)                   *;*  2005.09.21  faster MMX and added MMXEXT16 (CH)                           *;*                                                                           *;*****************************************************************************BITS 32%include "i386inc.asm"SECTION_RODATApd_1:  times 2 dd 1SECTION .textcglobal x264_quant_2x2_dc_core15_mmxcglobal x264_quant_4x4_dc_core15_mmxcglobal x264_quant_4x4_core15_mmxcglobal x264_quant_8x8_core15_mmxcglobal x264_quant_2x2_dc_core16_mmxextcglobal x264_quant_4x4_dc_core16_mmxextcglobal x264_quant_4x4_core16_mmxextcglobal x264_quant_8x8_core16_mmxextcglobal x264_quant_2x2_dc_core32_mmxextcglobal x264_quant_4x4_dc_core32_mmxextcglobal x264_quant_4x4_core32_mmxextcglobal x264_quant_8x8_core32_mmxextcglobal x264_dequant_4x4_mmxcglobal x264_dequant_8x8_mmx%macro MMX_QUANT_AC_START 0    mov         eax, [esp+ 4]   ; &dct[0][0]    mov         ecx, [esp+ 8]   ; &quant_mf[0][0]    movd        mm6, [esp+12]   ; i_qbits    movd        mm7, [esp+16]   ; f    punpckldq   mm7, mm7        ; f in each dword%endmacro%macro MMX_QUANT15_DC_START 0    mov         eax, [esp+ 4]   ; &dct[0][0]    movd        mm5, [esp+ 8]   ; i_qmf    movd        mm6, [esp+12]   ; i_qbits    movd        mm7, [esp+16]   ; f    punpcklwd   mm5, mm5    punpcklwd   mm5, mm5        ; i_qmf in each word    punpckldq   mm7, mm7        ; f in each dword%endmacro%macro MMX_QUANT15_1x4 4;;; %1      (m64)       dct[y][x];;; %2      (m64/mmx)   quant_mf[y][x] or quant_mf[0][0] (as int16_t);;; %3      (mmx)       i_qbits in the low doubleword;;; %4      (mmx)       f as doublewords;;; trashes mm0-mm2,mm4    movq        mm0, %1     ; load dct coeffs    pxor        mm4, mm4    pcmpgtw     mm4, mm0    ; sign(coeff)    pxor        mm0, mm4    psubw       mm0, mm4    ; abs(coeff)    movq        mm2, mm0    pmullw      mm0, %2    pmulhw      mm2, %2    movq        mm1, mm0    punpcklwd   mm0, mm2    punpckhwd   mm1, mm2    paddd       mm0, %4     ; round with f    paddd       mm1, %4    psrad       mm0, %3    psrad       mm1, %3    packssdw    mm0, mm1    ; pack    pxor        mm0, mm4    ; restore sign    psubw       mm0, mm4    movq        %1, mm0     ; store%endmacroALIGN 16;-----------------------------------------------------------------------------;   void __cdecl x264_quant_2x2_dc_core15_mmx( int16_t dct[2][2],;       int const i_qmf, int const i_qbits, int const f );;-----------------------------------------------------------------------------x264_quant_2x2_dc_core15_mmx:    MMX_QUANT15_DC_START    MMX_QUANT15_1x4 [eax], mm5, mm6, mm7    retALIGN 16;-----------------------------------------------------------------------------;   void __cdecl x264_quant_4x4_dc_core15_mmx( int16_t dct[4][4],;       int const i_qmf, int const i_qbits, int const f );;-----------------------------------------------------------------------------x264_quant_4x4_dc_core15_mmx:    MMX_QUANT15_DC_START%rep 4    MMX_QUANT15_1x4 [eax], mm5, mm6, mm7    add         eax, byte 8%endrep    retALIGN 16;-----------------------------------------------------------------------------;   void __cdecl x264_quant_4x4_core15_mmx( int16_t dct[4][4],;       int const quant_mf[4][4], int const i_qbits, int const f );;-----------------------------------------------------------------------------x264_quant_4x4_core15_mmx:    MMX_QUANT_AC_START%rep 4    movq        mm5, [ecx]    packssdw    mm5, [ecx+8]    MMX_QUANT15_1x4 [eax], mm5, mm6, mm7    add         ecx, byte 16    add         eax, byte 8%endrep    retALIGN 16;-----------------------------------------------------------------------------;   void __cdecl x264_quant_8x8_core15_mmx( int16_t dct[8][8],;       int const quant_mf[8][8], int const i_qbits, int const f );;-----------------------------------------------------------------------------x264_quant_8x8_core15_mmx:    MMX_QUANT_AC_START%rep 16    movq        mm5, [ecx]    packssdw    mm5, [ecx+8]    MMX_QUANT15_1x4 [eax], mm5, mm6, mm7    add         ecx, byte 16    add         eax, byte 8%endrep    ret; ============================================================================%macro MMXEXT_QUANT16_DC_START 0    mov         eax, [esp+ 4]   ; &dct[0][0]    movd        mm5, [esp+ 8]   ; i_qmf    movd        mm6, [esp+12]   ; i_qbits    movd        mm7, [esp+16]   ; f    pshufw      mm5, mm5, 0     ; i_qmf in each word    punpckldq   mm7, mm7        ; f in each dword%endmacro%macro MMXEXT_QUANT16_1x4 4;;; %1      (m64)       dct[y][x];;; %2      (m64/mmx)   quant_mf[y][x] or quant_mf[0][0] (as uint16_t);;; %3      (mmx)       i_qbits in the low doubleword;;; %4      (mmx)       f as doublewords;;; trashes mm0-mm2,mm4    movq        mm0, %1     ; load dct coeffs    pxor        mm4, mm4    pcmpgtw     mm4, mm0    ; sign(coeff)    pxor        mm0, mm4    psubw       mm0, mm4    ; abs(coeff)    movq        mm2, mm0    pmullw      mm0, %2    pmulhuw     mm2, %2    movq        mm1, mm0    punpcklwd   mm0, mm2    punpckhwd   mm1, mm2    paddd       mm0, %4     ; round with f    paddd       mm1, %4    psrad       mm0, %3    psrad       mm1, %3    packssdw    mm0, mm1    ; pack    pxor        mm0, mm4    ; restore sign    psubw       mm0, mm4    movq        %1, mm0     ; store%endmacroALIGN 16;-----------------------------------------------------------------------------;   void __cdecl x264_quant_2x2_dc_core16_mmxext( int16_t dct[2][2],;       int const i_qmf, int const i_qbits, int const f );;-----------------------------------------------------------------------------x264_quant_2x2_dc_core16_mmxext:    MMXEXT_QUANT16_DC_START    MMXEXT_QUANT16_1x4 [eax], mm5, mm6, mm7    retALIGN 16;-----------------------------------------------------------------------------;   void __cdecl x264_quant_4x4_dc_core16_mmxext( int16_t dct[4][4],;       int const i_qmf, int const i_qbits, int const f );;-----------------------------------------------------------------------------x264_quant_4x4_dc_core16_mmxext:    MMXEXT_QUANT16_DC_START%rep 4    MMXEXT_QUANT16_1x4 [eax], mm5, mm6, mm7    add         eax, byte 8%endrep    retALIGN 16;-----------------------------------------------------------------------------;   void __cdecl x264_quant_4x4_core16_mmxext( int16_t dct[4][4],;       int const quant_mf[4][4], int const i_qbits, int const f );;-----------------------------------------------------------------------------x264_quant_4x4_core16_mmxext:    MMX_QUANT_AC_START%rep 4    pshufw      mm5, [ecx], 10110001b    paddw       mm5, [ecx+8]    pshufw      mm5, mm5, 10001101b    MMXEXT_QUANT16_1x4 [eax], mm5, mm6, mm7    add         ecx, byte 16    add         eax, byte 8%endrep    retALIGN 16;-----------------------------------------------------------------------------;   void __cdecl x264_quant_8x8_core16_mmxext( int16_t dct[8][8],;       int const quant_mf[8][8], int const i_qbits, int const f );;-----------------------------------------------------------------------------x264_quant_8x8_core16_mmxext:    MMX_QUANT_AC_START%rep 16    pshufw      mm5, [ecx], 10110001b    paddw       mm5, [ecx+8]    pshufw      mm5, mm5, 10001101b    MMXEXT_QUANT16_1x4 [eax], mm5, mm6, mm7    add         ecx, byte 16    add         eax, byte 8%endrep    ret%macro MMX_QUANT32_DC_START 0    mov         eax, [esp+ 4]   ; &dct[0][0]    movd        mm5, [esp+ 8]   ; i_qmf    movd        mm6, [esp+12]   ; i_qbits    movd        mm7, [esp+16]   ; f    punpckldq   mm5, mm5        ; i_qmf in each dword    punpckldq   mm7, mm7        ; f in each dword%endmacro%macro MMXEXT_QUANT32_1x4 5;;; %1      (m64)       dct[y][x];;; %2,%3   (m64/mmx)   quant_mf[y][x] or quant_mf[0][0] (as int16_t);;; %4      (mmx)       i_qbits in the low quadword;;; %5      (mmx)       f as doublewords;;; trashes mm0-mm4    movq        mm0, %1     ; load dct coeffs    pxor        mm4, mm4    pcmpgtw     mm4, mm0    ; sign(mm0)    pxor        mm0, mm4    psubw       mm0, mm4    ; abs(mm0)    movq        mm1, mm0    punpcklwd   mm0, mm0    ; duplicate the words for the upcomming    punpckhwd   mm1, mm1    ; 32 bit multiplication    movq        mm2, mm0    ; like in school ...    movq        mm3, mm1    pmulhuw     mm0, %2     ; ... multiply the parts ...    pmulhuw     mm1, %3    pmullw      mm2, %2    pmullw      mm3, %3    pslld       mm0, 16     ; ... shift ...    pslld       mm1, 16    paddd       mm0, mm2    ; ... and add them    paddd       mm1, mm3    paddd       mm0, %5     ; round with f    paddd       mm1, %5    psrad       mm0, %4    psrad       mm1, %4    packssdw    mm0, mm1    ; pack to int16_t    pxor        mm0, mm4    ; restore sign    psubw       mm0, mm4    movq        %1, mm0     ; store%endmacroALIGN 16;-----------------------------------------------------------------------------;   void __cdecl x264_quant_2x2_dc_core32_mmxext( int16_t dct[2][2],;       int const i_qmf, int const i_qbits, int const f );;-----------------------------------------------------------------------------x264_quant_2x2_dc_core32_mmxext:    MMX_QUANT32_DC_START    MMXEXT_QUANT32_1x4 [eax], mm5, mm5, mm6, mm7    retALIGN 16;-----------------------------------------------------------------------------;   void __cdecl x264_quant_4x4_dc_core32_mmxext( int16_t dct[4][4],;       int const i_qmf, int const i_qbits, int const f );;-----------------------------------------------------------------------------x264_quant_4x4_dc_core32_mmxext:    MMX_QUANT32_DC_START%rep 4    MMXEXT_QUANT32_1x4 [eax], mm5, mm5, mm6, mm7    add         eax, byte 8%endrep    retALIGN 16;-----------------------------------------------------------------------------;   void __cdecl x264_quant_4x4_core32_mmxext( int16_t dct[4][4],;       int const quant_mf[4][4], int const i_qbits, int const f );;-----------------------------------------------------------------------------x264_quant_4x4_core32_mmxext:    MMX_QUANT_AC_START%rep 4    MMXEXT_QUANT32_1x4 [eax], [ecx], [ecx+8], mm6, mm7    add         eax, byte 8    add         ecx, byte 16%endrep    retALIGN 16;-----------------------------------------------------------------------------;   void __cdecl x264_quant_8x8_core32_mmxext( int16_t dct[8][8],;       int const quant_mf[8][8], int const i_qbits, int const f );;-----------------------------------------------------------------------------x264_quant_8x8_core32_mmxext:    MMX_QUANT_AC_START%rep 16    MMXEXT_QUANT32_1x4 [eax], [ecx], [ecx+8], mm6, mm7    add         eax, byte 8    add         ecx, byte 16%endrep    ret;=============================================================================; dequant;=============================================================================%macro DEQUANT16_L_1x4 3;;; %1      dct[y][x];;; %2,%3   dequant_mf[i_mf][y][x];;; mm5     i_qbits    movq     mm1, %2    movq     mm2, %3    movq     mm0, %1    packssdw mm1, mm2    pmullw   mm0, mm1    psllw    mm0, mm5    movq     %1,  mm0%endmacro%macro DEQUANT16_R_1x4 3;;; %1      dct[y][x];;; %2,%3   dequant_mf[i_mf][y][x];;; mm5     -i_qbits;;; mm6     f as words    movq     mm1, %2    movq     mm2, %3    movq     mm0, %1    packssdw mm1, mm2    pmullw   mm0, mm1    paddw    mm0, mm6    psraw    mm0, mm5    movq     %1,  mm0%endmacro%macro DEQUANT32_R_1x4 3;;; %1      dct[y][x];;; %2,%3   dequant_mf[i_mf][y][x];;; mm5     -i_qbits;;; mm6     f as dwords;;; mm7     0    movq      mm0, %1    movq      mm1, mm0    punpcklwd mm0, mm0    punpckhwd mm1, mm1    movq      mm2, mm0    movq      mm3, mm1    pmulhw    mm0, %2    pmulhw    mm1, %3    pmullw    mm2, %2    pmullw    mm3, %3    pslld     mm0, 16    pslld     mm1, 16    paddd     mm0, mm2    paddd     mm1, mm3    paddd     mm0, mm6    paddd     mm1, mm6    psrad     mm0, mm5    psrad     mm1, mm5    packssdw  mm0, mm1    movq      %1,  mm0%endmacro%macro DEQUANT_WxH 3ALIGN 16;;; void x264_dequant_4x4_mmx( int16_t dct[4][4], int dequant_mf[6][4][4], int i_qp )%1:    mov  edx, [esp+12] ; i_qp    imul eax, edx, 0x2b    shr  eax, 8       ; i_qbits = i_qp / 6    lea  ecx, [eax+eax*2]    sub  edx, ecx    sub  edx, ecx     ; i_mf = i_qp % 6    shl  edx, %3+2    add  edx, [esp+8] ; dequant_mf[i_mf]    mov  ecx, [esp+4] ; dct    sub  eax, %3    jl   .rshift32    ; negative qbits => rightshift.lshift:    movd mm5, eax    mov  eax, 8*(%2-1).loopl16%rep 2    DEQUANT16_L_1x4 [ecx+eax], [edx+eax*2], [edx+eax*2+8]    sub  eax, byte 8%endrep    jge  .loopl16    nop    ret.rshift32:    neg   eax    picpush ebx    picgetgot ebx    movq  mm6, [pd_1 GOT_ebx]    picpop ebx    movd  mm5, eax    pxor  mm7, mm7    pslld mm6, mm5    psrld mm6, 1    mov  eax, 8*(%2-1).loopr32%rep 2    DEQUANT32_R_1x4 [ecx+eax], [edx+eax*2], [edx+eax*2+8]    sub  eax, byte 8%endrep    jge  .loopr32    nop    ret%endmacroDEQUANT_WxH x264_dequant_4x4_mmx, 4, 4DEQUANT_WxH x264_dequant_8x8_mmx, 16, 6

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区三| 一区二区三区欧美久久| 色欧美片视频在线观看| 久久99国内精品| 亚洲一区二区四区蜜桃| 欧美激情一区二区三区全黄| 欧美精品xxxxbbbb| 91麻豆高清视频| 国产精品自拍网站| 日韩av中文字幕一区二区三区| 亚洲视频一二三区| 国产清纯白嫩初高生在线观看91 | 国产激情一区二区三区四区| 亚洲一本大道在线| 一区二区视频免费在线观看| 国产欧美一区二区精品秋霞影院| 欧美一区二区三区思思人| 日本二三区不卡| 99视频国产精品| 国产乱一区二区| 狠狠网亚洲精品| 麻豆精品视频在线| 日日骚欧美日韩| 天堂一区二区在线| 亚洲午夜激情av| 亚洲一区二区五区| 亚洲国产日韩a在线播放性色| 一区视频在线播放| 中文字幕在线播放不卡一区| 久久精品免视看| 久久日韩粉嫩一区二区三区| 日韩精品最新网址| 日韩小视频在线观看专区| 欧美顶级少妇做爰| 欧美精品乱码久久久久久| 欧美伊人久久久久久久久影院 | 国产麻豆欧美日韩一区| 久99久精品视频免费观看| 免费成人结看片| 精彩视频一区二区| 国产真实乱对白精彩久久| 国产在线精品一区二区三区不卡| 极品美女销魂一区二区三区 | 国产一区91精品张津瑜| 久久99国内精品| 国产精品 日产精品 欧美精品| 国产老女人精品毛片久久| 成人综合激情网| 色综合久久久久综合99| 欧美三级一区二区| 日韩一区二区精品葵司在线| 精品成人在线观看| 国产亚洲一区二区三区在线观看| 国产无人区一区二区三区| 中文字幕综合网| 夜夜嗨av一区二区三区中文字幕 | 久久精品久久99精品久久| 国产精品自拍三区| a美女胸又www黄视频久久| 色琪琪一区二区三区亚洲区| 欧美日韩日日摸| 精品欧美久久久| 国产精品美女久久久久久久 | 国产精品热久久久久夜色精品三区| 国产精品全国免费观看高清| 一区二区三区加勒比av| 免费一级片91| 风间由美性色一区二区三区| 一本色道久久综合精品竹菊| 日韩一区国产二区欧美三区| 国产色综合久久| 午夜精品久久久久久不卡8050| 国产在线精品一区二区夜色 | 亚洲成av人片在线观看无码| 久久国产欧美日韩精品| www.在线成人| 欧美精品久久久久久久多人混战| www国产精品av| 一区二区三区 在线观看视频| 久久精品噜噜噜成人88aⅴ| 成人av电影在线网| 欧美一区二区三区免费观看视频| 久久精品男人的天堂| 午夜精品久久久久久久久久| 国产成人超碰人人澡人人澡| 欧美日韩一二三| 亚洲国产成人一区二区三区| 午夜精品一区二区三区电影天堂 | 欧美性色综合网| 精品久久久久久综合日本欧美| 中文字幕一区二区三区乱码在线| 日韩av一区二区三区四区| 99在线视频精品| 精品免费视频.| 日韩综合小视频| 色综合天天综合网天天狠天天| 久久综合久久综合九色| 午夜欧美视频在线观看| 91美女福利视频| 国产亚洲精品资源在线26u| 亚洲成人久久影院| 91在线码无精品| 国产视频一区在线播放| 久久av资源网| 91精品婷婷国产综合久久| 亚洲激情男女视频| 成人免费视频播放| 久久久三级国产网站| 日韩av网站在线观看| 欧美三级视频在线观看| 亚洲女人的天堂| 成人av网站大全| 国产欧美久久久精品影院| 麻豆精品视频在线| 日韩一区二区麻豆国产| 天天综合色天天| 欧美男女性生活在线直播观看| 日韩一区中文字幕| 岛国av在线一区| 久久久久青草大香线综合精品| 日本va欧美va精品| 欧美三区免费完整视频在线观看| 亚洲裸体xxx| 一本色道亚洲精品aⅴ| 亚洲图片激情小说| 99国产精品久| 综合久久给合久久狠狠狠97色 | 91在线视频网址| 亚洲日本在线观看| 91免费视频网| 亚洲欧美日韩国产手机在线| 97aⅴ精品视频一二三区| 国产精品国产三级国产aⅴ中文 | 91精品久久久久久久99蜜桃| 亚洲国产日韩在线一区模特| 欧美日韩五月天| 热久久久久久久| 精品国产乱码久久久久久老虎| 理论片日本一区| 久久久一区二区三区| 国产91精品精华液一区二区三区| 日本一区二区视频在线| 不卡视频在线观看| 日韩理论片在线| 欧美日韩国产片| 免费久久99精品国产| 26uuu色噜噜精品一区二区| 国产高清不卡二三区| 国产欧美视频一区二区三区| 波多野结衣在线aⅴ中文字幕不卡| 国产精品乱码久久久久久| 色综合久久久网| 亚洲自拍偷拍网站| 国产福利一区二区三区| 日韩一级大片在线观看| 国产一区二区三区四区五区美女 | 久久99久久久欧美国产| 久久女同性恋中文字幕| av亚洲精华国产精华精华| 一区二区三区成人| 欧美一级国产精品| 国产福利一区二区三区视频在线| 国产精品二三区| 欧美日韩国产免费一区二区 | 欧美变态tickling挠脚心| 国产宾馆实践打屁股91| 亚洲精品国产一区二区三区四区在线 | 亚洲电影第三页| 久久婷婷综合激情| eeuss国产一区二区三区| 亚洲成a人v欧美综合天堂| 久久婷婷综合激情| 欧美性videosxxxxx| 国产在线一区二区| 亚洲激情在线播放| 精品福利一区二区三区| 色婷婷综合五月| 国产伦精一区二区三区| 夜夜嗨av一区二区三区四季av | 日韩欧美在线一区二区三区| 不卡视频在线看| 日本女人一区二区三区| 亚洲天堂网中文字| 久久只精品国产| 欧美日韩一区二区三区四区 | 午夜精品免费在线观看| 国产欧美va欧美不卡在线| 欧美猛男男办公室激情| 成人免费视频免费观看| 另类小说图片综合网| 亚洲国产精品人人做人人爽| 国产午夜三级一区二区三| 欧美精选在线播放| 色综合天天综合| 国产999精品久久| 麻豆成人av在线| 丝瓜av网站精品一区二区| 亚洲欧美在线视频观看| 国产亚洲va综合人人澡精品| 91精品国产欧美一区二区18 |