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

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

?? bisk.c

?? QccPack implementation in C
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* *  * QccPack: Quantization, compression, and coding libraries * Copyright (C) 1997-2005  James E. Fowler *  * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. *  * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Library General Public License for more details. *  * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, * MA 02139, USA. *  */#include "libQccPack.h"#define QCCBISK_BOUNDARY_VALUE 0#define QCCBISK_INSIGNIFICANT 0#define QCCBISK_SIGNIFICANT 1#define QCCBISK_NEWLY_SIGNIFICANT 2#define QCCBISK_EMPTYSET 3#define QCCBISK_POSITIVE 0#define QCCBISK_NEGATIVE 1#define QCCBISK_MAXBITPLANES 128#define QCCBISK_CONTEXT_NOCODE -1#define QCCBISK_CONTEXT_SIGNIFICANCE 0#define QCCBISK_CONTEXT_SIGNIFICANCE_SUBSET1 1#define QCCBISK_CONTEXT_SIGNIFICANCE_SUBSET2 2#define QCCBISK_CONTEXT_SIGN 3#define QCCBISK_CONTEXT_REFINEMENT 4#define QCCBISK_NUM_CONTEXTS 5static const int QccWAVbiskNumSymbols[] =  { 2, 2, 2, 2, 2 };typedef struct{  int level;  int origin_row;  int origin_col;  int num_rows;  int num_cols;  char significance;} QccWAVbiskSet;typedef struct{  QccWAVSubbandPyramid original_coefficients;  QccWAVSubbandPyramid reconstructed_coefficients;  QccWAVSubbandPyramid squared_errors;  double distortion;  int num_pixels;  int start_position;  FILE *file;} QccWAVbiskDistortionTrace;static int QccWAVbiskTransparent(const QccWAVSubbandPyramid *mask,                                 int row, int col){  if (mask == NULL)    return(0);  return(QccAlphaTransparent(mask->matrix[row][col]));}static void QccWAVbiskDistortionTraceInitialize(QccWAVbiskDistortionTrace                                                *distortion_trace,                                                QccWAVSubbandPyramid                                                *original_coefficients,                                                QccWAVSubbandPyramid                                                *mask,                                                QccBitBuffer *output_buffer,                                                FILE *outfile){  int row, col;    QccWAVSubbandPyramidInitialize(&distortion_trace->original_coefficients);  QccWAVSubbandPyramidInitialize(&distortion_trace->reconstructed_coefficients);  QccWAVSubbandPyramidInitialize(&distortion_trace->squared_errors);    QccWAVSubbandPyramidCopy(&distortion_trace->original_coefficients,                           original_coefficients);  QccWAVSubbandPyramidCopy(&distortion_trace->reconstructed_coefficients,                           original_coefficients);  QccWAVSubbandPyramidCopy(&distortion_trace->squared_errors,                           original_coefficients);    QccMatrixZero(distortion_trace->reconstructed_coefficients.matrix,                distortion_trace->reconstructed_coefficients.num_rows,                distortion_trace->reconstructed_coefficients.num_cols);      distortion_trace->distortion = 0;  distortion_trace->num_pixels = 0;  distortion_trace->start_position = output_buffer->bit_cnt;  for (row = 0; row < distortion_trace->squared_errors.num_rows; row++)    for (col = 0; col < distortion_trace->squared_errors.num_cols; col++)      if (!QccWAVbiskTransparent(mask, row, col))        {          distortion_trace->squared_errors.matrix[row][col] *=            distortion_trace->squared_errors.matrix[row][col];          distortion_trace->distortion +=            distortion_trace->squared_errors.matrix[row][col];          distortion_trace->num_pixels++;        }    distortion_trace->file = outfile;    fprintf(outfile,          "      Rate (bpp)\t      MSE\n");  fprintf(outfile,          "--------------------------------------------\n");}static void QccWAVbiskDistortionTraceUpdate(QccWAVbiskDistortionTrace                                            *distortion_trace,                                            int row,                                            int col,                                            QccBitBuffer *buffer){  double diff;    QccMatrix original_coefficients =    distortion_trace->original_coefficients.matrix;  QccMatrix reconstructed_coefficients =    distortion_trace->reconstructed_coefficients.matrix;  QccMatrix squared_errors =    distortion_trace->squared_errors.matrix;    distortion_trace->distortion -= squared_errors[row][col];  diff = original_coefficients[row][col] -     reconstructed_coefficients[row][col];  squared_errors[row][col] = diff * diff;  distortion_trace->distortion += squared_errors[row][col];    fprintf(distortion_trace->file,          "%16.6f\t%16.6f\n",          (double)(buffer->bit_cnt - distortion_trace->start_position) /          distortion_trace->num_pixels,          distortion_trace->distortion / distortion_trace->num_pixels);}static int QccWAVbiskSetIsPixel(QccWAVbiskSet *set){  if ((set->num_rows == 1) && (set->num_cols == 1))    return(1);    return(0);}#if 0static void QccWAVbiskSetPrint(const QccWAVbiskSet *set){  printf("<%d,%d,%d,%d,%d,%c>\n",         set->level,         set->origin_row,         set->origin_col,         set->num_rows,         set->num_cols,         ((set->significance == QCCBISK_INSIGNIFICANT) ? 'i' :          ((set->significance == QCCBISK_SIGNIFICANT) ? 's' : 'S')));}static void QccWAVbiskLISPrint(const QccList *LIS){  QccListNode *current_list_node;  QccList *current_list;  QccListNode *current_set_node;  QccWAVbiskSet *current_set;  int level = 0;  printf("LIS:\n");  current_list_node = LIS->start;  while (current_list_node != NULL)    {      printf("Level %d:\n", level++);      current_list = (QccList *)(current_list_node->value);      current_set_node = current_list->start;      while (current_set_node != NULL)        {          current_set = (QccWAVbiskSet *)(current_set_node->value);          QccWAVbiskSetPrint(current_set);          current_set_node = current_set_node->next;        }      current_list_node = current_list_node->next;    }  printf("===============================================\n");  fflush(stdout);}static void QccWAVbiskLSPPrint(const QccList *LSP){  QccListNode *current_set_node;  QccWAVbiskSet *current_set;  printf("LSP:\n");    current_set_node = LSP->start;  while (current_set_node != NULL)    {      current_set = (QccWAVbiskSet *)(current_set_node->value);      QccWAVbiskSetPrint(current_set);      current_set_node = current_set_node->next;    }  printf("===============================================\n");  fflush(stdout);}#endifstatic int QccWAVbiskSetShrink(QccWAVbiskSet *set,                               const QccWAVSubbandPyramid *mask){  int row;  int col;  int min_row = MAXINT;  int min_col = MAXINT;  int max_row = -MAXINT;  int max_col = -MAXINT;  int totally_transparent = 1;  if (mask == NULL)    {      if ((!set->num_rows) || (!set->num_cols))        return(2);      else        return(0);    }  for (row = 0; row < set->num_rows; row++)    for (col = 0; col < set->num_cols; col++)      if (!QccWAVbiskTransparent(mask,                                 row + set->origin_row,                                 col + set->origin_col))        {          totally_transparent = 0;          max_row = QccMathMax(max_row, row + set->origin_row);          max_col = QccMathMax(max_col, col + set->origin_col);                    min_row = QccMathMin(min_row, row + set->origin_row);          min_col = QccMathMin(min_col, col + set->origin_col);        }    if (totally_transparent)    return(2);  set->origin_row = min_row;  set->origin_col = min_col;  set->num_rows = max_row - min_row + 1;  set->num_cols = max_col - min_col + 1;  return(0);}static int QccWAVbiskSetSize(QccWAVbiskSet *set,                             const QccWAVSubbandPyramid *coefficients,                             const QccWAVSubbandPyramid *mask,                             int subband){  int return_value;  if (QccWAVSubbandPyramidSubbandOffsets(coefficients,                                         subband,                                         &set->origin_row,                                         &set->origin_col))    {      QccErrorAddMessage("(QccWAVbiskSetSize): Error calling QccWAVSubbandPyramidSubbandOffsets()");      return(1);    }  if (QccWAVSubbandPyramidSubbandSize(coefficients,                                      subband,                                      &set->num_rows,                                      &set->num_cols))    {      QccErrorAddMessage("(QccWAVbiskSetSize): Error calling QccWAVSubbandPyramidSubbandSize()");      return(1);    }    return_value = QccWAVbiskSetShrink(set, mask);    if (return_value == 2)    return(2);  else    if (return_value == 1)      {        QccErrorAddMessage("(QccWAVbiskSetSize): Error calling QccWAVShapeAdaptiveMaskBoundingBox()");        return(1);      }  return(0);}static int QccWAVbiskLengthenLIS(QccList *LIS){  QccList new_list;  QccListNode *new_list_node;  QccListInitialize(&new_list);  if ((new_list_node = QccListCreateNode(sizeof(QccList),                                         &new_list)) == NULL)    {      QccErrorAddMessage("(QccWAVbiskLengthenLIS): Error calling QccListCreateNode()");      return(1);    }  if (QccListAppendNode(LIS, new_list_node))    {      QccErrorAddMessage("(QccWAVbiskLengthenLIS): Error calling QccListAppendNode()");      return(1);    }  return(0);}static int QccWAVbiskInsertSet(QccList *LIS,                               QccWAVbiskSet *set,                               QccListNode **list_node,                               QccListNode **set_node){  QccListNode *new_set_node;  QccListNode *current_list_node;  QccList *current_list;  int level;  if ((new_set_node = QccListCreateNode(sizeof(QccWAVbiskSet), set)) == NULL)    {      QccErrorAddMessage("(QccWAVbiskInsertSet): Error calling QccListCreateNode()");      return(1);    }  current_list_node = LIS->start;  for (level = set->level; (current_list_node != NULL) && level; level--)    {      if (current_list_node->next == NULL)        if (QccWAVbiskLengthenLIS(LIS))          {            QccErrorAddMessage("(QccWAVbiskInsertSet): Error calling QccWAVbiskLengthenLIS()");            return(1);          }      current_list_node = current_list_node->next;    }  current_list = (QccList *)(current_list_node->value);  if (QccListAppendNode(current_list, new_set_node))    {      QccErrorAddMessage("(QccWAVbiskInsertSet): Error calling QccListAppendNode()");      return(1);    }  if (set_node != NULL)    *set_node = new_set_node;  if (list_node != NULL)    *list_node = current_list_node;  return(0);}static int QccWAVbiskInitialization(QccList *LIS,                                    QccList *LSP,                                    const QccWAVSubbandPyramid *coefficients,                                    const QccWAVSubbandPyramid *mask){  QccWAVbiskSet set;  int subband;  int num_subbands;  int return_value;  num_subbands =

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产婷婷色一区二区三区 | 国产suv精品一区二区三区| 在线不卡一区二区| 日韩高清中文字幕一区| 欧美乱妇23p| 免费在线观看视频一区| 884aa四虎影成人精品一区| 免费成人在线观看| 国产无一区二区| 91在线丨porny丨国产| 一区二区三区国产精品| 欧美日韩二区三区| 久久www免费人成看片高清| 久久久噜噜噜久久中文字幕色伊伊 | 99久久精品国产网站| 亚洲三级在线播放| 91 com成人网| 懂色av中文一区二区三区| 亚洲美女视频一区| 91精品国产aⅴ一区二区| 国产精品一二三四| 亚洲宅男天堂在线观看无病毒 | 日韩一区二区三区在线| 国产一区二区剧情av在线| 亚洲人成伊人成综合网小说| 欧美日韩电影一区| 丁香六月久久综合狠狠色| 一二三四社区欧美黄| 精品理论电影在线| 色综合天天在线| 美国十次综合导航| 国产精品五月天| 69p69国产精品| 成人一级黄色片| 日韩精品一级中文字幕精品视频免费观看 | 在线视频综合导航| 国产乱码精品一区二区三区五月婷| 中文字幕一区二区三区乱码在线| 欧美高清你懂得| jiyouzz国产精品久久| 久久精品国产99国产精品| 亚洲欧美日韩中文播放| 久久久777精品电影网影网 | 久久综合九色综合欧美亚洲| 欧美性xxxxxxxx| 99免费精品在线| 国产一区二区毛片| 久久国产人妖系列| 五月婷婷久久丁香| 亚洲欧美视频在线观看视频| 国产欧美日韩在线观看| 日韩欧美在线影院| 欧美日韩一区二区在线观看| 99riav久久精品riav| 国产真实精品久久二三区| 亚洲精品午夜久久久| 91美女蜜桃在线| 94色蜜桃网一区二区三区| 日韩一区二区三区电影在线观看 | 一区二区三区日韩精品| 国产日产亚洲精品系列| 欧美成人激情免费网| 欧美大白屁股肥臀xxxxxx| 91在线小视频| 国产精品一二三| 亚瑟在线精品视频| 亚洲精品综合在线| 亚洲欧洲日韩在线| 中日韩免费视频中文字幕| 国产午夜亚洲精品午夜鲁丝片| 91精品国产综合久久蜜臀| 欧美少妇一区二区| 在线精品亚洲一区二区不卡| 91免费看`日韩一区二区| 成人激情小说乱人伦| 高清不卡一二三区| 成人少妇影院yyyy| 成人av午夜电影| av高清不卡在线| 91在线观看污| 色8久久精品久久久久久蜜| 色综合一个色综合亚洲| 欧美自拍偷拍一区| 日本道在线观看一区二区| 色菇凉天天综合网| 欧美人狂配大交3d怪物一区| 欧美日韩高清一区| 欧美理论电影在线| 日韩精品一区二区三区四区视频| 精品国免费一区二区三区| 精品第一国产综合精品aⅴ| 久久综合久久综合亚洲| 久久精品一区二区| 国产精品高清亚洲| 亚洲欧美在线高清| 亚洲无线码一区二区三区| 视频一区二区不卡| 国产美女在线观看一区| av福利精品导航| 欧美人妖巨大在线| 久久久精品国产免费观看同学| 国产女同互慰高潮91漫画| 尤物av一区二区| 免费在线看成人av| 丁香婷婷深情五月亚洲| 在线看日韩精品电影| 欧美成人乱码一区二区三区| 国产日韩欧美精品综合| 一区二区三区久久| 免费在线观看成人| 成人中文字幕在线| 欧美精品在线视频| 久久亚洲综合色一区二区三区| 亚洲色大成网站www久久九九| 亚洲成人在线免费| 国产一区在线视频| 在线视频你懂得一区二区三区| 欧美一级二级在线观看| 国产精品国模大尺度视频| 视频一区在线视频| 成人av在线看| 日韩精品一区二区三区四区视频| 自拍偷拍国产亚洲| 久久狠狠亚洲综合| 日本乱人伦一区| 久久综合九色综合97婷婷 | 高清av一区二区| 欧美日韩不卡视频| 欧美经典一区二区| 婷婷六月综合亚洲| av在线综合网| 日韩精品影音先锋| 亚洲成人自拍偷拍| 99精品久久只有精品| 精品日韩在线观看| 亚洲成人免费观看| 99热99精品| 日本一区二区免费在线观看视频| 日韩电影网1区2区| 91成人在线免费观看| 精品99久久久久久| 亚洲bt欧美bt精品777| 91视视频在线观看入口直接观看www | 久久综合色一综合色88| 奇米888四色在线精品| 色哟哟国产精品| 中文字幕亚洲电影| 成人小视频免费在线观看| 精品国产91亚洲一区二区三区婷婷| 亚洲国产视频在线| 色8久久人人97超碰香蕉987| 中文欧美字幕免费| 国产精品1区二区.| 久久综合九色欧美综合狠狠| 久久99国内精品| 日韩欧美色综合网站| 偷拍一区二区三区四区| 欧美一a一片一级一片| 亚洲精品一二三| 欧洲av一区二区嗯嗯嗯啊| 亚洲一区二区三区四区中文字幕| 色爱区综合激月婷婷| 亚洲黄色片在线观看| 色av成人天堂桃色av| 亚洲第一精品在线| 欧美日韩精品一区二区| 午夜精品久久一牛影视| 9191久久久久久久久久久| 亚洲国产综合色| 欧美日韩一卡二卡三卡| 午夜激情一区二区三区| 欧美一区二区高清| 蜜桃视频免费观看一区| 精品国产乱码久久久久久1区2区| 久久se这里有精品| 久久精品人人爽人人爽| 国产精品91一区二区| 中文字幕免费观看一区| 91丨porny丨中文| 一区二区三区精品在线| 欧美日韩不卡在线| 久久99国产精品成人| 国产欧美日韩在线| 色老综合老女人久久久| 日本视频一区二区| 久久亚洲一区二区三区四区| 韩国精品在线观看| 国产精品久久网站| 欧美丝袜丝交足nylons图片| 日本成人在线看| 中文字幕免费不卡在线| 在线观看日韩av先锋影音电影院| 亚洲va欧美va人人爽午夜| 亚洲精品在线电影| av在线一区二区三区| 亚洲国产精品久久人人爱| 欧美r级在线观看| 成人av网站大全| 亚洲18女电影在线观看| 久久久蜜臀国产一区二区|