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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? opts.c

?? linux下將各類(lèi)格式圖片轉(zhuǎn)換工具
?? C
字號(hào):
/*===========================================================================* * opts.c								     * *									     * *      Special C code to handle TUNEing options                             * *									     * * EXPORTED PROCEDURES:							     * *      Tune_Init                                                            * *      CollectQuantStats                                                    * *									     * *===========================================================================*//* * Copyright (c) 1995 The Regents of the University of California. * All rights reserved. *  * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement is * hereby granted, provided that the above copyright notice and the following * two paragraphs appear in all copies of this software. *  * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *  * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. *//*==============* * HEADER FILES * *==============*/#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#include "opts.h"/*==============* * EXTERNALS    * *==============*/extern char    outputFileName[];extern boolean pureDCT;extern int32   qtable[], niqtable[];extern int     ZAG[];extern boolean printSNR, decodeRefFrames;void init_idctref _ANSI_ARGS_((void));void init_fdct _ANSI_ARGS_((void));/*===================* * GLOBALS MADE HERE * *===================*/boolean tuneingOn = FALSE;int block_bound = 128;boolean collect_quant = FALSE;int collect_quant_detailed = 0;FILE *collect_quant_fp;int kill_dim = FALSE;int kill_dim_break, kill_dim_end;float kill_dim_slope;int SearchCompareMode = DEFAULT_SEARCH;boolean squash_small_differences = FALSE;int SquashMaxLum, SquashMaxChr;float LocalDCTRateScale = 1.0, LocalDCTDistortScale = 1.0;boolean IntraPBAllowed = TRUE;boolean WriteDistortionNumbers = FALSE;int collect_distortion_detailed = 0;FILE *distortion_fp;FILE *fp_table_rate[31], *fp_table_dist[31];boolean DoLaplace = FALSE;double **L1, **L2, **Lambdas;int LaplaceNum, LaplaceCnum;boolean BSkipBlocks = TRUE;/* define this as it too much of a pain to find toupper on different arch'es */#define ASCII_TOUPPER(c) ((c>='a') && (c<='z')) ? c-'a'+'A' : c/*===============* * Internals     * *===============*//*===========================================================================* * * SkipSpacesTabs * *	skip all spaces and tabs * * RETURNS:	point to next character not a space or tab * * SIDE EFFECTS:    none * *===========================================================================*/static const char *SkipSpacesTabs(const char * const start) {    const char * p;    for (p = start; *p == ' ' || *p == '\t'; ++p);    return p;}/*===========================================================================* * * SetupCollectQuantStats * *     Setup variables to collect statistics on quantization values * * RETURNS:	nothing * * SIDE EFFECTS:    sets collect_quant and collect_quant_fp * *===========================================================================*/static void SetupCollectQuantStats(const char * const charPtr){  char fname[256];  const char * cp;  cp = charPtr;  while ( (*cp != ' ') && (*cp != '\t') && (*cp != '\n')) {    cp++;  }  strncpy(fname, charPtr, cp-charPtr);  fname[cp-charPtr] = '\0';  collect_quant = TRUE;  if ((collect_quant_fp = fopen(fname,"w")) == NULL) {    fprintf(stderr, "Error opening %s for quant statistics\n", fname);    fprintf(stderr, "Using stdout (ick!)\n");    collect_quant_fp = stdout;  }  cp = SkipSpacesTabs(cp);  if (*cp != '\n') {    switch (*cp) {    case 'c':      collect_quant_detailed = 1;      break;    default:      fprintf(stderr, "Unknown TUNE parameter setting format %s\n", cp);    }}}/*===========================================================================* * * SetupKillDimAreas * *     Do a transform on small lum values * * RETURNS:	nothing * * SIDE EFFECTS:    sets kill_dim, kill_dim_break, kill_dim_end * *===========================================================================*/static void SetupKillDimAreas(const char * const charPtr){  int items_scanned;  kill_dim = TRUE;  items_scanned = sscanf(charPtr, "%d %d %f", 			 &kill_dim_break, &kill_dim_end, &kill_dim_slope);  if (items_scanned != 3) {    kill_dim_slope = 0.25;    items_scanned = sscanf(charPtr, "%d %d", 			   &kill_dim_break, &kill_dim_end);    if (items_scanned != 2) {      /* Use defaults */      kill_dim_break = 20;      kill_dim_end   = 25;    }  }  /* check values */  if (kill_dim_break > kill_dim_end) {    fprintf(stderr, "TUNE parameter k: break > end is illegal.\n");    exit(-1);  }  if (kill_dim_slope < 0) {    fprintf(stderr, "TUNE parameter k: slope < 0 is illegal.\n");    exit(-1);  }}/*===========================================================================* * * SetupSquashSmall * *     Setup encoder to squash small changes in Y or Cr/Cb values * * RETURNS:	nothing * * SIDE EFFECTS:    sets squash_max_differences SquashMaxLum SquashMaxChr  * *===========================================================================*/static void SetupSquashSmall(const char * const charPtr){  squash_small_differences = TRUE;  if (sscanf(charPtr, "%d %d", &SquashMaxLum, &SquashMaxChr) == 1) {    /* Only set one, do both */    SquashMaxChr = SquashMaxLum;  }}/*===========================================================================* * * SetupLocalDCT * *     Setup encoder to use DCT for rate-distortion estimat ein Psearches * * RETURNS:	nothing * * SIDE EFFECTS:    sets SearchCompareMode and *                        can change LocalDCTRateScale, LocalDCTDistortScale * *===========================================================================*/static void SetupLocalDCT(const char * const charPtr){  int num_scales=0;  SearchCompareMode = LOCAL_DCT;  /* Set scaling factors if present */  num_scales = sscanf(charPtr, "%f %f", &LocalDCTRateScale, &LocalDCTDistortScale);  if (num_scales == 1) {    fprintf(stderr, "Invalid number of scaling factors for local DCT\n");    fprintf(stderr, "Must specify Rate Scale and Distorion scale (both floats)\n");    fprintf(stderr, "Continuing with 1.0 1.0\n");    LocalDCTRateScale = 1.0;    LocalDCTDistortScale = 1.0;  }}/*===========================================================================* * * SetupLaplace * *     Setup encoder to find distrubution for I-frames, and use for -snr * * RETURNS:	nothing * * SIDE EFFECTS:    sets DoLaplace, L1, L2, and Lambdas * *===========================================================================*/static void SetupLaplace(){  int i;  DoLaplace = TRUE;  LaplaceNum = 0;  L1 = (double **)malloc(sizeof(double *)*3);  L2 = (double **)malloc(sizeof(double *)*3);  Lambdas = (double **)malloc(sizeof(double *)*3);  if (L1 == NULL || L2 == NULL || Lambdas == NULL) {    fprintf(stderr,"Out of memory!!!\n");    exit(1);  }  for (i = 0; i < 3; i++) {    L1[i] = (double *)calloc(64, sizeof(double));    L2[i] = (double *)calloc(64, sizeof(double));    Lambdas[i] = (double *)malloc(sizeof(double) * 64);    if (L1[i] == NULL || L2[i] == NULL || Lambdas[i] == NULL) {      fprintf(stderr,"Out of memory!!!\n");      exit(1);    }  }}static voidSetupWriteDistortions(const char * const charPtr){  char fname[256];  const char * cp;  int i;  WriteDistortionNumbers = TRUE;  cp = charPtr;  while ( (*cp != ' ') && (*cp != '\t') && (*cp != '\n')) {    cp++;  }  strncpy(fname, charPtr, cp-charPtr);  fname[cp-charPtr] = '\0';  collect_quant = TRUE;  if ((distortion_fp = fopen(fname,"w")) == NULL) {    fprintf(stderr, "Error opening %s for quant statistics\n", fname);    fprintf(stderr, "Using stdout (ick!)\n");    distortion_fp = stdout;  }  cp = SkipSpacesTabs(cp);  if (*cp != '\n') {    switch (*cp) {    case 'c':      collect_distortion_detailed = TRUE;      break;    case 't': {      char scratch[256];      collect_distortion_detailed = 2;      for (i = 1;  i < 32;  i++) {	sprintf(scratch, "%srate%d", fname, i);	fp_table_rate[i-1] = fopen(scratch, "w");	sprintf(scratch, "%sdist%d", fname, i);	fp_table_dist[i-1] = fopen(scratch, "w");	}}      break;    default:      fprintf(stderr, "Unknown TUNE parameter setting format %s\n", cp);    }}}  /*=====================* * EXPORTED PROCEDURES * *=====================*/void CalcLambdas(void) {  int i,j,n;  double var;    n = LaplaceNum;  for (i = 0;   i < 3;  i++) {    for (j = 0;  j < 64;  j++) {      var = (n*L1[i][j] + L2[i][j]*L2[i][j]) / (n*(n-1));      Lambdas[i][j] = sqrt(2.0) / sqrt(var);    }  }}/*===========================================================================* * * Mpost_UnQuantZigBlockLaplace * *	unquantize and zig-zag (decode) a single block, using the distrib to get vals *      Iblocks only now * * RETURNS:	nothing * * SIDE EFFECTS:    none * *===========================================================================*/voidMpost_UnQuantZigBlockLaplace(in, out, qscale, iblock)    FlatBlock in;    Block out;    int qscale;    boolean iblock;{    register int index;    int	    position;    register int	    qentry;    int	    level, coeff;    double low, high;    double mid,lam;    /* qtable[0] must be 8 */    out[0][0] = (int16)(in[0] * 8);        for ( index = 1;  index < DCTSIZE_SQ;  index++ ) {      position = ZAG[index];      level = in[index];            if (level == 0) {	((int16 *)out)[position] = 0;	continue;      }      qentry = qtable[position] * qscale;      coeff = (level*qentry)/8;      low = ((ABS(level)-.5)*qentry)/8;      high = ((ABS(level)+.5)*qentry)/8;      lam = Lambdas[LaplaceCnum][position];      mid = (1.0/lam) * log(0.5*(exp(-lam*low)+exp(-lam*high)));      mid = ABS(mid);      if (mid - floor(mid) > .4999) {	mid = ceil(mid);      } else {	mid = floor(mid);      }      if (level<0) {mid = -mid;}/*printf("(%2.1lf-%2.1lf): old: %d vs %d\n",low,high,coeff,(int) mid);*/      coeff = mid;      if ( (coeff & 1) == 0 ) {	if ( coeff < 0 ) {	  coeff++;	} else if ( coeff > 0 ) {	  coeff--;	}      }      ((int16 *)out)[position] = coeff;    }}int mse(Block blk1, Block blk2){  register int index, error, tmp;  int16 *bp1, *bp2;  bp1 = (int16 *)blk1;  bp2 = (int16 *)blk2;  error = 0;  for ( index = 0;  index < DCTSIZE_SQ;  index++ ) {    tmp = *bp1++ - *bp2++;    error += tmp*tmp;  }  return error;}/*===========================================================================* * * Tune_Init * *     Do any setup needed before coding stream * * RETURNS:	nothing * * SIDE EFFECTS:  varies * *===========================================================================*/void Tune_Init(){  int i;  /* Just check for each, and do whats needed */  if (collect_quant) {    if (!pureDCT) {      pureDCT = TRUE;      init_idctref();      init_fdct();    }    fprintf(collect_quant_fp, "# %s\n", outputFileName);    fprintf(collect_quant_fp, "#");    for (i=0; i<64; i++)       fprintf(collect_quant_fp, " %d", qtable[i]);    fprintf(collect_quant_fp, "\n#");    for (i=0; i<64; i++)       fprintf(collect_quant_fp, " %d", niqtable[i]);    fprintf(collect_quant_fp, "\n# %d %d %d\n\n", 	    GetIQScale(), GetPQScale(), GetBQScale());      }  if (DoLaplace) {    if (!pureDCT) {      pureDCT = TRUE;      init_idctref();      init_fdct();    }    decodeRefFrames = TRUE;    printSNR = TRUE;  }    }/*===========================================================================* * * ParseTuneParam * *     Handle the strings following TUNE * * RETURNS:	nothing * * SIDE EFFECTS:  varies * *===========================================================================*/void ParseTuneParam(const char * const charPtr){  switch (ASCII_TOUPPER(*charPtr)) {  case 'B':     if (1 != sscanf(charPtr+2, "%d", &block_bound)) {      fprintf(stderr, "Invalid tuning parameter (b) in parameter file.\n");    }    break;  case 'C':    SetupCollectQuantStats(charPtr+2);    break;  case 'D':    SetupLocalDCT(SkipSpacesTabs(charPtr+1));    break;  case 'K':    SetupKillDimAreas(SkipSpacesTabs(charPtr+1));    break;  case 'L':    SetupLaplace();    break;  case 'N':    SearchCompareMode = NO_DC_SEARCH;    break;  case 'Q':    SearchCompareMode = DO_Mean_Squared_Distortion;    break;  case 'S':    SetupSquashSmall(SkipSpacesTabs(charPtr+1));    break;  case 'W':    SetupWriteDistortions(SkipSpacesTabs(charPtr+1));    break;  case 'U':    BSkipBlocks = FALSE;    break;  case 'Z':     IntraPBAllowed = FALSE;    break;  default:    fprintf(stderr, "Unknown tuning (%s) in parameter file.\n",charPtr);    break;  }}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服丝袜国产精品| 一区二区三区不卡视频在线观看| 国产精品亲子伦对白| 一区二区理论电影在线观看| 精品无码三级在线观看视频| 久久精品一级爱片| 一区二区三区国产精品| 国产成人av电影免费在线观看| 91精品国产色综合久久久蜜香臀| 国产日韩欧美制服另类| 免费高清在线视频一区·| 日本韩国一区二区三区| 国产精品久久久久婷婷| 蜜桃视频在线观看一区二区| 欧美伊人精品成人久久综合97| 亚洲国产精品成人综合| 看电视剧不卡顿的网站| 欧美美女黄视频| 亚洲国产综合色| 色综合天天综合网天天狠天天 | 99re热这里只有精品免费视频 | 久久精品一区二区三区不卡牛牛| 偷拍日韩校园综合在线| 欧美最猛性xxxxx直播| 亚洲精品免费在线观看| 91丨国产丨九色丨pron| 亚洲欧洲另类国产综合| 99精品视频在线观看| 中文字幕 久热精品 视频在线| 国产一区二区三区| 日韩欧美国产三级| 九九视频精品免费| www日韩大片| 国产·精品毛片| 中文字幕一区二区三区四区| 91啪在线观看| 亚洲综合激情网| 在线播放国产精品二区一二区四区 | 日韩一区欧美一区| 波多野结衣精品在线| 国产精品国产三级国产有无不卡| www.欧美.com| 亚洲最大成人网4388xx| 欧美三级欧美一级| 日本特黄久久久高潮 | 91美女片黄在线观看91美女| 亚洲欧美国产毛片在线| 欧美性一级生活| 免费亚洲电影在线| 国产午夜三级一区二区三| 成人av在线网| 丝袜诱惑制服诱惑色一区在线观看| 在线观看91av| 国产精品亚洲一区二区三区在线| 国产精品久久久久久久久图文区| 在线欧美一区二区| 免费精品视频在线| 国产精品久久久久久久第一福利| 欧美伊人精品成人久久综合97| 日韩av不卡一区二区| 久久久精品免费观看| 日本韩国一区二区三区视频| 久久er精品视频| 亚洲精品亚洲人成人网在线播放| 欧美一区二区在线免费播放| 国产精品一区二区三区网站| 一区二区三区蜜桃| 精品久久久久久久人人人人传媒| 成人av电影在线观看| 亚洲成人动漫av| 国产欧美精品国产国产专区| 欧美伊人久久久久久久久影院| 国产一区二区精品久久99| 一区二区三区中文字幕精品精品 | 久久精品无码一区二区三区| 91黄色激情网站| 国产在线一区观看| 亚洲综合色网站| 欧美国产精品劲爆| 欧美一区二区精品| 91免费视频网| 岛国精品在线播放| 免费人成在线不卡| 亚洲午夜羞羞片| 国产精品天干天干在观线| 日韩午夜三级在线| 欧美日产在线观看| 91色婷婷久久久久合中文| 韩国三级中文字幕hd久久精品| 亚洲午夜国产一区99re久久| 国产精品国产三级国产有无不卡| 精品日韩99亚洲| 777奇米四色成人影色区| 色呦呦一区二区三区| 成人a免费在线看| 国产一区二区精品在线观看| 色综合天天综合在线视频| 国产一区二区三区久久悠悠色av| 亚洲第一激情av| 亚洲一区二区三区四区在线 | 久久综合九色综合欧美亚洲| 欧美老年两性高潮| 在线亚洲精品福利网址导航| 99久久精品国产导航| 粉嫩嫩av羞羞动漫久久久| 狠狠色综合播放一区二区| 美女在线观看视频一区二区| 丝袜亚洲另类欧美| 日韩精品视频网| 免费高清在线一区| 人人超碰91尤物精品国产| 日韩影院在线观看| 日本欧美一区二区三区乱码| 五月天欧美精品| 日本vs亚洲vs韩国一区三区二区| 亚洲二区视频在线| 亚洲成人精品一区| 日日摸夜夜添夜夜添国产精品| 亚洲妇女屁股眼交7| 午夜av区久久| 日本午夜精品一区二区三区电影 | 樱桃国产成人精品视频| 亚洲同性gay激情无套| 亚洲综合小说图片| 视频在线观看国产精品| 免费一级片91| 国产传媒欧美日韩成人| 不卡的av在线| 欧美午夜一区二区三区免费大片| 欧美日韩一区二区电影| 91精品国产综合久久国产大片| 欧美一区二区三区色| 久久婷婷色综合| 最新日韩在线视频| 性久久久久久久| 国产黄色精品视频| 色综合中文综合网| 国产亚洲一区二区三区四区| 国产精品午夜久久| 亚洲一二三区不卡| 精品一区二区久久| 91亚洲精品久久久蜜桃| 欧美剧情片在线观看| 久久中文字幕电影| 国产精品一区一区| 日本久久精品电影| 日韩精品专区在线影院观看| 国产精品久久久爽爽爽麻豆色哟哟| 一区二区三区四区在线播放| 秋霞电影一区二区| 成人福利视频网站| 欧美久久久久免费| 欧美韩日一区二区三区| 天堂一区二区在线| 国产一区二区在线影院| 在线观看亚洲成人| 久久久高清一区二区三区| 一区二区三区在线观看动漫| 狠狠色狠狠色综合日日91app| 91麻豆免费视频| 久久品道一品道久久精品| 亚洲第一二三四区| 国产成人鲁色资源国产91色综| 精品视频在线看| 国产精品嫩草影院av蜜臀| 免费观看一级特黄欧美大片| 91啪在线观看| 久久精品人人做人人综合 | 亚洲综合在线五月| 国产v综合v亚洲欧| 日韩午夜小视频| 成人性色生活片| 日韩午夜激情视频| 亚洲午夜电影在线观看| 成人精品视频一区二区三区 | 欧美最新大片在线看| 国产区在线观看成人精品 | 136国产福利精品导航| 经典一区二区三区| 51精品秘密在线观看| 一区二区三区四区在线| 99国产精品视频免费观看| 久久嫩草精品久久久精品一| 日产精品久久久久久久性色| 色综合久久久久| 亚洲色图色小说| 成人av在线资源网| 国产精品传媒视频| 成人少妇影院yyyy| 国产女人aaa级久久久级| 精品一区二区三区香蕉蜜桃| 欧美一区二区免费视频| 亚洲国产wwwccc36天堂| 在线看一区二区| 亚洲人成伊人成综合网小说| 97超碰欧美中文字幕| 中文字幕亚洲综合久久菠萝蜜| 成人午夜短视频| 国产精品久久久久一区二区三区共| 成人午夜精品一区二区三区|