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

📄 deblockopt.cpp

📁 从FFMPEG转换而来的H264解码程序,VC下编译..
💻 CPP
📖 第 1 页 / 共 5 页
字号:

            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 */

                        paddw(           mm4,    mm3                                     );/* mm4 = sum+x6 */
                        psraw(           mm4,    3                                       );/* >>=3 */

                        psubw(           mm4,    mm5                                     );/* -=x6 */
                        pand (           mm4,    mm7                                     );/* and flag */

            paddw            (   mm4,    mm5                                     );/* += x6 */
                        movq (           esi+80, mm4                             );/* write new x6 */

                        /* sum += x9 - x3 */
                        /* Des2*Pitch = (sum+x7)>>3 */

                        movq (           mm5,    edi+112                 );/* mm5 = x7 */
                        psubw(           mm3,    edi+48                  );/* -= x3 */

                        paddw(           mm3,    mm2                                     );/* += x9 */
                        movq (           mm4,    mm5                                     );/* mm4 = x7 */

                        paddw(           mm4,    mm3                                     );/* mm4 = sum+x7 */
                        psraw(           mm4,    3                                       );/* >>=3 */

                        psubw(           mm4,    mm5                                     );/* -=x7 */
                        pand (           mm4,    mm7                                     );/* and flag */

            paddw            (   mm4,    mm5                                     );/* += x7 */
                        movq (           esi+96, mm4                             );/* write new x7 */

                        /* sum += x9 - x4 */
                        /* Des3*Pitch = (sum+x8)>>3 */

                        movq  (          mm5,    edi+128                 );/* mm5 = x8 */
                        psubw (          mm3,    edi+64                  );/* -= x4 */

                        paddw (          mm3,    mm2                                     );/* += x9 */
                        movq  (          mm4,    mm5                                     );/* mm4 = x8 */

                        paddw (          mm4,    mm3                                     );/* mm4 = sum+x8 */
                        psraw (          mm4,    3                                       );/* >>=3 */

            psubw            (   mm4,    mm5                                     );/* -=x8 */
                        pand (           mm4,    mm7                                     );/* and flag */

            paddw            (   mm4,    mm5                                     );/* += x8 */
                        movq (           esi+112, mm4                            );/* write new x8 */

                        /* done with left four columns */
                        /* now do the righ four columns */

                        edi+=    8;                                       /* shift to right four column */
                        esi+=    8;                                       /* shift to right four column */

                        /* mm0 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 >>=4 */

            psubw             (  mm4,    mm5                                     );/* New Value - old Value */
                        pand  (          mm4,    mm0                                     );/* 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,    mm0                                     );/* 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,    mm0                                     );/* 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,    mm0                                     );/* 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,    mm0                                     );/* 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 */

                        paddw  (         mm4,    mm3                                     );/* mm4 = sum+x6 */
                        psraw  (         mm4,    3                                       );/* >>=3 */

                        psubw  (         mm4,    mm5                                     );/* -=x6 */
                        pand   (         mm4,    mm0                                     );/* and flag */

            paddw              ( mm4,    mm5                                     );/* += x6 */
                        movq   (         esi+80, mm4                             );/* write new x6 */

                        /* sum += x9 - x3 */
                        /* Des2*Pitch = (sum+x7)>>3 */

                        movq     (       mm5,    edi+112                 );/* mm5 = x7 */
                        psubw    (       mm3,    edi+48                  );/* -= x3 */

                        paddw    (       mm3,    mm2                                     );/* += x9 */
                        movq     (       mm4,    mm5                                     );/* mm4 = x7 */

                        paddw    (       mm4,    mm3                                     );/* mm4 = sum+x7 */
                        psraw    (       mm4,    3                                       );/* >>=3 */

                        psubw    (       mm4,    mm5                                     );/* -=x7 */
                        pand     (       mm4,    mm0                                     );/* and flag */

            paddw             (  mm4,    mm5                                     );/* += x7 */
                        movq  (          esi+96, mm4                             );/* write new x7 */

                        /* sum += x9 - x4 */
                        /* Des3*Pitch = ((sum+x8)>>3 */

                        movq     (       mm5,    edi+128                 );/* mm5 = x8 */
                        psubw    (       mm3,    edi+64                  );/* -= x4 */

                        paddw    (       mm3,    mm2                                     );/* += x9 */
                        movq     (       mm4,    mm5                                     );/* mm4 = x8 */

                        paddw    (       mm4,    mm3                                     );/* mm4 = sum+x8 */
                        psraw    (       mm4,    3                                       );/* >>=3 */

            psubw            (   mm4,    mm5                                     );/* -=x8 */
                        pand (           mm4,    mm0                                     );/* and flag */

            paddw            (   mm4,    mm5                                     );/* += x8 */
                        movq (           esi+112, mm4                            );/* write new x8 */


                        /* done with right four column */
                        edi+=    8;/* shift edi to point x1 */
                        esi-=    8;/* shift esi back to x1 */

                        uint8_t*ebp=Des;/* the destination */
                        ebp= ebp + edx *4 ;/* point to des-4*Pitch */

⌨️ 快捷键说明

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