?? decoderspec.cpp
字號(hào):
ntizer::QSTEP_MAX_EXPONENT=(1<<QSTEP_EXPONENT_BITS)-1;
int CDeQuantizer::QSTEP_MAX_MANTISSA=(1<<QSTEP_MANTISSA_BITS)-1;
CDeQuantizer::CDeQuantizer()
{
}
CDeQuantizer::~CDeQuantizer()
{
}
CDeQuantizer::CDeQuantizer(CImgBlkWTData &ImgBlkWTData, CDecoderSpec &DecoderSpec)
{
pGuardBits=DecoderSpec.pGuardBits;
pQuantizerType=DecoderSpec.pQuantizerType;
int nTileNums,nComNums;
m_pImgBlkWTData=&ImgBlkWTData;
nTileNums=m_pImgBlkWTData->GetTileNums();
nComNums=m_pImgBlkWTData->GetImgComNums();
int nTileNumber,nComNumber;
for (nTileNumber=0;nTileNumber<nTileNums;nTileNumber++)
for (nComNumber=0;nComNumber<nComNums;nComNumber++)
{
DeQuanTileComBlkWTData(nTileNumber,nComNumber);
}
}
CDeQuantizer::CDeQuantizer(CQuantizerStd &QuanImgBlkWTData)
{
pGuardBits=QuanImgBlkWTData.pGuardBits;
pQuantizerType=QuanImgBlkWTData.pQuantizerType;
int nTileNums,nComNums;
m_pImgBlkWTData=QuanImgBlkWTData.m_pImgBlkWTData;
nTileNums=m_pImgBlkWTData->GetTileNums();
nComNums=m_pImgBlkWTData->GetImgComNums();
int nTileNumber,nComNumber;
for (nTileNumber=0;nTileNumber<nTileNums;nTileNumber++)
for (nComNumber=0;nComNumber<nComNums;nComNumber++)
{
DeQuanTileComBlkWTData(nTileNumber,nComNumber);
}
}
void CDeQuantizer::DeQuanTileComBlkWTData(int nTileNumber, int nComNumber)
{
int nRi=m_pImgBlkWTData->GetImgComBits(nComNumber);
int nG=pGuardBits->GetTileComVal(nTileNumber,nComNumber);
QuantizerType eQuantizerType=pQuantizerType->GetTileComVal(nTileNumber,nComNumber);
CTileBlkWTData *pTileComBlkWTData=m_pImgBlkWTData->GetTileBlkWTData(nTileNumber,nComNumber);
DataType eDataType=pTileComBlkWTData->GetDataType();
switch (eQuantizerType)
{
case TYPE_NO_QUANT:
NoDeQuantTileComBlkWTData(pTileComBlkWTData,nRi,nG,eDataType);
break;
case TYPE_IMPLICIT_QUANT:
{
ImplicitDeQuantTileComBlkWTData(pTileComBlkWTData,nRi,nG, eDataType);
}
break;
case TYPE_EXPLICIT_QUANT:
{
ExplicitDeQuantTileComBlkWTData(pTileComBlkWTData,nRi,nG,eDataType);
}
break;
default:
{
printf("quantize type unknown!\n");
return;
}
}
}
void CDeQuantizer::NoDeQuantTileComBlkWTData(CTileBlkWTData *pTileComBlkWTData, int nRi,int nG,DataType eDataType)
{
int nDecLev=pTileComBlkWTData->GetTileDecLev();
CBandBlkWTData *pTileBlkWTData=pTileComBlkWTData->GetTileBlkWTData();
CBandBlkWTData *pBandBlkWTData=0;
CBand *pBand=0;
int nLev;
int nEb,nUb=0;
int nRb;
int nMb;
double fBStep=1.0;
int nBandNumber=1;
for (nLev=1;nLev<=nDecLev;nLev++)
{
/**
HL;
*/
nRb=nRi+1;
nMb=nG+nRi;
nEb=nRb;
pBandBlkWTData=&pTileBlkWTData[nBandNumber++];
pBand=&(pBandBlkWTData->GetBandInfo());
SetBandParams(pBand,nRb,nMb,nEb,nUb,fBStep);
DeQuantBandBlkWTData(pBandBlkWTData,eDataType);
/**
LH;
*/
pBandBlkWTData=&pTileBlkWTData[nBandNumber++];
pBand=&(pBandBlkWTData->GetBandInfo());
SetBandParams(pBand,nRb,nMb,nEb,nUb,fBStep);
DeQuantBandBlkWTData(pBandBlkWTData,eDataType);
/**
HH;
*/
nRb=nRi+2;
nMb=nG-1+nRb;
nEb=nRb;
pBandBlkWTData=&pTileBlkWTData[nBandNumber++];
pBand=&(pBandBlkWTData->GetBandInfo());
SetBandParams(pBand,nRb,nMb,nEb,nUb,fBStep);
DeQuantBandBlkWTData(pBandBlkWTData,eDataType);
}
pBandBlkWTData=&pTileBlkWTData[0];
pBand=&(pBandBlkWTData->GetBandInfo());
nRb=nRi;
nEb=nRb;
nMb=nG+nEb-1;
SetBandParams(pBand,nRb,nMb,nEb,nUb,fBStep);
DeQuantBandBlkWTData(pBan
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -