📄 deblockopt.cpp
字号:
packuswb (mm2, edi+40);
movq (mm3, edi+48 );/* S_2 */
movq (mm4, edi+64 );/* S_1 */
packuswb ( mm3, edi+56);
packuswb ( mm4, edi+72);
movq ( mm5, mm1 );/* S_4 */
movq ( mm6, mm2 );/* S_3 */
psubusb ( mm5, mm0 );/* S_4 - S_5 */
psubusb ( mm0, mm1 );/* S_5 - S_4 */
por ( mm0, mm5 );/* abs(S_5-S_4) */
psubusb ( mm6, mm1 );/* S_3 - S_4 */
psubusb ( mm1, mm2 );/* S_4 - S_3 */
movq ( mm5, mm3 );/* S_2 */
por ( mm1, mm6 );/* abs(S_4-S_3) */
psubusb ( mm5, mm2 );/* S_2 - S_3 */
psubusb ( mm2, mm3 );/* S_3 - S_2 */
movq ( mm6, mm4 );/* S_1 */
por ( mm2, mm5 );/* abs(S_3-S_2) */
psubusb ( mm6, mm3 );/* S_1 - S_2 */
psubusb ( mm3, mm4 );/* S_2 - S_1 */
por ( mm3, mm6 );/* abs(S_2-S_1) */
paddusb ( mm0, mm1 );/* abs(S_5-S_4)+abs(S_4-S_3) */
paddusb ( mm2, mm3 );/* abs(S_3-S_2)+abs(S_2-S_1) */
movq ( mm7, FLimitMmx );/* FFFFF FFFF */
paddusb ( mm0, mm2 );/* abs(S_5-S_4)+abs(S_4-S_3)+abs(S_3-S_2)+abs(S_2-S_1) */
movq ( Variance11, mm0 );/* Save the variance */
movq ( mm6, mm4 );/* S_1 */
psubb ( mm0, Eight128c );/* abs(..) - 128 */
pcmpgtb ( mm7, mm0 );/* abs(S_5-S_4)+abs(S_4-S_3)+abs(S_3-S_2)+abs(S_2-S_1)<? */
movq ( mm5, edi+80 );/* S0 */
movq ( mm1, edi+96 );/* S1 */
movq ( mm2, edi+112 );/* S2 */
packuswb ( mm5, edi+88 );
packuswb ( mm1, edi+104);
packuswb ( mm2, edi+120);
movq ( mm3, edi+128 );/* S3 */
movq ( mm4, edi+144 );/* S4 */
packuswb ( mm3, edi+136);
packuswb ( mm4, edi+152);
movq ( mm0, mm5 );/* S0 */
psubusb ( mm5, mm6 );/* S0-S_1 */
psubusb ( mm6, mm0 );/* S_1-S0 */
por ( mm5, mm6 );/* abs(S_1-S0) */
movq ( mm6, QStepMmx );/* QQQQ QQQQ */
pcmpgtb ( mm6, mm5 );/* abs(S_1-S0)<QStep? */
movq ( mm5, mm1 );/* S1 */
pand ( mm7, mm6 );/* abs(S_1-S0)<QStep &&
abs(S_5-S_4)+abs(S_4-S_3)+abs(S_3-S_2)+abs(S_2-S_1)<FLimit? */
movq ( mm6, mm2 );/* S2 */
psubusb ( mm5, mm0 );/* S1 - S0 */
psubusb ( mm0, mm1 );/* S0 - S1*/
por ( mm0, mm5 );/* abs(S0-S1) */
psubusb ( mm6, mm1 );/* S2 - S1 */
psubusb ( mm1, mm2 );/* S1 - S2*/
movq ( mm5, mm3 );/* S3 */
por ( mm1, mm6 );/* abs(S1-S2) */
psubusb ( mm5, mm2 );/* S3 - S2 */
psubusb ( mm2, mm3 );/* S2 - S3 */
movq ( mm6, mm4 );/* S4 */
por ( mm2, mm5 );/* abs(S2-S3) */
psubusb ( mm6, mm3 );/* S4 - S3 */
psubusb ( mm3, mm4 );/* S3 - S4 */
por ( mm3, mm6 );/* abs(S3-S4) */
paddusb ( mm0, mm1 );/* abs(S0-S1)+abs(S1-S2) */
paddusb ( mm2, mm3 );/* abs(S2-S3)+abs(S3-S4) */
movq ( mm6, FLimitMmx );/* FFFFF FFFF */
paddusb ( mm0, mm2 );/* abs(S0-S1)+abs(S1-S2)+abs(S2-S3)+abs(S3-S4) */
movq ( Variance21, mm0 );/* Save the variance */
psubb ( mm0, Eight128c );/* abs(..) - 128 */
pcmpgtb ( mm6, mm0 );/* abs(S0-S1)+abs(S1-S2)+abs(S2-S3)+abs(S3-S4)<FLimit */
pand ( mm6, mm7 );/* Flag */
movq ( mm0, mm6);
movq ( mm7, mm6 );
punpckhbw ( mm0, mm6);
punpcklbw ( mm7, mm6);
/* mm0 and mm7 now are in use */
/* Let's do the filtering now */
/* sum = x0 + x0 + x0 + x1 + x2 + x3 + x4 + 4; */
movq ( mm3, edi );/* mm3 = -5 */
movq ( mm2, edi+144 );/* mm2 = 4 */
movq ( mm1, mm3 );/* x0 = -4 */
paddw ( mm3, mm3 );/* mm3 = x0 + x0 */
movq ( mm4, edi+16 );/* mm4 = x1 */
paddw ( mm3, mm1 );/* mm3 = x0 + x0 + x0 */
paddw ( mm3, edi+32 );/* mm3 = x0+x0+x0+ x2 */
paddw ( mm4, edi+48 );/* mm4 = x1+x3 */
paddw ( mm3, edi+64 );/* mm3 += x4 */
paddw ( mm4, FourFours );/* mm4 = x1 + x3 + 4 */
paddw ( mm3, mm4 );/* mm3 = 3*x0+x1+x2+x3+x4+4 */
/* Des-4*Pitch = (((sum + x1) >> 3; */
movq ( mm4, mm3 );/* mm4 = mm3 */
movq ( mm5, edi+16 );/* mm5 = x1 */
paddw ( mm4, mm5 );/* mm4 = sum+x1 */
psraw ( mm4, 3 );/* mm4 >>=3 */
psubw ( mm4, mm5 );/* New Value - old Value */
pand ( mm4, mm7 );/* And the flag */
paddw ( mm4, mm5 );/* add the old value back */
movq ( esi, mm4 );/* Write new x1 */
/* sum += x5 -x0 */
/* Des-3*Pitch=((sum+x2)>>3 */
movq ( mm5, edi+32 );/* mm5= x2 */
psubw ( mm3, mm1 );/* sum=sum-x0 */
paddw ( mm3, edi+80 );/* sum=sum+x5 */
movq ( mm4, mm5 );/* copy sum */
paddw ( mm4, mm3 );/* mm4=sum+x2 */
psraw ( mm4, 3 );/* mm4=(sum+x2)>>3 */
psubw ( mm4, mm5 );/* new value - old value */
pand ( mm4, mm7 );/* And the flag */
paddw ( mm4, mm5 );/* add the old value back */
movq ( esi+16, mm4 );/* write new x2 */
/* sum += x6 - x0 */
/* Des-2*Pitch=((sum+x3)>>3 */
movq ( mm5, edi+48 );/* mm5= x3 */
psubw ( mm3, mm1 );/* sum=sum-x0 */
paddw ( mm3, edi+96 );/* sum=sum+x6 */
movq ( mm4, mm5 );/* copy x3 */
paddw ( mm4, mm3 );/* mm4=sum+x3 */
psraw ( mm4, 3 );/* mm4=(sum+x3)>>3 */
psubw ( mm4, mm5 );/* new value - old value */
pand ( mm4, mm7 );/* And the flag */
paddw ( mm4, mm5 );/* add the old value back */
movq ( esi+32, mm4 );/* write new x3 */
/* sum += x7 - x0 */
/* Des-Pitch=(sum+x4)>>3 */
movq ( mm5, edi+64 );/* mm5 = x4 */
psubw ( mm3, mm1 );/* sum = sum-x0 */
paddw ( mm3, edi+112 );/* sum = sum+x7 */
movq ( mm4, mm5 );/* mm4 = x4 */
paddw ( mm4, mm3 );/* mm4 = sum + x4 */
psraw ( mm4, 3 );/* >>=4 */
psubw ( mm4, mm5 );/* -=x4 */
pand ( mm4, mm7 );/* and flag */
paddw ( mm4, mm5 );/* += x4 */
movq ( esi+48, mm4 );/* write new x4 */
/* sum+= x8-x1 */
/* Des0=((sum+x5)>>3 */
movq ( mm5, edi+80 );/* mm5 = x5 */
psubw ( mm3, edi+16 );/* sum -= x1 */
paddw ( mm3, edi+128 );/* sub += x8 */
movq ( mm4, mm5 );/* mm4 = x5 */
paddw ( mm4, mm3 );/* mm4= sum+x5 */
psraw ( mm4, 3 );/* >>=4 */
psubw ( mm4, mm5 );/* -=x5 */
pand ( mm4, mm7 );/* and flag */
paddw ( mm4, mm5 );/* += x5 */
movq ( esi+64, mm4 );/* write new x5 */
/* sum += x9 - x2 */
/* DesPitch = ((sum+x6)>>3 */
movq ( mm5, edi+96 );/* mm5 = x6 */
psubw ( mm3, edi+32 );/* -= x2 */
paddw ( mm3, mm2 );/* += x9 */
movq ( mm4, mm5 );/* mm4 = x6 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -