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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? quantize_h263_mmx.asm

?? xvid的視頻編解碼庫(kù)文件
?? ASM
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
;/*****************************************************************************; *; *  XVID MPEG-4 VIDEO CODEC; *  - MPEG4 Quantization H263 implementation / MMX optimized -; *; *  Copyright(C) 2001-2003 Peter Ross <pross@xvid.org>; *               2002-2003 Pascal Massimino <skal@planet-d.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-1307 USA; *; * $Id$; *; ****************************************************************************/; enable dequant saturate [-2048,2047], test purposes only.%define SATURATEBITS 32%macro cglobal 1       %ifdef PREFIX		global _%1		%define %1 _%1	%else		global %1	%endif%endmacro;=============================================================================; Read only Local data;=============================================================================%ifdef FORMAT_COFFSECTION .rodata data%elseSECTION .rodata data align=16%endifALIGN 16plus_one:	times 8 dw 1;-----------------------------------------------------------------------------;; subtract by Q/2 table;;-----------------------------------------------------------------------------ALIGN 16mmx_sub:%assign quant 1%rep 31	times 4 dw  quant / 2	%assign quant quant+1%endrep;-----------------------------------------------------------------------------;; divide by 2Q table;; use a shift of 16 to take full advantage of _pmulhw_; for q=1, _pmulhw_ will overflow so it is treated seperately; (3dnow2 provides _pmulhuw_ which wont cause overflow);;-----------------------------------------------------------------------------ALIGN 16mmx_div:%assign quant 1%rep 31	times 4 dw  (1<<16) / (quant*2) + 1	%assign quant quant+1%endrep;-----------------------------------------------------------------------------;; add by (odd(Q) ? Q : Q - 1) table;;-----------------------------------------------------------------------------ALIGN 16mmx_add:%assign quant 1%rep 31	%if quant % 2 != 0	times 4 dw  quant	%else	times 4 dw quant - 1	%endif	%assign quant quant+1%endrep;-----------------------------------------------------------------------------;; multiple by 2Q table;;-----------------------------------------------------------------------------ALIGN 16mmx_mul:%assign quant 1%rep 31	times 4 dw  quant*2	%assign quant quant+1%endrep;-----------------------------------------------------------------------------;; saturation limits;;-----------------------------------------------------------------------------ALIGN 16sse2_2047:	times 8 dw 2047ALIGN 16mmx_2047:	times 4 dw 2047ALIGN 8mmx_32768_minus_2048:	times 4 dw (32768-2048)mmx_32767_minus_2047:	times 4 dw (32767-2047);=============================================================================; Code;=============================================================================SECTION .textcglobal quant_h263_intra_mmxcglobal quant_h263_intra_sse2cglobal quant_h263_inter_mmxcglobal quant_h263_inter_sse2cglobal dequant_h263_intra_mmxcglobal dequant_h263_intra_xmmcglobal dequant_h263_intra_sse2cglobal dequant_h263_inter_mmxcglobal dequant_h263_inter_xmmcglobal dequant_h263_inter_sse2;-----------------------------------------------------------------------------;; uint32_t quant_h263_intra_mmx(int16_t * coeff,;                               const int16_t const * data,;                               const uint32_t quant,;                               const uint32_t dcscalar,;                               const uint16_t *mpeg_matrices);;;-----------------------------------------------------------------------------ALIGN 16quant_h263_intra_mmx:  push ecx  push esi  push edi  mov edi, [esp + 12 + 4]     ; coeff  mov esi, [esp + 12 + 8]     ; data  mov eax, [esp + 12 + 12]    ; quant  xor ecx, ecx  cmp al, 1  jz .q1loop  movq mm7, [mmx_div + eax * 8 - 8]ALIGN 16.loop  movq mm0, [esi + 8*ecx]           ; mm0 = [1st]  movq mm3, [esi + 8*ecx + 8]  pxor mm1, mm1                     ; mm1 = 0  pxor mm4, mm4                     ;  pcmpgtw mm1, mm0                  ; mm1 = (0 > mm0)  pcmpgtw mm4, mm3                  ;  pxor mm0, mm1                     ; mm0 = |mm0|  pxor mm3, mm4                     ;  psubw mm0, mm1                    ; displace  psubw mm3, mm4                    ;  pmulhw mm0, mm7                   ; mm0 = (mm0 / 2Q) >> 16  pmulhw mm3, mm7                   ;  pxor mm0, mm1                     ; mm0 *= sign(mm0)  pxor mm3, mm4                     ;  psubw mm0, mm1                    ; undisplace  psubw mm3, mm4                    ;  movq [edi + 8*ecx], mm0  movq [edi + 8*ecx + 8], mm3  add ecx, 2  cmp ecx, 16  jnz .loop.done    ; caclulate  data[0] // (int32_t)dcscalar)  mov ecx, [esp + 12 + 16]      ; dcscalar  mov edx, ecx  movsx eax, word [esi]         ; data[0]  shr edx, 1                    ; edx = dcscalar /2  cmp eax, 0  jg .gtzero  sub eax, edx  jmp short .mul.gtzero  add eax, edx.mul  cdq ; expand eax -> edx:eax  idiv ecx          ; eax = edx:eax / dcscalar  mov [edi], ax     ; coeff[0] = ax  xor eax, eax      ; return(0);  pop edi  pop esi  pop ecx  retALIGN 16.q1loop  movq mm0, [esi + 8*ecx]           ; mm0 = [1st]  movq mm3, [esi + 8*ecx + 8]  pxor mm1, mm1                     ; mm1 = 0  pxor mm4, mm4                     ;  pcmpgtw mm1, mm0                  ; mm1 = (0 > mm0)  pcmpgtw mm4, mm3                  ;  pxor mm0, mm1                     ; mm0 = |mm0|  pxor mm3, mm4                     ;  psubw mm0, mm1                    ; displace  psubw mm3, mm4                    ;  psrlw mm0, 1                      ; mm0 >>= 1   (/2)  psrlw mm3, 1                      ;  pxor mm0, mm1                     ; mm0 *= sign(mm0)  pxor mm3, mm4  psubw mm0, mm1                    ; undisplace  psubw mm3, mm4                    ;  movq [edi + 8*ecx], mm0  movq [edi + 8*ecx + 8], mm3  add ecx, 2  cmp ecx, 16  jnz .q1loop  jmp short .done;-----------------------------------------------------------------------------;; uint32_t quant_h263_intra_sse2(int16_t * coeff,;                                const int16_t const * data,;                                const uint32_t quant,;                                const uint32_t dcscalar,;                                const uint16_t *mpeg_matrices);;;-----------------------------------------------------------------------------ALIGN 16quant_h263_intra_sse2:  push esi  push edi  mov edi, [esp + 8 + 4]                ; coeff  mov esi, [esp + 8 + 8]                ; data  mov eax, [esp + 8 + 12]               ; quant  xor ecx, ecx  cmp al, 1  jz near .qas2_q1loop.qas2_not1  movq mm7, [mmx_div + eax*8 - 8]  movq2dq xmm7, mm7  movlhps xmm7, xmm7ALIGN 16.qas2_loop  movdqa xmm0, [esi + ecx*8]                ; xmm0 = [1st]  movdqa xmm3, [esi + ecx*8 + 16]           ; xmm3 = [2nd]  pxor xmm1, xmm1  pxor xmm4, xmm4  pcmpgtw xmm1, xmm0  pcmpgtw xmm4, xmm3  pxor xmm0, xmm1  pxor xmm3, xmm4  psubw xmm0, xmm1  psubw xmm3, xmm4  pmulhw xmm0, xmm7  pmulhw xmm3, xmm7  pxor xmm0, xmm1  pxor xmm3, xmm4  psubw xmm0, xmm1  psubw xmm3, xmm4  movdqa [edi + ecx*8], xmm0  movdqa [edi + ecx*8 + 16], xmm3  add ecx, 4  cmp ecx, 16  jnz .qas2_loop.qas2_done  mov ecx, [esp + 8 + 16]   ; dcscalar  mov edx, ecx  movsx eax, word [esi]  shr edx, 1  cmp eax, 0  jg .qas2_gtzero  sub eax, edx  jmp short .qas2_mul.qas2_gtzero  add eax, edx.qas2_mul  cdq  idiv ecx  mov [edi], ax  xor eax, eax      ; return(0);  pop edi  pop esi  retALIGN 16.qas2_q1loop  movdqa xmm0, [esi + ecx*8]         ; xmm0 = [1st]  movdqa xmm3, [esi + ecx*8 + 16]    ; xmm3 = [2nd]  pxor xmm1, xmm1  pxor xmm4, xmm4  pcmpgtw xmm1, xmm0  pcmpgtw xmm4, xmm3  pxor xmm0, xmm1  pxor xmm3, xmm4  psubw xmm0, xmm1  psubw xmm3, xmm4  psrlw xmm0, 1  psrlw xmm3, 1  pxor xmm0, xmm1  pxor xmm3, xmm4  psubw xmm0, xmm1  psubw xmm3, xmm4  movdqa [edi + ecx*8], xmm0  movdqa [edi + ecx*8 + 16], xmm3  add ecx, 4  cmp ecx, 16  jnz .qas2_q1loop  jmp near .qas2_done;-----------------------------------------------------------------------------;; uint32_t quant_h263_inter_mmx(int16_t * coeff,;                               const int16_t const * data,;                               const uint32_t quant,;                               const uint16_t *mpeg_matrices);;;-----------------------------------------------------------------------------ALIGN 16quant_h263_inter_mmx:  push ecx  push esi  push edi  mov edi, [esp + 12 + 4]           ; coeff  mov esi, [esp + 12 + 8]           ; data  mov eax, [esp + 12 + 12]          ; quant  xor ecx, ecx  pxor mm5, mm5                     ; sum  movq mm6, [mmx_sub + eax * 8 - 8] ; sub  cmp al, 1  jz .q1loop  movq mm7, [mmx_div + eax * 8 - 8] ; dividerALIGN 8.loop  movq mm0, [esi + 8*ecx]           ; mm0 = [1st]  movq mm3, [esi + 8*ecx + 8]  pxor mm1, mm1                     ; mm1 = 0  pxor mm4, mm4                     ;  pcmpgtw mm1, mm0                  ; mm1 = (0 > mm0)  pcmpgtw mm4, mm3                  ;  pxor mm0, mm1                     ; mm0 = |mm0|  pxor mm3, mm4                     ;  psubw mm0, mm1                    ; displace  psubw mm3, mm4                    ;  psubusw mm0, mm6                  ; mm0 -= sub (unsigned, dont go < 0)  psubusw mm3, mm6                  ;  pmulhw mm0, mm7                   ; mm0 = (mm0 / 2Q) >> 16  pmulhw mm3, mm7                   ;  paddw mm5, mm0                    ; sum += mm0  pxor mm0, mm1                     ; mm0 *= sign(mm0)  paddw mm5, mm3                    ;  pxor mm3, mm4                     ;  psubw mm0, mm1                    ; undisplace  psubw mm3, mm4  movq [edi + 8*ecx], mm0  movq [edi + 8*ecx + 8], mm3  add ecx, 2  cmp ecx, 16  jnz .loop.done  pmaddwd mm5, [plus_one]  movq mm0, mm5  psrlq mm5, 32  paddd mm0, mm5  movd eax, mm0     ; return sum  pop edi  pop esi  pop ecx  retALIGN 8.q1loop  movq mm0, [esi + 8*ecx]           ; mm0 = [1st]  movq mm3, [esi + 8*ecx+ 8]        ;  pxor mm1, mm1                     ; mm1 = 0  pxor mm4, mm4                     ;  pcmpgtw mm1, mm0                  ; mm1 = (0 > mm0)  pcmpgtw mm4, mm3                  ;  pxor mm0, mm1                     ; mm0 = |mm0|  pxor mm3, mm4                     ;  psubw mm0, mm1                    ; displace  psubw mm3, mm4                    ;  psubusw mm0, mm6                  ; mm0 -= sub (unsigned, dont go < 0)  psubusw mm3, mm6                  ;  psrlw mm0, 1                      ; mm0 >>= 1   (/2)  psrlw mm3, 1                      ;  paddw mm5, mm0                    ; sum += mm0  pxor mm0, mm1                     ; mm0 *= sign(mm0)  paddw mm5, mm3                    ;  pxor mm3, mm4                     ;  psubw mm0, mm1                    ; undisplace  psubw mm3, mm4  movq [edi + 8*ecx], mm0  movq [edi + 8*ecx + 8], mm3  add ecx, 2  cmp ecx, 16  jnz .q1loop  jmp .done;-----------------------------------------------------------------------------;; uint32_t quant_h263_inter_sse2(int16_t * coeff,;                                const int16_t const * data,;                                const uint32_t quant,;                                const uint16_t *mpeg_matrices);;;-----------------------------------------------------------------------------ALIGN 16quant_h263_inter_sse2:  push esi  push edi  mov edi, [esp + 8 + 4]      ; coeff  mov esi, [esp + 8 + 8]      ; data  mov eax, [esp + 8 + 12]     ; quant  xor ecx, ecx  pxor xmm5, xmm5                           ; sum  movq mm0, [mmx_sub + eax*8 - 8]           ; sub

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99国产精品99久久久久久| 欧美成人精品福利| 久久精品国产亚洲a| 亚洲欧洲国产日本综合| 欧美一二区视频| 欧美色精品天天在线观看视频| 国产一区啦啦啦在线观看| 亚洲一二三四在线观看| 中文字幕成人网| 精品福利av导航| 6080亚洲精品一区二区| 99天天综合性| 国产成人综合自拍| 精品亚洲aⅴ乱码一区二区三区| 亚洲精品成人精品456| 中文字幕av资源一区| 精品国产乱码久久久久久影片| 欧美日韩一二三| 色嗨嗨av一区二区三区| 91首页免费视频| 成人sese在线| 成人午夜视频在线观看| 国产综合久久久久久鬼色 | 欧美一区二区精美| 色国产综合视频| 91天堂素人约啪| 99国内精品久久| voyeur盗摄精品| 不卡在线视频中文字幕| 成人爱爱电影网址| 成人av在线资源网| 大陆成人av片| 成人av集中营| 色综合一个色综合亚洲| 色综合欧美在线| 91国偷自产一区二区三区观看| 99视频精品免费视频| 99久久国产免费看| 一本大道久久a久久综合婷婷| 99国产精品久久久| 色成年激情久久综合| 欧美伊人久久大香线蕉综合69| 99国产一区二区三精品乱码| 精品欧美久久久| 2021中文字幕一区亚洲| 久久午夜国产精品| 欧美激情在线观看视频免费| 国产精品青草久久| 亚洲精品菠萝久久久久久久| 亚洲国产精品天堂| 奇米色777欧美一区二区| 蜜臀av亚洲一区中文字幕| 精品系列免费在线观看| 国产91在线看| 色婷婷av一区| 日韩一区二区高清| 国产日韩欧美精品在线| 亚洲婷婷综合色高清在线| 亚洲综合色自拍一区| 日韩va亚洲va欧美va久久| 九色综合国产一区二区三区| 国产电影精品久久禁18| av在线综合网| 欧美日韩国产精选| 久久久夜色精品亚洲| 亚洲色图在线看| 日本大胆欧美人术艺术动态| 国产一区二区三区免费播放| 97久久精品人人澡人人爽| 欧美日韩免费电影| 精品免费国产二区三区| 最新中文字幕一区二区三区 | 婷婷久久综合九色综合绿巨人| 免费日本视频一区| 国产成人在线网站| 在线观看亚洲一区| 久久亚洲一区二区三区四区| 亚洲天堂成人网| 另类小说图片综合网| 91香蕉视频mp4| 日韩无一区二区| 国产精品不卡视频| 麻豆精品一二三| 91丝袜美腿高跟国产极品老师 | 中国色在线观看另类| 一区二区三区丝袜| 久久99久久久欧美国产| 91精品办公室少妇高潮对白| 精品国产91乱码一区二区三区 | 成人毛片老司机大片| 欧美精品一卡二卡| 国产精品国产三级国产普通话蜜臀 | 337p日本欧洲亚洲大胆色噜噜| 国产精品视频观看| 另类小说图片综合网| 欧美在线小视频| 国产精品久久三| 国产一区二区在线观看免费 | 欧美在线不卡一区| 国产精品福利影院| 人人超碰91尤物精品国产| 91在线观看美女| 久久综合视频网| 日韩福利视频导航| 欧美中文字幕一区| 亚洲人成网站在线| 国产精品自拍三区| 日韩午夜在线播放| 五月天激情小说综合| 色综合一个色综合| 国产精品麻豆网站| 国产精品亚洲专一区二区三区| 在线免费观看一区| 中文字幕一区二区三区不卡在线| 精品一区二区精品| 日韩一级高清毛片| 香蕉成人啪国产精品视频综合网| 色综合天天做天天爱| 国产欧美一区二区精品秋霞影院| 日本午夜一区二区| 欧美电影在哪看比较好| 亚洲成av人**亚洲成av**| 91色婷婷久久久久合中文| 国产亚洲短视频| 国产精品一二三四五| 精品第一国产综合精品aⅴ| 日韩福利视频网| 日韩一级欧美一级| 精品一区二区三区视频在线观看| 欧美一区二区三区四区在线观看| 亚洲成人先锋电影| 在线91免费看| 久久精品噜噜噜成人av农村| 欧美一级一区二区| 久久国产精品无码网站| 精品国产精品一区二区夜夜嗨| 久久91精品国产91久久小草| 精品区一区二区| 国产一区 二区| 欧美国产乱子伦 | 日韩一区二区三区精品视频| 色琪琪一区二区三区亚洲区| 最新中文字幕一区二区三区 | 国产白丝网站精品污在线入口| 久久综合色之久久综合| 国产99久久精品| 国产精品毛片久久久久久| 成人av网在线| 一区二区三区视频在线观看| 欧美日韩视频一区二区| 三级久久三级久久| 精品国产免费一区二区三区四区| 国产乱码一区二区三区| 中文字幕一区免费在线观看| 色综合久久久网| 手机精品视频在线观看| 精品免费日韩av| 成人的网站免费观看| 一区二区三区中文免费| 欧美一区二区三区免费视频| 国精产品一区一区三区mba桃花| 日本一区二区久久| 欧美在线999| 久久精品99国产国产精| 中文字幕免费一区| 欧美人与z0zoxxxx视频| 狠狠色狠狠色综合系列| 亚洲人成小说网站色在线| 欧美精品丝袜中出| 国产尤物一区二区| 亚洲精品免费看| 精品三级在线看| 91丨porny丨首页| 免费久久99精品国产| 国产精品人成在线观看免费| 欧美日韩亚洲高清一区二区| 国产麻豆一精品一av一免费| 一区二区三区国产精华| 欧美成人伊人久久综合网| 99久久精品情趣| 韩国女主播一区二区三区| 亚洲色图在线视频| 亚洲精品在线三区| 在线观看中文字幕不卡| 国产成人综合网站| 天天操天天色综合| 国产精品久久久久久久久免费桃花 | 国产精品中文字幕欧美| 亚洲制服欧美中文字幕中文字幕| 欧美成人激情免费网| 在线观看国产日韩| 国产aⅴ综合色| 蜜臀av性久久久久蜜臀aⅴ| 亚洲另类在线视频| 久久精品视频免费| 日韩欧美123| 欧美日韩精品系列| 日本二三区不卡| 成人精品gif动图一区| 精品亚洲aⅴ乱码一区二区三区|