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

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

?? 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一区二区三区免费野_久草精品视频
日韩久久免费av| 亚洲精品在线观| 成人av网站免费观看| 亚洲一区在线观看免费| 欧美性猛交xxxxxxxx| 亚洲大尺度视频在线观看| 韩国视频一区二区| 精品剧情在线观看| 精品一区中文字幕| 国产亚洲欧美日韩在线一区| 国产一区二区在线视频| 色诱视频网站一区| 高清不卡一区二区| 国内精品国产成人国产三级粉色 | 欧美电影免费观看高清完整版 | 国产综合成人久久大片91| 久久av中文字幕片| 免费高清不卡av| 国产成人在线影院| 在线不卡的av| 亚洲天堂免费看| 国产曰批免费观看久久久| 91国偷自产一区二区开放时间 | 91日韩精品一区| 色播五月激情综合网| 久久一日本道色综合| 日韩高清一区在线| 亚洲动漫第一页| 风流少妇一区二区| 欧美高清激情brazzers| 国产欧美视频一区二区三区| 亚洲成精国产精品女| 色成年激情久久综合| 日韩一区日韩二区| 91首页免费视频| 色88888久久久久久影院野外| 欧美成人a∨高清免费观看| 亚洲国产精品一区二区www在线 | 国产成人精品网址| 国产亚洲精品aa| 中文字幕人成不卡一区| 麻豆91免费看| 26uuu亚洲综合色| 国产精品99久| 国产欧美一区视频| jizz一区二区| 午夜不卡av免费| 日本不卡不码高清免费观看| 成人综合婷婷国产精品久久免费| 国产日韩欧美不卡| 国产精品69久久久久水密桃| 国产亚洲综合在线| 亚洲色欲色欲www| 亚洲综合视频在线| 国产在线播精品第三| 久久久久97国产精华液好用吗| 久久疯狂做爰流白浆xx| 日本道精品一区二区三区| 日本不卡一区二区三区| 国产精品你懂的| 精品国产一区二区三区av性色 | 亚洲美女精品一区| 成人一级视频在线观看| 综合激情成人伊人| 日本一区二区三级电影在线观看 | 欧美日韩精品高清| 99精品视频一区| 日本欧美在线看| 中文字幕一区免费在线观看| 在线播放日韩导航| 国产乱码精品一品二品| 欧美激情一区二区三区四区| 一本一道久久a久久精品综合蜜臀| 亚洲一区二区精品3399| 日韩精品最新网址| 欧美精品三级日韩久久| 欧美一区二区三区四区五区 | 欧美视频一区二区三区| 国产精品高清亚洲| 制服丝袜成人动漫| 一本大道av伊人久久综合| 亚洲黄网站在线观看| 欧美成人性福生活免费看| 丁香天五香天堂综合| 青青青伊人色综合久久| 国产精品久久久久一区二区三区共| 91视频在线看| 99久久精品国产一区| 亚洲另类中文字| 亚洲视频小说图片| 久久久不卡网国产精品二区| 久久婷婷色综合| 久久精品网站免费观看| 国产精品色婷婷| 国产精品国产自产拍在线| 日韩一本二本av| 欧美成人三级在线| 久久一二三国产| 一色桃子久久精品亚洲| 亚洲第一综合色| 激情久久久久久久久久久久久久久久| 婷婷综合另类小说色区| 国产精品视频一区二区三区不卡| 亚洲综合色丁香婷婷六月图片| 国产精品一区二区三区四区 | 欧美高清性hdvideosex| 国产精品色婷婷| 日韩免费观看高清完整版| 国产精品麻豆久久久| 亚洲免费在线电影| 亚洲主播在线播放| www.性欧美| 日韩小视频在线观看专区| 亚洲欧洲日本在线| 麻豆精品视频在线观看| 成人av影院在线| 精品国产乱码久久久久久1区2区| 一区二区三区不卡视频在线观看| 香蕉加勒比综合久久| 国产精品亚洲第一区在线暖暖韩国 | 亚洲黄色片在线观看| 高潮精品一区videoshd| 26uuu成人网一区二区三区| 色妹子一区二区| 亚洲男人的天堂一区二区| 91黄色免费观看| 视频在线观看一区| 欧美熟乱第一页| 成人黄页毛片网站| 一区二区欧美视频| 日韩三级免费观看| 成人开心网精品视频| 亚洲国产婷婷综合在线精品| 日韩免费高清视频| 91啦中文在线观看| 一区二区久久久久| 久久综合久久综合亚洲| 色噜噜久久综合| 激情综合网最新| 日韩精品一二三四| 中文文精品字幕一区二区| 欧美日韩国产精品成人| 久久精品二区亚洲w码| 一区二区三区在线观看动漫| 日韩一级在线观看| 欧美影院一区二区三区| 日本视频在线一区| 久久亚洲一区二区三区四区| 色噜噜狠狠色综合欧洲selulu| 亚洲地区一二三色| 欧美一级艳片视频免费观看| 粉嫩在线一区二区三区视频| 亚洲高清中文字幕| 亚洲天堂精品在线观看| 久久久久久久久蜜桃| 99久久99久久精品免费看蜜桃| 久久国内精品视频| 久久精品理论片| 亚洲成人av中文| 亚洲一区视频在线观看视频| 最新中文字幕一区二区三区 | 自拍偷在线精品自拍偷无码专区| 日韩欧美高清一区| 91麻豆精品秘密| 丝袜国产日韩另类美女| 一区二区久久久久久| 亚洲第四色夜色| 日日骚欧美日韩| 美腿丝袜在线亚洲一区| 麻豆精品视频在线观看免费| 一个色妞综合视频在线观看| 欧美国产日韩在线观看| 国产一区二区三区四区在线观看 | 亚洲国产三级在线| 亚洲激情中文1区| 自拍偷拍国产亚洲| 国产精品视频线看| 国产精品久久久久四虎| 精品久久久久久综合日本欧美| 欧美视频精品在线观看| 欧美色大人视频| 制服丝袜在线91| 久久久久久久久99精品| 久久先锋影音av| 自拍视频在线观看一区二区| 亚洲精品v日韩精品| 午夜婷婷国产麻豆精品| 欧美a一区二区| 懂色av中文一区二区三区 | 欧美成人女星排行榜| 国产亚洲欧洲997久久综合| 国产精品麻豆99久久久久久| 一区二区在线观看免费视频播放| 午夜影院久久久| 国产自产视频一区二区三区| 99久久精品国产精品久久| 制服丝袜中文字幕亚洲| 欧美国产精品专区| 亚洲精品国产视频| 精品一区二区免费在线观看|