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

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

?? q_matrix.c

?? jm_frext22.ZIP的壓縮文件,主要用于嵌入式系統圖象的編解碼的開發.
?? C
字號:

/*!
 *************************************************************************************
 * \file q_matrix.c
 *
 * \brief
 *    read q_matrix parameters from input file: q_matrix.cfg
 *
 *************************************************************************************
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>

#include "global.h"

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

#define MAX_ITEMS_TO_PARSE  1000

int matrix4x4_check[6] = {0, 0, 0, 0, 0, 0};
int matrix8x8_check[2] = {0, 0}; // HB 10062004

/*!
 ***********************************************************************
 * \brief
 *    Check the parameter name.
 * \param s
 *    parameter name string
 * \param type
 *    4x4 or 8x8 matrix type
 * \return
 *    the index number if the string is a valid parameter name,         \n
 *    -1 for error
 ***********************************************************************
 */
int CheckParameterName (char *s, int *type)
{
  int i = 0;

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

  i = 0;
  *type = 1;
  while ((MatrixType8x8[i] != NULL) && (i<2)) // HB 10062004
  {
    if (0==strcmp (MatrixType8x8[i], s))
      return i;
    else
      i++;
  }

  return -1;
};

/*!
 ***********************************************************************
 * \brief
 *    Parse the Q matrix values read from cfg file.
 * \param buf
 *    buffer to be parsed
 * \param bufsize
 *    buffer size of buffer
 ***********************************************************************
 */
void ParseMatrix (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];
  short IntContent;
  int i, j, range, type, cnt;
  short *ScalingList;

  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 = CheckParameterName (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;
      ScalingList = ScalingList4x4input[MapIdx]; // HB 10062004
      matrix4x4_check[MapIdx] = 1; //to indicate matrix found in cfg file
    }
    else //8x8 matrix
    {
      range = 64;
      ScalingList = ScalingList8x8input[MapIdx]; // HB 10062004
      matrix8x8_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);
      }

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

/*!
 ***********************************************************************
 * \brief
 *    Check Q Matrix values. If invalid values found in matrix,
 *    whole matrix will be patch with default value 16.
 ***********************************************************************
 */
