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

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

?? quantize_h263_mmx.asm

?? TMS320C6713Xvid視頻壓縮算法源代碼.rar
?? ASM
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
;/*****************************************************************************; *; *  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%elseSECTION .rodata 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

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩av一区二区| 国产激情一区二区三区四区 | 成人美女视频在线观看| 日韩不卡一区二区三区| 性做久久久久久久免费看| 亚洲五月六月丁香激情| 亚洲成人先锋电影| 日韩二区三区四区| 国精品**一区二区三区在线蜜桃| 精品一区二区三区视频| 国产精品一二三四五| 国产成人免费在线| 精品系列免费在线观看| 六月丁香婷婷久久| 韩国午夜理伦三级不卡影院| 国产成人综合在线播放| 不卡免费追剧大全电视剧网站| 成人免费高清在线| 欧美亚洲日本国产| 91精品国产综合久久福利软件| 日韩欧美不卡一区| 国产欧美一区二区精品仙草咪| 亚洲同性gay激情无套| 天堂久久一区二区三区| 韩国女主播成人在线观看| 懂色av中文字幕一区二区三区 | 欧美日韩一区精品| 精品国产一区久久| 国产三级一区二区三区| 一区二区三区在线免费观看| 日本成人在线电影网| 国产传媒久久文化传媒| 在线免费观看不卡av| 精品日本一线二线三线不卡| 国产精品青草综合久久久久99| 亚洲美腿欧美偷拍| 蜜臀91精品一区二区三区| 国产精品夜夜嗨| 色香蕉久久蜜桃| 欧美不卡一区二区| 亚洲美女免费视频| 狠狠色综合日日| 在线观看欧美日本| 国产精品三级久久久久三级| 日本女优在线视频一区二区| 99视频在线精品| 精品久久国产字幕高潮| 一区二区三区四区高清精品免费观看| 久久精品国产亚洲高清剧情介绍| 色综合视频在线观看| 精品久久久久久久人人人人传媒| 一个色在线综合| 国产成人免费视频精品含羞草妖精| 欧美日韩免费一区二区三区| 国产精品视频一二三区 | xf在线a精品一区二区视频网站| 亚洲综合丝袜美腿| 粉嫩13p一区二区三区| 日韩午夜小视频| 亚洲精品欧美综合四区| 丁香激情综合五月| 欧美日韩dvd在线观看| 国产尤物一区二区在线| 成人欧美一区二区三区黑人麻豆| 亚洲电影你懂得| 99免费精品在线观看| 久久综合久久综合九色| 无码av免费一区二区三区试看 | 一区二区三区在线视频播放| 日韩美女视频在线| 日韩在线一区二区| 久久久久久久久久看片| 欧美亚洲国产一区二区三区va| 懂色av一区二区在线播放| 成人av在线一区二区三区| 免费成人美女在线观看.| 欧美日本一区二区三区四区| 亚洲自拍偷拍欧美| 91国内精品野花午夜精品| 中文字幕人成不卡一区| 成人午夜精品在线| 国产精品日日摸夜夜摸av| 国产成人亚洲综合a∨猫咪| 国产片一区二区| 成人ar影院免费观看视频| 国产精品免费网站在线观看| 成人性生交大片免费看在线播放| 久久久av毛片精品| 国产iv一区二区三区| 国产精品日日摸夜夜摸av| 91视视频在线直接观看在线看网页在线看 | 成人黄页在线观看| 亚洲精品免费看| 欧美色综合影院| 日韩av电影免费观看高清完整版在线观看 | 国产精品女上位| 色先锋资源久久综合| 污片在线观看一区二区| 精品国内二区三区| 成人av午夜电影| 亚洲va韩国va欧美va精品| 日韩一区二区在线看| 国产东北露脸精品视频| 国产精品国产三级国产有无不卡| 波多野结衣一区二区三区 | 69久久夜色精品国产69蝌蚪网| 黄色日韩三级电影| 最新欧美精品一区二区三区| 欧美日韩一区高清| 国产精品自拍毛片| 91麻豆精品91久久久久同性| 日韩中文字幕av电影| 欧美在线免费播放| 亚洲欧美福利一区二区| 亚洲精选视频在线| 一区二区三区四区五区视频在线观看 | 国产成人av福利| 中文字幕欧美一| 欧美老肥妇做.爰bbww| 国产东北露脸精品视频| 亚洲综合在线第一页| 欧美精品一区二区三区高清aⅴ| 日本不卡一二三| 日韩一级大片在线观看| 亚洲素人一区二区| 色婷婷精品大在线视频| 日韩欧美二区三区| 亚洲尤物在线视频观看| 丁香桃色午夜亚洲一区二区三区| 国产日韩欧美精品在线| 久久精品国产成人一区二区三区| 欧美视频第二页| 一区二区三区四区视频精品免费| 日韩一级大片在线观看| 国产成人精品免费在线| 亚洲一二三专区| 国产精品天天看| www国产精品av| 91精品国产黑色紧身裤美女| 色94色欧美sute亚洲线路二| 国产91精品欧美| 久久99热这里只有精品| 视频精品一区二区| 亚洲成av人片在线观看无码| 又紧又大又爽精品一区二区| 亚洲自拍都市欧美小说| 欧美亚日韩国产aⅴ精品中极品| 亚洲人成人一区二区在线观看| 国产午夜精品理论片a级大结局| 日韩三级电影网址| www精品美女久久久tv| 色88888久久久久久影院按摩| 国产.欧美.日韩| 国产一区二区看久久| 久久超碰97人人做人人爱| 中文字幕在线播放不卡一区| 久久久久久一二三区| 国产在线播放一区| 一区二区在线观看免费| 欧美肥妇free| 日韩激情视频网站| 精品国产人成亚洲区| 亚洲精品一区二区三区在线观看 | 五月激情六月综合| 午夜精品久久久久久久久久久| 午夜久久久久久久久| 日韩精品电影一区亚洲| 久久91精品国产91久久小草| 韩国三级中文字幕hd久久精品| 国产精品亚洲人在线观看| 成人av免费网站| 在线中文字幕一区二区| 9191久久久久久久久久久| 精品精品欲导航| 国产精品丝袜91| 香蕉久久一区二区不卡无毒影院 | 久久疯狂做爰流白浆xx| 国产乱人伦精品一区二区在线观看| 国产91精品免费| 日本韩国精品一区二区在线观看| 欧美色图一区二区三区| 日韩手机在线导航| 国产精品久久看| 亚洲一区二区精品3399| 久久精工是国产品牌吗| 成人免费毛片app| 欧美三级日韩三级| 精品国产髙清在线看国产毛片| 国产精品久久久久永久免费观看| 亚洲精选在线视频| 国产一区不卡精品| 欧美日韩国产a| 国产欧美日韩一区二区三区在线观看 | 天天色天天操综合| 国产福利一区在线| 欧美日韩专区在线| 中文字幕免费不卡| 日韩1区2区日韩1区2区| 99国产麻豆精品| 精品国产人成亚洲区|