Esempio n. 1
0
/*  ofun -- piecewise-linear output-table mappings; inverse of xfun, yfun, zfun
 */
static fut_otbldat_t
	ofun (fut_gtbldat_t q, fut_calcData_p dataP)
{
double	p, delta, neutralgrid;

	neutralgrid = ((fData_p) dataP)->neutralgrid;

	p = DEQUANT (q, FUT_GRD_MAXVAL);

	switch (((fData_p) dataP)->std.chan)
	{
	   case 0:   /* L* */
			break;

	   case 1:   /* a */
	   case 2:   /* b */
			delta = p - neutralgrid;
			if (delta < 0.0)
			   p = ((fData_p) dataP)->neutralInput * (p / neutralgrid);
			else
			   p = 1.0 - (1.0 - ((fData_p) dataP)->neutralInput) * ((1.0 - p) / (1.0 - neutralgrid));
			break;
	}

	return QUANT (p, FUT_MAX_PEL12);
}
Esempio n. 2
0
Void dequantizeBlock4x4(PixelI * pRec, Int * pOrg, const Int * pIndex, Int iQPLP)
{
    Int i;
    
    for(i = 1; i < 16; i ++)
        pRec[pIndex[i]] = DEQUANT(pOrg[i], iQPLP);
}
Esempio n. 3
0
Void dequantizeBlock4x2(PixelI * pRec, Int * pOrg, Int iQPLP)
{
    pRec[ 64] = DEQUANT(pOrg[1], iQPLP);
    pRec[ 16] = DEQUANT(pOrg[2], iQPLP);
    pRec[ 80] = DEQUANT(pOrg[3], iQPLP);
    pRec[ 32] = DEQUANT(pOrg[4], iQPLP);
    pRec[ 96] = DEQUANT(pOrg[5], iQPLP);
    pRec[ 48] = DEQUANT(pOrg[6], iQPLP);
    pRec[112] = DEQUANT(pOrg[7], iQPLP);
}
Esempio n. 4
0
Int dequantizeMacroblock(CWMImageStrCodec * pSC)
{
    const COLORFORMAT cf = pSC->m_param.cfColorFormat;
    CWMIMBInfo *pMBInfo = &pSC->MBInfo;
    CWMITile * pTile = pSC->pTile + pSC->cTileColumn;
    const size_t iChannels = pSC->m_param.cNumChannels;
    size_t i;

    for(i = 0; i < iChannels; i ++){
        //dequantize DC
        pSC->p1MBbuffer[i][0] = DEQUANT(pMBInfo->iBlockDC[i][0], pTile->pQuantizerDC[i]->iQP);

        // dequantize LP
        if(pSC->WMISCP.sbSubband != SB_DC_ONLY)
            if(i == 0 || (cf != YUV_422 && cf != YUV_420))
                dequantizeBlock4x4(pSC->p1MBbuffer[i] , pMBInfo->iBlockDC[i], dctIndex[2], pTile->pQuantizerLP[i][pMBInfo->iQIndexLP].iQP);
            else if(cf == YUV_422)
                dequantizeBlock4x2(pSC->p1MBbuffer[i], pMBInfo->iBlockDC[i], pTile->pQuantizerLP[i][pMBInfo->iQIndexLP].iQP);
            else // 420
                dequantizeBlock2x2(pSC->p1MBbuffer[i], pMBInfo->iBlockDC[i], pTile->pQuantizerLP[i][pMBInfo->iQIndexLP].iQP);
    }

    return ICERR_OK;
}
Esempio n. 5
0
Void dequantizeBlock2x2(PixelI * pRec, Int * pOrg, Int iQPLP)
{
    pRec[32] = DEQUANT(pOrg[1], iQPLP);
    pRec[16] = DEQUANT(pOrg[2], iQPLP);
    pRec[48] = DEQUANT(pOrg[3], iQPLP);
}