void PatchMatrix(void)
{
  short *ScalingList;
  int i, cnt, fail;

  for(i=0; i<6; i++)
  {
    if(input->ScalingListPresentFlag[i])
    {
      ScalingList=ScalingList4x4input[i]; // HB 10062004
      if(matrix4x4_check[i])
      {
        fail=0;
        for(cnt=0; cnt<16; cnt++)
        {
          if(ScalingList[cnt]<0 || ScalingList[cnt]>255) // ScalingList[0]=0 to indicate use default matrix
          {
            fail=1;
            break;
          }
        }

        if(fail) //value of matrix exceed range
        {
          printf("\n%s value exceed range. (Value must be 1 to 255)\n", MatrixType4x4[i]);
          printf("Padding with default values for this matrix.\n\n");
          if(i>2)
            memcpy(ScalingList, Quant_inter_default, sizeof(short)*16);
          else
            memcpy(ScalingList, Quant_intra_default, sizeof(short)*16);
        }
      }
      else //matrix not found, pad with default value
      {
        printf("\n%s matrix not found... padding with default values.\n\n", MatrixType4x4[i]);
        if(i>2)
          memcpy(ScalingList, Quant_inter_default, sizeof(short)*16);
        else
          memcpy(ScalingList, Quant_intra_default, sizeof(short)*16);
      }
    }

    if((i<2) && input->ScalingListPresentFlag[i+6]) // HB 10062004
    {
      ScalingList=ScalingList8x8input[i]; // HB 10062004
      if(matrix8x8_check[i])
      {
        fail=0;
        for(cnt=0; cnt<64; cnt++)
        {
          if(ScalingList[cnt]<0 || ScalingList[cnt]>255) // ScalingList[0]=0 to indicate use default matrix
          {
            fail=1;
            break;
          }
        }

        if(fail) //value of matrix exceed range
        {
          printf("\n%s value exceed range. (Value must be 1 to 255)\n", MatrixType8x8[i]);
          printf("Padding with default values for this matrix.\n\n");
          if(i==7) // HB 10062004
            memcpy(ScalingList, Quant8_inter_default, sizeof(short)*64);
          else
            memcpy(ScalingList, Quant8_intra_default, sizeof(short)*64);
        }
      }
      else //matrix not found, pad with default value
      {
        printf("\n%s matrix not found... padding with default values.\n\n", MatrixType8x8[i]);
        if(i==7) // HB 10062004
          memcpy(ScalingList, Quant8_inter_default, sizeof(short)*64);
        else
          memcpy(ScalingList, Quant8_intra_default, sizeof(short)*64);
      }
    }
  }
}

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

  if(input->ScalingMatrixPresentFlag)
  {
    printf ("Parsing Configfile %s ", input->QmatrixFile);
    content = GetConfigFileContent(input->QmatrixFile, 0);
    if(content!='\0')
      ParseMatrix(content, strlen (content));
    else
      printf("\nError...file not found, proceeding with default values for all the matrix.");
    PatchMatrix();
    printf("\n");

    memset(UseDefaultScalingMatrix4x4Flag, 0, sizeof(short)*6);            // HB 10062004
    UseDefaultScalingMatrix8x8Flag[0]=UseDefaultScalingMatrix8x8Flag[1]=0; // HB 10062004
  
    free(content);
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久爽爽爽麻豆色哟哟 | 8v天堂国产在线一区二区| 午夜电影一区二区三区| 亚洲同性同志一二三专区| 久久午夜羞羞影院免费观看| 欧美日韩国产乱码电影| 99久久精品国产观看| 国产高清无密码一区二区三区| 蜜臀av一级做a爰片久久| 香蕉加勒比综合久久| 首页国产欧美日韩丝袜| 天天av天天翘天天综合网| 成人a级免费电影| caoporm超碰国产精品| 菠萝蜜视频在线观看一区| 91精品国产aⅴ一区二区| 日韩午夜av电影| www国产精品av| 日韩av不卡一区二区| 国产一区二区女| 国产高清不卡二三区| 欧美高清视频www夜色资源网| 日韩欧美一区在线| 日韩午夜激情电影| 午夜视频一区在线观看| 在线观看免费一区| 日韩一卡二卡三卡国产欧美| 亚洲国产裸拍裸体视频在线观看乱了| 午夜精品久久久久久久99水蜜桃| www.日本不卡| 亚洲国产高清不卡| 一区二区三区影院| 日韩电影一区二区三区四区| 欧美又粗又大又爽| 久久夜色精品一区| 国产美女精品人人做人人爽 | 日韩欧美黄色影院| 美日韩一区二区| 精品国产免费一区二区三区香蕉| 国产精品久久久久影院色老大 | 国产一区二区三区免费在线观看| 欧美一级日韩不卡播放免费| 男女男精品视频| 99久久久久免费精品国产| 国产精品久99| 欧美性受xxxx黑人xyx性爽| 婷婷综合在线观看| 日韩欧美视频在线| 国产91综合网| 日韩免费看的电影| 国产一二精品视频| 椎名由奈av一区二区三区| 日韩亚洲欧美在线观看| 国产精品一区二区在线观看网站| 一本色道久久综合亚洲aⅴ蜜桃 | 97精品视频在线观看自产线路二| 亚洲欧美激情视频在线观看一区二区三区| 水野朝阳av一区二区三区| 欧美久久一区二区| 国产乱码精品一区二区三 | 99免费精品视频| 亚洲一级片在线观看| av电影在线观看完整版一区二区| 亚洲视频小说图片| 欧美理论电影在线| 国产成人综合精品三级| 亚洲精品视频免费看| 国产91丝袜在线18| 亚洲尤物视频在线| 2020国产精品久久精品美国| 色综合夜色一区| 国产精品美女久久久久av爽李琼 | 久久久精品天堂| 免费不卡在线视频| 国产精品久久久久精k8 | 欧美精品久久99久久在免费线 | 国产一区二区三区免费在线观看| 亚洲精选一二三| 久久久青草青青国产亚洲免观| 91蜜桃免费观看视频| 中文字幕国产一区| 91精品国产综合久久精品图片 | 精品国产一区二区亚洲人成毛片| 91在线云播放| 国产一区二区精品久久99| 亚洲妇女屁股眼交7| 亚洲国产精品激情在线观看| 在线综合视频播放| 色综合天天综合| 国产成人自拍在线| 极品少妇xxxx精品少妇偷拍| 日韩欧美色电影| 欧美自拍偷拍一区| 成人av在线资源| 国产美女av一区二区三区| 日韩成人午夜精品| 亚洲成av人**亚洲成av**| 亚洲手机成人高清视频| 久久久久久日产精品| 欧美va在线播放| 成人av在线影院| 国产成人在线视频播放| 久久丁香综合五月国产三级网站| ww久久中文字幕| 日韩欧美精品在线| 日韩一卡二卡三卡四卡| 欧美精品一级二级三级| 色一区在线观看| 91小视频免费看| 91亚洲精品一区二区乱码| 成人免费视频视频在线观看免费 | 亚洲天堂av老司机| 国产精品久线在线观看| 国产亚洲一本大道中文在线| 日本精品一区二区三区高清| 青青草97国产精品免费观看| 亚洲成人黄色影院| 亚洲成av人影院在线观看网| 亚洲国产日产av| 天天综合色天天| 毛片一区二区三区| 久88久久88久久久| 国产一区二区在线视频| 国产精品一二三在| 丁香亚洲综合激情啪啪综合| 国产另类ts人妖一区二区| 国产盗摄一区二区三区| 成人h动漫精品一区二区| 91丝袜高跟美女视频| 欧美主播一区二区三区美女| 欧美另类高清zo欧美| 日韩视频一区二区三区| 久久看人人爽人人| 18成人在线观看| 国产午夜亚洲精品午夜鲁丝片| 久久一夜天堂av一区二区三区| 久久久91精品国产一区二区精品| 国产精品视频第一区| 一区二区三区在线视频免费| 日韩国产在线一| 国产美女精品人人做人人爽| 色综合久久综合网97色综合| 538在线一区二区精品国产| 欧美不卡一区二区| 亚洲欧美日本在线| 五月开心婷婷久久| 国产精品1024| 欧美日韩午夜在线| 在线免费观看日韩欧美| 日韩无一区二区| 亚洲免费观看高清完整版在线观看熊 | 欧美丝袜丝交足nylons图片| 日韩欧美一二三区| 亚洲欧美日韩电影| 精品一区二区三区香蕉蜜桃| 91亚洲国产成人精品一区二三| 91精品久久久久久久久99蜜臂| 久久久精品日韩欧美| 亚洲福利视频一区| 高清不卡一区二区| 91精品国产一区二区三区 | 精品精品国产高清a毛片牛牛| 国产精品成人一区二区艾草| 日本成人在线电影网| 成人午夜激情视频| 日韩精品一区二区三区视频播放| 中文字幕中文乱码欧美一区二区| 日韩av电影一区| 欧美制服丝袜第一页| 国产精品二三区| 国产乱码精品一区二区三区av | 激情偷乱视频一区二区三区| 美女高潮久久久| 欧美性猛交xxxx黑人交| 国产视频在线观看一区二区三区| 秋霞午夜av一区二区三区| 91麻豆成人久久精品二区三区| 26uuu欧美| 免费看日韩精品| 欧美日韩另类一区| 亚洲理论在线观看| 北条麻妃国产九九精品视频| 久久影院午夜片一区| 日韩不卡一区二区三区| 91福利社在线观看| 亚洲品质自拍视频网站| 成人免费高清视频在线观看| 精品国产一区二区三区忘忧草| 午夜精品久久久久影视| 91麻豆国产福利精品| 亚洲色图在线播放| 成人午夜电影网站| 国产精品日韩精品欧美在线| 国产精品99久久久久久久女警 | 国产精品综合在线视频| 日韩三级在线观看| 日韩av一二三| 欧美一区二区免费视频| 日韩精品91亚洲二区在线观看| 欧美三级日韩三级|