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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? anti-predictor.cpp

?? Lossless Audio 縮解壓 window
?? CPP
字號:
#include "All.h"
#ifdef BACKWARDS_COMPATIBILITY

#include "../MACLib.h"
#include "Anti-Predictor.h"

CAntiPredictor * CreateAntiPredictor(int nCompressionLevel, int nVersion)
{
    CAntiPredictor *pAntiPredictor = NULL;

    switch (nCompressionLevel) 
    {
#ifdef ENABLE_COMPRESSION_MODE_FAST
        case COMPRESSION_LEVEL_FAST:
            if (nVersion < 3320)
            {
                pAntiPredictor = (CAntiPredictor *) new CAntiPredictorFast0000To3320;
            }
            else
            {
                pAntiPredictor = (CAntiPredictor *) new CAntiPredictorFast3320ToCurrent;
            }
            break;
#endif //ENABLE_COMPRESSION_MODE_FAST
            
#ifdef ENABLE_COMPRESSION_MODE_NORMAL
        
        case COMPRESSION_LEVEL_NORMAL:
            if (nVersion < 3320)
            {
                pAntiPredictor = (CAntiPredictor *) new CAntiPredictorNormal0000To3320;
            }                
            else if (nVersion < 3800)
            {
                pAntiPredictor = (CAntiPredictor *) new CAntiPredictorNormal3320To3800;
            }
            else
            {
                pAntiPredictor = (CAntiPredictor *) new CAntiPredictorNormal3800ToCurrent;
            }
            break;

#endif //ENABLE_COMPRESSION_MODE_NORMAL

#ifdef ENABLE_COMPRESSION_MODE_HIGH
        case COMPRESSION_LEVEL_HIGH:
            if (nVersion < 3320)
            {
                pAntiPredictor = (CAntiPredictor *) new CAntiPredictorHigh0000To3320;
            }
            else if (nVersion < 3600)
            {
                pAntiPredictor = (CAntiPredictor *) new CAntiPredictorHigh3320To3600;
            }
            else if (nVersion < 3700)
            {
                pAntiPredictor = (CAntiPredictor *) new CAntiPredictorHigh3600To3700;
            }
            else if (nVersion < 3800)
            {
                pAntiPredictor = (CAntiPredictor *) new CAntiPredictorHigh3700To3800;
            }
            else
            {
                pAntiPredictor = (CAntiPredictor *) new CAntiPredictorHigh3800ToCurrent;
            }
            break;
#endif //ENABLE_COMPRESSION_MODE_HIGH

#ifdef ENABLE_COMPRESSION_MODE_EXTRA_HIGH
        case COMPRESSION_LEVEL_EXTRA_HIGH:
            if (nVersion < 3320) 
            {
                pAntiPredictor = (CAntiPredictor *) new CAntiPredictorExtraHigh0000To3320;
            }
            else if (nVersion < 3600) 
            {
                pAntiPredictor = (CAntiPredictor *) new CAntiPredictorExtraHigh3320To3600;
            }
            else if (nVersion < 3700) 
            {
                pAntiPredictor = (CAntiPredictor *) new CAntiPredictorExtraHigh3600To3700;
            }
            else if (nVersion < 3800) 
            {
                pAntiPredictor = (CAntiPredictor *) new CAntiPredictorExtraHigh3700To3800;
            }    
            else
            {
                pAntiPredictor = (CAntiPredictor *) new CAntiPredictorExtraHigh3800ToCurrent;
            }
            break;
#endif //ENABLE_COMPRESSION_MODE_EXTRA_HIGH
    }

    return pAntiPredictor;
}



CAntiPredictor::CAntiPredictor() 
{
}

CAntiPredictor::~CAntiPredictor() 
{
}

void CAntiPredictor::AntiPredict(int *pInputArray, int *pOutputArray, int NumberOfElements) 
{
    return;
}

void CAntiPredictorOffset::AntiPredict(int *pInputArray, int *pOutputArray, int NumberOfElements, int Offset, int DeltaM) 
{

    memcpy(pOutputArray, pInputArray, Offset * 4);

    int *ip = &pInputArray[Offset];
    int *ipo = &pOutputArray[0];
    int *op = &pOutputArray[Offset];
    int m = 0;
    
    for (; op < &pOutputArray[NumberOfElements]; ip++, ipo++, op++) 
    {
        *op = *ip + ((*ipo * m) >> 12);

        (*ipo ^ *ip) > 0 ? m += DeltaM : m -= DeltaM;
    }
}

#ifdef ENABLE_COMPRESSION_MODE_EXTRA_HIGH

int CAntiPredictorExtraHighHelper::ConventionalDotProduct(short *bip, short *bbm, short *pIPAdaptFactor, int op, int nNumberOfIterations) 
{
    // dot product
    int nDotProduct = 0;
    short *pMaxBBM = &bbm[nNumberOfIterations];
    
    if (op == 0)
    {
        while(bbm < pMaxBBM)
        {
            EXPAND_32_TIMES(nDotProduct += *bip++ * *bbm++;)
        }
    }
    else if (op > 0) 
    {
        while(bbm < pMaxBBM)
        {
            EXPAND_32_TIMES(nDotProduct += *bip++ * *bbm; *bbm++ += *pIPAdaptFactor++;)
        }
    }
    else
    {
        while(bbm < pMaxBBM)
        {
            EXPAND_32_TIMES(nDotProduct += *bip++ * *bbm; *bbm++ -= *pIPAdaptFactor++;)
        }
    }
    
    // use the dot product
    return nDotProduct;
}

#ifdef ENABLE_ASSEMBLY

#define MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_HEAD        \
    __asm movq mm0, [esi]                                        \
    __asm add esi, 8                                            \
    __asm movq mm1, [esi]                                        \
    __asm add esi, 8                                            \
    __asm movq mm2, [esi]                                        \
    __asm add esi, 8                                            \
                                                                \
    __asm movq mm3, [edi]                                        \
    __asm add edi, 8                                            \
    __asm movq mm4, [edi]                                        \
    __asm add edi, 8                                            \
    __asm movq mm5, [edi]                                        \
    __asm sub edi, 16                                            \
                                                                \
    __asm pmaddwd mm0, mm3                                        \
    __asm pmaddwd mm1, mm4                                        \
    __asm pmaddwd mm2, mm5                                        \
                                                                \
    __asm paddd mm7, mm0                                        \
    __asm paddd mm7, mm1                                        \
    __asm paddd mm7, mm2                                        \


#define MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_ADD        \
    MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_HEAD            \
                                                                \
    __asm paddw mm3, DWORD PTR [eax]                            \
    __asm movq [edi], mm3                                        \
    __asm add eax, 8                                            \
    __asm add edi, 8                                            \
    __asm paddw mm4, DWORD PTR [eax]                            \
    __asm movq [edi], mm4                                        \
    __asm add eax, 8                                            \
    __asm add edi, 8                                            \
    __asm paddw mm5, DWORD PTR [eax]                            \
    __asm movq [edi], mm5                                        \
    __asm add eax, 8                                            \
    __asm add edi, 8

#define MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_SUBTRACT    \
    MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_HEAD            \
                                                                \
    __asm psubw mm3, DWORD PTR [eax]                            \
    __asm movq [edi], mm3                                        \
    __asm add eax, 8                                            \
    __asm add edi, 8                                            \
    __asm psubw mm4, DWORD PTR [eax]                            \
    __asm movq [edi], mm4                                        \
    __asm add eax, 8                                            \
    __asm add edi, 8                                            \
    __asm psubw mm5, DWORD PTR [eax]                            \
    __asm movq [edi], mm5                                        \
    __asm add eax, 8                                            \
    __asm add edi, 8

int CAntiPredictorExtraHighHelper::MMXDotProduct(short *bip, short *bbm, short *pIPAdaptFactor, int op, int nNumberOfIterations) 
{
    int nDotProduct;
    nNumberOfIterations = (nNumberOfIterations / 128);

    if (op > 0) 
    {
        __asm 
        {
            push eax

            mov eax, DWORD PTR [pIPAdaptFactor]

            push esi
            push edi

            mov esi, DWORD PTR bip[0]
            mov edi, DWORD PTR bbm[0]

            pxor mm7, mm7

LBL_ADD_AGAIN:

            /////////////////////////////////////////////////////////
            // process 8 mm registers full
            /////////////////////////////////////////////////////////

            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_ADD
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_ADD
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_ADD    
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_ADD
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_ADD
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_ADD
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_ADD
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_ADD
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_ADD
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_ADD

            // fill the registers
            movq mm0, [esi]
            add esi, 8
            movq mm1, [esi]
            add esi, 8
            
            movq mm3, [edi]
            add edi, 8
            movq mm4, [edi]
            sub edi, 8

            pmaddwd mm0, mm3
            pmaddwd mm1, mm4

            paddd mm7, mm0
            paddd mm7, mm1

            paddw mm3, DWORD PTR [eax]
            movq [edi], mm3
            add eax, 8
            add edi, 8
            paddw mm4, DWORD PTR [eax]
            movq [edi], mm4
            add eax, 8
            add edi, 8

            sub nNumberOfIterations, 1
            cmp nNumberOfIterations, 0
            jg LBL_ADD_AGAIN

            ///////////////////////////////////////////////////////////////
            // clean-up
            ///////////////////////////////////////////////////////////////
            // mm7 has the final dot-product (split into two dwords)
            movq mm6, mm7
            psrlq mm7, 32
            paddd mm6, mm7
            movd nDotProduct, mm6
            
            pop edi
            pop esi
            pop eax
            emms

        }
    }
    else 
    {
        __asm 
        {
            push eax

            mov eax, DWORD PTR [pIPAdaptFactor]

            push esi
            push edi

            mov esi, DWORD PTR bip[0]
            mov edi, DWORD PTR bbm[0]

            pxor mm7, mm7

LBL_SUBTRACT_AGAIN:
            
            /////////////////////////////////////////////////////////
            // process 8 mm registers full
            /////////////////////////////////////////////////////////
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_SUBTRACT
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_SUBTRACT
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_SUBTRACT
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_SUBTRACT
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_SUBTRACT
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_SUBTRACT
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_SUBTRACT
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_SUBTRACT
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_SUBTRACT
            MMX_DOT_PRODUCT_3800_TO_CURRENT_PROCESS_CHUNK_SUBTRACT

            // fill the registers
            movq mm0, [esi]
            add esi, 8
            movq mm1, [esi]
            add esi, 8
            
            movq mm3, [edi]
            add edi, 8
            movq mm4, [edi]
            sub edi, 8

            pmaddwd mm0, mm3
            pmaddwd mm1, mm4

            paddd mm7, mm0
            paddd mm7, mm1

            psubw mm3, DWORD PTR [eax]
            movq [edi], mm3
            add eax, 8
            add edi, 8
            psubw mm4, DWORD PTR [eax]
            movq [edi], mm4
            add eax, 8
            add edi, 8

            sub nNumberOfIterations, 1
            cmp nNumberOfIterations, 0
            jg LBL_SUBTRACT_AGAIN

            ///////////////////////////////////////////////////////////////
            // clean-up
            ///////////////////////////////////////////////////////////////
            // mm7 has the final dot-product (split into two dwords)
            movq mm6, mm7
            psrlq mm7, 32
            paddd mm6, mm7
            movd nDotProduct, mm6
            
            pop edi
            pop esi
            pop eax
            emms

        }
    }
    
    return nDotProduct;
}

#endif // #ifdef ENABLE_ASSEMBLY

#endif // #ifdef ENABLE_COMPRESSION_MODE_EXTRA_HIGH

#endif // #ifdef BACKWARDS_COMPATIBILITY

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2020国产成人综合网| 天堂va蜜桃一区二区三区漫画版| 亚洲天堂精品视频| 极品少妇一区二区三区精品视频| 99综合影院在线| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲乱码国产乱码精品精可以看| 国产一区二区三区国产| 欧美视频在线不卡| ...av二区三区久久精品| 精品在线一区二区| 欧美日韩国产免费| 一区二区三区资源| 成人精品在线视频观看| 精品久久久久久久人人人人传媒| 一区二区三区精品在线| 成人av一区二区三区| 久久男人中文字幕资源站| 免费成人深夜小野草| 欧美区视频在线观看| 亚洲一二三四久久| 色伊人久久综合中文字幕| 国产精品久久久久桃色tv| 国产精品综合在线视频| 精品国精品自拍自在线| 久久精品国产**网站演员| 91精品欧美福利在线观看| 调教+趴+乳夹+国产+精品| 91久久精品国产91性色tv| 亚洲伦理在线精品| 在线观看av一区二区| 亚洲综合一区二区三区| 精品视频在线免费| 午夜电影一区二区三区| 欧美一区二区三区在线观看视频| 日精品一区二区| 欧美肥胖老妇做爰| 日韩电影在线免费观看| 欧美一区二区福利视频| 日本亚洲免费观看| 欧美精品一区二区三区视频| 韩日av一区二区| 久久久国际精品| 国产成人精品影院| 1024国产精品| 欧美精三区欧美精三区| 青草av.久久免费一区| 久久先锋影音av| 91丨国产丨九色丨pron| 亚洲一区免费视频| 日韩免费看网站| 国产精品亚洲人在线观看| 国产精品午夜春色av| 在线看日本不卡| 麻豆极品一区二区三区| 中文av一区特黄| 欧美自拍偷拍一区| 免费不卡在线观看| 国产精品欧美精品| 欧美精品久久99久久在免费线| 精品在线亚洲视频| 亚洲三级视频在线观看| 欧美妇女性影城| 国产精品69毛片高清亚洲| 亚洲精品亚洲人成人网| 日韩欧美在线一区二区三区| 国产高清不卡二三区| 亚洲国产精品精华液网站| 欧美本精品男人aⅴ天堂| 97久久精品人人做人人爽50路| 日韩精品五月天| 亚洲欧洲性图库| 欧美不卡在线视频| 欧美中文字幕一区二区三区亚洲| 国产一区二区不卡| 亚洲国产你懂的| 国产日韩av一区| 91精品国产综合久久福利软件| 不卡电影免费在线播放一区| 日韩电影在线观看网站| 亚洲欧洲综合另类| 久久天天做天天爱综合色| 欧美三级蜜桃2在线观看| 成人一区二区在线观看| 蜜臀va亚洲va欧美va天堂 | 欧美三日本三级三级在线播放| 精品一区二区三区在线观看| 一区二区三区**美女毛片| 久久亚洲二区三区| 欧美一区二区三区在线观看| 欧美伊人久久久久久午夜久久久久| 国内精品久久久久影院一蜜桃| 亚洲成人免费影院| 一区二区三区欧美久久| 国产精品久久久久久久裸模| 精品国产伦一区二区三区观看方式 | 久久亚洲精华国产精华液| 欧美精品乱码久久久久久按摩 | 国产激情视频一区二区三区欧美 | 日韩欧美另类在线| 欧美性受xxxx黑人xyx| 91美女片黄在线| 99精品一区二区三区| 成人丝袜高跟foot| 国产精品一线二线三线精华| 黄色资源网久久资源365| 免费不卡在线观看| 久久精品国产**网站演员| 琪琪久久久久日韩精品| 日本成人中文字幕| 免费av成人在线| 久久精品国产一区二区三| 另类专区欧美蜜桃臀第一页| 免费精品视频在线| 经典三级视频一区| 国产一区不卡在线| 国产精品一区二区在线观看网站| 国内不卡的二区三区中文字幕| 国内精品伊人久久久久av影院| 国产一区二区三区蝌蚪| 国产精品综合在线视频| 粉嫩13p一区二区三区| jlzzjlzz欧美大全| 91成人网在线| 717成人午夜免费福利电影| 欧美人动与zoxxxx乱| 日韩视频在线永久播放| 精品国产青草久久久久福利| 欧美激情综合网| 亚洲人成伊人成综合网小说| 一区二区三区中文字幕精品精品| 亚洲第一福利一区| 麻豆一区二区在线| 国产福利一区在线| 色哟哟在线观看一区二区三区| 欧美日产国产精品| 精品av久久707| **欧美大码日韩| 日韩国产精品久久久| 国产一区二区三区久久久| 9i看片成人免费高清| 欧美日本国产一区| 亚洲精品在线三区| 亚洲区小说区图片区qvod| 日韩在线观看一区二区| 国产福利精品导航| 色婷婷综合视频在线观看| 4438成人网| 国产精品视频第一区| 五月婷婷欧美视频| 国产成人av在线影院| 一本一道综合狠狠老| 日韩免费视频线观看| 亚洲视频一二三| 开心九九激情九九欧美日韩精美视频电影 | 99精品视频中文字幕| 欧美日韩国产首页| 国产精品美女久久久久久2018 | 亚洲男人电影天堂| 免费高清视频精品| 色偷偷一区二区三区| 26uuu另类欧美| 亚洲亚洲人成综合网络| 风间由美一区二区av101| 欧美乱妇15p| 18成人在线观看| 国产乱码精品一区二区三| 欧美午夜不卡视频| 国产精品久久久久久久浪潮网站| 日本一不卡视频| 色欲综合视频天天天| 久久精品亚洲国产奇米99| 日日噜噜夜夜狠狠视频欧美人 | 亚洲国产aⅴ天堂久久| 国产精品一区二区三区四区| 欧美日韩精品系列| 亚洲乱码国产乱码精品精可以看 | 久久99精品久久久久| 欧美自拍偷拍一区| 亚洲视频一区在线观看| 成人理论电影网| 久久久久国产精品免费免费搜索| 青青草精品视频| 欧美人体做爰大胆视频| 亚洲精品国产视频| 97久久久精品综合88久久| 国产精品麻豆久久久| 国产成人在线视频播放| 久久一二三国产| 狠狠色2019综合网| xf在线a精品一区二区视频网站| 日韩av高清在线观看| 欧美日本精品一区二区三区| 亚洲综合成人在线视频| 一本色道综合亚洲| 亚洲免费av网站| 日本韩国精品在线| 亚洲一区二区三区四区在线| 色激情天天射综合网| 亚洲一线二线三线久久久|