⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplequantize.cpp

📁 一个可以在DM642上运新的h.264算法
💻 CPP
字号:
/*	Open H.264
 *
 *	#include	<standard_disclaimer>
 *
 *  Authors:    aitorgaray@yifan.net
 *              _
 */

#define	__SIMPLEQUANTIZE_CC

#include	"SimpleQuantize.h"
#include    "../BlockIndexer.h"

#define	ABS( value)		( ( ( int)( value)) < 0? -value: value)

void SimpleQuantize::do4x4Quantization( Block& sourceBlock, Block& targetBlock, int qp, bool intra, bool chroma) {

	ASSERT( qp >=0 && qp <= 52);

	if( chroma) {

		qp = _qp_scale_cr[ qp];
	}

    int   qp_per = qp / 6,    //  qp / 6 == ( 43 * qp) >> 8 [ for qp = 0..130]
          qp_rem = qp % 6,
          q_bits = _Q_BITS + qp_per,
          qp_const;

    if( intra) {

      qp_const = ( 1 << q_bits) / 3;
    } else {

        qp_const = ( 1 << q_bits) / 6;
    }

	byte	**source = BlockIndexer< 4>( sourceBlock).getSampleArray(),
			**result = BlockIndexer< 4>( targetBlock).getSampleArray();

    for( int y = 0; y < 4; y++) {
      for( int x = 0; x < 4; x++) {

        result[ y][ x] = ( ABS( source[ y][ x]) * _quant_coeff[ qp_rem][ y][ x] + qp_const) >> q_bits;
        result[ y][ x] *= ( source[ y][ x] < 0)? -1: 1;
      }
    }
}

/*  $Log:$
 *
 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -