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

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

?? rdwtblock.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. *  *//* *  This code was written by Joe Boettcher <jbb15@msstate.edu> based on *  the originally developed algorithm and code by Suxia Cui. */#include "libQccPack.h"#ifdef LIBQCCPACKSPIHT_H#define QCCVIDRDWTBLOCK_WINDOWSIZE 15typedef struct{  int blocksize;  QccMatrix block;} QccVIDRDWTBlockBlock;typedef struct{  int intraframe;  int motion_vector_bits;  int intraframe_bits;} QccVIDRDWTBlockStatistics;static void QccVIDRDWTBlockBlockInitialize(QccVIDRDWTBlockBlock *block){  block->blocksize = 0;  block->block = NULL;}static int QccVIDRDWTBlockBlockAlloc(QccVIDRDWTBlockBlock *block){  if ((block->block =       QccMatrixAlloc(block->blocksize, block->blocksize)) == NULL)    {      QccErrorAddMessage("(QccVIDRDWTBlockBlockAlloc): Error calling QccMatrixAlloc()");      return(1);    }  return(0);}static void QccVIDRDWTBlockBlockFree(QccVIDRDWTBlockBlock *block){  QccMatrixFree(block->block, block->blocksize);}static void QccVIDRDWTBlockPrintStatistics(const QccVIDRDWTBlockStatistics                                           *statistics){  int total_bits;  int field_width;  total_bits =    statistics->motion_vector_bits + statistics->intraframe_bits;  field_width = (int)ceil(log10((double)total_bits));  printf("            Frame type: ");  if (statistics->intraframe)    printf("I\n");  else    printf("P\n");  printf("    Motion-vector bits: %*d (%5.1f%%)\n",         field_width,         statistics->motion_vector_bits,         QccMathPercent(statistics->motion_vector_bits, total_bits));  printf("       Intraframe bits: %*d (%5.1f%%)\n",         field_width,         statistics->intraframe_bits,         QccMathPercent(statistics->intraframe_bits, total_bits));  printf("\n");}static double QccVIDRDWTBlockMAE(QccVIDRDWTBlockBlock *block1,                                 QccVIDRDWTBlockBlock *block2,                                 int num_levels){  int row, col;  double mae = 0;  int level;  int index_skip = 1;  double scale_factor;  for (level = 1; level <= num_levels; level++)    {      index_skip = (1 << level);      scale_factor = 1.0 / index_skip;      for (row = 0; row < (block1->blocksize / index_skip);           row++)        for (col = 0; col < (block1->blocksize / index_skip);             col++)          {            //HL            mae += scale_factor *              fabs(block1->block                   [row][block1->blocksize / index_skip + col] -                   block2->block                   [row][block1->blocksize / index_skip + col]);            //LH            mae += scale_factor *              fabs(block1->block                   [block1->blocksize / index_skip + row][col] -                   block2->block                   [block1->blocksize / index_skip + row][col]);             //HH            mae += scale_factor *              fabs(block1->block                   [block1->blocksize / index_skip + row]                   [block1->blocksize / index_skip + col] -                   block2->block                   [block1->blocksize / index_skip + row]                   [block1->blocksize / index_skip + col]);          }    }    //LL    scale_factor = 1.0 / index_skip;  for (row = 0; row < (block1->blocksize / index_skip); row++)    for (col = 0; col < (block1->blocksize / index_skip); col++)      mae += scale_factor *        fabs(block1->block[row][col] - block2->block[row][col]);    return(mae);}static double QccVIDRDWTBlockExtractCoefficient(QccWAVSubbandPyramid                                                *subband_pyramid,                                                int row,                                                int col){  if (row < 0)    row = 0;  else    if (row >= subband_pyramid->num_rows)      row = subband_pyramid->num_rows - 1;  if (col < 0)    col = 0;  else    if (col >= subband_pyramid->num_cols)      col = subband_pyramid->num_cols - 1;  return(subband_pyramid->matrix[row][col]);}static int QccVIDRDWTBlockExtractBlock(QccWAVSubbandPyramid *subband_pyramid,                                       QccVIDRDWTBlockBlock *wavelet_block,                                       int ref_offset_row,                                        int ref_offset_col,                                       int num_rows,                                        int num_cols,                                       int num_levels){  int row, col;  int offset_row, offset_col;  int level;  int index_skip;  int pattern;  int row_pattern, col_pattern;  int v, h;    index_skip = (1 << num_levels);  offset_row = ref_offset_row / index_skip;  offset_col = ref_offset_col / index_skip;  row_pattern = QccMathModulus(ref_offset_row, index_skip);  col_pattern = QccMathModulus(ref_offset_col, index_skip);    for (level = 1; level <= num_levels; level++)    {      index_skip = (1 << level);      offset_row = ref_offset_row / index_skip;      offset_col = ref_offset_col / index_skip;      pattern = (1 << (level - 1));      v = (row_pattern & pattern) / pattern;      h = (col_pattern & pattern) / pattern;            for (row = 0; row < (wavelet_block->blocksize / index_skip);           row++)	for (col = 0; col < (wavelet_block->blocksize / index_skip);             col++)          {	    //HL	    wavelet_block->block              [row][wavelet_block->blocksize / index_skip + col] =              QccVIDRDWTBlockExtractCoefficient(subband_pyramid,                                                offset_row + row,                                                num_cols / index_skip +                                                offset_col + col + h);	    //LH	    wavelet_block->block              [wavelet_block->blocksize / index_skip + row][col] =	      QccVIDRDWTBlockExtractCoefficient(subband_pyramid,                                                num_rows / index_skip +                                                offset_row + row + v,                                                offset_col + col);	    //HH	    wavelet_block->block              [wavelet_block->blocksize / index_skip + row]              [wavelet_block->blocksize / index_skip + col] =	      QccVIDRDWTBlockExtractCoefficient(subband_pyramid,                                                num_rows / index_skip +                                                offset_row + row + v,                                                num_cols / index_skip +                                                offset_col + col + h);	  }    }    //LL  for (row = 0; row < (wavelet_block->blocksize / index_skip); row++)    for (col = 0; col < (wavelet_block->blocksize / index_skip); col++)      wavelet_block->block[row][col] =        QccVIDRDWTBlockExtractCoefficient(subband_pyramid,                                          offset_row + row,                                          offset_col + col);    return(0);}static int QccVIDRDWTBlockInsertBlock(QccWAVSubbandPyramid *subband_pyramid,                                      QccVIDRDWTBlockBlock *wavelet_block,                                      int ref_offset_row,                                       int ref_offset_col,                                      int num_rows,                                      int num_cols,                                      int num_levels){  int row, col;  int offset_row, offset_col;  int level;  int index_skip;    index_skip = (1 << num_levels);  offset_row = ref_offset_row / index_skip;  offset_col = ref_offset_col / index_skip;  for (level = 1; level <= num_levels; level++)    {      index_skip = (1 << level);      offset_row = ref_offset_row / index_skip;      offset_col = ref_offset_col / index_skip;            for (row = 0; row < (wavelet_block->blocksize / index_skip);           row++)	for (col = 0; col < (wavelet_block->blocksize / index_skip);             col++)          {	    //HL	    subband_pyramid->matrix              [offset_row + row][num_cols / index_skip + offset_col + col] =	      wavelet_block->block              [row][wavelet_block->blocksize / index_skip + col];	    //LH	    subband_pyramid->matrix              [num_rows / index_skip + offset_row + row][offset_col + col] = 	      wavelet_block->block              [wavelet_block->blocksize / index_skip + row][col];	    //HH	    subband_pyramid->matrix              [num_rows / index_skip + offset_row + row]              [num_cols / index_skip + offset_col + col] =	      wavelet_block->block              [wavelet_block->blocksize / index_skip + row]              [wavelet_block->blocksize / index_skip + col];	  }    }    //LL  for (row = 0; row < (wavelet_block->blocksize / index_skip); row++)    for (col = 0; col < (wavelet_block->blocksize / index_skip); col++)      subband_pyramid->matrix[offset_row + row][offset_col + col] =        wavelet_block->block[row][col];    return(0);}static QccWAVSubbandPyramid ****QccVIDRDWTBlockRDWTPhasesAlloc(int num_levels,                                                               int num_rows,                                                               int num_cols,                                                               int subpixel_accuracy){  QccWAVSubbandPyramid ****rdwt_phases = NULL;  int num_phases;  int phase_row, phase_col;  int num_subpixels;  int subpixel_row, subpixel_col;    switch (subpixel_accuracy)    {    case QCCVID_ME_FULLPIXEL:      num_subpixels = 1;      break;    case QCCVID_ME_HALFPIXEL:      num_subpixels = 2;      break;    case QCCVID_ME_QUARTERPIXEL:      num_subpixels = 4;      break;    case QCCVID_ME_EIGHTHPIXEL:      num_subpixels = 8;      break;    default:      QccErrorAddMessage("(QccVIDRDWTBlockRDWTPhasesAlloc): Unrecognized subpixel accuracy");      return(NULL);    }  num_phases = (1 << num_levels);    if ((rdwt_phases =       (QccWAVSubbandPyramid ****)calloc(num_subpixels,                                         sizeof(QccWAVSubbandPyramid ***))) ==      NULL)    {      QccErrorAddMessage("(QccVIDRDWTBlockRDWTPhasesAlloc): Error allocating memory");      return(NULL);    }  for (subpixel_row = 0; subpixel_row < num_subpixels; subpixel_row++)    {      if ((rdwt_phases[subpixel_row] =           (QccWAVSubbandPyramid ***)calloc(num_subpixels,                                            sizeof(QccWAVSubbandPyramid **)))          == NULL)        {          QccErrorAddMessage("(QccVIDRDWTBlockRDWTPhasesAlloc): Error allocating memory");          return(NULL);        }            for (subpixel_col = 0; subpixel_col < num_subpixels; subpixel_col++)        {          if ((rdwt_phases[subpixel_row][subpixel_col] =

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲天堂av老司机| 亚洲男人天堂av| 欧美一区二区三区视频免费播放| 97se狠狠狠综合亚洲狠狠| 成人aa视频在线观看| www.av亚洲| 一本到不卡免费一区二区| 99精品国产91久久久久久| 色天天综合久久久久综合片| 色噜噜狠狠一区二区三区果冻| 色老头久久综合| 69精品人人人人| 日韩你懂的在线观看| 久久久一区二区| 亚洲视频中文字幕| 亚洲成av人在线观看| 美女网站视频久久| 国产成人综合在线播放| 色视频一区二区| 欧美一区二区三区视频免费| 国产视频在线观看一区二区三区| 中文字幕一区二区在线观看| 亚洲一区二区三区在线播放| 免费在线观看不卡| 成人精品国产福利| 欧美人妖巨大在线| 国产午夜精品一区二区| 夜夜亚洲天天久久| 狠狠色丁香久久婷婷综合_中| 99久久综合狠狠综合久久| 欧美色成人综合| 国产天堂亚洲国产碰碰| 一区二区在线免费观看| 久久er精品视频| 在线观看视频一区二区| 精品国产一区二区三区av性色| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 蜜臀av一区二区在线观看| 午夜在线电影亚洲一区| 国产精品一区二区在线观看网站| 91女神在线视频| 久久免费视频色| 日韩精品国产精品| av一区二区久久| 精品国产凹凸成av人网站| 一区二区三区国产精品| 成人少妇影院yyyy| 亚洲精品一区二区在线观看| 亚洲资源在线观看| av动漫一区二区| 久久影院视频免费| 免播放器亚洲一区| 欧美日韩一级二级三级| 日韩一区在线看| 成人一区二区三区在线观看| 91精品国产品国语在线不卡| 一区二区在线观看视频| 成人毛片视频在线观看| 久久久久成人黄色影片| 理论电影国产精品| 91麻豆精品国产91| 天堂在线一区二区| 在线国产电影不卡| 亚洲制服丝袜一区| 91激情五月电影| 一区二区久久久久| 色综合久久综合| 亚洲男女毛片无遮挡| 成人av网站大全| 中文字幕亚洲一区二区av在线 | 国产精品一线二线三线| 26uuu精品一区二区三区四区在线| 日韩精品免费专区| 欧美一区二区视频在线观看2020| 亚洲一级二级三级| 欧美日韩黄视频| 日本欧美大码aⅴ在线播放| 7777精品伊人久久久大香线蕉经典版下载 | 国产成人av电影在线| 久久婷婷国产综合精品青草| 久久99国产乱子伦精品免费| 91精品国产一区二区三区香蕉| 图片区小说区区亚洲影院| 欧美日韩精品一区二区三区蜜桃| 亚洲国产精品久久艾草纯爱| 欧美日韩精品一二三区| 日韩和欧美一区二区| 久久青草国产手机看片福利盒子| 国产一区在线精品| 国产精品国产成人国产三级| 91蜜桃婷婷狠狠久久综合9色| 一区二区三区四区不卡视频| 欧美日韩国产bt| 久热成人在线视频| 国产亚洲成aⅴ人片在线观看| 成人福利视频在线| 亚洲v中文字幕| 久久综合久久综合亚洲| caoporm超碰国产精品| 亚洲一级不卡视频| 久久亚洲综合av| 91色视频在线| 久久精品999| 亚洲大尺度视频在线观看| 在线播放/欧美激情| 国产精品自拍av| 亚洲国产一区视频| 久久久久久久久久久久久夜| 91麻豆精品视频| 九一九一国产精品| 一区二区三区精品视频在线| 精品福利一区二区三区 | 欧美精品久久久久久久多人混战| 美女www一区二区| 一区二区在线观看av| 精品久久久久久久一区二区蜜臀| 91色乱码一区二区三区| 国产一区福利在线| 五月天视频一区| 亚洲三级在线观看| 国产欧美日韩中文久久| 在线综合+亚洲+欧美中文字幕| 成人一区二区视频| 国产一区三区三区| 青青草国产成人99久久| 亚洲精品中文字幕乱码三区| 国产亚洲精品bt天堂精选| 91 com成人网| 日本道精品一区二区三区 | 综合激情网...| 久久久久久久久久久电影| 678五月天丁香亚洲综合网| av一区二区不卡| 国产a区久久久| 国产精一区二区三区| 久久99精品久久只有精品| 日产欧产美韩系列久久99| 一区二区三区四区五区视频在线观看| 久久久电影一区二区三区| 日韩免费一区二区三区在线播放| 欧美日韩专区在线| 在线中文字幕不卡| 色综合久久久久综合体| 99re热这里只有精品免费视频| 国产在线播精品第三| 久久国产三级精品| 经典三级在线一区| 国产一区二区中文字幕| 国产又粗又猛又爽又黄91精品| 蜜桃av一区二区| 久久精品理论片| 国产综合久久久久影院| 精品在线免费视频| 国产一区福利在线| 成人一二三区视频| 成人免费av网站| 91色porny| 欧美老年两性高潮| 91精品国产高清一区二区三区| 欧美精品久久99久久在免费线| 538prom精品视频线放| 9191久久久久久久久久久| 3atv在线一区二区三区| 正在播放亚洲一区| 精品久久久久久综合日本欧美| www国产精品av| 久久精品在线免费观看| ...av二区三区久久精品| 一区二区三区色| 婷婷六月综合网| 黑人精品欧美一区二区蜜桃| 国产高清不卡一区| 91影院在线免费观看| 欧美日韩亚州综合| 久久久久久免费网| 亚洲精选视频免费看| 午夜精品福利视频网站| 韩国一区二区在线观看| www..com久久爱| 69堂成人精品免费视频| 国产拍揄自揄精品视频麻豆| 亚洲四区在线观看| 美腿丝袜一区二区三区| 成人高清av在线| 欧美欧美午夜aⅴ在线观看| 2023国产一二三区日本精品2022| 国产亚洲va综合人人澡精品| 亚洲国产精品嫩草影院| 国产一区在线精品| 欧美私人免费视频| 久久精品一区四区| 亚洲一区二区影院| 高清不卡一二三区| 制服丝袜一区二区三区| 国产精品久久久久久久久快鸭| 亚洲狠狠爱一区二区三区| 国产高清精品在线| 日韩欧美电影一区| 一区二区三区高清不卡| 国产在线精品免费av|