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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? quantize_h263_mmx.asm

?? mpeg4視頻解碼源碼.rar
?? 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>; *               2004      Jean-Marc Bastide <jmtest@voila.fr>; *; *  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		%ifdef MARK_FUNCS			global _%1:function %1.endfunc-%1			%define %1 _%1:function %1.endfunc-%1		%else			global _%1			%define %1 _%1		%endif	%else		%ifdef MARK_FUNCS			global %1:function %1.endfunc-%1		%else			global %1		%endif	%endif%endmacro;=============================================================================; Read only Local data;=============================================================================%ifdef FORMAT_COFFSECTION .rodata%elseSECTION .rodata align=16%endifALIGN 16plus_one:	times 8 dw 1;-----------------------------------------------------------------------------;; quant table;;-----------------------------------------------------------------------------ALIGN 16mmx_quant:%assign quant 0%rep 32	times 4 dw quant	%assign quant quant+1%endrep;-----------------------------------------------------------------------------;; 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;=============================================================================; 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 esi  mov esi, [esp + 4 + 8]     ; data  mov ecx,[esp + 4 + 16]     ; dcscalar  movsx eax, word [esi]      ; data[0]     sar ecx,1                  ; dcscalar /2  mov edx,eax  sar edx,31                 ; sgn(data[0])  xor ecx,edx                ; *sgn(data[0])  sub eax,edx  add eax,ecx                ; + (dcscalar/2)*sgn(data[0])  mov ecx, [esp + 4 + 12]    ; quant  cdq   idiv dword [esp + 4 + 16]  ; dcscalar  cmp ecx, 1  mov edx, [esp + 4 + 4]     ; coeff  je .low   movq mm7, [mmx_div+ecx * 8 - 8]  mov ecx,4.loop  movq mm0, [esi]           ; data        pxor mm4,mm4  movq mm1, [esi + 8]  pcmpgtw mm4,mm0           ; (data<0)  pxor mm5,mm5  pmulhw mm0,mm7            ; /(2*quant)  pcmpgtw mm5,mm1  movq mm2, [esi+16]   psubw mm0,mm4             ;  +(data<0)  pmulhw mm1,mm7  pxor mm4,mm4  movq mm3,[esi+24]  pcmpgtw mm4,mm2  psubw mm1,mm5   pmulhw mm2,mm7   pxor mm5,mm5  pcmpgtw mm5,mm3  pmulhw mm3,mm7  psubw mm2,mm4  psubw mm3,mm5    movq [edx], mm0  lea esi, [esi+32]  movq [edx + 8], mm1  movq [edx + 16], mm2  movq [edx + 24], mm3     dec ecx  lea edx, [edx+32]  jne .loop  jmp .end   .low  movd mm7,ecx  mov ecx,4.loop_low    movq mm0, [esi]             pxor mm4,mm4  movq mm1, [esi + 8]  pcmpgtw mm4,mm0  pxor mm5,mm5  psubw mm0,mm4  pcmpgtw mm5,mm1  psraw mm0,mm7  psubw mm1,mm5   movq mm2,[esi+16]  pxor mm4,mm4  psraw mm1,mm7  pcmpgtw mm4,mm2  pxor mm5,mm5  psubw mm2,mm4  movq mm3,[esi+24]  pcmpgtw mm5,mm3  psraw mm2,mm7  psubw mm3,mm5  movq [edx], mm0  psraw mm3,mm7  movq [edx + 8], mm1  movq [edx+16],mm2  lea esi, [esi+32]  movq [edx+24],mm3    dec ecx  lea edx, [edx+32]  jne .loop_low  .end  mov edx, [esp + 4 + 4]     ; coeff  mov [edx],ax    xor eax,eax                ; return 0  pop esi  ret.endfunc ;-----------------------------------------------------------------------------;; 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  mov esi, [esp + 4 + 8]     ; data   movsx eax, word [esi]      ; data[0]   mov ecx,[esp + 4 + 16]     ; dcscalar  mov edx,eax  sar ecx,1  add eax,ecx  sub edx,ecx  cmovl eax,edx              ; +/- dcscalar/2  mov ecx, [esp + 4 + 12]    ; quant  cdq   idiv dword [esp + 4 + 16]  ; dcscalar  cmp ecx, 1  mov edx, [esp + 4 + 4]     ; coeff  movq xmm7, [mmx_div+ecx * 8 - 8]  je .low    mov ecx,2  movlhps xmm7,xmm7.loop  movdqa xmm0, [esi]             pxor xmm4,xmm4  movdqa xmm1, [esi + 16]  pcmpgtw xmm4,xmm0   pxor xmm5,xmm5  pmulhw xmm0,xmm7  pcmpgtw xmm5,xmm1  movdqa xmm2, [esi+32]   psubw xmm0,xmm4  pmulhw xmm1,xmm7  pxor xmm4,xmm4  movdqa xmm3,[esi+48]  pcmpgtw xmm4,xmm2  psubw xmm1,xmm5   pmulhw xmm2,xmm7   pxor xmm5,xmm5  pcmpgtw xmm5,xmm3  pmulhw xmm3,xmm7  psubw xmm2,xmm4  psubw xmm3,xmm5    movdqa [edx], xmm0  lea esi, [esi+64]  movdqa [edx + 16], xmm1  movdqa [edx + 32], xmm2  movdqa [edx + 48], xmm3     dec ecx  lea edx, [edx+64]  jne .loop  jmp .end   .low  movd xmm7,ecx  mov ecx,2.loop_low    movdqa xmm0, [esi]             pxor xmm4,xmm4  movdqa xmm1, [esi + 16]  pcmpgtw xmm4,xmm0  pxor xmm5,xmm5  psubw xmm0,xmm4  pcmpgtw xmm5,xmm1  psraw xmm0,xmm7  psubw xmm1,xmm5   movdqa xmm2,[esi+32]  pxor xmm4,xmm4  psraw xmm1,xmm7  pcmpgtw xmm4,xmm2  pxor xmm5,xmm5  psubw xmm2,xmm4  movdqa xmm3,[esi+48]  pcmpgtw xmm5,xmm3  psraw xmm2,xmm7  psubw xmm3,xmm5  movdqa [edx], xmm0  psraw xmm3,xmm7  movdqa [edx+16], xmm1  movdqa [edx+32],xmm2  lea esi, [esi+64]  movdqa [edx+48],xmm3    dec ecx  lea edx, [edx+64]  jne .loop_low  .end  mov edx, [esp + 4 + 4]     ; coeff  mov [edx],ax    xor eax,eax                ; return 0  pop esi  ret.endfunc ;-----------------------------------------------------------------------------;; 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.endfunc;-----------------------------------------------------------------------------;; 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  movq2dq xmm6, mm0                         ; load into low 8 bytes  movlhps xmm6, xmm6                        ; duplicate into high 8 bytes  cmp al, 1  jz near .qes2_q1loop.qes2_not1  movq mm0, [mmx_div + eax*8 - 8]           ; divider  movq2dq xmm7, mm0  movlhps xmm7, xmm7ALIGN 16.qes2_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  psubusw xmm0, xmm6  psubusw xmm3, xmm6  pmulhw xmm0, xmm7  pmulhw xmm3, xmm7  paddw xmm5, xmm0  pxor xmm0, xmm1  paddw xmm5, xmm3  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 .qes2_loop.qes2_done

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩视频专区在线播放| 亚洲高清视频在线| 欧美一级黄色录像| 欧美男女性生活在线直播观看| 91麻豆蜜桃一区二区三区| 国产高清亚洲一区| 成人av电影观看| 成人黄动漫网站免费app| 成人激情文学综合网| www.66久久| 欧美亚洲国产一区二区三区va| 91色综合久久久久婷婷| 欧美色手机在线观看| 91精品在线一区二区| 日韩欧美亚洲国产另类| 国产日韩视频一区二区三区| 国产精品美女久久福利网站| 亚洲欧美在线高清| 亚洲一区二三区| 免费三级欧美电影| 国产一区二区三区在线看麻豆| 成人性生交大片免费| 日本高清无吗v一区| 8x8x8国产精品| 久久九九全国免费| 亚洲一级二级三级| 麻豆精品国产91久久久久久| 国产99久久久国产精品| 色婷婷亚洲一区二区三区| 3751色影院一区二区三区| 国产亚洲制服色| 一区二区三区中文字幕| 久久成人久久鬼色| 日本高清不卡在线观看| 欧美一级片在线观看| 中文字幕在线一区免费| 奇米777欧美一区二区| 99精品视频在线免费观看| 91精品国产综合久久福利软件| 国产亚洲精品7777| 亚洲 欧美综合在线网络| 国产大陆亚洲精品国产| 欧美日韩日日夜夜| 国产精品第一页第二页第三页| 亚洲h动漫在线| 成人99免费视频| 精品国产乱码久久久久久久久| 亚洲精品国产高清久久伦理二区| 国内精品伊人久久久久av影院 | 色婷婷亚洲婷婷| 精品国产露脸精彩对白| 亚洲国产另类av| av中文字幕亚洲| 久久亚洲一区二区三区明星换脸| 亚洲成人高清在线| 一本大道av一区二区在线播放| 久久久不卡网国产精品二区| 日本强好片久久久久久aaa| 99国产精品国产精品毛片| 国产日韩v精品一区二区| 麻豆久久久久久久| 欧美日韩久久不卡| 亚洲午夜在线视频| 91在线观看高清| 国产亚洲成av人在线观看导航| 美女免费视频一区二区| 欧美一区二区高清| 日韩激情中文字幕| 欧美另类z0zxhd电影| 自拍偷拍国产精品| 99久久99久久精品国产片果冻| 久久久久久亚洲综合| 国产乱码精品一品二品| 久久婷婷久久一区二区三区| 国精产品一区一区三区mba视频| 欧美日产国产精品| 日韩电影在线看| 5月丁香婷婷综合| 麻豆91在线播放免费| 欧美va亚洲va香蕉在线| 国产麻豆午夜三级精品| 久久综合九色欧美综合狠狠| 国产一区二区在线观看视频| 欧美精品一区二区在线播放 | 欧美激情一区三区| 国产精品一区二区无线| 国产欧美日韩三级| 99久久久久久| 亚洲成人综合网站| 日韩欧美精品三级| 丁香婷婷综合激情五月色| 中文字幕视频一区| 欧美日本在线一区| 国产一区二区在线电影| 日韩一区日韩二区| 制服丝袜亚洲播放| 国产传媒一区在线| 一区二区三区影院| 欧美大黄免费观看| 99精品热视频| 青青国产91久久久久久| 欧美国产成人在线| 欧美性色黄大片| 狠狠色2019综合网| 亚洲精品成a人| 欧美一区二区三区免费大片| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 午夜成人免费视频| 久久众筹精品私拍模特| 91麻豆国产精品久久| 秋霞电影网一区二区| 国产精品亲子乱子伦xxxx裸| 欧美色中文字幕| 福利电影一区二区| 午夜电影网亚洲视频| 日本一区二区免费在线观看视频 | 免费观看一级特黄欧美大片| 日韩精品一区二区三区在线播放| 丰满亚洲少妇av| 日本美女一区二区三区视频| 欧美极品另类videosde| 欧美理论片在线| 一本一道综合狠狠老| 亚洲成av人片在www色猫咪| 国产精品嫩草影院av蜜臀| 91精品国产色综合久久ai换脸 | 日韩不卡免费视频| 亚洲天堂成人在线观看| 7777精品伊人久久久大香线蕉完整版| 国产99久久久久| 国产精品一线二线三线| 日韩精品久久久久久| 亚洲欧洲中文日韩久久av乱码| 精品福利一二区| 日韩欧美在线1卡| 欧美日韩电影在线播放| 91国产丝袜在线播放| 成人精品一区二区三区四区| 国内精品久久久久影院色| 日韩va亚洲va欧美va久久| 性做久久久久久久免费看| 一区二区三区在线视频观看58| 欧美国产日韩在线观看| 国产天堂亚洲国产碰碰| 精品伦理精品一区| 欧美大片顶级少妇| 2021中文字幕一区亚洲| 欧美成人bangbros| 精品久久免费看| 亚洲精品在线一区二区| 精品国产乱码久久久久久久久| 欧美一区在线视频| 日韩免费观看高清完整版在线观看 | 久久国产婷婷国产香蕉| 日本女优在线视频一区二区| 无吗不卡中文字幕| 蜜臀精品久久久久久蜜臀| 另类的小说在线视频另类成人小视频在线| 亚洲国产日韩精品| 日本大胆欧美人术艺术动态| 性感美女久久精品| 麻豆国产91在线播放| 国产高清成人在线| av资源站一区| 欧美日韩免费一区二区三区| 69堂亚洲精品首页| 欧美va在线播放| ...xxx性欧美| 婷婷一区二区三区| 国产精品一区免费在线观看| eeuss影院一区二区三区| 在线观看区一区二| 3d成人h动漫网站入口| 久久综合久久综合久久综合| 久久精品夜夜夜夜久久| 亚洲欧美另类久久久精品| 日韩国产欧美在线观看| 国产激情视频一区二区在线观看| 成人免费av网站| 3d动漫精品啪啪1区2区免费| 久久久久久97三级| 亚洲综合色噜噜狠狠| 久久国产精品色| 色综合久久中文字幕综合网| 日韩一区二区三区免费观看| 久久综合给合久久狠狠狠97色69| 综合久久国产九一剧情麻豆| 日韩成人伦理电影在线观看| 福利91精品一区二区三区| 91麻豆国产在线观看| 91麻豆精品国产91久久久| 国产欧美一区二区精品仙草咪| 亚洲丝袜精品丝袜在线| 欧美激情自拍偷拍| 天天做天天摸天天爽国产一区 | 国产精品538一区二区在线| 欧美主播一区二区三区美女| 久久综合狠狠综合| 首页亚洲欧美制服丝腿| av在线一区二区三区|