blob: 5f66cadf2afb076a29fd008c2015597a3c6178e2 [file] [log] [blame]
/*!
************************************************************************
* \file block.h
*
* \brief
* constant arrays for single block processing
*
* \author
* Inge Lille-Langoy <inge.lille-langoy@telenor.com> \n
* Telenor Satellite Services \n
* P.O.Box 6914 St.Olavs plass \n
* N-0130 Oslo, Norway
*
************************************************************************
*/
#ifndef _BLOCK_H_
#define _BLOCK_H_
//! make chroma QP from quant
extern const byte QP_SCALE_CR[52] ;
//! single scan pattern
const byte SNGL_SCAN[16][2] =
{
{0,0},{1,0},{0,1},{0,2},
{1,1},{2,0},{3,0},{2,1},
{1,2},{0,3},{1,3},{2,2},
{3,1},{3,2},{2,3},{3,3}
};
//! field scan pattern
const byte FIELD_SCAN[16][2] =
{
{0,0},{0,1},{1,0},{0,2},
{0,3},{1,1},{1,2},{1,3},
{2,0},{2,1},{2,2},{2,3},
{3,0},{3,1},{3,2},{3,3}
};
//! array used to find expencive coefficients
const byte COEFF_COST[2][16] =
{
{3,2,2,1,1,1,0,0,0,0,0,0,0,0,0,0},
{9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9}
};
//! bit cost for coefficients
const byte COEFF_BIT_COST[3][16][16]=
{
{ // 2x2 scan (corrested per Gisle's Email 11/23/2000 by StW
{ 3, 5, 7, 9, 9,11,11,11,11,13,13,13,13,13,13,13},
{ 5, 7, 9, 9,11,11,11,11,13,13,13,13,13,13,13,13},
{ 7, 9, 9,11,11,11,11,13,13,13,13,13,13,13,13,15},
{ 7, 9, 9,11,11,11,11,13,13,13,13,13,13,13,13,15},
{ 7, 7, 9, 9, 9, 9,11,11,11,11,11,11,11,11,13,13},
{ 7, 7, 9, 9, 9, 9,11,11,11,11,11,11,11,11,13,13},
{ 7, 7, 9, 9, 9, 9,11,11,11,11,11,11,11,11,13,13},
{ 7, 7, 9, 9, 9, 9,11,11,11,11,11,11,11,11,13,13},
{ 7, 7, 9, 9, 9, 9,11,11,11,11,11,11,11,11,13,13},
{ 7, 7, 9, 9, 9, 9,11,11,11,11,11,11,11,11,13,13},
{ 7, 7, 9, 9, 9, 9,11,11,11,11,11,11,11,11,13,13},
{ 7, 7, 9, 9, 9, 9,11,11,11,11,11,11,11,11,13,13},
{ 7, 7, 9, 9, 9, 9,11,11,11,11,11,11,11,11,13,13},
{ 7, 7, 9, 9, 9, 9,11,11,11,11,11,11,11,11,13,13},
{ 7, 7, 9, 9, 9, 9,11,11,11,11,11,11,11,11,13,13},
{ 7, 7, 9, 9, 9, 9,11,11,11,11,11,11,11,11,13,13},
},
{ // double scan
{ 3, 5, 7, 7, 7, 9, 9, 9, 9,11,11,13,13,13,13,15},
{ 5, 9, 9,11,11,13,13,13,13,15,15,15,15,15,15,15},
{ 7,11,11,13,13,13,13,15,15,15,15,15,15,15,15,17},
{ 9,11,11,13,13,13,13,15,15,15,15,15,15,15,15,17},
{ 9,11,11,13,13,13,13,15,15,15,15,15,15,15,15,17},
{11,11,13,13,13,13,15,15,15,15,15,15,15,15,17,17},
{11,11,13,13,13,13,15,15,15,15,15,15,15,15,17,17},
{11,11,13,13,13,13,15,15,15,15,15,15,15,15,17,17},
{11,11,13,13,13,13,15,15,15,15,15,15,15,15,17,17},
{11,11,13,13,13,13,15,15,15,15,15,15,15,15,17,17},
{11,11,13,13,13,13,15,15,15,15,15,15,15,15,17,17},
{11,11,13,13,13,13,15,15,15,15,15,15,15,15,17,17},
{11,11,13,13,13,13,15,15,15,15,15,15,15,15,17,17},
{11,11,13,13,13,13,15,15,15,15,15,15,15,15,17,17},
},
{ // single scan
{ 3, 7, 9, 9,11,13,13,15,15,15,15,17,17,17,17,17},
{ 5, 9,11,13,13,15,15,15,15,17,17,17,17,17,17,17},
{ 5, 9,11,13,13,15,15,15,15,17,17,17,17,17,17,17},
{ 7,11,13,13,15,15,15,15,17,17,17,17,17,17,17,17},
{ 7,11,13,13,15,15,15,15,17,17,17,17,17,17,17,17},
{ 7,11,13,13,15,15,15,15,17,17,17,17,17,17,17,17},
{ 9,11,13,13,15,15,15,15,17,17,17,17,17,17,17,17},
{ 9,11,13,13,15,15,15,15,17,17,17,17,17,17,17,17},
{ 9,11,13,13,15,15,15,15,17,17,17,17,17,17,17,17},
{ 9,11,13,13,15,15,15,15,17,17,17,17,17,17,17,17},
{11,13,13,15,15,15,15,17,17,17,17,17,17,17,17,19},
{11,13,13,15,15,15,15,17,17,17,17,17,17,17,17,19},
{11,13,13,15,15,15,15,17,17,17,17,17,17,17,17,19},
{11,13,13,15,15,15,15,17,17,17,17,17,17,17,17,19},
{11,13,13,15,15,15,15,17,17,17,17,17,17,17,17,19},
{11,13,13,15,15,15,15,17,17,17,17,17,17,17,17,19},
},
};
//! single scan pattern
const byte SCAN_YUV422 [8][2] =
{
{0,0},{0,1},
{1,0},{0,2},
{0,3},{1,1},
{1,2},{1,3}
};
//! look up tables for FRExt-chroma support
const unsigned char hor_offset[4][4][4] =
{{{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0}},
{{0, 4, 0, 4},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0}},
{{0, 4, 0, 4},
{0, 4, 0, 4},
{0, 0, 0, 0},
{0, 0, 0, 0}},
{{0, 4, 0, 4},
{8,12, 8,12},
{0, 4, 0, 4},
{8,12, 8,12}}};
const unsigned char ver_offset[4][4][4] =
{ {{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0}},
{{0, 0, 4, 4},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0}},
{{0, 0, 4, 4},
{8, 8,12,12},
{0, 0, 0, 0},
{0, 0, 0, 0}},
{{0, 0, 4, 4},
{0, 0, 4, 4},
{8, 8,12,12},
{8, 8,12,12}}};
static unsigned char cbp_blk_chroma[8][4] =
{ {16, 17, 18, 19},
{20, 21, 22, 23},
{24, 25, 26, 27},
{28, 29, 30, 31},
{32, 33, 34, 35},
{36, 37, 38, 39},
{40, 41, 42, 43},
{44, 45, 46, 47} };
#endif