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

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

?? quantize_h263_mmx.asm

?? xvid的視頻編解碼庫文件
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;/*****************************************************************************; *; *  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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆免费观看| 日韩一区二区高清| 欧美福利电影网| 久久精品夜夜夜夜久久| 亚洲欧美激情小说另类| 久久超碰97人人做人人爱| 色婷婷av久久久久久久| 国产夜色精品一区二区av| 五月激情六月综合| 99精品视频中文字幕| 久久亚洲影视婷婷| 日韩精彩视频在线观看| 一本色道久久综合亚洲精品按摩 | 日本在线不卡视频一二三区| 国产成人在线视频网址| 欧美一区日韩一区| 亚洲国产成人av网| 97se亚洲国产综合在线| 国产色婷婷亚洲99精品小说| 蜜臀久久99精品久久久久宅男| 一本到三区不卡视频| 欧美精彩视频一区二区三区| 黄网站免费久久| 91精品国产欧美一区二区| 一区二区三区色| av男人天堂一区| 中文字幕国产精品一区二区| 加勒比av一区二区| 日韩精品一区二区三区老鸭窝| 日韩国产精品久久久| 欧美体内she精高潮| 亚洲精品videosex极品| 99国产麻豆精品| 1区2区3区精品视频| 97精品久久久午夜一区二区三区| 国产精品久久久久久久第一福利| 国产伦理精品不卡| 国产丝袜美腿一区二区三区| 丰满放荡岳乱妇91ww| 欧美激情一区二区在线| 99久久精品99国产精品| 樱桃视频在线观看一区| 欧美丝袜自拍制服另类| 亚洲午夜在线电影| 欧美日韩国产电影| 美女国产一区二区三区| 久久亚洲影视婷婷| 成人高清免费在线播放| 亚洲精品日产精品乱码不卡| 日韩精品自拍偷拍| 风间由美一区二区av101 | 日韩理论电影院| 91网站最新网址| 亚洲一二三区视频在线观看| 日韩视频国产视频| 福利一区福利二区| 亚洲国产综合在线| 日韩一级视频免费观看在线| 国产99久久久久| 亚洲最大成人网4388xx| 日韩一区二区精品葵司在线| 国产精品一区免费在线观看| 亚洲欧美电影一区二区| 91精品国产综合久久久久| 国产一区在线不卡| 日韩毛片精品高清免费| 欧美一区二区三区在线看| 国产经典欧美精品| 亚洲午夜久久久久久久久电影院 | 亚洲动漫第一页| 久久综合久久鬼色中文字| 91美女在线观看| 人人精品人人爱| 国产精品二三区| 日韩午夜激情免费电影| 不卡大黄网站免费看| 日产精品久久久久久久性色| 国产精品久久久久久久岛一牛影视| 日本高清不卡视频| 国产高清成人在线| 同产精品九九九| 日韩理论电影院| 久久免费美女视频| 在线综合视频播放| 色偷偷一区二区三区| 国产精品一品视频| 美日韩黄色大片| 亚洲一二三四区| 国产精品九色蝌蚪自拍| 久久综合九色综合欧美就去吻| 在线观看欧美精品| 成人av先锋影音| 国产福利一区二区| 精品一区二区三区在线播放视频 | 中文字幕二三区不卡| 日韩欧美一级特黄在线播放| 一本色道久久综合亚洲aⅴ蜜桃| 国产一区二区三区四区五区美女| 亚洲高清不卡在线观看| 日韩一区欧美一区| 亚洲国产高清不卡| 久久精品一区蜜桃臀影院| 日韩欧美中文一区| 在线不卡免费欧美| 欧美调教femdomvk| 在线观看日韩毛片| 在线中文字幕一区| 色哟哟一区二区在线观看| 成人av网址在线观看| 成人精品视频一区二区三区| 色呦呦国产精品| 一本色道久久综合精品竹菊| jlzzjlzz国产精品久久| 大美女一区二区三区| 国产一区91精品张津瑜| 国产精品资源网| 精品一区二区av| 国产做a爰片久久毛片| 久草中文综合在线| 麻豆国产精品官网| 国产一区二区三区在线观看精品| 美女免费视频一区二区| 久久国产精品99精品国产| 美女一区二区久久| 国产美女娇喘av呻吟久久| 国产美女av一区二区三区| 国产精品99久| av在线一区二区三区| 91网站黄www| 欧美在线不卡一区| 欧美老肥妇做.爰bbww视频| 91精选在线观看| 精品粉嫩aⅴ一区二区三区四区| 精品国产一区二区精华| 国产三级一区二区| 亚洲欧美一区二区三区久本道91| 亚洲精品亚洲人成人网在线播放| 一区二区在线免费观看| 肉丝袜脚交视频一区二区| 久久se这里有精品| 成人动漫在线一区| 欧美日韩国产综合草草| 欧美va亚洲va| 国产精品久久久久一区二区三区共| 最新日韩在线视频| 视频一区视频二区在线观看| 国产伦精一区二区三区| 色就色 综合激情| 欧美一区二区视频免费观看| 久久久久国产精品人| 亚洲精品欧美二区三区中文字幕| 五月天精品一区二区三区| 国产精品2024| 色琪琪一区二区三区亚洲区| 日韩一区二区免费电影| 中文字幕一区二区三区在线不卡 | 精品一区二区三区不卡| 99精品视频中文字幕| 91精品国产aⅴ一区二区| 日本一区二区三区四区在线视频| 亚洲在线观看免费视频| 国产精品综合在线视频| 欧美日韩国产免费一区二区 | 成人av网站在线观看免费| 91精品一区二区三区在线观看| 国产精品无遮挡| 婷婷成人激情在线网| 99久久亚洲一区二区三区青草| 欧美一区二区三区小说| 最新高清无码专区| 国产精品996| 51久久夜色精品国产麻豆| 18成人在线视频| 国产精品羞羞答答xxdd| 91精品国产综合久久精品性色| 亚洲欧美一区二区视频| 国产中文一区二区三区| 欧美精品aⅴ在线视频| 亚洲欧美aⅴ...| 成人综合婷婷国产精品久久| 欧美电影免费观看高清完整版在线 | 在线观看av一区| 国产精品午夜久久| 国产美女主播视频一区| 91精品免费在线观看| 亚洲一区国产视频| 91丨porny丨国产入口| 中文在线一区二区| 国产精品1区2区| 精品福利av导航| 精品一区二区久久久| 日韩久久精品一区| 乱一区二区av| 欧美成人一区二区三区片免费| 午夜精品成人在线视频| 91九色02白丝porn| 一区二区三区四区av| 色域天天综合网| 亚洲一区中文在线| 欧美乱妇15p|