📄 deringopt.cpp
字号:
punpcklbw ( mm2, mm7 );/* lower four */
movq ( mm6, eax+16 );/* ad */
punpckhbw ( mm3, mm7 );/* higher four */
paddw ( mm4, mm6 );/* au+ad */
pmullw ( mm2, mm6 );/* au*pu+ad*pd */
movq ( mm6, eax+24 );/* ad */
paddw ( mm0, mm2 );
paddw ( mm5, mm6 );/* au+ad */
pmullw ( mm3, mm6 );/* ad*pd */
movq ( mm2, esi-1 );/* pixel to the left */
paddw ( mm1, mm3 );/* au*pu+ad*pd */
movq ( mm3, mm2 );/* make a copy of mm2 */
punpcklbw ( mm2, mm7 );/* four left pixels */
movq ( mm6, ebx );/* al */
punpckhbw ( mm3, mm7 );/* four right pixels */
paddw ( mm4, mm6 );/* au + ad + al */
pmullw ( mm2, mm6 );/* pl * al */
movq ( mm6, ebx+8 );/* al */
paddw ( mm0, mm2 );/* au*pu+ad*pd+al*pl */
paddw ( mm5, mm6 );/* au+ad+al */
pmullw ( mm3, mm6 );/* al*pl */
movq ( mm2, esi+1 );/* pixel to the right */
paddw ( mm1, mm3 );/* au*pu+ad*pd+al*pl */
movq ( mm3, mm2 );/* make a copy of mm2 */
punpcklbw ( mm2, mm7 );/* four left pixels */
movq ( mm6, ebx+128 );/* ar */
punpckhbw ( mm3, mm7 );/* four right pixels */
paddw ( mm4, mm6 );/* au + ad + al + ar */
pmullw ( mm2, mm6 );/* pr * ar */
movq ( mm6, ebx+136 );/* ar */
paddw ( mm0, mm2 );/* au*pu+ad*pd+al*pl+pr*ar */
paddw ( mm5, mm6 );/* au+ad+al+ar */
pmullw ( mm3, mm6 );/* ar*pr */
movq ( mm2, esi );/* p */
paddw ( mm1, mm3 );/* au*pu+ad*pd+al*pl+ar*pr */
movq ( mm3, mm2 );/* make a copy of the pixel */
/* mm0, mm1 --- au*pu+ad*pd+al*pl+ar*pr */
/* mm4, mm5 --- au + ad + al + ar */
punpcklbw ( mm2, mm7 );/* left four pixels */
movq ( mm6, Four128s );/* 0080 0080 0080 0080 */
punpckhbw ( mm3, mm7 );/* right four pixels */
psubw ( mm6, mm4 );/* 128-(au+ad+al+ar) */
pmullw ( mm2, mm6 );/* p*(128-(au+ad+al+ar)) */
movq ( mm6, Four128s );/* 0080 0080 0080 0080 */
paddw ( mm0, mm2 );/* sum */
psubw ( mm6, mm5 );/* 128-(au+ad+al+ar) */
pmullw ( mm3, mm6 );/* p*(128-(au+ad+al+ar)) */
movq ( mm6, Four64s );/* {64, 64, 64, 64 } */
movq ( mm7, mm6 );/* {64, 64, 64, 64} */
paddw ( mm0, mm6 );/* sum+B */
paddw ( mm1, mm3 );/* sum */
psllw ( mm7, 8 );/* {16384, .. } */
paddw ( mm0, mm7 );/* clamping */
paddw ( mm1, mm6 );/* sum+B */
paddw ( mm1, mm7 );/* clamping */
psubusw ( mm0, mm7 );/* clamping */
psubusw ( mm1, mm7 );/* clamping */
psrlw ( mm0, 7 );/* (sum+B)>>7 */
psrlw ( mm1, 7 );/* (sum+B)>>7 */
packuswb ( mm0, mm1 );/* pack to 8 bytes */
movq ( edi, mm0 );/* write to destination */
esi+= ecx;/* Src += Pitch */
edi+= ecx;/* Des += Pitch */
eax+= 16;/* UDPointer += 8 */
ebx+= 16;/* LPointer +=8 */
/* Third Row */
movq ( mm0, esi+edx );/* mm0 = Pixels above */
pxor ( mm7, mm7 );/* clear mm7 */
movq ( mm1, mm0 );/* make a copy of mm0 */
punpcklbw ( mm0, mm7 );/* lower four pixels */
movq ( mm4, eax );/* au */
punpckhbw ( mm1, mm7 );/* high four pixels */
movq ( mm5, eax+8 );/* au */
pmullw ( mm0, mm4 );/* pu*au */
movq ( mm2, esi+ecx );/* mm2 = pixels below */
pmullw ( mm1, mm5 );/* pu*au */
movq ( mm3, mm2 );/* make a copy of mm2 */
punpcklbw ( mm2, mm7 );/* lower four */
movq ( mm6, eax+16 );/* ad */
punpckhbw ( mm3, mm7 );/* higher four */
paddw ( mm4, mm6 );/* au+ad */
pmullw ( mm2, mm6 );/* au*pu+ad*pd */
movq ( mm6, eax+24 );/* ad */
paddw ( mm0, mm2 );
paddw ( mm5, mm6 );/* au+ad */
pmullw ( mm3, mm6 );/* ad*pd */
movq ( mm2, esi-1 );/* pixel to the left */
paddw ( mm1, mm3 );/* au*pu+ad*pd */
movq ( mm3, mm2 );/* make a copy of mm2 */
punpcklbw ( mm2, mm7 );/* four left pixels */
movq ( mm6, ebx );/* al */
punpckhbw ( mm3, mm7 );/* four right pixels */
paddw ( mm4, mm6 );/* au + ad + al */
pmullw ( mm2, mm6 );/* pl * al */
movq ( mm6, ebx+8 );/* al */
paddw ( mm0, mm2 );/* au*pu+ad*pd+al*pl */
paddw ( mm5, mm6 );/* au+ad+al */
pmullw ( mm3, mm6 );/* al*pl */
movq ( mm2, esi+1 );/* pixel to the right */
paddw ( mm1, mm3 );/* au*pu+ad*pd+al*pl */
movq ( mm3, mm2 );/* make a copy of mm2 */
punpcklbw ( mm2, mm7 );/* four left pixels */
movq ( mm6, ebx+128 );/* ar */
punpckhbw ( mm3, mm7 );/* four right pixels */
paddw ( mm4, mm6 );/* au + ad + al + ar */
pmullw ( mm2, mm6 );/* pr * ar */
movq ( mm6, ebx+136 );/* ar */
paddw ( mm0, mm2 );/* au*pu+ad*pd+al*pl+pr*ar */
paddw ( mm5, mm6 );/* au+ad+al+ar */
pmullw ( mm3, mm6 );/* ar*pr */
movq ( mm2, esi );/* p */
paddw ( mm1, mm3 );/* au*pu+ad*pd+al*pl+ar*pr */
movq ( mm3, mm2 );/* make a copy of the pixel */
/* mm0, mm1 --- au*pu+ad*pd+al*pl+ar*pr */
/* mm4, mm5 --- au + ad + al + ar */
punpcklbw ( mm2, mm7 );/* left four pixels */
movq ( mm6, Four128s );/* 0080 0080 0080 0080 */
punpckhbw ( mm3, mm7 );/* right four pixels */
psubw ( mm6, mm4 );/* 128-(au+ad+al+ar) */
pmullw ( mm2, mm6 );/* p*(128-(au+ad+al+ar)) */
movq ( mm6, Four128s );/* 0080 0080 0080 0080 */
paddw ( mm0, mm2 );/* sum */
psubw ( mm6, mm5 );/* 128-(au+ad+al+ar) */
pmullw ( mm3, mm6 );/* p*(128-(au+ad+al+ar)) */
movq ( mm6, Four64s );/* {64, 64, 64, 64 } */
movq ( mm7, mm6 );/* {64, 64, 64, 64} */
paddw ( mm0, mm6 );/* sum+B */
paddw ( mm1, mm3 );/* sum */
psllw ( mm7, 8 );/* {16384, .. } */
paddw ( mm0, mm7 );/* clamping */
paddw ( mm1, mm6 );/* sum+B */
paddw ( mm1, mm7 );/* clamping */
psubusw ( mm0, mm7 );/* clamping */
psubusw ( mm1, mm7 );/* clamping */
psrlw ( mm0, 7 );/* (sum+B)>>7 */
psrlw ( mm1, 7 );/* (sum+B)>>7 */
packuswb ( mm0, mm1 );/* pack to 8 bytes */
movq ( edi, mm0 );/* write to destination */
esi+= ecx;/* Src += Pitch */
edi+= ecx;/* Des += Pitch */
eax+= 16;/* UDPointer += 8 */
ebx+= 16;/* LPointer +=8 */
/* Fourth Row */
movq ( mm0, esi+edx );/* mm0 = Pixels above */
pxor ( mm7, mm7 );/* clear mm7 */
movq ( mm1, mm0 );/* make a copy of mm0 */
punpcklbw ( mm0, mm7 );/* lower four pixels */
movq ( mm4, eax );/* au */
punpckhbw ( mm1, mm7 );/* high four pixels */
movq ( mm5, eax+8 );/* au */
pmullw ( mm0, mm4 );/* pu*au */
movq ( mm2, esi+ecx );/* mm2 = pixels below */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -