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

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

?? q_offsets.c

?? 一個簡單的視頻會議VC++MFC工程文件
?? C
字號:

/*!
 *************************************************************************************
 * \file q_offsets.c
 *
 * \brief
 *    read Quantization Offset matrix parameters from input file: q_OffsetMatrix.cfg
 *
 *************************************************************************************
 */
#include <stdlib.h>
#include <string.h>

#include "global.h"

extern char *GetConfigFileContent (char *Filename, int error_type);

#define MAX_ITEMS_TO_PARSE  1000

int offset4x4_check[6] = {0, 0, 0, 0, 0, 0};
int offset8x8_check[2] = {0, 0};

static const char OffsetType4x4[9][24] =
{
  "INTRA4X4_LUMA_INTRA",
  "INTRA4X4_CHROMAU_INTRA",
  "INTRA4X4_CHROMAV_INTRA",
  "INTRA4X4_LUMA_INTER",
  "INTRA4X4_CHROMAU_INTER",
  "INTRA4X4_CHROMAV_INTER",
  "INTER4X4_LUMA",
  "INTER4X4_CHROMAU",
  "INTER4X4_CHROMAV"
};

static const char OffsetType8x8[3][24] =
{
  "INTRA8X8_LUMA_INTRA",
  "INTRA8X8_LUMA_INTER",
  "INTER8X8_LUMA",
};


int LevelOffset4x4Luma_Intra[13][4][4];
int LevelOffset4x4Chroma_Intra[2][13][4][4];

int LevelOffset4x4Luma_Inter[13][4][4];
int LevelOffset4x4Chroma_Inter[2][13][4][4];

int LevelOffset8x8Luma_Intra[13][8][8];
int LevelOffset8x8Luma_Inter[13][8][8];

short OffsetList4x4input[9][16];
short OffsetList8x8input[3][64];
short OffsetList4x4[9][16];
short OffsetList8x8[3][64];

//short UseDefaultOffsetMatrix4x4Flag[6];
//short UseDefaultOffsetMatrix8x8Flag[2];

static const short Offset_intra_default_intra[16] =
{
  341,341,341,341,
  341,341,341,341,
  341,341,341,341,
  341,341,341,341
};

static const short Offset_intra_default_inter[16] =
{
  171,171,171,171,
  171,171,171,171,
  171,171,171,171,
  171,171,171,171,
};

static const short Offset_inter_default[16] =
{
  171,171,171,171,
  171,171,171,171,
  171,171,171,171,
  171,171,171,171,
};

static const short Offset8_intra_default_intra[64] =
{
  341,341,341,341,341,341,341,341,
  341,341,341,341,341,341,341,341,
  341,341,341,341,341,341,341,341,
  341,341,341,341,341,341,341,341,
  341,341,341,341,341,341,341,341,
  341,341,341,341,341,341,341,341,
  341,341,341,341,341,341,341,341,
  341,341,341,341,341,341,341,341
};

static const short Offset8_intra_default_inter[64] =
{
  171,171,171,171,171,171,171,171,
  171,171,171,171,171,171,171,171,
  171,171,171,171,171,171,171,171,
  171,171,171,171,171,171,171,171,
  171,171,171,171,171,171,171,171,
  171,171,171,171,171,171,171,171,
  171,171,171,171,171,171,171,171,
  171,171,171,171,171,171,171,171
};

static const short Offset8_inter_default[64] =
{
  171,171,171,171,171,171,171,171,
  171,171,171,171,171,171,171,171,
  171,171,171,171,171,171,171,171,
  171,171,171,171,171,171,171,171,
  171,171,171,171,171,171,171,171,
  171,171,171,171,171,171,171,171,
  171,171,171,171,171,171,171,171,
  171,171,171,171,171,171,171,171
};


/*!
 ***********************************************************************
 * \brief
 *    Check the parameter name.
 * \param s
 *    parameter name string
 * \param type
 *    4x4 or 8x8 offset matrix type
 * \return
 *    the index number if the string is a valid parameter name,         \n
 *    -1 for error
 ***********************************************************************
 */

int CheckOffsetParameterName (char *s, int *type)
{
  int i = 0;

  *type = 0;
  while ((OffsetType4x4[i] != NULL) && (i<9))
  {
    if (0==strcmp (OffsetType4x4[i], s))
      return i;
    else
      i++;
  }

  i = 0;
  *type = 1;
  while ((OffsetType8x8[i] != NULL) && (i<3))
  {
    if (0==strcmp (OffsetType8x8[i], s))
      return i;
    else
      i++;
  }

  return -1;
};

/*!
 ***********************************************************************
 * \brief
 *    Parse the Q Offset Matrix values read from cfg file.
 * \param buf
 *    buffer to be parsed
 * \param bufsize
 *    buffer size of buffer
 ***********************************************************************
 */
void ParseQOffsetMatrix (char *buf, int bufsize)
{
  char *items[MAX_ITEMS_TO_PARSE];
  int MapIdx;
  int item = 0;
  int InString = 0, InItem = 0;
  char *p = buf;
  char *bufend = &buf[bufsize];
  int IntContent;
  int i, j, range, type, cnt;
  short *OffsetList;

  while (p < bufend)
  {
    switch (*p)
    {
      case 13:
        p++;
        break;
      case '#':                 // Found comment
        *p = '\0';              // Replace '#' with '\0' in case of comment immediately following integer or string
        while (*p != '\n' && p < bufend)  // Skip till EOL or EOF, whichever comes first
          p++;
        InString = 0;
        InItem = 0;
        break;
      case '\n':
        InItem = 0;
        InString = 0;
        *p++='\0';
        break;
      case ' ':
      case '\t':              // Skip whitespace, leave state unchanged
        if (InString)
          p++;
        else
        {                     // Terminate non-strings once whitespace is found
          *p++ = '\0';
          InItem = 0;
        }
        break;

      case '"':               // Begin/End of String
        *p++ = '\0';
        if (!InString)
        {
          items[item++] = p;
          InItem = ~InItem;
        }
        else
          InItem = 0;
        InString = ~InString; // Toggle
        break;

      case ',':
        p++;
        InItem = 0;
        break;

      default:
        if (!InItem)
        {
          items[item++] = p;
          InItem = ~InItem;
        }
        p++;
    }
  }

  item--;

  for (i=0; i<item; i+=cnt)
  {
    cnt=0;
    if (0 > (MapIdx = CheckOffsetParameterName (items[i+cnt], &type)))
    {
      snprintf (errortext, ET_SIZE, " Parsing error in config file: Parameter Name '%s' not recognized.", items[i+cnt]);
      error (errortext, 300);
    }
    cnt++;
    if (strcmp ("=", items[i+cnt]))
    {
      snprintf (errortext, ET_SIZE, " Parsing error in config file: '=' expected as the second token in each item.");
      error (errortext, 300);
    }
    cnt++;

    if (!type) //4x4 Matrix
    {
      range = 16;
      OffsetList = OffsetList4x4input[MapIdx];
      offset4x4_check[MapIdx] = 1; //to indicate matrix found in cfg file
    }
    else //8x8 matrix
    {
      range = 64;
      OffsetList = OffsetList8x8input[MapIdx];
      offset8x8_check[MapIdx] = 1; //to indicate matrix found in cfg file
    }

    for(j=0; j<range; j++)
    {
      if (1 != sscanf (items[i+cnt+j], "%d", &IntContent))
      {
        snprintf (errortext, ET_SIZE, " Parsing error: Expected numerical value for Parameter of %s, found '%s'.", items[i], items[i+cnt+j]);
        error (errortext, 300);
      }

      OffsetList[j] = (short) IntContent; //save value in matrix
    }
    cnt+=j;
    printf (".");
  }
}


/*!
 ***********************************************************************
 * \brief
 *    Initialise Q offset matrix values.
 ***********************************************************************
 */
void Init_QOffsetMatrix ()
{
  char *content;

  if(input->OffsetMatrixPresentFlag)
  {
    printf ("Parsing Quantization Offset Matrix file %s ", input->QOffsetMatrixFile);
    content = GetConfigFileContent(input->QOffsetMatrixFile, 0);
    if(content!='\0')
      ParseQOffsetMatrix(content, strlen (content));
    else
      printf("\nError: %s\nProceeding with default values for all matrices.", errortext);

    printf("\n");

  
    free(content);
  }
}


/*!
 ************************************************************************
 * \brief
 *    Calculation of the quantization offset params at the frame level
 *
 * \par Input:
 *    none
 *
 * \par Output:
 *    none
 ************************************************************************
 */
 void CalculateOffsetParam()
 {
   int i, j, k, temp;
   int qp_per;
   
   if(input->OffsetMatrixPresentFlag)
   {
     for(k=0; k<13; k++)
     {
       qp_per = Q_BITS + k - 10;
       for(j=0; j<4; j++)
       {
         for(i=0; i<4; i++)
         {
           temp = (i<<2)+j;
           if (img->type == I_SLICE)
           {
             LevelOffset4x4Luma_Intra[k][j][i]         = (int)OffsetList4x4input[0][temp]<<qp_per;
             LevelOffset4x4Chroma_Intra[0][k][j][i]    = (int)OffsetList4x4input[1][temp]<<qp_per;
             LevelOffset4x4Chroma_Intra[1][k][j][i]    = (int)OffsetList4x4input[2][temp]<<qp_per;
           }
           else
           {
             LevelOffset4x4Luma_Intra[k][j][i]         = (int)OffsetList4x4input[3][temp]<<qp_per;
             LevelOffset4x4Chroma_Intra[0][k][j][i]    = (int)OffsetList4x4input[4][temp]<<qp_per;
             LevelOffset4x4Chroma_Intra[1][k][j][i]    = (int)OffsetList4x4input[5][temp]<<qp_per;
           }
           
           LevelOffset4x4Luma_Inter[k][j][i]         = (int)OffsetList4x4input[6][temp]<<qp_per;
           LevelOffset4x4Chroma_Inter[0][k][j][i]    = (int)OffsetList4x4input[7][temp]<<qp_per;
           LevelOffset4x4Chroma_Inter[1][k][j][i]    = (int)OffsetList4x4input[8][temp]<<qp_per;
         }
       }
     }
   }
   else
   {
     for(k=0; k<13; k++)
     {
       qp_per = Q_BITS + k - 10;
       for(j=0; j<4; j++)
       {
         for(i=0; i<4; i++)
         {
           temp = (i<<2)+j;
           if (img->type == I_SLICE)
           {
             LevelOffset4x4Luma_Intra[k][j][i]         = (int)Offset_intra_default_intra[temp]<<qp_per;
             LevelOffset4x4Chroma_Intra[0][k][j][i]    = (int)Offset_intra_default_intra[temp]<<qp_per;
             LevelOffset4x4Chroma_Intra[1][k][j][i]    = (int)Offset_intra_default_intra[temp]<<qp_per;
           }
           else
           {
             LevelOffset4x4Luma_Intra[k][j][i]         = (int)Offset_intra_default_inter[temp]<<qp_per;
             LevelOffset4x4Chroma_Intra[0][k][j][i]    = (int)Offset_intra_default_inter[temp]<<qp_per;
             LevelOffset4x4Chroma_Intra[1][k][j][i]    = (int)Offset_intra_default_inter[temp]<<qp_per;
           }
           LevelOffset4x4Luma_Inter[k][j][i]         = (int)Offset_inter_default[temp]<<qp_per;
           LevelOffset4x4Chroma_Inter[0][k][j][i]    = (int)Offset_inter_default[temp]<<qp_per;
           LevelOffset4x4Chroma_Inter[1][k][j][i]    = (int)Offset_inter_default[temp]<<qp_per;
         }
       }
     }
   }
 }
 
 /*!
 ************************************************************************
 * \brief
 *    Calculate the quantisation offset parameters
 *
 ************************************************************************
 */
void CalculateOffset8Param()
{

  int i, j, k, temp;
   int q_bits;
   
   if(input->OffsetMatrixPresentFlag)
   {
     for(k=0; k<13; k++)
     {
       q_bits = Q_BITS_8 + k - 10;
       for(j=0; j<8; j++)
       {
         for(i=0; i<8; i++)
         {           
           temp = (i<<3)+j;
           if (img->type == I_SLICE)
             LevelOffset8x8Luma_Intra[k][j][i] = (int)OffsetList8x8input[0][temp] << q_bits;
           else
             LevelOffset8x8Luma_Intra[k][j][i] = (int)OffsetList8x8input[1][temp] << q_bits;

           LevelOffset8x8Luma_Inter[k][j][i] = (int)OffsetList8x8input[2][temp] << q_bits;
         }
       }
     }
   }
   else
   {
     for(k=0; k<13; k++)
     {
       q_bits = Q_BITS_8 + k - 10;
       for(j=0; j<8; j++)
       {
         for(i=0; i<8; i++)
         {
           temp = (i<<3)+j;
           if (img->type == I_SLICE)
             LevelOffset8x8Luma_Intra[k][j][i] = (int)Offset8_intra_default_intra[temp] << q_bits;
           else
             LevelOffset8x8Luma_Intra[k][j][i] = (int)Offset8_intra_default_inter[temp] << q_bits;
           LevelOffset8x8Luma_Inter[k][j][i] = (int)Offset8_inter_default[temp] << q_bits;
         }
       }
     }
   }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费性生活视频播放| 日韩码欧中文字| 奇米四色…亚洲| 欧美一级夜夜爽| 九色porny丨国产精品| 久久综合久久99| 成人av在线资源网| 欧美丝袜自拍制服另类| 日韩成人av影视| 日韩欧美在线123| 国产乱淫av一区二区三区| 日韩毛片高清在线播放| 欧美男人的天堂一二区| 久久精品国产99国产精品| 日韩欧美国产一区二区在线播放 | 日本不卡高清视频| 久久亚洲影视婷婷| 色婷婷激情一区二区三区| 国产精品视频九色porn| 欧美性xxxxxxxx| 久久er精品视频| 国产精品国产三级国产三级人妇| 91久久人澡人人添人人爽欧美| 日韩高清不卡一区二区三区| 久久九九国产精品| 91一区二区三区在线观看| 丝袜美腿亚洲综合| 亚洲国产精品t66y| 欧美日韩国产电影| 成人白浆超碰人人人人| 午夜精品一区在线观看| 中文一区在线播放| 在线看不卡av| 国产盗摄精品一区二区三区在线| 一卡二卡三卡日韩欧美| 2021久久国产精品不只是精品| 99精品视频免费在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 成人的网站免费观看| 日本免费新一区视频| 亚洲婷婷在线视频| 精品国产自在久精品国产| 91免费视频网| 国产乱色国产精品免费视频| 亚洲成人激情av| 日韩欧美国产成人一区二区| 丁香一区二区三区| 精品一区二区免费在线观看| 亚洲午夜成aⅴ人片| 亚洲欧洲精品天堂一级| 久久午夜电影网| 9191国产精品| 偷拍日韩校园综合在线| 亚洲精品伦理在线| 中文字幕中文字幕一区| 久久精品视频在线免费观看| 欧美一级午夜免费电影| 欧美亚洲国产一区二区三区| 成人在线综合网站| 亚洲影视在线观看| 一区二区三区免费网站| 中文字幕欧美一| 欧美激情中文不卡| 国产日韩欧美综合一区| 欧美精品一区二区在线观看| 日韩亚洲欧美在线| 91麻豆精品国产91久久久久久久久 | 欧美一级一级性生活免费录像| 在线影院国内精品| 欧美在线看片a免费观看| 粉嫩在线一区二区三区视频| 免费在线观看一区| 日韩激情中文字幕| 午夜视黄欧洲亚洲| 日本伊人精品一区二区三区观看方式| 亚洲综合另类小说| 亚洲自拍偷拍麻豆| 一区二区三区精品| 久久综合久久综合久久| 精品国产精品一区二区夜夜嗨| 日韩精品在线一区| 久久日韩粉嫩一区二区三区| 久久精品一区二区三区av | 国产视频一区二区在线| 在线看一区二区| 欧美三级电影在线观看| 欧美福利视频导航| 日韩三级在线观看| 精品av久久707| 国产日韩综合av| 中文字幕综合网| 一区二区三区免费看视频| 日韩一区欧美小说| 亚洲成av人影院| 久久精品国产亚洲a| 国产成人aaaa| 色欧美片视频在线观看在线视频| 在线视频欧美精品| 在线91免费看| 91免费视频网| 日韩午夜精品电影| 国产欧美日韩视频在线观看| 亚洲三级在线免费| 丝袜亚洲精品中文字幕一区| 国模一区二区三区白浆| 97成人超碰视| 欧美酷刑日本凌虐凌虐| 91在线观看地址| 欧美亚洲动漫精品| 精品国产露脸精彩对白| 亚洲色图视频网| 美女视频黄久久| 成人app在线| 欧美精品1区2区| 亚洲国产精品99久久久久久久久| 欧美色视频在线观看| 在线成人午夜影院| 国产亚洲成年网址在线观看| 亚洲一区在线观看视频| 国产在线不卡一卡二卡三卡四卡| 91丨九色丨蝌蚪富婆spa| 91精品国产综合久久精品图片| 国产三级三级三级精品8ⅰ区| 精品婷婷伊人一区三区三| 国产日韩欧美a| 亚洲www啪成人一区二区麻豆| 国产黄色精品网站| 欧美人动与zoxxxx乱| 中文字幕乱码亚洲精品一区| 日日摸夜夜添夜夜添亚洲女人| 懂色av噜噜一区二区三区av| 狠狠色伊人亚洲综合成人| 欧美日韩黄色影视| 中文字幕亚洲区| 国内精品在线播放| 欧美日韩国产高清一区二区三区| 国产精品久久久久影院亚瑟 | 亚洲自拍偷拍九九九| 天天综合日日夜夜精品| 99久久婷婷国产精品综合| 精品国产在天天线2019| 日韩精品乱码免费| 一本在线高清不卡dvd| 久久精品人人做人人爽人人| 日韩中文字幕av电影| 欧洲一区二区三区免费视频| 欧美日韩精品久久久| 国产精品久久久一本精品 | 本田岬高潮一区二区三区| 日韩精品中午字幕| 亚洲成av人影院在线观看网| 91麻豆蜜桃一区二区三区| 国产女主播在线一区二区| 亚洲午夜激情av| 成人毛片老司机大片| 久久久国产精品麻豆| 久久99精品国产麻豆婷婷洗澡| 欧美丰满嫩嫩电影| 天天色天天爱天天射综合| 欧美日韩亚洲丝袜制服| 亚洲综合色区另类av| 欧美在线短视频| 欧美va日韩va| 国模大尺度一区二区三区| 26uuuu精品一区二区| 国内精品嫩模私拍在线| 精品免费视频一区二区| 韩国精品免费视频| 久久久高清一区二区三区| 国产河南妇女毛片精品久久久| 精品日韩在线一区| 亚洲欧洲无码一区二区三区| jiyouzz国产精品久久| 中文字幕一区二区三区精华液| 国产成人免费在线观看| 久久精品人人做人人爽97| 福利电影一区二区三区| 亚洲国产成人午夜在线一区 | 欧美日韩一区二区三区不卡| 亚洲制服丝袜av| 欧美一级在线免费| 麻豆免费精品视频| 久久久久亚洲蜜桃| 99国产麻豆精品| 亚洲一区二区中文在线| 日韩午夜在线观看视频| 国产精品一区二区黑丝| 欧美激情一区在线| 91激情五月电影| 日韩影院在线观看| 亚洲精品一区二区三区99 | 欧美日韩一级片在线观看| 日本不卡一二三区黄网| 久久一区二区三区国产精品| caoporn国产精品| 午夜精品在线视频一区| 久久久影视传媒| 欧洲一区二区三区在线| 经典一区二区三区| 日韩伦理电影网|