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

📄 tce3d_lossless.c

📁 spiht for linux this is used to decod and encode vedio i wich all enjoy
💻 C
📖 第 1 页 / 共 5 页
字号:
    subband_significance[subband] = 0.0;  if (QccWAVSubbandPyramid3DIntSubbandSize(coefficients,                                           subband,                                           &subband_num_frames,                                           &subband_num_rows,                                           &subband_num_cols))    {      QccErrorAddMessage("(QccWAVtce3DIntRevEst): Error calling QccWAVSubbandPyramid3DSubbandSize()");      goto Error;    }  if (QccWAVSubbandPyramid3DIntSubbandOffsets(coefficients,                                              subband,                                              &subband_origin_frame,                                              &subband_origin_row,                                              &subband_origin_col))    {      QccErrorAddMessage("(QccWAVtce3DIntRevEst): Error calling QccWAVSubbandPyramid3DSubbandOffsets()");      goto Error;    }    if ((p1 = QccMatrixAlloc(subband_num_rows,subband_num_cols)) == NULL)    {      QccErrorAddMessage("(QccWAVtce3DIntRevEst): Error calling QccMatrixAlloc()");      goto Error;    }  if ((p2 = QccVectorAlloc(subband_num_cols)) == NULL)    {      QccErrorAddMessage("(QccWAVtce3DIntRevEst): Error calling QccVectorAlloc()");      goto Error;    }  if ((p3 = QccMatrixAlloc(subband_num_rows,subband_num_cols)) == NULL)    {      QccErrorAddMessage("(QccWAVtce3DIntRevEst): Error calling QccMatrixAlloc()");      goto Error;    }  if ((p4 = QccMatrixAlloc(subband_num_rows,subband_num_cols)) == NULL)    {      QccErrorAddMessage("(QccWAVtce3DIntRevEst): Error calling QccMatrixAlloc()");      goto Error;    }  if ((p5 = QccVectorAlloc(subband_num_cols)) == NULL)    {      QccErrorAddMessage("(QccWAVtce3DIntRevEst): Error calling QccVectorAlloc()");      goto Error;    }    for (row = 0; row < subband_num_rows; row++)    for (col = 0; col < subband_num_cols; col++)      p3[row][col]=QCCTCE3D_BOUNDARY_VALUE;  	  for (frame = subband_num_frames-1;frame >= 0; frame--)    {//bbb      current_frame=subband_origin_frame+frame;      for (col = 0; col < subband_num_cols; col++)        p2[col] = QCCTCE3D_BOUNDARY_VALUE;              for (row = subband_num_rows - 1; row >= 0; row--)        {//bb          current_row = subband_origin_row + row;          for (col = subband_num_cols - 1; col >= 0; col--)            {                     current_col = subband_origin_col + col;              p_char = &(significance_map                         [current_frame][current_row][current_col]);              if (col == (subband_num_cols-1) )                p[current_frame][current_row][current_col] =                  alpha * (QCCTCE3D_BOUNDARY_VALUE + p2[col] + p3[row][col]);              else                p[current_frame][current_row][current_col] =                  alpha *(p1[row][col+1]+p2[col]+p3[row][col]);                            if (*p_char == QCCTCE3D_S)                {                  if (col == subband_num_cols-1 )                    p1[row][col] = alpha * QCCTCE3D_BOUNDARY_VALUE +                      filter_coef * QCCWAVTCE3D_REFINE_HOLDER;                  else                    p1[row][col] = alpha * p1[row][col+1] +                      filter_coef * QCCWAVTCE3D_REFINE_HOLDER;                                     subband_significance[subband] += QCCWAVTCE3D_REFINE_HOLDER;                }              else                {                  v = (*p_char == QCCTCE3D_S_NEW);                  if (col == (subband_num_cols-1) )                    p1[row][col] = alpha * QCCTCE3D_BOUNDARY_VALUE +                      filter_coef * v;                  else                    p1[row][col] = alpha * p1[row][col+1] + filter_coef * v;                                     subband_significance[subband] += v;                }                 p2[col] = p1[row][col] + alpha * p2[col];               }                for (col = 0; col < subband_num_cols; col++)            {              p_char = &(significance_map                         [current_frame][current_row]                         [subband_origin_col + col]);              if(col==0)                p2[col] = p2[col] + alpha * QCCTCE3D_BOUNDARY_VALUE;              else                p2[col] = p2[col] + alpha * p4[row][col-1];                              p3[row][col]=p2[col]+alpha*p3[row][col];              if (*p_char == QCCTCE3D_S)                {                  if(col==0)                    p4[row][col] = alpha * QCCTCE3D_BOUNDARY_VALUE +                      filter_coef * QCCWAVTCE3D_REFINE_HOLDER;                  else                     p4[row][col] = alpha * p4[row][col-1] +                      filter_coef * QCCWAVTCE3D_REFINE_HOLDER;                }              else                {                  v = (*p_char == QCCTCE3D_S_NEW);                  if(col==0)                    p4[row][col] = alpha * QCCTCE3D_BOUNDARY_VALUE +                      filter_coef * v;                  else                     p4[row][col] = alpha* p4[row][col-1] + filter_coef *v;                }                    }        }//bb      for (col = 0; col < subband_num_cols; col++)        p5[col] = QCCTCE3D_BOUNDARY_VALUE;      for (row = 0; row < subband_num_rows; row++)        for (col = 0; col < subband_num_cols; col++)          {            p3[row][col]=p3[row][col]+alpha*p5[col];            if(col==0)              p5[col]=p1[row][col]+alpha*p5[col]+alpha*QCCTCE3D_BOUNDARY_VALUE;            else              p5[col]=p1[row][col]+alpha*p5[col]+alpha*p4[row][col-1];          }    }//bbb    return_value = 0;  goto Return; Error:  return_value = 1; Return:   QccVectorFree(p2);  QccVectorFree(p5);  QccMatrixFree(p1,subband_num_rows);   QccMatrixFree(p3,subband_num_rows);   QccMatrixFree(p4,subband_num_rows);   return(return_value);}static int QccWAV3DUpdateNZNStatus(int subband_origin_frame,				   int subband_origin_row,				   int subband_origin_col,				   int subband_num_frame,				   int subband_num_row,				   int subband_num_col,				   int frame,				   int row,				   int col,				   char *** significance_map,				   int subband){  //Update neighbors  int current_frame,current_row, current_col;  int shifted_frame,shifted_row, shifted_col;  current_frame=subband_origin_frame+frame;  current_row = subband_origin_row + row;  current_col = subband_origin_col + col;  //previous frame  if(frame>0)    {      if (row > 0)        {           shifted_frame = current_frame - 1;           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 - 1;              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 - 1;              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 - 1;	  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 - 1;	      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 - 1;	      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 - 1;	  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 - 1;	  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;	}      {	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;      }    }  //next frame  if (frame<subband_num_frame - 1)    {      if (row > 0)        {           shifted_frame = current_frame + 1;           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 + 1;              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 + 1;              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+ 1;	  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 + 1;	      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 + 1;	      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 + 1;	  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 + 1;	  shifted_row = current_row;	  shifted_col = current_col + 1;

⌨️ 快捷键说明

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