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

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

?? antipredictorextrahigh.cpp

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

#include "Anti-Predictor.h"

#ifdef ENABLE_COMPRESSION_MODE_EXTRA_HIGH

/*****************************************************************************************
Extra high 0000 to 3320 implementation
*****************************************************************************************/
void CAntiPredictorExtraHigh0000To3320::AntiPredict(int *pInputArray, int *pOutputArray, int NumberOfElements, int Iterations, unsigned int *pOffsetValueArrayA, unsigned int *pOffsetValueArrayB) {
    for (int z = Iterations; z >= 0; z--){
        AntiPredictorOffset(pInputArray, pOutputArray, NumberOfElements, pOffsetValueArrayB[z], -1, 64);
        AntiPredictorOffset(pOutputArray, pInputArray, NumberOfElements, pOffsetValueArrayA[z], 1, 64);
    }

    CAntiPredictorHigh0000To3320 AntiPredictor;
    AntiPredictor.AntiPredict(pInputArray, pOutputArray, NumberOfElements);
}

void CAntiPredictorExtraHigh0000To3320::AntiPredictorOffset(int* Input_Array, int* Output_Array, int Number_of_Elements, int g, int dm, int Max_Order)
{
    int q;

    if ((g==0) || (Number_of_Elements <= Max_Order)) {
        memcpy(Output_Array, Input_Array, Number_of_Elements * 4);
        return;
    }

    memcpy(Output_Array, Input_Array, Max_Order * 4);
    
    int m = 512;

    if (dm > 0)
        for (q = Max_Order; q < Number_of_Elements; q++) {
            Output_Array[q] = Input_Array[q] + (Output_Array[q - g] >> 3);
        }
            
    else
        for (q = Max_Order; q < Number_of_Elements; q++) {
            Output_Array[q] = Input_Array[q] - (Output_Array[q - g] >> 3);
        }
}


/*****************************************************************************************
Extra high 3320 to 3600 implementation
*****************************************************************************************/
void CAntiPredictorExtraHigh3320To3600::AntiPredict(int *pInputArray, int *pOutputArray, int NumberOfElements, int Iterations, unsigned int *pOffsetValueArrayA, unsigned int *pOffsetValueArrayB) 
{
    for (int z = Iterations; z >= 0; z--)
    {
        AntiPredictorOffset(pInputArray, pOutputArray, NumberOfElements, pOffsetValueArrayB[z], -1, 32);
        AntiPredictorOffset(pOutputArray, pInputArray, NumberOfElements, pOffsetValueArrayA[z], 1, 32);
    }

    CAntiPredictorHigh0000To3320 AntiPredictor;
    AntiPredictor.AntiPredict(pInputArray, pOutputArray, NumberOfElements);
}


void CAntiPredictorExtraHigh3320To3600::AntiPredictorOffset(int* Input_Array, int* Output_Array, int Number_of_Elements, int g, int dm, int Max_Order)
{
    
    int q;

    if ((g==0) || (Number_of_Elements <= Max_Order)) {
        memcpy(Output_Array, Input_Array, Number_of_Elements * 4);
        return;
    }

    memcpy(Output_Array, Input_Array, Max_Order * 4);
    
    int m = 512;

    if (dm > 0)
        for (q = Max_Order; q < Number_of_Elements; q++) {
            Output_Array[q] = Input_Array[q] + ((Output_Array[q - g] * m) >> 12);
            (Input_Array[q] ^ Output_Array[q - g]) > 0 ? m += 8 : m -= 8;
        }
            
    else
        for (q = Max_Order; q < Number_of_Elements; q++) {
            Output_Array[q] = Input_Array[q] - ((Output_Array[q - g] * m) >> 12);
            (Input_Array[q] ^ Output_Array[q - g]) > 0 ? m -= 8 : m += 8;
        }
}


/*****************************************************************************************
Extra high 3600 to 3700 implementation
*****************************************************************************************/
void CAntiPredictorExtraHigh3600To3700::AntiPredict(int *pInputArray, int *pOutputArray, int NumberOfElements, int Iterations, unsigned int *pOffsetValueArrayA, unsigned int *pOffsetValueArrayB) {
    for (int z = Iterations; z >= 0; ){

        AntiPredictorOffset(pInputArray, pOutputArray, NumberOfElements, pOffsetValueArrayA[z], pOffsetValueArrayB[z], 64);
        z--;

        if (z >= 0) {
            AntiPredictorOffset(pOutputArray, pInputArray, NumberOfElements, pOffsetValueArrayA[z], pOffsetValueArrayB[z], 64);
            z--;
        }
        else {
            memcpy(pInputArray, pOutputArray, NumberOfElements * 4);
            goto Exit_Loop;
            z--;
        }
    }

Exit_Loop:
    CAntiPredictorHigh3600To3700 AntiPredictor;
    AntiPredictor.AntiPredict(pInputArray, pOutputArray, NumberOfElements);
}

void CAntiPredictorExtraHigh3600To3700::AntiPredictorOffset(int* Input_Array, int* Output_Array, int Number_of_Elements, int g1, int g2, int Max_Order) {
    int q;

    if ((g1==0) || (g2==0) || (Number_of_Elements <= Max_Order)) {
        memcpy(Output_Array, Input_Array, Number_of_Elements * 4);
        return;
    }

    memcpy(Output_Array, Input_Array, Max_Order * 4);
    
    int m = 64;
    int m2 = 64;

    for (q = Max_Order; q < Number_of_Elements; q++) {
        Output_Array[q] = Input_Array[q] + ((Output_Array[q - g1] * m) >> 9) - ((Output_Array[q - g2] * m2) >> 9);
        (Input_Array[q] ^ Output_Array[q - g1]) > 0 ? m++ : m--;
        (Input_Array[q] ^ Output_Array[q - g2]) > 0 ? m2-- : m2++;
    }
}

/*****************************************************************************************
Extra high 3700 to 3800 implementation
*****************************************************************************************/
void CAntiPredictorExtraHigh3700To3800::AntiPredict(int *pInputArray, int *pOutputArray, int NumberOfElements, int Iterations, unsigned int *pOffsetValueArrayA, unsigned int *pOffsetValueArrayB) {
    for (int z = Iterations; z >= 0; ) {

        AntiPredictorOffset(pInputArray, pOutputArray, NumberOfElements, pOffsetValueArrayA[z], pOffsetValueArrayB[z], 64);
        z--;

        if (z >= 0) {
            AntiPredictorOffset(pOutputArray, pInputArray, NumberOfElements, pOffsetValueArrayA[z], pOffsetValueArrayB[z], 64);
            z--;
        }
        else {
            memcpy(pInputArray, pOutputArray, NumberOfElements * 4);
            goto Exit_Loop;
            z--;
        }
    }

Exit_Loop:
    CAntiPredictorHigh3700To3800 AntiPredictor;
    AntiPredictor.AntiPredict(pInputArray, pOutputArray, NumberOfElements);

}

void CAntiPredictorExtraHigh3700To3800::AntiPredictorOffset(int* Input_Array, int* Output_Array, int Number_of_Elements, int g1, int g2, int Max_Order) {
    int q;

    if ((g1==0) || (g2==0) || (Number_of_Elements <= Max_Order)) {
        memcpy(Output_Array, Input_Array, Number_of_Elements * 4);
        return;
    }

    memcpy(Output_Array, Input_Array, Max_Order * 4);
    
    int m = 64;
    int m2 = 64;

    for (q = Max_Order; q < Number_of_Elements; q++) {
        Output_Array[q] = Input_Array[q] + ((Output_Array[q - g1] * m) >> 9) - ((Output_Array[q - g2] * m2) >> 9);
        (Input_Array[q] ^ Output_Array[q - g1]) > 0 ? m++ : m--;
        (Input_Array[q] ^ Output_Array[q - g2]) > 0 ? m2-- : m2++;
    }
}

/*****************************************************************************************
Extra high 3800 to Current
*****************************************************************************************/
void CAntiPredictorExtraHigh3800ToCurrent::AntiPredict(int *pInputArray, int *pOutputArray, int NumberOfElements, BOOL bMMXAvailable, int CPULoadBalancingFactor, int nVersion) 
{
    const int nFilterStageElements = (nVersion < 3830) ? 128 : 256;
    const int nFilterStageShift = (nVersion < 3830) ? 11 : 12;
    const int nMaxElements = (nVersion < 3830) ? 134 : 262;
    const int nFirstElement = (nVersion < 3830) ? 128 : 256;
    const int nStageCShift = (nVersion < 3830) ? 10 : 11;
  
    //short frame handling
    if (NumberOfElements < nMaxElements) {
        memcpy(pOutputArray, pInputArray, NumberOfElements * 4);
        return;
    }

    //make the first five samples identical in both arrays
    memcpy(pOutputArray, pInputArray, nFirstElement * 4);
    
    //variable declares and initializations
    //short bm[nFirstElement]; memset(bm, 0, nFirstElement * 2);
    short bm[256]; memset(bm, 0, 256 * 2);
    int m2 = 64, m3 = 115, m4 = 64, m5 = 740, m6 = 0;
    int p4 = pInputArray[nFirstElement - 1];
    int p3 = (pInputArray[nFirstElement - 1] - pInputArray[nFirstElement - 2]) << 1;
    int p2 = pInputArray[nFirstElement - 1] + ((pInputArray[nFirstElement - 3] - pInputArray[nFirstElement - 2]) << 3);// - pInputArray[3] + pInputArray[2];
    int *op = &pOutputArray[nFirstElement];
    int *ip = &pInputArray[nFirstElement];
    int IPP2 = ip[-2];
    int IPP1 = ip[-1];
    int p7 = 2 * ip[-1] - ip[-2];
    int opp = op[-1];
    int Original;
    CAntiPredictorExtraHighHelper Helper;
    
    //undo the initial prediction stuff
    int q; // loop variable
    for (q = 1; q < nFirstElement; q++) {
        pOutputArray[q] += pOutputArray[q - 1];
    }

    //pump the primary loop
    short *IPAdaptFactor = (short *) calloc(NumberOfElements, 2);
    short *IPShort = (short *) calloc(NumberOfElements, 2);
    for (q = 0; q < nFirstElement; q++) {
        IPAdaptFactor[q] = ((pInputArray[q] >> 30) & 2) - 1;
        IPShort[q] = short(pInputArray[q]);
    }

    int FM[9]; memset(&FM[0], 0, 9 * 4);
    int FP[9]; memset(&FP[0], 0, 9 * 4);

    for (q = nFirstElement; op < &pOutputArray[NumberOfElements]; op++, ip++, q++) {
        //CPU load-balancing
        if (CPULoadBalancingFactor > 0) {
            if ((q % CPULoadBalancingFactor) == 0) { SLEEP(1); }
        }

        if (nVersion >= 3830)
        {
            int *pFP = &FP[8];
            int *pFM = &FM[8];
            int nDotProduct = 0;
            FP[0] = ip[0];
            
            if (FP[0] == 0)
            {
                EXPAND_8_TIMES(nDotProduct += *pFP * *pFM--; *pFP-- = *(pFP - 1);)
            }
            else if (FP[0] > 0)
            {
                EXPAND_8_TIMES(nDotProduct += *pFP * *pFM; *pFM-- += ((*pFP >> 30) & 2) - 1; *pFP-- = *(pFP - 1);)
            }
            else
            {
                EXPAND_8_TIMES(nDotProduct += *pFP * *pFM; *pFM-- -= ((*pFP >> 30) & 2) - 1; *pFP-- = *(pFP - 1);)
            }

            *ip -= nDotProduct >> 9;
        }

        Original = *ip;

        IPShort[q] = short(*ip);
        IPAdaptFactor[q] = ((ip[0] >> 30) & 2) - 1;

#ifdef ENABLE_ASSEMBLY
        if (bMMXAvailable && (Original != 0))
        {
            *ip -= (Helper.MMXDotProduct(&IPShort[q-nFirstElement], &bm[0], &IPAdaptFactor[q-nFirstElement], Original, nFilterStageElements) >> nFilterStageShift);
        }
        else
        {
            *ip -= (Helper.ConventionalDotProduct(&IPShort[q-nFirstElement], &bm[0], &IPAdaptFactor[q-nFirstElement], Original, nFilterStageElements) >> nFilterStageShift);
        }
#else
        *ip -= (Helper.ConventionalDotProduct(&IPShort[q-nFirstElement], &bm[0], &IPAdaptFactor[q-nFirstElement], Original, nFilterStageElements) >> nFilterStageShift);
#endif

        IPShort[q] = short(*ip);
        IPAdaptFactor[q] = ((ip[0] >> 30) & 2) - 1;

        /////////////////////////////////////////////
        *op = *ip + (((p2 * m2) + (p3 * m3) + (p4 * m4)) >> 11);

        if (*ip > 0) {
            m2 -= ((p2 >> 30) & 2) - 1;
            m3 -= ((p3 >> 28) & 8) - 4;
            m4 -= ((p4 >> 28) & 8) - 4;
        }
        else if (*ip < 0) {
            m2 += ((p2 >> 30) & 2) - 1;
            m3 += ((p3 >> 28) & 8) - 4;
            m4 += ((p4 >> 28) & 8) - 4;
        }

        
        p2 = *op + ((IPP2 - p4) << 3);
        p3 = (*op - p4) << 1;
        IPP2 = p4;
        p4 = *op;

        /////////////////////////////////////////////
        *op += (((p7 * m5) - (opp * m6)) >> nStageCShift);

        if (p4 > 0) {
            m5 -= ((p7 >> 29) & 4) - 2;
            m6 += ((opp >> 30) & 2) - 1;
        }
        else if (p4 < 0) {
            m5 += ((p7 >> 29) & 4) - 2;
            m6 -= ((opp >> 30) & 2) - 1;
        }

        p7 = 2 * *op - opp;
        opp = *op;

        /////////////////////////////////////////////
        *op += ((op[-1] * 31) >> 5);
        
    }

    free(IPAdaptFactor);
    free(IPShort);
}

#endif // #ifdef ENABLE_COMPRESSION_MODE_EXTRA_HIGH

#endif // #ifdef BACKWARDS_COMPATIBILITY

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区福利视频| 天天综合网天天综合色| 日韩视频国产视频| 欧美日韩精品一区二区三区四区| 色八戒一区二区三区| 色综合夜色一区| 99国产精品一区| 国产成人午夜高潮毛片| 国产成人在线免费| 成人av电影在线播放| 色婷婷av一区二区三区gif | 免费久久99精品国产| 天天操天天干天天综合网| 日韩中文字幕91| 美女网站一区二区| 国产精品自在在线| 成人app下载| 色综合天天综合网天天看片| 在线精品视频一区二区三四| 欧美喷潮久久久xxxxx| 日韩一区二区在线观看视频| 精品久久久久久亚洲综合网| 国产视频不卡一区| 亚洲另类中文字| 久久99最新地址| 99九九99九九九视频精品| 欧美日韩色一区| 久久亚洲捆绑美女| 一区二区三区免费| 久久福利资源站| 欧美性受xxxx| 久久夜色精品国产噜噜av| 亚洲欧美国产77777| 美女高潮久久久| 91啦中文在线观看| 日韩欧美一卡二卡| 亚洲裸体xxx| 经典三级视频一区| 在线精品观看国产| 国产日产亚洲精品系列| 亚洲一卡二卡三卡四卡| 国产.欧美.日韩| 欧美丰满美乳xxx高潮www| 国产精品女同互慰在线看| 亚洲超丰满肉感bbw| jiyouzz国产精品久久| 欧美精品一区二区三区在线| 一区二区三区中文字幕在线观看| 国产麻豆精品一区二区| 欧美三级三级三级爽爽爽| 国产精品视频麻豆| 国产综合色精品一区二区三区| 欧美精品一二三四| 一区二区三区日本| 不卡欧美aaaaa| 久久久久久久电影| 久久99国产精品免费网站| 欧美视频在线播放| 亚洲靠逼com| 色综合天天综合色综合av| 中文字幕高清不卡| 国产麻豆一精品一av一免费| 精品美女在线观看| 日韩激情视频网站| 在线不卡中文字幕| 香港成人在线视频| 欧美二区在线观看| 午夜电影网亚洲视频| 欧美少妇xxx| 一级女性全黄久久生活片免费| a级精品国产片在线观看| 中文字幕乱码一区二区免费| 经典一区二区三区| 国产日韩欧美一区二区三区乱码| 国产精品 欧美精品| 国产午夜久久久久| 国产不卡一区视频| 国产精品麻豆99久久久久久| 懂色av中文一区二区三区| 中文字幕av免费专区久久| 国产河南妇女毛片精品久久久| 久久日韩精品一区二区五区| 国产米奇在线777精品观看| 国产精品女同互慰在线看| 91网站视频在线观看| 亚洲国产视频a| 日韩一区二区视频在线观看| 毛片av中文字幕一区二区| 久久亚洲综合色一区二区三区| 国产成人精品一区二区三区网站观看| 国产精品伦理一区二区| 在线免费一区三区| 91麻豆国产香蕉久久精品| 欧美日韩激情一区二区| 午夜视频在线观看一区二区三区 | 亚洲大片精品永久免费| 精品视频色一区| 日韩国产精品91| 久久精品亚洲国产奇米99| 99久久伊人久久99| 亚洲国产三级在线| 久久人人97超碰com| 99久久久久久| 日韩黄色在线观看| 中文字幕av一区二区三区免费看 | 欧美一级一区二区| 国产成人免费9x9x人网站视频| 国产精品久久久久一区二区三区| 一本色道a无线码一区v| 免费人成黄页网站在线一区二区| 国产精品女人毛片| 91精品国产一区二区三区香蕉| 国产成人综合在线播放| 亚洲在线中文字幕| 国产午夜精品久久| 欧美日韩国产高清一区二区| 国产99久久久精品| 天天综合网 天天综合色| 国产精品嫩草99a| 欧美丰满高潮xxxx喷水动漫| 成人av先锋影音| 麻豆极品一区二区三区| 亚洲欧美日韩在线| 久久久久99精品一区| 在线播放中文一区| 色婷婷激情综合| 国产成人免费网站| 久久国产精品一区二区| 亚洲 欧美综合在线网络| 国产精品你懂的在线| 欧美成人vr18sexvr| 欧美嫩在线观看| 色综合咪咪久久| 成人少妇影院yyyy| 国产一区二区三区在线观看免费| 午夜精品免费在线观看| 中文字幕一区二区在线观看 | 成人av在线资源网站| 日本不卡中文字幕| 亚洲在线中文字幕| 亚洲乱码国产乱码精品精小说| 国产丝袜欧美中文另类| 精品国产乱码久久| 日韩欧美区一区二| 91精品免费在线| 欧美精品1区2区| 7777精品伊人久久久大香线蕉超级流畅| 91美女片黄在线观看91美女| 成人精品视频网站| 成人高清在线视频| 国产98色在线|日韩| 高清成人免费视频| 国产精品99久久久久久久女警| 国产一区二区三区最好精华液| 国产麻豆日韩欧美久久| 国产成人av自拍| 国产成人av一区| 成人黄色综合网站| 99精品欧美一区二区蜜桃免费| 国产黑丝在线一区二区三区| 国产成人三级在线观看| 高清成人在线观看| 91捆绑美女网站| 欧美色网站导航| 日韩欧美一区二区视频| 精品播放一区二区| 中文字幕不卡三区| 亚洲精品国产成人久久av盗摄| 午夜成人免费视频| 捆绑调教一区二区三区| 国产成人免费视频精品含羞草妖精 | 中文字幕国产精品一区二区| 国产精品入口麻豆原神| 最新日韩av在线| 亚洲国产毛片aaaaa无费看| 人妖欧美一区二区| 国产露脸91国语对白| 91视频一区二区三区| 欧美视频中文一区二区三区在线观看 | 欧洲亚洲国产日韩| 欧美一区二区三区四区在线观看| 日韩三级视频中文字幕| 国产欧美一区二区精品仙草咪| 中文字幕一区在线| 美腿丝袜一区二区三区| 成人av在线影院| 日韩午夜三级在线| 国产精品毛片久久久久久| 五月天视频一区| av不卡在线播放| 日韩久久久精品| 亚洲柠檬福利资源导航| 美女一区二区视频| 日本韩国一区二区| 欧美成人乱码一区二区三区| 亚洲乱码中文字幕综合| 国产在线一区二区| 欧美日韩第一区日日骚| 国产精品国产精品国产专区不蜜| 日本大胆欧美人术艺术动态|