⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 postprocess_template.c

📁 ffmpeg移植到symbian的全部源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
        "and "ALIGN_MASK", %%"REG_c"            \n\t" // align//      0       1       2       3       4       5       6       7//      %0      %0+%1   %0+2%1  eax+2%1 %0+4%1  eax+4%1 edx+%1  edx+2%1//      %0      eax     eax+%1  eax+2%1 %0+4%1  edx     edx+%1  edx+2%1        "movq (%0), %%mm0                       \n\t"        "movq %%mm0, %%mm1                      \n\t"        "punpcklbw %%mm7, %%mm0                 \n\t" // low part of line 0        "punpckhbw %%mm7, %%mm1                 \n\t" // high part of line 0        "movq (%0, %1), %%mm2                   \n\t"        "lea (%0, %1, 2), %%"REG_a"             \n\t"        "movq %%mm2, %%mm3                      \n\t"        "punpcklbw %%mm7, %%mm2                 \n\t" // low part of line 1        "punpckhbw %%mm7, %%mm3                 \n\t" // high part of line 1        "movq (%%"REG_a"), %%mm4                \n\t"        "movq %%mm4, %%mm5                      \n\t"        "punpcklbw %%mm7, %%mm4                 \n\t" // low part of line 2        "punpckhbw %%mm7, %%mm5                 \n\t" // high part of line 2        "paddw %%mm0, %%mm0                     \n\t" // 2L0        "paddw %%mm1, %%mm1                     \n\t" // 2H0        "psubw %%mm4, %%mm2                     \n\t" // L1 - L2        "psubw %%mm5, %%mm3                     \n\t" // H1 - H2        "psubw %%mm2, %%mm0                     \n\t" // 2L0 - L1 + L2        "psubw %%mm3, %%mm1                     \n\t" // 2H0 - H1 + H2        "psllw $2, %%mm2                        \n\t" // 4L1 - 4L2        "psllw $2, %%mm3                        \n\t" // 4H1 - 4H2        "psubw %%mm2, %%mm0                     \n\t" // 2L0 - 5L1 + 5L2        "psubw %%mm3, %%mm1                     \n\t" // 2H0 - 5H1 + 5H2        "movq (%%"REG_a", %1), %%mm2            \n\t"        "movq %%mm2, %%mm3                      \n\t"        "punpcklbw %%mm7, %%mm2                 \n\t" // L3        "punpckhbw %%mm7, %%mm3                 \n\t" // H3        "psubw %%mm2, %%mm0                     \n\t" // 2L0 - 5L1 + 5L2 - L3        "psubw %%mm3, %%mm1                     \n\t" // 2H0 - 5H1 + 5H2 - H3        "psubw %%mm2, %%mm0                     \n\t" // 2L0 - 5L1 + 5L2 - 2L3        "psubw %%mm3, %%mm1                     \n\t" // 2H0 - 5H1 + 5H2 - 2H3        "movq %%mm0, (%%"REG_c")                \n\t" // 2L0 - 5L1 + 5L2 - 2L3        "movq %%mm1, 8(%%"REG_c")               \n\t" // 2H0 - 5H1 + 5H2 - 2H3        "movq (%%"REG_a", %1, 2), %%mm0         \n\t"        "movq %%mm0, %%mm1                      \n\t"        "punpcklbw %%mm7, %%mm0                 \n\t" // L4        "punpckhbw %%mm7, %%mm1                 \n\t" // H4        "psubw %%mm0, %%mm2                     \n\t" // L3 - L4        "psubw %%mm1, %%mm3                     \n\t" // H3 - H4        "movq %%mm2, 16(%%"REG_c")              \n\t" // L3 - L4        "movq %%mm3, 24(%%"REG_c")              \n\t" // H3 - H4        "paddw %%mm4, %%mm4                     \n\t" // 2L2        "paddw %%mm5, %%mm5                     \n\t" // 2H2        "psubw %%mm2, %%mm4                     \n\t" // 2L2 - L3 + L4        "psubw %%mm3, %%mm5                     \n\t" // 2H2 - H3 + H4        "lea (%%"REG_a", %1), %0                \n\t"        "psllw $2, %%mm2                        \n\t" // 4L3 - 4L4        "psllw $2, %%mm3                        \n\t" // 4H3 - 4H4        "psubw %%mm2, %%mm4                     \n\t" // 2L2 - 5L3 + 5L4        "psubw %%mm3, %%mm5                     \n\t" // 2H2 - 5H3 + 5H4//50 opcodes so far        "movq (%0, %1, 2), %%mm2                \n\t"        "movq %%mm2, %%mm3                      \n\t"        "punpcklbw %%mm7, %%mm2                 \n\t" // L5        "punpckhbw %%mm7, %%mm3                 \n\t" // H5        "psubw %%mm2, %%mm4                     \n\t" // 2L2 - 5L3 + 5L4 - L5        "psubw %%mm3, %%mm5                     \n\t" // 2H2 - 5H3 + 5H4 - H5        "psubw %%mm2, %%mm4                     \n\t" // 2L2 - 5L3 + 5L4 - 2L5        "psubw %%mm3, %%mm5                     \n\t" // 2H2 - 5H3 + 5H4 - 2H5        "movq (%%"REG_a", %1, 4), %%mm6         \n\t"        "punpcklbw %%mm7, %%mm6                 \n\t" // L6        "psubw %%mm6, %%mm2                     \n\t" // L5 - L6        "movq (%%"REG_a", %1, 4), %%mm6         \n\t"        "punpckhbw %%mm7, %%mm6                 \n\t" // H6        "psubw %%mm6, %%mm3                     \n\t" // H5 - H6        "paddw %%mm0, %%mm0                     \n\t" // 2L4        "paddw %%mm1, %%mm1                     \n\t" // 2H4        "psubw %%mm2, %%mm0                     \n\t" // 2L4 - L5 + L6        "psubw %%mm3, %%mm1                     \n\t" // 2H4 - H5 + H6        "psllw $2, %%mm2                        \n\t" // 4L5 - 4L6        "psllw $2, %%mm3                        \n\t" // 4H5 - 4H6        "psubw %%mm2, %%mm0                     \n\t" // 2L4 - 5L5 + 5L6        "psubw %%mm3, %%mm1                     \n\t" // 2H4 - 5H5 + 5H6        "movq (%0, %1, 4), %%mm2                \n\t"        "movq %%mm2, %%mm3                      \n\t"        "punpcklbw %%mm7, %%mm2                 \n\t" // L7        "punpckhbw %%mm7, %%mm3                 \n\t" // H7        "paddw %%mm2, %%mm2                     \n\t" // 2L7        "paddw %%mm3, %%mm3                     \n\t" // 2H7        "psubw %%mm2, %%mm0                     \n\t" // 2L4 - 5L5 + 5L6 - 2L7        "psubw %%mm3, %%mm1                     \n\t" // 2H4 - 5H5 + 5H6 - 2H7        "movq (%%"REG_c"), %%mm2                \n\t" // 2L0 - 5L1 + 5L2 - 2L3        "movq 8(%%"REG_c"), %%mm3               \n\t" // 2H0 - 5H1 + 5H2 - 2H3#ifdef HAVE_MMX2        "movq %%mm7, %%mm6                      \n\t" // 0        "psubw %%mm0, %%mm6                     \n\t"        "pmaxsw %%mm6, %%mm0                    \n\t" // |2L4 - 5L5 + 5L6 - 2L7|        "movq %%mm7, %%mm6                      \n\t" // 0        "psubw %%mm1, %%mm6                     \n\t"        "pmaxsw %%mm6, %%mm1                    \n\t" // |2H4 - 5H5 + 5H6 - 2H7|        "movq %%mm7, %%mm6                      \n\t" // 0        "psubw %%mm2, %%mm6                     \n\t"        "pmaxsw %%mm6, %%mm2                    \n\t" // |2L0 - 5L1 + 5L2 - 2L3|        "movq %%mm7, %%mm6                      \n\t" // 0        "psubw %%mm3, %%mm6                     \n\t"        "pmaxsw %%mm6, %%mm3                    \n\t" // |2H0 - 5H1 + 5H2 - 2H3|#else        "movq %%mm7, %%mm6                      \n\t" // 0        "pcmpgtw %%mm0, %%mm6                   \n\t"        "pxor %%mm6, %%mm0                      \n\t"        "psubw %%mm6, %%mm0                     \n\t" // |2L4 - 5L5 + 5L6 - 2L7|        "movq %%mm7, %%mm6                      \n\t" // 0        "pcmpgtw %%mm1, %%mm6                   \n\t"        "pxor %%mm6, %%mm1                      \n\t"        "psubw %%mm6, %%mm1                     \n\t" // |2H4 - 5H5 + 5H6 - 2H7|        "movq %%mm7, %%mm6                      \n\t" // 0        "pcmpgtw %%mm2, %%mm6                   \n\t"        "pxor %%mm6, %%mm2                      \n\t"        "psubw %%mm6, %%mm2                     \n\t" // |2L0 - 5L1 + 5L2 - 2L3|        "movq %%mm7, %%mm6                      \n\t" // 0        "pcmpgtw %%mm3, %%mm6                   \n\t"        "pxor %%mm6, %%mm3                      \n\t"        "psubw %%mm6, %%mm3                     \n\t" // |2H0 - 5H1 + 5H2 - 2H3|#endif#ifdef HAVE_MMX2        "pminsw %%mm2, %%mm0                    \n\t"        "pminsw %%mm3, %%mm1                    \n\t"#else        "movq %%mm0, %%mm6                      \n\t"        "psubusw %%mm2, %%mm6                   \n\t"        "psubw %%mm6, %%mm0                     \n\t"        "movq %%mm1, %%mm6                      \n\t"        "psubusw %%mm3, %%mm6                   \n\t"        "psubw %%mm6, %%mm1                     \n\t"#endif        "movd %2, %%mm2                         \n\t" // QP        "punpcklbw %%mm7, %%mm2                 \n\t"        "movq %%mm7, %%mm6                      \n\t" // 0        "pcmpgtw %%mm4, %%mm6                   \n\t" // sign(2L2 - 5L3 + 5L4 - 2L5)        "pxor %%mm6, %%mm4                      \n\t"        "psubw %%mm6, %%mm4                     \n\t" // |2L2 - 5L3 + 5L4 - 2L5|        "pcmpgtw %%mm5, %%mm7                   \n\t" // sign(2H2 - 5H3 + 5H4 - 2H5)        "pxor %%mm7, %%mm5                      \n\t"        "psubw %%mm7, %%mm5                     \n\t" // |2H2 - 5H3 + 5H4 - 2H5|// 100 opcodes        "psllw $3, %%mm2                        \n\t" // 8QP        "movq %%mm2, %%mm3                      \n\t" // 8QP        "pcmpgtw %%mm4, %%mm2                   \n\t"        "pcmpgtw %%mm5, %%mm3                   \n\t"        "pand %%mm2, %%mm4                      \n\t"        "pand %%mm3, %%mm5                      \n\t"        "psubusw %%mm0, %%mm4                   \n\t" // hd        "psubusw %%mm1, %%mm5                   \n\t" // ld        "movq "MANGLE(w05)", %%mm2              \n\t" // 5        "pmullw %%mm2, %%mm4                    \n\t"        "pmullw %%mm2, %%mm5                    \n\t"        "movq "MANGLE(w20)", %%mm2              \n\t" // 32        "paddw %%mm2, %%mm4                     \n\t"        "paddw %%mm2, %%mm5                     \n\t"        "psrlw $6, %%mm4                        \n\t"        "psrlw $6, %%mm5                        \n\t"        "movq 16(%%"REG_c"), %%mm0              \n\t" // L3 - L4        "movq 24(%%"REG_c"), %%mm1              \n\t" // H3 - H4        "pxor %%mm2, %%mm2                      \n\t"        "pxor %%mm3, %%mm3                      \n\t"        "pcmpgtw %%mm0, %%mm2                   \n\t" // sign (L3-L4)        "pcmpgtw %%mm1, %%mm3                   \n\t" // sign (H3-H4)        "pxor %%mm2, %%mm0                      \n\t"        "pxor %%mm3, %%mm1                      \n\t"        "psubw %%mm2, %%mm0                     \n\t" // |L3-L4|        "psubw %%mm3, %%mm1                     \n\t" // |H3-H4|        "psrlw $1, %%mm0                        \n\t" // |L3 - L4|/2        "psrlw $1, %%mm1                        \n\t" // |H3 - H4|/2        "pxor %%mm6, %%mm2                      \n\t"        "pxor %%mm7, %%mm3                      \n\t"        "pand %%mm2, %%mm4                      \n\t"        "pand %%mm3, %%mm5                      \n\t"#ifdef HAVE_MMX2        "pminsw %%mm0, %%mm4                    \n\t"        "pminsw %%mm1, %%mm5                    \n\t"#else        "movq %%mm4, %%mm2                      \n\t"        "psubusw %%mm0, %%mm2                   \n\t"        "psubw %%mm2, %%mm4                     \n\t"        "movq %%mm5, %%mm2                      \n\t"        "psubusw %%mm1, %%mm2                   \n\t"        "psubw %%mm2, %%mm5                     \n\t"#endif        "pxor %%mm6, %%mm4                      \n\t"        "pxor %%mm7, %%mm5                      \n\t"        "psubw %%mm6, %%mm4                     \n\t"        "psubw %%mm7, %%mm5                     \n\t"        "packsswb %%mm5, %%mm4                  \n\t"        "movq (%0), %%mm0                       \n\t"        "paddb   %%mm4, %%mm0                   \n\t"        "movq %%mm0, (%0)                       \n\t"        "movq (%0, %1), %%mm0                   \n\t"        "psubb %%mm4, %%mm0                     \n\t"        "movq %%mm0, (%0, %1)                   \n\t"        : "+r" (src)        : "r" ((long)stride), "m" (c->pQPb)        : "%"REG_a, "%"REG_c    );#else //defined (HAVE_MMX2) || defined (HAVE_3DNOW)    const int l1= stride;    const int l2= stride + l1;    const int l3= stride + l2;    const int l4= stride + l3;    const int l5= stride + l4;    const int l6= stride + l5;    const int l7= stride + l6;    const int l8= stride + l7;//    const int l9= stride + l8;    int x;    src+= stride*3;    for(x=0; x<BLOCK_SIZE; x++){        const int middleEnergy= 5*(src[l5] - src[l4]) + 2*(src[l3] - src[l6]);        if(FFABS(middleEnergy) < 8*c->QP){            const int q=(src[l4] - src[l5])/2;            const int leftEnergy=  5*(src[l3] - src[l2]) + 2*(src[l1] - src[l4]);            const int rightEnergy= 5*(src[l7] - src[l6]) + 2*(src[l5] - src[l8]);            int d= FFABS(middleEnergy) - FFMIN( FFABS(leftEnergy), FFABS(rightEnergy) );            d= FFMAX(d, 0);            d= (5*d + 32) >> 6;            d*= FFSIGN(-middleEnergy);            if(q>0){                d= d<0 ? 0 : d;                d= d>q ? q : d;            }else{                d= d>0 ? 0 : d;                d= d<q ? q : d;            }            src[l4]-= d;            src[l5]+= d;        }        src++;    }#endif //defined (HAVE_MMX2) || defined (HAVE_3DNOW)}#endif //HAVE_ALTIVEC#ifndef HAVE_ALTIVECstatic inline void RENAME(dering)(uint8_t src[], int stride, PPContext *c){#if defined (HAVE_MMX2) || defined (HAVE_3DNOW)    asm volatile(        "pxor %%mm6, %%mm6                      \n\t"        "pcmpeqb %%mm7, %%mm7                   \n\t"        "movq %2, %%mm0                         \n\t"        "punpcklbw %%mm6, %%mm0                 \n\t"        "psrlw $1, %%mm0                        \n\t"        "psubw %%mm7, %%mm0                     \n\t"        "packuswb %%mm0, %%mm0                  \n\t"        "movq %%mm0, %3                         \n\t"        "lea (%0, %1), %%"REG_a"                \n\t"        "lea (%%"REG_a", %1, 4), %%"REG_d"      \n\t"//        0        1        2        3        4        5        6        7        8        9//        %0        eax        eax+%1        eax+2%1        %0+4%1        edx        edx+%1        edx+2%1        %0+8%1        edx+4%1#undef FIND_MIN_MAX#ifdef HAVE_MMX2#define REAL_FIND_MIN_MAX(addr)\

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -