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

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

?? quantize_mpeg_mmx.asm

?? xvid的視頻編解碼庫文件
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;/**************************************************************************; *; *  XVID MPEG-4 VIDEO CODEC; *  - 3dne Quantization/Dequantization -; *; *  Copyright (C) 2002-2003 Peter Ross <pross@xvid.org>; *                2002-2003 Michael Militzer <isibaar@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$; *; *************************************************************************/%define SATURATEBITS 32%macro cglobal 1	%ifdef PREFIX		global _%1		%define %1 _%1	%else		global %1	%endif%endmacro%macro cextern 1	%ifdef PREFIX		extern _%1		%define %1 _%1	%else		extern %1	%endif%endmacro;=============================================================================; Local data (Read Only);=============================================================================%ifdef FORMAT_COFFSECTION .rodata data%elseSECTION .rodata data align=16%endifmmx_one:	times 4	dw	 1;-----------------------------------------------------------------------------; divide by 2Q table;-----------------------------------------------------------------------------ALIGN 16mmx_div:	times 4 dw 65535 ; the div by 2 formula will overflow for the case	                 ; quant=1 but we don't care much because quant=1	                 ; is handled by a different piece of code that	                 ; doesn't use this table.%assign quant 2%rep 30	times 4 dw  (1<<17) / (quant*2) + 1	%assign quant quant+1%endrep%define VM18P 3%define VM18Q 4;-----------------------------------------------------------------------------; quantd table;-----------------------------------------------------------------------------quantd:%assign quant 1%rep 31	times 4 dw  ((VM18P*quant) + (VM18Q/2)) / VM18Q	%assign quant quant+1%endrep;-----------------------------------------------------------------------------; multiple by 2Q table;-----------------------------------------------------------------------------mmx_mul_quant:%assign quant 1%rep 31	times 4 dw  quant	%assign quant quant+1%endrep;-----------------------------------------------------------------------------; saturation limits;-----------------------------------------------------------------------------ALIGN 16mmx_32767_minus_2047:	times 4 dw (32767-2047)mmx_32768_minus_2048:	times 4 dw (32768-2048)mmx_2047:	times 4 dw 2047mmx_minus_2048:	times 4 dw (-2048)zero:	times 4 dw 0;=============================================================================; Code;=============================================================================SECTION .textcglobal quant_mpeg_intra_mmxcglobal quant_mpeg_inter_mmxcglobal dequant_mpeg_intra_mmxcglobal dequant_mpeg_inter_mmx;-----------------------------------------------------------------------------;; uint32_t quant_mpeg_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_mpeg_intra_mmx:  push ecx  push esi  push edi  push ebx  mov edi, [esp + 16 + 4]       ; coeff  mov esi, [esp + 16 + 8]       ; data  mov eax, [esp + 16 + 12]      ; quant  mov ebx, [esp + 16 + 20]		; mpeg_quant_matrices  movq mm5, [quantd + eax * 8 - 8] ; quantd -> mm5  xor ecx, ecx  cmp al, 1  jz near .q1loop  cmp al, 2  jz near .q2loop  movq mm7, [mmx_div + eax * 8 - 8] ; multipliers[quant] -> mm7ALIGN 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                ;  psllw mm0, 4                  ; level << 4  psllw mm3, 4  movq mm2, [ebx + 8*ecx]  psrlw mm2, 1                  ; intra_matrix[i]>>1  paddw mm0, mm2  movq mm2, [ebx + 256 + ecx*8]  pmulhw mm0, mm2                       ; (level<<4 + intra_matrix[i]>>1) / intra_matrix[i]  movq mm2, [ebx + 8*ecx + 8]  psrlw mm2, 1  paddw mm3, mm2  movq mm2, [ebx + 256 + ecx*8 + 8]  pmulhw mm3, mm2  paddw mm0, mm5                ; + quantd  paddw mm3, mm5  pmulhw mm0, mm7               ; mm0 = (mm0 / 2Q) >> 16  pmulhw mm3, mm7               ;  psrlw mm0, 1                  ; additional shift by 1 => 16 + 1 = 17  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 near .loop.done  ; caclulate  data[0] // (int32_t)dcscalar)  mov ecx, [esp + 16 + 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  pop ebx  pop edi  pop esi  pop ecx  xor eax, eax              ; return(0);  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                ;  psllw mm0, 4  psllw mm3, 4  movq mm2, [ebx + 8*ecx]  psrlw mm2, 1  paddw mm0, mm2  movq mm2, [ebx + 256 + ecx*8]  pmulhw mm0, mm2                       ; (level<<4 + intra_matrix[i]>>1) / intra_matrix[i]  movq mm2, [ebx + 8*ecx + 8]  psrlw mm2, 1  paddw mm3, mm2  movq mm2, [ebx + 256 + ecx*8 + 8]  pmulhw mm3, mm2  paddw mm0, mm5  paddw mm3, mm5  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 near .q1loop  jmp near .doneALIGN 16.q2loop  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                ;  psllw mm0, 4  psllw mm3, 4  movq mm2, [ebx + 8*ecx]  psrlw mm2, 1  paddw mm0, mm2  movq mm2, [ebx + 256 + ecx*8]  pmulhw mm0, mm2                       ; (level<<4 + intra_matrix[i]>>1) / intra_matrix[i]  movq mm2, [ebx + 8*ecx + 8]  psrlw mm2, 1  paddw mm3, mm2  movq mm2, [ebx + 256 + ecx*8 + 8]  pmulhw mm3, mm2  paddw mm0, mm5  paddw mm3, mm5  psrlw mm0, 2                  ; mm0 >>= 1   (/4)  psrlw mm3, 2                  ;  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 near .q2loop  jmp near .done;-----------------------------------------------------------------------------;; uint32_t quant_mpeg_inter_mmx(int16_t * coeff,;                               const int16_t const * data,;                               const uint32_t quant,;                               const uint16_t *mpeg_matrices);;;-----------------------------------------------------------------------------ALIGN 16quant_mpeg_inter_mmx:  push ecx  push esi  push edi  push ebx  mov edi, [esp + 16 + 4]       ; coeff  mov esi, [esp + 16 + 8]       ; data  mov eax, [esp + 16 + 12]  ; quant  mov ebx, [esp + 16 + 16]		; mpeg_quant_matrices  xor ecx, ecx  pxor mm5, mm5                 ; sum  cmp al, 1  jz near .q1loop  cmp al, 2  jz near .q2loop  movq mm7, [mmx_div + eax * 8 - 8] ; dividerALIGN 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                ;  psllw mm0, 4  psllw mm3, 4  movq mm2, [ebx + 512 + 8*ecx]  psrlw mm2, 1  paddw mm0, mm2  movq mm2, [ebx + 768 + ecx*8]  pmulhw mm0, mm2               ; (level<<4 + inter_matrix[i]>>1) / inter_matrix[i]  movq mm2, [ebx + 512 + 8*ecx + 8]

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区精品久久av| 欧美激情一区二区三区全黄| 国产成人精品免费| 日韩成人一级片| 午夜精品久久久久久久99水蜜桃 | 日本aⅴ免费视频一区二区三区| 亚洲精品久久久久久国产精华液| 中文字幕制服丝袜一区二区三区| 欧美激情一区二区三区在线| 国产精品久久久久影视| 国产精品第一页第二页第三页| 国产日韩精品一区二区三区在线| 欧美国产在线观看| 亚洲欧美日韩小说| 三级成人在线视频| 裸体健美xxxx欧美裸体表演| 国产综合一区二区| 不卡高清视频专区| 欧美视频精品在线| 日韩欧美一区二区在线视频| 亚洲精品在线电影| 中文字幕高清不卡| 亚洲一区二区视频在线观看| 日韩精品乱码免费| 国产成人精品免费网站| 欧美亚洲国产怡红院影院| 555夜色666亚洲国产免| 精品国产sm最大网站| 国产精品色呦呦| 亚洲一区视频在线观看视频| 青草av.久久免费一区| 国产91丝袜在线播放0| 在线看日韩精品电影| 日韩欧美成人一区| 中文字幕一区二区三区av| 亚洲.国产.中文慕字在线| 国产一区二区三区香蕉 | 91精品国产乱| 欧美国产亚洲另类动漫| 日韩影院免费视频| 成人动漫一区二区三区| 精品视频在线免费看| 国产亚洲精品久| 亚洲成人av一区二区| 岛国一区二区在线观看| 日韩一级黄色片| 成人欧美一区二区三区白人| 日本在线不卡视频一二三区| 欧美日韩中文字幕精品| 久久九九久久九九| 日韩av高清在线观看| av中文字幕不卡| 欧美精品一区二区三区在线| 亚洲一区二区三区视频在线播放| 国产永久精品大片wwwapp| 69精品人人人人| 一个色妞综合视频在线观看| 国产精品123区| 日韩视频免费观看高清完整版| 日韩理论片在线| 风间由美中文字幕在线看视频国产欧美 | 久久99日本精品| 欧美性色综合网| 亚洲欧美偷拍三级| 国产黑丝在线一区二区三区| 欧美一二三区在线| 五月综合激情网| 欧美在线观看一区| 亚洲精品午夜久久久| av在线免费不卡| 国产精品嫩草99a| 国产不卡一区视频| 久久精品一区八戒影视| 久热成人在线视频| 久久综合九色欧美综合狠狠| 精品一区二区三区日韩| 日韩精品一区二区三区中文不卡| 天天综合日日夜夜精品| 欧美日韩一区二区三区视频| 亚洲一区二区视频在线| 欧美日韩在线观看一区二区 | 精品欧美乱码久久久久久| 日本aⅴ免费视频一区二区三区| 欧美日韩综合一区| 三级精品在线观看| 久久综合中文字幕| 成人国产亚洲欧美成人综合网 | 亚洲1区2区3区4区| 欧美一区二区三区喷汁尤物| 天堂av在线一区| 日韩美女主播在线视频一区二区三区| 日韩精品一级二级 | 色婷婷亚洲综合| 亚洲国产一区视频| 51久久夜色精品国产麻豆| 久久精品国产一区二区| 久久久99精品免费观看不卡| 国产成人精品免费看| 亚洲精品国产一区二区精华液| 欧美在线观看视频一区二区 | 国产成人在线视频免费播放| 国产精品国产三级国产有无不卡 | 国产九九视频一区二区三区| 国产欧美精品一区| 在线观看成人小视频| 日本不卡免费在线视频| 久久先锋影音av| 色偷偷久久人人79超碰人人澡| 午夜婷婷国产麻豆精品| 2020国产精品久久精品美国| av午夜一区麻豆| 日韩制服丝袜先锋影音| 国产精品久久久99| 欧美裸体bbwbbwbbw| 成人爽a毛片一区二区免费| 亚洲成人免费av| 国产欧美日韩不卡| 欧美一区二区大片| 色噜噜久久综合| 国产中文字幕一区| 日韩精品色哟哟| 《视频一区视频二区| 欧美r级在线观看| 日本二三区不卡| 国产v日产∨综合v精品视频| 日韩av一区二区三区四区| 亚洲女同女同女同女同女同69| 欧美xxxxx裸体时装秀| 欧美日韩在线电影| 色婷婷综合中文久久一本| 国产激情91久久精品导航| 美国av一区二区| 亚洲风情在线资源站| 国产精品免费人成网站| 久久午夜羞羞影院免费观看| 欧美精品久久久久久久多人混战| 93久久精品日日躁夜夜躁欧美| 国产原创一区二区三区| 香蕉av福利精品导航| 亚洲三级理论片| 亚洲欧洲国产日本综合| 中文字幕乱码日本亚洲一区二区| 日韩精品中文字幕一区二区三区| 在线观看日韩av先锋影音电影院| 成人av网站免费| 懂色av中文字幕一区二区三区| 久久不见久久见免费视频1| 亚洲国产欧美日韩另类综合 | 亚洲精品ww久久久久久p站| 欧美经典三级视频一区二区三区| 精品少妇一区二区| 精品国产乱码久久久久久免费| 88在线观看91蜜桃国自产| 欧美性猛交一区二区三区精品| 色网综合在线观看| 在线中文字幕不卡| 欧美三级电影网站| 欧美日韩精品一区二区在线播放 | 极品美女销魂一区二区三区免费 | 国产九色sp调教91| 国产成人综合在线播放| 国产suv精品一区二区883| 懂色av一区二区三区免费看| 国产69精品久久久久777| 丁香一区二区三区| 99国产精品视频免费观看| 91国内精品野花午夜精品| 欧美肥妇毛茸茸| 欧美精品一区二| 中文一区二区完整视频在线观看| 成人免费在线观看入口| 亚洲伊人伊色伊影伊综合网| 日韩电影在线一区| 国产一区亚洲一区| 99久久精品99国产精品| 欧美日韩mp4| 久久精品在线观看| 一区二区三区在线免费| 日本欧美一区二区在线观看| 国产原创一区二区三区| 92精品国产成人观看免费| 6080亚洲精品一区二区| 中文字幕+乱码+中文字幕一区| 一区在线中文字幕| 天堂精品中文字幕在线| 国产成人亚洲精品狼色在线| 色婷婷香蕉在线一区二区| 91精品国产丝袜白色高跟鞋| 久久久91精品国产一区二区三区| 亚洲精品成人a在线观看| 精品影视av免费| 色网站国产精品| 久久看人人爽人人| 亚洲成人免费观看| 国产**成人网毛片九色 | 一区二区三区四区不卡在线 | 成人app软件下载大全免费| 在线观看视频一区二区| 国产日韩欧美a| 免费不卡在线观看|