📄 mbtransform.c
字号:
#include "DCTProcess.h"
#if 1
void Block_FillData(BYTE *pSrc, int16 *pDest, int iOff)
{
int i, j;
for (j = 0; j < (MB_SIZE >> 1); j ++)
{
for (i = 0; i < (MB_SIZE >> 1); i ++)
{
*pDest++ = *pSrc ++;
}
pSrc += iOff;
}
}
#endif
void MB_FillData(int x, int y)
{
int iOff;
BYTE * pLum, * pCb, * pCr;
int16 * p = m_iBlock;
iOff = m_iEncPels - MB_SIZE / 2;
pLum = (BYTE *)m_pGobY + x;
Block_FillData(pLum, p, iOff);
pLum = (BYTE *)m_pGobY + x + MB_SIZE / 2;
p += MB_LENGTH;
Block_FillData(pLum, p, iOff);
pLum = (BYTE *)m_pGobY + x + (MB_SIZE >> 1) * m_iEncPels;
p += MB_LENGTH;
Block_FillData(pLum, p, iOff);
pLum = (BYTE *)m_pGobY + x + (MB_SIZE >> 1) * m_iEncPels + MB_SIZE / 2;
p += MB_LENGTH;
Block_FillData(pLum, p, iOff);
iOff = x>>1;
pCb = m_pGobCb + iOff;
pCr = m_pGobCr + iOff;
iOff = (m_iEncPels>>1) - (MB_SIZE/2);
p += MB_LENGTH;
Block_FillData(pCb, p, iOff);
p += MB_LENGTH;
Block_FillData(pCr, p, iOff);
}
#if 1
void Block_ReconData(int16 * iLum, BYTE * pLum, int iPels)
{
int i, j, k, iIn, iOut;
int iBlockLen = MB_SIZE >> 1;
for (j = 0, k = 0; j < iBlockLen; j++)
{
for ( i = 0; i < iBlockLen; i++, k++)
{
iIn = *(iLum + k) - 128;
iOut = _sshl(iIn, 24);
*(pLum + i) = (iOut >> 24) + 128;
// *(pLum + i + j * iPels) = (BYTE) minmax(*(iLum + k), 0, 255);
}
pLum += iPels;
}
}
#endif
void MB_ReconData(int x, int y)
{
BYTE * pLum, * pLumBak;
BYTE * pCb = m_pGobCb;
BYTE * pCr = m_pGobCr;
int16 * iLum = m_iBlock;
int16 * iCb = iLum + (MB_LENGTH << 2);
int16 * iCr = iCb + MB_LENGTH;
int iBlockLen = MB_SIZE >> 1;
pLum = pLumBak = m_pGobY + x;
pCb += x >> 1;
pCr += x >> 1;
Block_ReconData(iLum, pLum, m_iEncPels);
pLum = pLumBak + iBlockLen;
iLum += MB_LENGTH;
Block_ReconData(iLum, pLum, m_iEncPels);
pLum = pLumBak + (m_iEncPels << 3);
iLum += MB_LENGTH;
Block_ReconData(iLum, pLum, m_iEncPels);
pLum = pLumBak + (m_iEncPels << 3) + iBlockLen;
iLum += MB_LENGTH;
Block_ReconData(iLum, pLum, m_iEncPels);
Block_ReconData(iCb, pCb, m_iEncPels>>1);
Block_ReconData(iCr, pCr, m_iEncPels>>1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -