⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tce3d_lossless.c

📁 spiht for linux this is used to decod and encode vedio i wich all enjoy
💻 C
📖 第 1 页 / 共 5 页
字号:
	  if (significance_map[shifted_frame][shifted_row][shifted_col] <              QCCTCE3D_S)	    significance_map[shifted_frame][shifted_row][shifted_col] =              QCCTCE3D_NZN_NEW;	}      {	shifted_frame = current_frame + 1;	shifted_row = current_row;	shifted_col = current_col;	if (significance_map[shifted_frame][shifted_row][shifted_col] <            QCCTCE3D_S)	  significance_map[shifted_frame][shifted_row][shifted_col] =            QCCTCE3D_NZN_NEW;      }    }  //current frame  {    if (row > 0)      {         shifted_frame = current_frame ;         shifted_row = current_row - 1;        shifted_col = current_col;        if (significance_map[shifted_frame][shifted_row][shifted_col] <            QCCTCE3D_S)          significance_map[shifted_frame][shifted_row][shifted_col] =            QCCTCE3D_NZN_NEW;              if (col > 0)          {            shifted_frame = current_frame;            shifted_row = current_row - 1;            shifted_col = current_col - 1;            if (significance_map[shifted_frame][shifted_row][shifted_col] <                QCCTCE3D_S)              significance_map[shifted_frame][shifted_row][shifted_col] =                QCCTCE3D_NZN_NEW;             }        if (col < subband_num_col - 1)          {            shifted_frame = current_frame ;            shifted_row = current_row - 1;            shifted_col = current_col + 1;            if (significance_map[shifted_frame][shifted_row][shifted_col] <                QCCTCE3D_S)              significance_map[shifted_frame][shifted_row][shifted_col] =                QCCTCE3D_NZN_NEW;             }      }    if (row < subband_num_row - 1)      {        shifted_frame = current_frame;        shifted_row = current_row + 1;        shifted_col = current_col;        if (significance_map[shifted_frame][shifted_row][shifted_col] <            QCCTCE3D_S)          significance_map[shifted_frame][shifted_row][shifted_col] =            QCCTCE3D_NZN_NEW;              if (col > 0)          {            shifted_frame = current_frame ;            shifted_row = current_row + 1;            shifted_col = current_col - 1;            if (significance_map[shifted_frame][shifted_row][shifted_col] <                QCCTCE3D_S)              significance_map[shifted_frame][shifted_row][shifted_col] =                QCCTCE3D_NZN_NEW;            }        if (col < subband_num_col - 1)          {            shifted_frame = current_frame ;            shifted_row = current_row + 1;            shifted_col = current_col + 1;            if (significance_map[shifted_frame][shifted_row][shifted_col] <                QCCTCE3D_S)              significance_map[shifted_frame][shifted_row][shifted_col] =                QCCTCE3D_NZN_NEW;             }      }    if (col > 0)      {        shifted_frame = current_frame ;        shifted_row = current_row;        shifted_col = current_col - 1;          if (significance_map[shifted_frame][shifted_row][shifted_col] <            QCCTCE3D_S)          significance_map[shifted_frame][shifted_row][shifted_col] =            QCCTCE3D_NZN_NEW;      }    if (col < subband_num_col - 1)      {        shifted_frame = current_frame ;        shifted_row = current_row;        shifted_col = current_col + 1;        if (significance_map[shifted_frame][shifted_row][shifted_col] <            QCCTCE3D_S)          significance_map[shifted_frame][shifted_row][shifted_col] =            QCCTCE3D_NZN_NEW;      }  }    return(0);}static int QccWAVtce3DIntNZNPass(QccWAVSubbandPyramid3DInt *coefficients,                                     char ***significance_map,                                 char ***sign_array,                                 int threshold,                                 double *subband_significance,                                 QccENTArithmeticModel *model,                                 QccBitBuffer *buffer,                                 int *max_coefficient_bits){   int subband, num_subbands;  int return_value;  int subband_origin_frame;  int subband_origin_row;  int subband_origin_col;  int subband_num_frames;  int subband_num_rows;  int subband_num_cols;  int frame,row, col;  int current_frame, current_row, current_col;  int symbol;  double p = 0.5;  num_subbands =    QccWAVSubbandPyramid3DIntNumLevelsToNumSubbandsPacket(coefficients->temporal_num_levels,                                                          coefficients->spatial_num_levels);    for (subband = 0; subband < num_subbands; subband++)    {      if ((threshold - 0.000001) <          pow((double)2, (double)(max_coefficient_bits[subband])))        {           if (QccWAVSubbandPyramid3DIntSubbandSize(coefficients,                                                   subband,                                                   &subband_num_frames,                                                   &subband_num_rows,                                                   &subband_num_cols))            {              QccErrorAddMessage("(QccWAVtce3DIntNZNPass): Error calling QccWAVSubbandPyramid3DIntSubbandSize()");              return(1);            }          if (QccWAVSubbandPyramid3DIntSubbandOffsets(coefficients,                                                      subband,                                                      &subband_origin_frame,                                                      &subband_origin_row,                                                      &subband_origin_col))            {              QccErrorAddMessage("(QccWAVtce3DIntNZNPass): Error calling QccWAVSubbandPyramid3DIntSubbandOffsets()");              return(1);            }                      for (frame = 0; frame < subband_num_frames; frame++)             {              current_frame = subband_origin_frame + frame;              for (row = 0; row < subband_num_rows; row++)                {                  current_row = subband_origin_row + row;                  for (col = 0; col < subband_num_cols; col++)                    {                       current_col = subband_origin_col + col;                      if (significance_map[current_frame][current_row][current_col] == QCCTCE3D_NZN)                        {                          if (QccWAVTce3DUpdateModel(model, p))                            {                              QccErrorAddMessage("(QccWAVtce3DIntNZNPass): Error calling QccWAVTce3DUpdateModel()");                              return_value = 1;                              return(1);                            }                          if (buffer->type == QCCBITBUFFER_OUTPUT)                            {                              if (coefficients->volume[current_frame][current_row][current_col] >=                                  threshold)                                {                                  symbol = 1;                                  coefficients->volume[current_frame][current_row][current_col] -=                                    threshold;                                }                              else                                symbol = 0;                                                        return_value =                                QccENTArithmeticEncode(&symbol, 1, model, buffer);                              if (return_value == 1)                                return(1);                              else                                {                                  if (return_value == 2)                                    return(2);                                }                            }                          else                            {                              if (QccENTArithmeticDecode(buffer,                                                         model,                                                         &symbol,                                                         1))                                   return(2);                                                        if (symbol)                                coefficients->volume[current_frame][current_row][current_col] =                                                                    threshold + (threshold >> 1);                            }                          p =                            p * QCCWAVTCE3D_ALPHA_1D + symbol * QCCWAVTCE3D_ALPHA_1D_O;			                             if (symbol)                            {                              subband_significance[subband]++;                              significance_map[current_frame][current_row][current_col] =                                QCCTCE3D_S_NEW;                                                        if (QccWAVTce3DUpdateModel(model, 0.5))                                {                                  QccErrorAddMessage("(QccWAVtce3DIntNZNPass): Error calling QccWAVTce3DUpdateModel()");                                  return(1);                                }                                                        if (buffer->type == QCCBITBUFFER_OUTPUT)                                {                                  symbol =                                    (int)(sign_array[current_frame][current_row][current_col]);                                                                return_value =                                    QccENTArithmeticEncode(&symbol,                                                           1,                                                           model,                                                           buffer);                                  if (return_value == 1)                                    return(1);                                  else                                    {                                      if (return_value == 2)                                        return(2);                                    }                                       }                              else                                {                                  if (QccENTArithmeticDecode(buffer,                                                             model,                                                             &symbol,                                                             1))                                    return(2);                                                                sign_array[current_frame][current_row][current_col] =                                    (char)symbol;                                }                                                        QccWAV3DUpdateNZNStatus(subband_origin_frame,                                                      subband_origin_row,                                                      subband_origin_col,                                                      subband_num_frames,                                                      subband_num_rows,                                                      subband_num_cols,                                                      frame,                                                      row,                                                      col,                                                      significance_map,                                                      subband);                            }                        }                    }                     }            }        }    }  return(0);}static int QccWAVtce3DIntIPBand(QccWAVSubbandPyramid3DInt *coefficients,                                char ***significance_map,                                char ***sign_array,                                double ***p_estimation,                                double *subband_significance,                                int subband,                                int threshold,                                QccENTArithmeticModel *model,                                QccBitBuffer *buffer,                                double alpha){    int return_value;  int subband_origin_frame;  int subband_origin_row;  int subband_origin_col;  int subband_num_frames;  int subband_num_rows;  int subband_num_cols;  int frame,row, col;  int current_frame,current_row, current_col;  QccMatrix p1=NULL;  QccVector p2 = NULL;  QccMatrix p3=NULL;  QccMatrix p4=NULL;  QccVector p5 = NULL;  double p;  double p_forward;  double p_parent = 0;  int parent_subband;     double scale;  double parent_density = 0;  double child_density;   int v;  int symbol;  double p_lowerbound = 0;  double weight[2];  double filter_coef;  double increment;  char *p_char;    // initialization all the constants  filter_coef = (1 - alpha) * (1 - alpha)*(1 - alpha) / (3*alpha + alpha*alpha*alpha)/3;   weight[0] = (1 - alpha) * (1 - alpha)* (1 - alpha)/((1 + alpha)*(1 + alpha)*(1 + alpha));  weight[1] = (2*3*alpha + 2*alpha*alpha*alpha) / ((1 + alpha)*(1 + alpha)*(1 + alpha));  if (QccWAVSubbandPyramid3DIntSubbandSize(coefficients,                                           subband,                                           &subband_num_frames,                                           &subband_num_rows,                                           &subband_num_cols))    {      QccErrorAddMessage("(QccWAVtce3DIntIPBand): Error calling QccWAVSubbandPyramid3DIntSubbandSize()");      goto Error;    }  if (QccWAVSubbandPyramid3DIntSubbandOffsets(coefficients,                                              subband,                                              &subband_origin_frame,                                              &subband_origin_row,                                              &subband_origin_col))    {      QccErrorAddMessage("(QccWAVtce3DIntIPBand): Error calling QccWAVSubbandPyramid3DIntSubbandOffsets()");      goto Error;    }    if ((p1 = QccMatrixAlloc(subband_num_rows,subband_num_cols)) == NULL)    {      QccErrorAddMessage("(QccWAVtce3DIntIPBand): Error calling QccMatrixAlloc()");      goto Error;    }  if ((p2 = QccVectorAlloc(subband_num_cols)) == NULL)    {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -