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

📄 umc_vc1_enc_block_template.h

📁 audio-video-codecs.rar语音编解码器
💻 H
📖 第 1 页 / 共 3 页
字号:
//                                                            const Ipp8u*            pScanMatrix,
//                                                            const sACTablesSet*     pACTablesSet,
//                                                            sACEscInfo*             pACEscInfo,
//                                                            Ipp32u                  pattern)
//   {    UMC::Status     err          = UMC::UMC_OK;
//        Ipp32s          i            = 0;
//
//        Ipp8u           nPairs       = 0;
//        Ipp16s          levels[33];
//        Ipp8u           runs[33];
//        const Ipp32u    *pEncTable   = pACTablesSet->pEncTable;
//        Ipp8u           patMask[2] = {0x0C, 0x03};
//
//        for (Ipp32u nSubblock=0; nSubblock<2; nSubblock++)
//        {
//            const Ipp8u     *pTableDR    = pACTablesSet->pTableDR;
//            const Ipp8u     *pTableDL    = pACTablesSet->pTableDL;
//            const Ipp8u     *pTableInd   = pACTablesSet->pTableInd;
//            Ipp16s*          pSubBlock   = (Ipp16s*)((Ipp8u*)pBlock + blockStep*nSubblock*4);
//
//            if ((pattern & patMask[nSubblock])==0)
//                continue;
//
//            nPairs       = 0;
//            runs[0] = 0;
//            //prepare runs, levels arrays
//            for (i = 0; i<32; i++)
//            {
//                Ipp32s  pos    = pScanMatrix[i];
//                Ipp16s  value = *((Ipp16s*)((Ipp8u*)pSubBlock + blockStep*(pos>>3)) + (pos&0x07));
//                if (!value)
//                {
//                    runs[nPairs]++;
//                }
//                else
//                {
//                    levels[nPairs++] = value;
//                    runs[nPairs]   = 0;
//                }
//            }
//            // put codes into bitstream
//            i = 0;
//            for (Ipp32s not_last = 1; not_last>=0; not_last--)
//            {
//                for (; i < nPairs - not_last; i++)
//                {
//                    bool    sign = false;
//                    Ipp8u   run  = runs  [i];
//                    Ipp16s  lev  = levels[i];
//
//                    Ipp8u mode = GetMode( run, lev, pTableDR, pTableDL, sign);
//
//                    switch (mode)
//                    {
//                        case 3:
//                            err = pCodedBlock->PutBits(pEncTable[0], pEncTable[1]); //ESCAPE
//                            VC1_ENC_CHECK (err)
//                            err = pCodedBlock->PutBits(0,2);                       //mode
//                            VC1_ENC_CHECK (err)
//                            err = pCodedBlock->PutBits(!not_last,1);               //last
//                            VC1_ENC_CHECK (err)
//                            if ((!pACEscInfo->levelSize) && (!pACEscInfo->runSize))
//                            {
//                                pACEscInfo->runSize = 6;
//                                pACEscInfo->levelSize = (pACEscInfo->pLSizeTable[2*11 +1]==0)? 8:11;
//                                pACEscInfo->levelSize = (pACEscInfo->pLSizeTable[2*pACEscInfo->levelSize + 1]<=0) ?
//                                                                2 : pACEscInfo->levelSize;
//                                err = pCodedBlock->PutBits(pACEscInfo->pLSizeTable[2*pACEscInfo->levelSize],
//                                                        pACEscInfo->pLSizeTable[2*pACEscInfo->levelSize +1]);
//                                VC1_ENC_CHECK (err)
//                                err = pCodedBlock->PutBits(pACEscInfo->runSize - 3, 2);
//                                VC1_ENC_CHECK (err)
//                            }
//                            err = pCodedBlock->PutBits(run,pACEscInfo->runSize);
//                            VC1_ENC_CHECK (err)
//                            err = pCodedBlock->PutBits(sign, 1);
//                            VC1_ENC_CHECK (err)
//                            if (lev>((1<<pACEscInfo->levelSize)-1))
//                            {
//                                lev =(1<<pACEscInfo->levelSize)-1;
//                                levels[i] = lev;
//                            }
//                            err = pCodedBlock->PutBits(lev,pACEscInfo->levelSize);
//                            VC1_ENC_CHECK (err)
//                            break;
//                        case 2:
//                        case 1:
//                            err = pCodedBlock->PutBits(pEncTable[0], pEncTable[1]); //ESCAPE
//                            VC1_ENC_CHECK (err)
//                            err = pCodedBlock->PutBits(1,mode);                     //mode
//                            VC1_ENC_CHECK (err)
//                        case 0:
//                            Ipp16s index = pTableInd[run] + lev;
//                            err = pCodedBlock->PutBits(pEncTable[2*index], pEncTable[2*index + 1]);
//                            VC1_ENC_CHECK (err)
//                            err = pCodedBlock->PutBits(sign, 1);
//                            VC1_ENC_CHECK (err)
//                            break;
//
//                    }
//                }
//
//                pTableDR    = pACTablesSet->pTableDRLast;
//                pTableDL    = pACTablesSet->pTableDLLast;
//                pTableInd   = pACTablesSet->pTableIndLast;
//
//            }
//        }
//        return UMC::UMC_OK;
//   }
//  template <class T>  UMC::Status   WriteBlockInter4x8type (T*                      pCodedBlock,
//                                                            Ipp16s*                 pBlock,
//                                                            Ipp32u                  blockStep,
//                                                            const Ipp8u*            pScanMatrix,
//                                                            const sACTablesSet*     pACTablesSet,
//                                                            sACEscInfo*             pACEscInfo,
//                                                            Ipp32u                  pattern)
//   {    UMC::Status     err          = UMC::UMC_OK;
//        Ipp32s          i            = 0;
//
//        Ipp8u           nPairs       = 0;
//        Ipp16s          levels[33];
//        Ipp8u           runs[33];
//        Ipp8u           patMask[2]   = {0x0A, 0x05};
//        const Ipp32u    *pEncTable   = pACTablesSet->pEncTable;
//
//        for (Ipp32u nSubblock=0; nSubblock<2; nSubblock++)
//        {
//            const Ipp8u     *pTableDR    = pACTablesSet->pTableDR;
//            const Ipp8u     *pTableDL    = pACTablesSet->pTableDL;
//            const Ipp8u     *pTableInd   = pACTablesSet->pTableInd;
//            Ipp16s*          pSubBlock   = pBlock + 4*nSubblock;
//
//            if ((pattern & patMask[nSubblock])==0)
//                continue;
//
//
//            nPairs       = 0;
//            runs[0] = 0;
//            //prepare runs, levels arrays
//            for (i = 0; i<32; i++)
//            {
//                Ipp32s  pos    = pScanMatrix[i];
//                Ipp16s  value = *((Ipp16s*)((Ipp8u*)pSubBlock + blockStep*(pos>>2)) + (pos&0x03));
//                if (!value)
//                {
//                    runs[nPairs]++;
//                }
//                else
//                {
//                    levels[nPairs++] = value;
//                    runs[nPairs]   = 0;
//                }
//            }
//            // put codes into bitstream
//            i = 0;
//            for (Ipp32s not_last = 1; not_last>=0; not_last--)
//            {
//                for (; i < nPairs - not_last; i++)
//                {
//                    bool    sign = false;
//                    Ipp8u   run  = runs  [i];
//                    Ipp16s  lev  = levels[i];
//
//                    Ipp8u mode = GetMode( run, lev, pTableDR, pTableDL, sign);
//
//                    switch (mode)
//                    {
//                        case 3:
//                            err = pCodedBlock->PutBits(pEncTable[0], pEncTable[1]); //ESCAPE
//                            VC1_ENC_CHECK (err)
//                            err = pCodedBlock->PutBits(0,2);                       //mode
//                            VC1_ENC_CHECK (err)
//                            err = pCodedBlock->PutBits(!not_last,1);               //last
//                            VC1_ENC_CHECK (err)
//                            if ((!pACEscInfo->levelSize) && (!pACEscInfo->runSize))
//                            {
//                                pACEscInfo->runSize = 6;
//                                pACEscInfo->levelSize = (pACEscInfo->pLSizeTable[2*11 +1]==0)? 8:11;
//                                pACEscInfo->levelSize = (pACEscInfo->pLSizeTable[2*pACEscInfo->levelSize + 1]<=0) ?
//                                                                2 : pACEscInfo->levelSize;
//                                err = pCodedBlock->PutBits(pACEscInfo->pLSizeTable[2*pACEscInfo->levelSize],
//                                                        pACEscInfo->pLSizeTable[2*pACEscInfo->levelSize +1]);
//                                VC1_ENC_CHECK (err)
//                                err = pCodedBlock->PutBits(pACEscInfo->runSize - 3, 2);
//                                VC1_ENC_CHECK (err)
//                            }
//                            err = pCodedBlock->PutBits(run,pACEscInfo->runSize);
//                            VC1_ENC_CHECK (err)
//                            err = pCodedBlock->PutBits(sign, 1);
//                            VC1_ENC_CHECK (err)
//                            if (lev>((1<<pACEscInfo->levelSize)-1))
//                            {
//                                lev =(1<<pACEscInfo->levelSize)-1;
//                                levels[i] = lev;
//                            }
//                            err = pCodedBlock->PutBits(lev,pACEscInfo->levelSize);
//                            VC1_ENC_CHECK (err)
//                            break;
//                        case 2:
//                        case 1:
//                            err = pCodedBlock->PutBits(pEncTable[0], pEncTable[1]); //ESCAPE
//                            VC1_ENC_CHECK (err)
//                            err = pCodedBlock->PutBits(1,mode);                     //mode
//                            VC1_ENC_CHECK (err)
//                        case 0:
//                            Ipp16s index = pTableInd[run] + lev;
//                            err = pCodedBlock->PutBits(pEncTable[2*index], pEncTable[2*index + 1]);
//                            VC1_ENC_CHECK (err)
//                            err = pCodedBlock->PutBits(sign, 1);
//                            VC1_ENC_CHECK (err)
//                            break;
//
//                    }
//                }
//
//                pTableDR    = pACTablesSet->pTableDRLast;
//                pTableDL    = pACTablesSet->pTableDLLast;
//                pTableInd   = pACTablesSet->pTableIndLast;
//
//            }
//        }
//        return UMC::UMC_OK;
//   }
//
// template <class T>  UMC::Status   WriteBlockInter4x4type  (T*                      pCodedBlock,
//                                                            Ipp16s*                 pBlock,
//                                                            Ipp32u                  blockStep,
//                                                            const Ipp8u*            pScanMatrix,
//                                                            const sACTablesSet*     pACTablesSet,
//                                                            sACEscInfo*             pACEscInfo,
//                                                            Ipp32u                  pattern)
//   {    UMC::Status     err          = UMC::UMC_OK;
//        Ipp32s          i            = 0;
//
//        Ipp8u           nPairs       = 0;
//        Ipp16s          levels[17];
//        Ipp8u           runs[17];
//        const Ipp32u    *pEncTable   = pACTablesSet->pEncTable;
//
//

⌨️ 快捷键说明

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