cRefQ0 = NULL;
m_pvopcRefQ1 = NULL;
m_puciPredBAB = NULL;
m_ppxlcReconCurrBAB = NULL;
m_parcodec = NULL;
m_ppxlcCurrMBBYDown4 = NULL;
m_ppxlcCurrMBBYDown2 = NULL;
m_ppxlcPredBABDown4 = NULL;
m_ppxlcPredBABDown2 = NULL;
m_pvopcSptQ = NULL;
m_uiSprite = 0;
m_rgstSrcQ = NULL;
m_rgstDstQ = NULL;
m_iOffsetForPadY = 0;
m_iOffsetForPadUV = 0;
m_rgshpmd = NULL;
m_pbEmptyRowArray = new Bool [MB_SIZE];
/* NBIT: replaced by setClipTab() function
m_rgiClipTab = new U8 [1024];
m_rgiClipTab += 400;
Int i;
for (i = -400; i < 624; i++)
m_rgiClipTab [i] = (i < 0) ? 0 : (i > 255) ? 255 : i;
*/
}
// NBIT: added function
Void CVideoObject::setClipTab()
{
Int TabSize = 1<<(m_volmd.nBits+2);
Int maxVal = (1<<m_volmd.nBits)-1;
m_iOffset = TabSize/2;
m_rgiClipTab = new PixelC [TabSize];
m_rgiClipTab += m_iOffset;
Int i;
for (i = -m_iOffset; i < m_iOffset; i++)
m_rgiClipTab [i] = (i < 0) ? 0 : (i > maxVal) ? maxVal : i;
}
Void CVideoObject::allocateVOLMembers (Int iSessionWidth, Int iSessionHeight)
{
m_pvopcCurrMB = new CVOPU8YUVBA (m_volmd.fAUsage, CRct (0, 0, MB_SIZE, MB_SIZE));
m_ppxlcCurrMBY = (PixelC*) m_pvopcCurrMB->pixelsY ();
m_ppxlcCurrMBU = (PixelC*) m_pvopcCurrMB->pixelsU ();
m_ppxlcCurrMBV = (PixelC*) m_pvopcCurrMB->pixelsV ();
m_ppxlcCurrMBBY = (PixelC*) m_pvopcCurrMB->pixelsBY ();
m_ppxlcCurrMBBUV = (PixelC*) m_pvopcCurrMB->pixelsBUV ();
m_ppxlcCurrMBA = (PixelC*) m_pvopcCurrMB->pixelsA ();
m_pvopcPredMB = new CVOPU8YUVBA (m_volmd.fAUsage, CRct (0, 0, MB_SIZE, MB_SIZE));
m_ppxlcPredMBY = (PixelC*) m_pvopcPredMB->pixelsY ();
m_ppxlcPredMBU = (PixelC*) m_pvopcPredMB->pixelsU ();
m_ppxlcPredMBV = (PixelC*) m_pvopcPredMB->pixelsV ();
m_ppxlcPredMBA = (PixelC*) m_pvopcPredMB->pixelsA ();
// B-VOP MB buffer data
m_pvopcPredMBBack = new CVOPU8YUVBA (m_volmd.fAUsage, CRct (0, 0, MB_SIZE, MB_SIZE));
m_ppxlcPredMBBackY = (PixelC*) m_pvopcPredMBBack->pixelsY ();
m_ppxlcPredMBBackU = (PixelC*) m_pvopcPredMBBack->pixelsU ();
m_ppxlcPredMBBackV = (PixelC*) m_pvopcPredMBBack->pixelsV ();
m_ppxlcPredMBBackA = (PixelC*) m_pvopcPredMBBack->pixelsA ();
m_pvopiErrorMB = new CVOPIntYUVBA (m_volmd.fAUsage, CRct (0, 0, MB_SIZE, MB_SIZE));
m_ppxliErrorMBY = (PixelI*) m_pvopiErrorMB->getPlane (Y_PLANE)->pixels ();
m_ppxliErrorMBU = (PixelI*) m_pvopiErrorMB->getPlane (U_PLANE)->pixels ();
m_ppxliErrorMBV = (PixelI*) m_pvopiErrorMB->getPlane (V_PLANE)->pixels ();
m_ppxliErrorMBA = (PixelI*) m_pvopiErrorMB->getPlane (A_PLANE)->pixels ();
if (m_uiSprite == 0)
m_pvopcCurrQ = new CVOPU8YU
VBA (m_volmd.fAUsage, m_rctRefFrameY);
else //for sprite m_rctRefFrameY is for whole sprite, m_rctOrg is the display window
// dshu: begin of modification
// m_pvopcCurrQ = new CVOPU8YUVBA (m_volmd.fAUsage, m_rctDisplayWindow);
{
CRct rctCurrQ = CRct (
-EXPANDY_REF_FRAME, -EXPANDY_REF_FRAME,
EXPANDY_REF_FRAME + m_rctDisplayWindow.width, EXPANDY_REF_FRAME + m_rctDisplayWindow.height()
);
m_pvopcCurrQ = new CVOPU8YUVBA (m_volmd.fAUsage, rctCurrQ);
}
// dshu: end of modification
assert (m_pvopcCurrQ != NULL);
m_pvopcRefQ0 = new CVOPU8YUVBA (m_volmd.fAUsage, m_rctRefFrameY);
assert (m_pvopcRefQ0 != NULL);
m_pvopcRefQ1 = new CVOPU8YUVBA (m_volmd.fAUsage, m_rctRefFrameY);
assert (m_pvopcRefQ1 != NULL);
m_iFrameWidthY = m_pvopcRefQ0->whereY ().width;
m_iFrameWidthUV = m_pvopcRefQ0->whereUV ().width;
m_iFrameWidthYxMBSize = MB_SIZE * m_pvopcRefQ0->whereY ().width;
m_iFrameWidthYxBlkSize = BLOCK_SIZE * m_pvopcRefQ0->whereY ().width;
m_iFrameWidthU