亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? transform8x8.c

?? h264標準的VC實現
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*!
 ***************************************************************************
 * \file transform8x8.c
 *
 * \brief
 *    8x8 transform functions
 *
 * \author
 *    Main contributors (see contributors.h for copyright, address and affiliation details) 
 *    - Yuri Vatis                      <vatis@hhi.de>
 *    - Jan Muenster                    <muenster@hhi.de>
 *    - Lowell Winger                   <lwinger@lsil.com>
 * \date
 *    12. October 2003
 **************************************************************************
 */

#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <limits.h>

#include "global.h"

#include "image.h"
#include "mb_access.h"
#include "elements.h"
#include "cabac.h"
#include "vlc.h"

#include "transform8x8.h"

int   cofAC8x8_chroma[2][4][2][18];

#define Q_BITS_8        16
#define DQ_BITS_8       6 
#define DQ_ROUND_8      (1<<(DQ_BITS_8-1))

#define max(a, b) (((a) > (b)) ? (a) : (b))
#define min(a, b) (((a) < (b)) ? (a) : (b))


static const int quant_coef8[6][8][8] = 
{
  { 
    {13107, 12222,  16777,  12222,  13107,  12222,  16777,  12222},
    {12222, 11428,  15481,  11428,  12222,  11428,  15481,  11428},
    {16777, 15481,  20972,  15481,  16777,  15481,  20972,  15481},
    {12222, 11428,  15481,  11428,  12222,  11428,  15481,  11428},
    {13107, 12222,  16777,  12222,  13107,  12222,  16777,  12222},
    {12222, 11428,  15481,  11428,  12222,  11428,  15481,  11428},
    {16777, 15481,  20972,  15481,  16777,  15481,  20972,  15481},
    {12222, 11428,  15481,  11428,  12222,  11428,  15481,  11428}
  },
  {
    {11916, 11058,  14980,  11058,  11916,  11058,  14980,  11058},
    {11058, 10826,  14290,  10826,  11058,  10826,  14290,  10826},
    {14980, 14290,  19174,  14290,  14980,  14290,  19174,  14290},
    {11058, 10826,  14290,  10826,  11058,  10826,  14290,  10826},
    {11916, 11058,  14980,  11058,  11916,  11058,  14980,  11058},
    {11058, 10826,  14290,  10826,  11058,  10826,  14290,  10826},
    {14980, 14290,  19174,  14290,  14980,  14290,  19174,  14290},
    {11058, 10826,  14290,  10826,  11058,  10826,  14290,  10826}
  },
  {
    {10082, 9675,   12710,  9675,   10082,  9675, 12710,  9675},
    {9675,  8943,   11985,  8943,   9675,   8943, 11985,  8943},
    {12710, 11985,  15978,  11985,  12710,  11985,  15978,  11985},
    {9675,  8943,   11985,  8943,   9675,   8943, 11985,  8943},
    {10082, 9675,   12710,  9675,   10082,  9675, 12710,  9675},
    {9675,  8943,   11985,  8943,   9675, 8943, 11985,  8943},
    {12710, 11985,  15978,  11985,  12710,  11985,  15978,  11985},
    {9675,  8943,   11985,  8943,   9675, 8943, 11985,  8943}
  },
  {
    {9362,  8931, 11984,  8931, 9362, 8931, 11984,  8931},
    {8931,  8228, 11259,  8228, 8931, 8228, 11259,  8228},
    {11984, 11259,  14913,  11259,  11984,  11259,  14913,  11259},
    {8931,  8228, 11259,  8228, 8931, 8228, 11259,  8228},
    {9362,  8931, 11984,  8931, 9362, 8931, 11984,  8931},
    {8931,  8228, 11259,  8228, 8931, 8228, 11259,  8228},
    {11984, 11259,  14913,  11259,  11984,  11259,  14913,  11259},
    {8931,  8228, 11259,  8228, 8931, 8228, 11259,  8228}
  },
  {
    {8192,  7740, 10486,  7740, 8192, 7740, 10486,  7740},
    {7740,  7346, 9777, 7346, 7740, 7346, 9777, 7346},
    {10486, 9777, 13159,  9777, 10486,  9777, 13159,  9777},
    {7740,  7346, 9777, 7346, 7740, 7346, 9777, 7346},
    {8192,  7740, 10486,  7740, 8192, 7740, 10486,  7740},
    {7740,  7346, 9777, 7346, 7740, 7346, 9777, 7346},
    {10486, 9777, 13159,  9777, 10486,  9777, 13159,  9777},
    {7740,  7346, 9777, 7346, 7740, 7346, 9777, 7346}
  },
  {
    {7282,  6830, 9118, 6830, 7282, 6830, 9118, 6830},
    {6830,  6428, 8640, 6428, 6830, 6428, 8640, 6428},
    {9118,  8640, 11570,  8640, 9118, 8640, 11570,  8640},
    {6830,  6428, 8640, 6428, 6830, 6428, 8640, 6428},
    {7282,  6830, 9118, 6830, 7282, 6830, 9118, 6830},
    {6830,  6428, 8640, 6428, 6830, 6428, 8640, 6428},
    {9118,  8640, 11570,  8640, 9118, 8640, 11570,  8640},
    {6830,  6428, 8640, 6428, 6830, 6428, 8640, 6428}
  }
};


static const int dequant_coef8[6][8][8] = 
{
  {
    {20,  19, 25, 19, 20, 19, 25, 19},
    {19,  18, 24, 18, 19, 18, 24, 18},
    {25,  24, 32, 24, 25, 24, 32, 24},
    {19,  18, 24, 18, 19, 18, 24, 18},
    {20,  19, 25, 19, 20, 19, 25, 19},
    {19,  18, 24, 18, 19, 18, 24, 18},
    {25,  24, 32, 24, 25, 24, 32, 24},
    {19,  18, 24, 18, 19, 18, 24, 18}
  },
  {
    {22,  21, 28, 21, 22, 21, 28, 21},
    {21,  19, 26, 19, 21, 19, 26, 19},
    {28,  26, 35, 26, 28, 26, 35, 26},
    {21,  19, 26, 19, 21, 19, 26, 19},
    {22,  21, 28, 21, 22, 21, 28, 21},
    {21,  19, 26, 19, 21, 19, 26, 19},
    {28,  26, 35, 26, 28, 26, 35, 26},
    {21,  19, 26, 19, 21, 19, 26, 19}
  },
  {
    {26,  24, 33, 24, 26, 24, 33, 24},
    {24,  23, 31, 23, 24, 23, 31, 23},
    {33,  31, 42, 31, 33, 31, 42, 31},
    {24,  23, 31, 23, 24, 23, 31, 23},
    {26,  24, 33, 24, 26, 24, 33, 24},
    {24,  23, 31, 23, 24, 23, 31, 23},
    {33,  31, 42, 31, 33, 31, 42, 31},
    {24,  23, 31, 23, 24, 23, 31, 23}
  },
  {
    {28,  26, 35, 26, 28, 26, 35, 26},
    {26,  25, 33, 25, 26, 25, 33, 25},
    {35,  33, 45, 33, 35, 33, 45, 33},
    {26,  25, 33, 25, 26, 25, 33, 25},
    {28,  26, 35, 26, 28, 26, 35, 26},
    {26,  25, 33, 25, 26, 25, 33, 25},
    {35,  33, 45, 33, 35, 33, 45, 33},
    {26,  25, 33, 25, 26, 25, 33, 25}
  },
  {
    {32,  30, 40, 30, 32, 30, 40, 30},
    {30,  28, 38, 28, 30, 28, 38, 28},
    {40,  38, 51, 38, 40, 38, 51, 38},
    {30,  28, 38, 28, 30, 28, 38, 28},
    {32,  30, 40, 30, 32, 30, 40, 30},
    {30,  28, 38, 28, 30, 28, 38, 28},
    {40,  38, 51, 38, 40, 38, 51, 38},
    {30,  28, 38, 28, 30, 28, 38, 28}
  },
  {
    {36,  34, 46, 34, 36, 34, 46, 34},
    {34,  32, 43, 32, 34, 32, 43, 32},
    {46,  43, 58, 43, 46, 43, 58, 43},
    {34,  32, 43, 32, 34, 32, 43, 32},
    {36,  34, 46, 34, 36, 34, 46, 34},
    {34,  32, 43, 32, 34, 32, 43, 32},
    {46,  43, 58, 43, 46, 43, 58, 43},
    {34,  32, 43, 32, 34, 32, 43, 32}
  }

};


//! single scan pattern
const byte SNGL_SCAN8x8[64][2] = {
  {0,0}, {1,0}, {0,1}, {0,2}, {1,1}, {2,0}, {3,0}, {2,1}, 
  {1,2}, {0,3}, {0,4}, {1,3}, {2,2}, {3,1}, {4,0}, {5,0},
  {4,1}, {3,2}, {2,3}, {1,4}, {0,5}, {0,6}, {1,5}, {2,4},
  {3,3}, {4,2}, {5,1}, {6,0}, {7,0}, {6,1}, {5,2}, {4,3},
  {3,4}, {2,5}, {1,6}, {0,7}, {1,7}, {2,6}, {3,5}, {4,4},
  {5,3}, {6,2}, {7,1}, {7,2}, {6,3}, {5,4}, {4,5}, {3,6},
  {2,7}, {3,7}, {4,6}, {5,5}, {6,4}, {7,3}, {7,4}, {6,5},
  {5,6}, {4,7}, {5,7}, {6,6}, {7,5}, {7,6}, {6,7}, {7,7}
};


//! field scan pattern
const byte FIELD_SCAN8x8[64][2] = {   // 8x8
  {0,0}, {0,1}, {0,2}, {1,0}, {1,1}, {0,3}, {0,4}, {1,2}, 
  {2,0}, {1,3}, {0,5}, {0,6}, {0,7}, {1,4}, {2,1}, {3,0}, 
  {2,2}, {1,5}, {1,6}, {1,7}, {2,3}, {3,1}, {4,0}, {3,2}, 
  {2,4}, {2,5}, {2,6}, {2,7}, {3,3}, {4,1}, {5,0}, {4,2}, 
  {3,4}, {3,5}, {3,6}, {3,7}, {4,3}, {5,1}, {6,0}, {5,2}, 
  {4,4}, {4,5}, {4,6}, {4,7}, {5,3}, {6,1}, {6,2}, {5,4}, 
  {5,5}, {5,6}, {5,7}, {6,3}, {7,0}, {7,1}, {6,4}, {6,5}, 
  {6,6}, {6,7}, {7,2}, {7,3}, {7,4}, {7,5}, {7,6}, {7,7}
};


//! array used to find expensive coefficients
const byte COEFF_COST8x8[2][64] =
{
  {3,3,3,3,2,2,2,2,2,2,2,2,1,1,1,1,
  1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,0,0,0,0,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,
   9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
   9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
   9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9}
};

/*! 
 *************************************************************************************
 * \brief
 *    8x8 Intra mode decision for a macroblock
 *************************************************************************************
 */

int Mode_Decision_for_new_Intra8x8Macroblock (double lambda, int *min_cost)
{
  int  cbp=0, b8, cost8x8;

  *min_cost = (int)floor(6.0 * lambda + 0.4999);

  for (b8=0; b8<4; b8++)
  {
    if (Mode_Decision_for_new_8x8IntraBlocks (b8, lambda, &cost8x8))
    {
      cbp |= (1<<b8);
    }
    *min_cost += cost8x8;
  }

  return cbp;
}

/*! 
 *************************************************************************************
 * \brief
 *    8x8 Intra mode decision for a macroblock
 *************************************************************************************
 */

int Mode_Decision_for_new_8x8IntraBlocks (int b8, double lambda, int *min_cost)
{
  int     ipmode, best_ipmode = 0, i, j, k, x, y, cost, dummy;
  int     c_nz, nonzero = 0, diff[64];
  imgpel  rec8x8[8][8];
  double  rdcost = 0.0;
  int     block4x4_x, block4x4_y;
  int     block_x     = 8*(b8%2);
  int     block_y     = 8*(b8/2);
  int     pic_pix_x   = img->pix_x+block_x;
  int     pic_pix_y   = img->pix_y+block_y;
  int     pic_opix_x   = img->opix_x+block_x;
  int     pic_opix_y   = img->opix_y+block_y;
  int     pic_block_x = pic_pix_x/4;
  int     pic_block_y = pic_pix_y/4;
  double  min_rdcost  = 1e30;
  imgpel    **imgY_orig  = imgY_org;
  extern  int ****cofAC8x8; 

  int left_available, up_available, all_available;

  int     upMode;
  int     leftMode;
  int     mostProbableMode;  

  PixelPos left_block;
  PixelPos top_block;

  // Residue Color Transform
  int residue_R, residue_G, residue_B;
  int rate, distortion, temp, b4;
  int c_ipmode = img->mb_data[img->current_mb_nr].c_ipred_mode;
  int rec8x8_c[2][4][4][4];

  getLuma4x4Neighbour(img->current_mb_nr, block_x/4, block_y/4, -1,  0, &left_block);
  getLuma4x4Neighbour(img->current_mb_nr, block_x/4, block_y/4,  0, -1, &top_block);

  if (input->UseConstrainedIntraPred)
  {
    top_block.available  = top_block.available ? img->intra_block [top_block.mb_addr] : 0;
    left_block.available = left_block.available ? img->intra_block [left_block.mb_addr] : 0;
  }

  if(b8/2)
    upMode            = top_block.available ? img->ipredmode8x8[top_block.pos_x ][top_block.pos_y ] : -1; 
  else
    upMode            = top_block.available ? img->ipredmode[top_block.pos_x ][top_block.pos_y ] : -1;
  if(b8%2)
    leftMode          = left_block.available ? img->ipredmode8x8[left_block.pos_x][left_block.pos_y] : -1;
  else
    leftMode          = left_block.available ? img->ipredmode[left_block.pos_x][left_block.pos_y] : -1;

  mostProbableMode  = (upMode < 0 || leftMode < 0) ? DC_PRED : upMode < leftMode ? upMode : leftMode;

  *min_cost = INT_MAX;

  //===== INTRA PREDICTION FOR 8x8 BLOCK =====
  intrapred_luma8x8 (pic_pix_x, pic_pix_y, &left_available, &up_available, &all_available);

  //===== LOOP OVER ALL 8x8 INTRA PREDICTION MODES =====
  for (ipmode=0; ipmode<NO_INTRA_PMODE; ipmode++)
  {
    if( (ipmode==DC_PRED) ||
        ((ipmode==VERT_PRED||ipmode==VERT_LEFT_PRED||ipmode==DIAG_DOWN_LEFT_PRED) && up_available ) ||
        ((ipmode==HOR_PRED||ipmode==HOR_UP_PRED) && left_available ) ||
        (all_available) )
    {
      if (!input->rdopt)
      {
        for (k=j=0; j<8; j++)
          for (i=0; i<8; i++, k++)
          {
            diff[k] = imgY_orig[pic_opix_y+j][pic_opix_x+i] - img->mprr_3[ipmode][j][i];
          }
        cost  = (ipmode == mostProbableMode) ? 0 : (int)floor(4 * lambda );
        cost += SATD8X8 (diff, input->hadamard);
        if (cost < *min_cost)
        {
          best_ipmode = ipmode;
          *min_cost   = cost;
        }
      }
      else
      {
        // Residue Color Transform
        if(!img->residue_transform_flag)
        {
          // get prediction and prediction error
          for (j=0; j<8; j++)
            for (i=0; i<8; i++)
            {
              img->mpr[block_x+i][block_y+j]  = img->mprr_3[ipmode][j][i];
              img->m7[i][j]                   = imgY_orig[pic_opix_y+j][pic_opix_x+i] - img->mprr_3[ipmode][j][i];
            }

          //===== store the coding state =====
          store_coding_state_cs_cm();
          // get and check rate-distortion cost
          
          if ((rdcost = RDCost_for_8x8IntraBlocks (&c_nz, b8, ipmode, lambda, min_rdcost, mostProbableMode)) < min_rdcost)
          {
            //--- set coefficients ---
            for (j=0; j<2; j++)
              for (i=0; i<65;i++)  
                for(k=0; k<4; k++) // do 4x now
                  cofAC8x8[b8][k][j][i]=img->cofAC[b8][k][j][i]; // k vs 0

            //--- set reconstruction ---
            for (y=0; y<8; y++)
              for (x=0; x<8; x++)  
                rec8x8[y][x] = enc_picture->imgY[pic_pix_y+y][pic_pix_x+x];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区精品在线观看| 欧美sm美女调教| 91在线观看美女| 成人精品免费看| av一区二区三区在线| 成人听书哪个软件好| 国产成人啪免费观看软件| 国产剧情一区在线| 成人美女视频在线看| 97久久精品人人爽人人爽蜜臀| 不卡影院免费观看| 色诱视频网站一区| 欧美老女人第四色| 欧美一级二级三级蜜桃| 久久综合久久鬼色| 国产精品高潮久久久久无| 狠狠色狠狠色综合系列| 久久国产生活片100| 国产成人av电影在线播放| 国产成人精品一区二| 色综合中文字幕| 欧美精品 日韩| 337p日本欧洲亚洲大胆色噜噜| 国产拍欧美日韩视频二区| 亚洲欧美日韩久久| 日本美女视频一区二区| 国产高清不卡二三区| 欧美网站大全在线观看| 26uuu精品一区二区| 一区二区在线观看免费| 视频一区二区中文字幕| 成人精品一区二区三区四区| 欧美喷潮久久久xxxxx| 国产日产欧美一区| 视频一区欧美精品| 91丨九色丨黑人外教| 精品国产百合女同互慰| 亚洲主播在线观看| 国产成人精品免费网站| 91精品国产全国免费观看| 中文字幕视频一区二区三区久| 日韩成人一区二区三区在线观看| 国产精品亚洲视频| 欧美一区二区三区免费在线看| 中文字幕欧美区| 久久99精品国产91久久来源| 色域天天综合网| 国产精品久久久久一区二区三区 | 91精品国产91久久久久久最新毛片| 26uuu另类欧美| 日韩电影免费在线看| 色哟哟欧美精品| 中文字幕在线一区免费| 韩国v欧美v日本v亚洲v| 欧美另类变人与禽xxxxx| 亚洲欧美在线高清| 春色校园综合激情亚洲| 日韩免费一区二区三区在线播放| 亚洲欧美国产77777| 国产91丝袜在线播放0| 精品奇米国产一区二区三区| 日韩电影在线免费观看| 欧美三级一区二区| 亚洲午夜免费福利视频| 色噜噜偷拍精品综合在线| 17c精品麻豆一区二区免费| 国产激情91久久精品导航| 精品久久久久99| 九一九一国产精品| 欧美一级精品在线| 久久成人久久鬼色| 亚洲精品一线二线三线无人区| 免费av成人在线| 日韩亚洲欧美中文三级| 美女视频黄 久久| 欧美mv日韩mv| 国产裸体歌舞团一区二区| 久久精品日韩一区二区三区| 久久99久久久久| 亚洲在线免费播放| 欧美情侣在线播放| 美国三级日本三级久久99| 久久综合一区二区| 福利视频网站一区二区三区| 国产精品二区一区二区aⅴ污介绍| 波多野结衣在线aⅴ中文字幕不卡| 国产欧美日韩激情| 色婷婷激情综合| 天天操天天干天天综合网| 91麻豆精品久久久久蜜臀| 麻豆一区二区99久久久久| 久久嫩草精品久久久精品| 成人av在线播放网站| 一区二区三区在线免费视频| 欧美日本乱大交xxxxx| 麻豆国产精品视频| 国产精品久久久久毛片软件| 91丨九色丨黑人外教| 日本欧美一区二区三区乱码| 精品国产麻豆免费人成网站| 成人app软件下载大全免费| 亚洲综合免费观看高清完整版在线| 制服丝袜一区二区三区| 国产91在线观看丝袜| 亚洲成人动漫在线观看| 久久久久久久精| 在线视频一区二区三区| 极品少妇一区二区| 一区二区三区波多野结衣在线观看 | 免费精品视频在线| 国产精品视频麻豆| 欧美精品一二三四| 丰满亚洲少妇av| 免费观看成人鲁鲁鲁鲁鲁视频| 国产精品久久久久久亚洲伦| 在线不卡a资源高清| 成人高清在线视频| 美女视频一区在线观看| 亚洲综合丁香婷婷六月香| 久久久久久毛片| 在线电影院国产精品| 成人美女视频在线看| 精品一区二区三区的国产在线播放 | 亚洲精品国产无天堂网2021 | 91.成人天堂一区| 99久久99久久免费精品蜜臀| 欧美aaaaa成人免费观看视频| 亚洲婷婷综合久久一本伊一区| 久久看人人爽人人| 日韩美一区二区三区| 欧美日韩三级在线| 在线观看三级视频欧美| 成人免费视频一区| 国产不卡视频在线播放| 久88久久88久久久| 日韩精品乱码免费| 国产美女视频一区| 国产一区二区不卡老阿姨| 六月婷婷色综合| 青青草国产精品亚洲专区无| 婷婷亚洲久悠悠色悠在线播放| 亚洲夂夂婷婷色拍ww47| 亚洲激情第一区| 亚洲激情图片一区| 亚洲综合视频在线| 一区二区三区四区精品在线视频 | 国产精品影音先锋| 久久99精品久久久久久久久久久久| 亚洲电影一区二区| 亚洲午夜免费电影| 天涯成人国产亚洲精品一区av| 夜夜精品浪潮av一区二区三区| 亚洲人成影院在线观看| 亚洲卡通欧美制服中文| 亚洲精品菠萝久久久久久久| 一区二区不卡在线播放| 亚洲一区电影777| 日韩av一区二| 激情图区综合网| 成人av在线资源网站| 99久久99久久免费精品蜜臀| 91搞黄在线观看| 欧美一级一区二区| 精品国产成人在线影院| 国产精品私人影院| 亚洲男人的天堂一区二区| 午夜免费欧美电影| 久久精品国产精品青草| 国产成a人无v码亚洲福利| 色综合一个色综合亚洲| 欧美精品自拍偷拍动漫精品| 日韩女优av电影| 国产精品久线在线观看| 亚洲成a人v欧美综合天堂 | 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 男男视频亚洲欧美| 国产一区二区不卡在线| 日本韩国欧美在线| 欧美一区二区高清| 国产日韩精品一区二区三区| 亚洲免费观看视频| 午夜a成v人精品| 成人免费视频播放| 91.麻豆视频| 中文字幕在线观看一区| 日韩av中文在线观看| 大胆亚洲人体视频| 欧美一区二区三区系列电影| 日本一区二区三区视频视频| 亚洲成人你懂的| 国产麻豆视频精品| 欧美日韩大陆在线| 自拍偷在线精品自拍偷无码专区| 日韩精品一级二级| 成人91在线观看| 精品日韩欧美在线| 亚洲va韩国va欧美va| 97超碰欧美中文字幕| 久久久久免费观看| 日韩电影一区二区三区四区|