亚洲欧美第一页_禁久久精品乱码_粉嫩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 64%include "amd64inc.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         rdi, rdi        ; &dct[0][0];   mov         rsi, rsi        ; &quant_mf[0][0]    movd        mm6, parm3d     ; i_qbits    movd        mm7, parm4d     ; f    punpckldq   mm7, mm7        ; f in each dword%endmacro%macro MMX_QUANT15_DC_START 0;   mov         rdi, rdi        ; &dct[0][0]    movd        mm5, parm2d     ; i_qmf    movd        mm6, parm3d     ; i_qbits    movd        mm7, parm4d     ; 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 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 [parm1q], mm5, mm6, mm7    retALIGN 16;-----------------------------------------------------------------------------;   void 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 [parm1q], mm5, mm6, mm7    add         parm1q, byte 8%endrep    retALIGN 16;-----------------------------------------------------------------------------;   void 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, [parm2q]    packssdw    mm5, [parm2q+8]    MMX_QUANT15_1x4 [parm1q], mm5, mm6, mm7    add         parm2q, byte 16    add         parm1q, byte 8%endrep    retALIGN 16;-----------------------------------------------------------------------------;   void 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, [parm2q]    packssdw    mm5, [parm2q+8]    MMX_QUANT15_1x4 [parm1q], mm5, mm6, mm7    add         parm2q, byte 16    add         parm1q, byte 8%endrep    ret; ============================================================================%macro MMXEXT_QUANT16_DC_START 0;   mov         rdi, rdi        ; &dct[0][0]    movd        mm5, parm2d     ; i_qmf    movd        mm6, parm3d     ; i_qbits    movd        mm7, parm4d     ; 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 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 [parm1q], mm5, mm6, mm7    retALIGN 16;-----------------------------------------------------------------------------;   void 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 [parm1q], mm5, mm6, mm7    add         parm1q, byte 8%endrep    retALIGN 16;-----------------------------------------------------------------------------;   void 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, [parm2q], 10110001b    paddw       mm5, [parm2q+8]    pshufw      mm5, mm5, 10001101b    MMXEXT_QUANT16_1x4 [parm1q], mm5, mm6, mm7    add         parm2q, byte 16    add         parm1q, byte 8%endrep    retALIGN 16;-----------------------------------------------------------------------------;   void 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, [parm2q], 10110001b    paddw       mm5, [parm2q+8]    pshufw      mm5, mm5, 10001101b    MMXEXT_QUANT16_1x4 [parm1q], mm5, mm6, mm7    add         parm2q, byte 16    add         parm1q, byte 8%endrep    ret%macro MMX_QUANT32_DC_START 0;   mov         rdi, rdi        ; &dct[0][0]    movd        mm5, parm2d     ; i_qmf    movd        mm6, parm3d     ; i_qbits    movd        mm7, parm4d     ; 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 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 [parm1q], mm5, mm5, mm6, mm7    retALIGN 16;-----------------------------------------------------------------------------;   void 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 [parm1q], mm5, mm5, mm6, mm7    add         parm1q, byte 8%endrep    retALIGN 16;-----------------------------------------------------------------------------;   void 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 [parm1q], [parm2q], [parm2q+8], mm6, mm7    add         parm1q, byte 8    add         parm2q, byte 16%endrep    retALIGN 16;-----------------------------------------------------------------------------;   void 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 [parm1q], [parm2q], [parm2q+8], mm6, mm7    add         parm1q, byte 8    add         parm2q, 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 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  rdi, rdi   ; dct;   mov  rsi, rsi   ; dequant_mf;   mov  edx, edx   ; 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    movsxd rdx, edx    add  rsi, rdx   ; dequant_mf[i_mf]    sub  eax, %3    jl   .rshift32  ; negative qbits => rightshift.lshift:    movd mm5, eax%rep %2    DEQUANT16_L_1x4 [rdi], [rsi], [rsi+8]    add  rsi, byte 16    add  rdi, byte 8%endrep    ret.rshift32:    neg   eax    movd  mm5, eax    movq  mm6, [pd_1 GLOBAL]    pxor  mm7, mm7    pslld mm6, mm5    psrld mm6, 1%rep %2    DEQUANT32_R_1x4 [rdi], [rsi], [rsi+8]    add  rsi, byte 16    add  rdi, byte 8%endrep    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一区二区三区免费野_久草精品视频
日本色综合中文字幕| 一区二区在线看| 麻豆91精品91久久久的内涵| 欧美色综合网站| 亚洲与欧洲av电影| 欧美三级在线看| 青娱乐精品视频| 久久青草欧美一区二区三区| 福利一区二区在线| 国产精品久久久久久久久快鸭 | 国产69精品久久99不卡| 国产日产亚洲精品系列| 91网上在线视频| 亚洲图片欧美视频| 69久久夜色精品国产69蝌蚪网| 蜜桃精品视频在线| 中文字幕不卡在线| 91福利视频网站| 七七婷婷婷婷精品国产| 国产欧美日韩在线观看| 在线观看三级视频欧美| 免费观看成人鲁鲁鲁鲁鲁视频| 久久久久久久av麻豆果冻| thepron国产精品| 亚洲一区在线电影| 亚洲精品在线一区二区| 北条麻妃国产九九精品视频| 亚洲一区二区四区蜜桃| 久久综合色一综合色88| 色av综合在线| 国产美女娇喘av呻吟久久| 亚洲人被黑人高潮完整版| 欧美日韩在线三级| 风间由美一区二区av101| 亚洲一区二区三区中文字幕| 亚洲精品在线电影| 欧美色偷偷大香| 国产精品自拍三区| 天堂成人免费av电影一区| 国产精品免费视频观看| 欧美一级搡bbbb搡bbbb| 91麻豆产精品久久久久久| 琪琪久久久久日韩精品| 中文字幕制服丝袜成人av| 精品视频色一区| 不卡一区在线观看| 韩国午夜理伦三级不卡影院| 亚洲同性同志一二三专区| 日韩欧美一区二区久久婷婷| 91国产成人在线| 成人免费观看av| 麻豆成人综合网| 香蕉乱码成人久久天堂爱免费| 国产欧美一区二区三区在线老狼| 欧美日本在线观看| 99国产精品久久久久| 国模一区二区三区白浆 | 手机精品视频在线观看| 亚洲天堂av一区| 国产欧美精品日韩区二区麻豆天美| 欧美日韩精品免费观看视频| 成人av网站免费| 国产东北露脸精品视频| 欧美aaa在线| 天天av天天翘天天综合网色鬼国产| 国产精品全国免费观看高清| 久久久噜噜噜久噜久久综合| 欧美刺激午夜性久久久久久久| 欧美日韩一区二区三区高清| 在线区一区二视频| 色噜噜狠狠色综合欧洲selulu| 成人精品免费看| 成人午夜短视频| 国产成a人无v码亚洲福利| 久久国产精品色| 蜜臀久久久久久久| 天堂一区二区在线| 婷婷激情综合网| 日韩av电影天堂| 日本美女视频一区二区| 日韩电影在线免费| 日韩成人精品在线| 日本在线不卡一区| 日本aⅴ亚洲精品中文乱码| 日韩综合小视频| 蜜桃视频一区二区| 日本美女视频一区二区| 韩国一区二区视频| 国产+成+人+亚洲欧洲自线| 国产精品99久久久久久有的能看| 国产一区免费电影| 国产69精品久久99不卡| 99久久综合国产精品| 9i在线看片成人免费| 99久久国产综合色|国产精品| 91亚洲精品一区二区乱码| 91天堂素人约啪| 欧美精品少妇一区二区三区| 日韩欧美一二三四区| 久久嫩草精品久久久精品一| 国产午夜精品美女毛片视频| 中文字幕精品一区二区精品绿巨人| 国产精品久久久久久久久动漫| 亚洲精品视频在线| 日本不卡视频在线| 国产成人在线视频播放| 91丨九色丨蝌蚪富婆spa| 欧美高清精品3d| 精品国产一区二区三区久久久蜜月 | 91国产免费观看| 欧美一激情一区二区三区| 久久九九影视网| 亚洲免费观看视频| 琪琪久久久久日韩精品| 不卡的av网站| 91精品国产综合久久婷婷香蕉 | 欧美精彩视频一区二区三区| 亚洲精品成人在线| 精品一区二区免费| 成人18视频日本| 91精品在线麻豆| 国产精品无圣光一区二区| 亚洲一级二级在线| 国产一区二区不卡在线| 色综合久久99| 欧美不卡一区二区三区四区| 最新国产成人在线观看| 日日摸夜夜添夜夜添国产精品 | 成人av电影观看| 91精品国产品国语在线不卡| 欧美国产一区在线| 日韩av电影免费观看高清完整版| av电影在线观看不卡| 日韩午夜在线播放| 亚洲青青青在线视频| 久久国产精品99久久久久久老狼 | 日本韩国一区二区| 精品国免费一区二区三区| 一区二区三区在线观看欧美| 国产精品99久久久久久久女警| 欧美午夜理伦三级在线观看| 国产精品午夜在线观看| 91国产精品成人| 国产喷白浆一区二区三区| 另类小说色综合网站| 欧美亚洲一区二区在线| 国产精品另类一区| 精品一区中文字幕| 欧美精品黑人性xxxx| 亚洲精品成人悠悠色影视| 北岛玲一区二区三区四区| 久久网站最新地址| 久久精品国产99久久6| 欧美放荡的少妇| 亚洲图片欧美一区| 欧美性感一类影片在线播放| 亚洲视频一二三| 成人福利视频网站| 亚洲国产经典视频| 国产成人精品在线看| 久久久精品2019中文字幕之3| 免费在线一区观看| 欧美色综合网站| 亚洲电影视频在线| 欧美视频一区在线| 一区二区三区在线免费观看| 香蕉加勒比综合久久| 国产精品99久| 国产欧美一区二区精品性色超碰 | 一区免费观看视频| 99精品视频中文字幕| 欧美国产精品专区| av在线一区二区三区| 综合激情网...| 91久久免费观看| 一区二区三区欧美日| 91久久人澡人人添人人爽欧美| 亚洲免费在线看| 欧美在线观看视频在线| 亚州成人在线电影| 日韩亚洲电影在线| 国产伦精品一区二区三区视频青涩| 26uuuu精品一区二区| 国产不卡免费视频| 国产精品免费久久久久| 日本二三区不卡| 亚洲国产精品久久人人爱| 欧美一区二区免费视频| 国产精品一区二区久激情瑜伽| 亚洲成av人片一区二区| 欧美一区二区网站| 国产乱码一区二区三区| 日韩一区有码在线| 欧美精品一二三| 国产精品小仙女| 亚洲啪啪综合av一区二区三区| 欧美系列日韩一区| 国产一区二区不卡| 亚洲欧美另类久久久精品| 欧美精选午夜久久久乱码6080|