📄 umc_vc1_enc_block_template.h
字号:
// 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 + -