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

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

?? quantize_h263_3dne.asm

?? xvid的視頻編解碼庫文件
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;/**************************************************************************; *; *  XVID MPEG-4 VIDEO CODEC; *  - 3dne Quantization/Dequantization -; *; *  Copyright(C) 2002-2003 Jaan Kalda; *; *  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$; *; *************************************************************************/;; these 3dne functions are compatible with iSSE, but are optimized specifically for; K7 pipelines; 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;=============================================================================; Local data;=============================================================================%ifdef FORMAT_COFFSECTION .rodata data%elseSECTION .rodata data align=16%endifalign 4int_div:	dd 0%assign i 1%rep 255	dd  (1 << 16) / (i) + 1	%assign i i+1%endrepALIGN 16plus_one:	times 8 dw 1;-----------------------------------------------------------------------------; subtract by Q/2 table;-----------------------------------------------------------------------------ALIGN 16mmx_sub:%assign i 1%rep 31	times 4 dw i / 2	%assign i i+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 i 1%rep 31	times 4 dw  (1 << 16) / (i * 2) + 1	%assign i i+1%endrep;-----------------------------------------------------------------------------; add by (odd(Q) ? Q : Q - 1) table;-----------------------------------------------------------------------------ALIGN 16mmx_add:%assign i 1%rep 31	%if i % 2 != 0	times 4 dw i	%else	times 4 dw i - 1	%endif	%assign i i+1%endrep;-----------------------------------------------------------------------------; multiple by 2Q table;-----------------------------------------------------------------------------ALIGN 16mmx_mul:%assign i 1%rep 31	times 4 dw i * 2	%assign i i+1%endrep;-----------------------------------------------------------------------------; saturation limits;-----------------------------------------------------------------------------ALIGN 8mmx_32768_minus_2048:	times 4 dw (32768-2048)mmx_32767_minus_2047:	times 4 dw (32767-2047)ALIGN 16mmx_2047:	times 4 dw 2047ALIGN 8mmzero:	dd 0, 0int2047:	dd 2047int_2048:	dd -2048;=============================================================================; Code;=============================================================================SECTION .text;-----------------------------------------------------------------------------;; uint32_t quant_h263_intra_3dne(int16_t * coeff,;                                const int16_t const * data,;                                const uint32_t quant,;                                const uint32_t dcscalar,;                                const uint16_t *mpeg_matrices);;;-----------------------------------------------------------------------------;This is Athlon-optimized code (ca 70 clk per call)%macro quant_intra1  1  psubw mm1, mm0    ;A3  psubw mm3, mm2    ;B3%if (%1)  psubw mm5, mm4    ;C8  psubw mm7, mm6    ;D8%endifALIGN 8  db 0Fh, 6Fh, 64h, 21h, (%1 * 32 +16)  ;movq   mm4, [ecx + %1 * 32 +16+32] ;C1  pmaxsw mm1, mm0   ;A4  db 0Fh, 6Fh, 74h, 21h, (%1 * 32 +24)  ;movq   mm6, [ecx + %1 * 32 +24+32] ;D1  pmaxsw mm3, mm2   ;B4  psraw mm0, 15     ;A5  psraw mm2, 15     ;B5%if (%1)  movq [edx + %1 * 32 + 16-32], mm5 ;C9  movq [edx + %1 * 32 + 24-32], mm7 ;D9%endif  psrlw mm1, 1      ;A6  psrlw mm3, 1      ;B6  movq mm5, [ebx]   ;C2  movq mm7, [ebx]   ;D2  pxor mm1, mm0 ;A7  pxor mm3, mm2 ;B7  psubw mm5, mm4    ;C3  psubw mm7, mm6    ;D3  psubw mm1, mm0    ;A8  psubw mm3, mm2    ;B8%if (%1 == 0)  push ebp  movq mm0, [ecx + %1 * 32 +32]%elif (%1 < 3)  db 0Fh, 6Fh, 44h, 21h, (%1 * 32 +32)  ;movq   mm0, [ecx + %1 * 32 +32]    ;A1%endif  pmaxsw mm5, mm4   ;C4%if (%1 < 3)  db 0Fh, 6Fh, 54h, 21h, ( %1 * 32 +8+32)   ;movq   mm2, [ecx + %1 * 32 +8+32]  ;B1%else  cmp esp, esp%endif  pmaxsw mm7, mm6   ;D4  psraw mm4, 15     ;C5  psraw mm6, 15     ;D5  movq [byte edx + %1 * 32], mm1    ;A9  movq [edx + %1 * 32+8], mm3       ;B9  psrlw mm5, 1      ;C6  psrlw mm7, 1      ;D6%if (%1 < 3)  movq mm1, [ebx]   ;A2  movq mm3, [ebx]   ;B2%endif%if (%1 == 3)  imul eax, [int_div+4*edi]%endif  pxor mm5, mm4 ;C7  pxor mm7, mm6 ;D7%endm%macro quant_intra  1    ; Rules for athlon:        ; 1) schedule latencies        ; 2) add/mul and load/store in 2:1 proportion        ; 3) avoid spliting >3byte instructions over 8byte boundaries  psubw mm1, mm0    ;A3  psubw mm3, mm2    ;B3%if (%1)  psubw mm5, mm4    ;C8  psubw mm7, mm6    ;D8%endifALIGN 8  db 0Fh, 6Fh, 64h, 21h, (%1 * 32 +16)  ;movq   mm4, [ecx + %1 * 32 +16+32] ;C1  pmaxsw mm1, mm0   ;A4  db 0Fh, 6Fh, 74h, 21h, (%1 * 32 +24)  ;movq   mm6, [ecx + %1 * 32 +24+32] ;D1  pmaxsw mm3, mm2   ;B4  psraw mm0, 15     ;A5  psraw mm2, 15     ;B5%if (%1)  movq [edx + %1 * 32 + 16-32], mm5 ;C9  movq [edx + %1 * 32 + 24-32], mm7 ;D9%endif  pmulhw mm1, [esi] ;A6  pmulhw mm3, [esi] ;B6  movq mm5, [ebx]   ;C2  movq mm7, [ebx]   ;D2  nop  nop  pxor mm1, mm0 ;A7  pxor mm3, mm2 ;B7  psubw mm5, mm4    ;C3  psubw mm7, mm6    ;D3  psubw mm1, mm0    ;A8  psubw mm3, mm2    ;B8%if (%1 < 3)  db 0Fh, 6Fh, 44h, 21h, (%1 * 32 +32) ;movq    mm0, [ecx + %1 * 32 +32]    ;A1%endif  pmaxsw mm5, mm4     ;C4%if (%1 < 3)  db 0Fh, 6Fh, 54h, 21h, ( %1 * 32 +8+32) ;movq mm2, [ecx + %1 * 32 +8+32]  ;B1%else  cmp esp, esp%endif  pmaxsw mm7,mm6        ;D4  psraw mm4, 15     ;C5  psraw mm6, 15     ;D5  movq [byte edx + %1 * 32], mm1 ;A9  movq [edx + %1 * 32+8], mm3     ;B9  pmulhw mm5, [esi] ;C6  pmulhw mm7, [esi] ;D6%if (%1 < 3)  movq mm1, [ebx]   ;A2  movq mm3, [ebx]   ;B2%endif%if (%1 == 0)  push ebp%elif (%1 < 3)  nop%endif  nop%if (%1 == 3)  imul eax, [int_div+4*edi]%endif  pxor mm5, mm4 ;C7  pxor mm7, mm6 ;D7%endmacroALIGN 16cglobal quant_h263_intra_3dnequant_h263_intra_3dne:  mov eax, [esp + 12]       ; quant  mov ecx, [esp + 8]        ; data  mov edx, [esp + 4]        ; coeff  cmp al, 1  pxor mm1, mm1  pxor mm3, mm3  movq mm0, [ecx]           ; mm0 = [1st]  movq mm2, [ecx + 8]  push esi  lea esi, [mmx_div + eax*8 - 8]  push ebx  mov ebx, mmzero  push edi  jz near .q1loop  quant_intra 0  mov ebp, [esp + 16 + 16]      ; dcscalar                                ; NB -- there are 3 pushes in the function preambule and one more                                ; in "quant_intra 0", thus an added offset of 16 bytes  movsx eax, word [byte ecx]    ; DC  quant_intra 1  mov edi, eax  sar edi, 31                       ; sign(DC)  shr ebp, byte 1                   ; ebp = dcscalar/2  quant_intra 2  sub eax, edi                      ; DC (+1)  xor ebp, edi                      ; sign(DC) dcscalar /2  (-1)  mov edi, [esp + 16 + 16]          ; dscalar  lea eax, [byte eax + ebp]         ; DC + sign(DC) dcscalar/2  mov ebp, [byte esp]  quant_intra 3  psubw mm5, mm4                    ;C8  mov esi, [esp + 12]               ; pop back the register value  mov edi, [esp + 4]                ; pop back the register value  sar eax, 16  lea ebx, [byte eax + 1]           ; workaround for eax < 0  cmovs eax, ebx                    ; conditionnaly move the corrected value  mov [edx], ax                     ; coeff[0] = ax  mov ebx, [esp + 8]                ; pop back the register value  add esp, byte 16                  ; "quant_intra 0" pushed ebp, but we don't restore that one, just correct the stack offset by 16  psubw mm7, mm6                    ;D8  movq [edx + 3 * 32 + 16], mm5     ;C9  movq [edx + 3 * 32 + 24], mm7     ;D9  xor eax, eax  retALIGN 16.q1loop  quant_intra1 0  mov ebp, [esp + 16 + 16]          ; dcscalar  movsx eax, word [byte ecx]        ; DC  quant_intra1 1  mov edi, eax  sar edi, 31                       ; sign(DC)  shr ebp, byte 1                   ; ebp = dcscalar /2  quant_intra1 2  sub eax, edi                      ; DC (+1)  xor ebp, edi                      ; sign(DC) dcscalar /2  (-1)  mov edi, [esp + 16 + 16]          ; dcscalar  lea eax, [byte eax + ebp]         ; DC + sign(DC) dcscalar /2  mov ebp, [byte esp]

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃一区二区三区在线观看| 成人免费视频在线观看| 日本久久电影网| gogogo免费视频观看亚洲一| 国产精品69毛片高清亚洲| 国产一区999| 成人高清视频在线| 成人黄页在线观看| 在线视频你懂得一区| 欧洲色大大久久| 精品视频一区二区三区免费| 91精彩视频在线观看| 在线国产电影不卡| 51精品久久久久久久蜜臀| 欧美精选午夜久久久乱码6080| 欧美在线一区二区三区| 欧美无乱码久久久免费午夜一区| 精品视频999| 日韩亚洲欧美一区二区三区| 欧美精品一区二区高清在线观看 | 国产精品久久久久久户外露出 | 97久久人人超碰| 欧美色网站导航| 欧美成人性战久久| 国产拍欧美日韩视频二区| 国产精品超碰97尤物18| 亚洲图片欧美色图| 国产在线播精品第三| 97精品国产97久久久久久久久久久久| 一本一道久久a久久精品| 欧美人狂配大交3d怪物一区| 久久天天做天天爱综合色| 1区2区3区欧美| 日本在线观看不卡视频| 国产凹凸在线观看一区二区| 色偷偷一区二区三区| 日韩欧美国产电影| 一区在线观看免费| 日本少妇一区二区| 一本大道av伊人久久综合| 日韩丝袜情趣美女图片| 亚洲天堂中文字幕| 精品一区二区三区视频| 一本大道久久a久久精品综合 | 国产真实乱偷精品视频免| 色播五月激情综合网| 久久一区二区三区四区| 亚洲国产欧美日韩另类综合 | 日韩午夜三级在线| 亚洲丝袜自拍清纯另类| 国产最新精品免费| 欧美图区在线视频| 亚洲人妖av一区二区| 国产一区二区调教| 正在播放亚洲一区| 夜夜嗨av一区二区三区四季av| 国产电影精品久久禁18| 日韩欧美另类在线| 日韩国产高清在线| 欧美在线一区二区| 一区二区三区在线观看视频| 顶级嫩模精品视频在线看| 精品免费日韩av| 麻豆91在线看| 欧美一二三在线| 午夜精品福利在线| 在线不卡欧美精品一区二区三区| 亚洲桃色在线一区| 99久久伊人精品| 亚洲欧美怡红院| 91一区二区三区在线观看| 欧美激情中文字幕一区二区| 国产精品91xxx| 欧美韩国一区二区| 高清不卡一区二区| 国产精品免费丝袜| 91在线精品秘密一区二区| 中文字幕一区二区三区不卡在线| 成人av动漫在线| 国产精品久久久久久久第一福利| 99久久精品免费看| 亚洲免费高清视频在线| 色悠悠久久综合| 亚洲欧美日韩成人高清在线一区| 91啪九色porn原创视频在线观看| 日韩理论片网站| 精品视频1区2区| 美女免费视频一区二区| 久久久精品国产免费观看同学| 国产精品69久久久久水密桃| 国产精品国产自产拍高清av王其| 成人污污视频在线观看| 亚洲人成7777| 91.com视频| 国产精品77777| 国产精品传媒入口麻豆| 欧美影片第一页| 美女免费视频一区| 中文字幕中文乱码欧美一区二区| www.亚洲人| 日本不卡视频在线| 欧美极品美女视频| 欧美视频一区二区三区| 久久不见久久见免费视频1| 国产欧美一区二区精品久导航 | 丰满少妇在线播放bd日韩电影| 日本一区二区免费在线| 欧美私模裸体表演在线观看| 男人操女人的视频在线观看欧美| 久久精品夜夜夜夜久久| 色噜噜狠狠色综合欧洲selulu| 日韩av高清在线观看| 国产精品欧美综合在线| 欧美日韩中文精品| 成人污视频在线观看| 日韩专区中文字幕一区二区| 国产欧美一区二区精品忘忧草| 欧美做爰猛烈大尺度电影无法无天| 喷白浆一区二区| 亚洲私人黄色宅男| 久久久久久久久久久黄色| 精品视频在线免费| 91网页版在线| 国产精品99久久久久久有的能看| 亚洲国产视频直播| 最新国产精品久久精品| 精品国产一区二区在线观看| 欧美午夜影院一区| 成人黄色电影在线| 国产一区二区h| 久久99精品国产麻豆婷婷| 亚洲综合一区二区| 国产精品国产三级国产普通话蜜臀 | 欧美bbbbb| 亚洲v日本v欧美v久久精品| 国产调教视频一区| 日韩精品一区二区三区视频| 欧美午夜在线一二页| 91丨九色丨尤物| 成人福利在线看| 国产精品一区在线| 韩国在线一区二区| 久久精品国内一区二区三区| 亚洲一二三四区不卡| 亚洲女爱视频在线| 亚洲特黄一级片| 亚洲欧美影音先锋| 亚洲人成影院在线观看| 亚洲天堂网中文字| 亚洲欧美日韩一区二区 | 日韩精品成人一区二区在线| 亚洲欧美经典视频| 国产精品久久久久久妇女6080 | 蜜臀av性久久久久蜜臀aⅴ| 亚洲成人免费电影| 一区二区三区国产| 亚洲一区免费视频| 亚洲成人动漫一区| 视频在线在亚洲| 日本美女一区二区三区| 蜜臀av性久久久久蜜臀av麻豆| 日韩精品一区第一页| 日韩电影免费在线| 婷婷中文字幕综合| 日本欧美在线看| 国产在线看一区| 不卡一区二区在线| 91免费观看在线| 欧美日韩一区二区三区在线看| 欧美性一区二区| 日韩视频免费直播| 久久久不卡网国产精品一区| 欧美高清在线一区二区| 亚洲天堂网中文字| 五月天视频一区| 国产激情视频一区二区三区欧美 | 色88888久久久久久影院按摩 | 日韩视频免费观看高清完整版| 精品日产卡一卡二卡麻豆| 久久久久久一二三区| 亚洲视频精选在线| 日本特黄久久久高潮| 国产精品一区在线观看乱码| 99v久久综合狠狠综合久久| 欧美日韩一卡二卡| 久久久久国产精品麻豆 | 欧美色区777第一页| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 九九久久精品视频| av在线一区二区三区| 在线播放亚洲一区| 中文字幕乱码日本亚洲一区二区 | 色婷婷综合中文久久一本| 在线播放中文字幕一区| 国产欧美日韩另类一区| 亚洲成人自拍一区| 成人午夜精品一区二区三区| 欧美日韩国产一级| 国产精品色眯眯| 美女网站一区二区|