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

📄 subband_pyramid_int.c

📁 spiht for linux this is used to decod and encode vedio i wich all enjoy
💻 C
📖 第 1 页 / 共 2 页
字号:
  for (row = 0; row < subband_pyramid->num_rows; row++)    for (col = 0; col < subband_pyramid->num_cols; col++)      if (QccFileWriteInt(outfile,                          subband_pyramid->matrix[row][col]))        {          QccErrorAddMessage("(QccWAVSubbandPyramidIntWrite): Error calling QccFileWriteInt()");          return(1);        }    QccFileClose(outfile);  return(0);}int QccWAVSubbandPyramidIntCopy(QccWAVSubbandPyramidInt *subband_pyramid1,                                const QccWAVSubbandPyramidInt                                *subband_pyramid2){  if (subband_pyramid1 == NULL)    return(0);  if (subband_pyramid2 == NULL)    return(0);  if ((subband_pyramid1->num_rows != subband_pyramid2->num_rows) ||      (subband_pyramid1->num_cols != subband_pyramid2->num_cols))    {      QccWAVSubbandPyramidIntFree(subband_pyramid1);      subband_pyramid1->num_rows = subband_pyramid2->num_rows;      subband_pyramid1->num_cols = subband_pyramid2->num_cols;      if (QccWAVSubbandPyramidIntAlloc(subband_pyramid1))        {          QccErrorAddMessage("(QccWAVSubbandPyramidIntCopy): Error calling QccWAVSubbandPyramidIntAlloc()");          return(1);        }    }  subband_pyramid1->num_levels = subband_pyramid2->num_levels;    subband_pyramid1->origin_row = subband_pyramid2->origin_row;  subband_pyramid1->origin_col = subband_pyramid2->origin_col;  subband_pyramid1->subsample_pattern_row =    subband_pyramid2->subsample_pattern_row;  subband_pyramid1->subsample_pattern_col =    subband_pyramid2->subsample_pattern_col;  if (QccMatrixIntCopy(subband_pyramid1->matrix,                       subband_pyramid2->matrix,                       subband_pyramid1->num_rows,                       subband_pyramid1->num_cols))    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntCopy): Error calling QccMatrixIntCopy()");      return(1);    }  return(0);}int QccWAVSubbandPyramidIntZeroSubband(QccWAVSubbandPyramidInt                                       *subband_pyramid,                                       int subband){  int num_subbands;  int subband_num_rows;  int subband_num_cols;  int subband_row;  int subband_col;  int row, col;  if (subband_pyramid == NULL)    return(0);  if (subband_pyramid->matrix == NULL)    return(0);  if (subband < 0)    return(0);  num_subbands =    QccWAVSubbandPyramidIntNumLevelsToNumSubbands(subband_pyramid->num_levels);  if (subband > num_subbands)    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntZeroSubband): specified subband is large for given subband pyramid");      return(1);    }    if (QccWAVSubbandPyramidIntSubbandSize(subband_pyramid,                                         subband,                                         &subband_num_rows,                                         &subband_num_cols))    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntZeroSubband): Error calling QccWAVSubbandPyramidIntSubbandSize()");      return(1);    }    if (QccWAVSubbandPyramidIntSubbandOffsets(subband_pyramid,                                            subband,                                            &subband_row,                                            &subband_col))    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntZeroSubband): Error calling QccWAVSubbandPyramidIntSubbandOffsets()");      return(1);    }    for (row = subband_row; row < subband_row + subband_num_rows; row++)    for (col = subband_col; col < subband_col + subband_num_cols; col++)      subband_pyramid->matrix[row][col] = 0;  return(0);}int QccWAVSubbandPyramidIntSubtractMean(QccWAVSubbandPyramidInt                                        *subband_pyramid,                                        int *mean){  int subband_row, subband_col;  int subband_num_rows, subband_num_cols;  int mean1;  if (subband_pyramid == NULL)    return(0);  if (subband_pyramid->matrix == NULL)    return(0);  if (QccWAVSubbandPyramidIntSubbandSize(subband_pyramid,                                         0,                                         &subband_num_rows,                                         &subband_num_cols))    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntSubtractMean): Error calling QccWAVSubbandPyramidIntSubbandSize()");      return(1);    }    mean1 = (int)rint(QccMatrixIntMean(subband_pyramid->matrix,                                     subband_num_rows,                                     subband_num_cols));  for (subband_row = 0; subband_row < subband_num_rows; subband_row++)    for (subband_col = 0; subband_col < subband_num_cols; subband_col++)      subband_pyramid->matrix[subband_row][subband_col] -= mean1;    if (mean != NULL)    *mean = mean1;    return(0);}int QccWAVSubbandPyramidIntAddMean(QccWAVSubbandPyramidInt *subband_pyramid,                                   int mean){  int subband_row, subband_col;  int subband_num_rows, subband_num_cols;  if (subband_pyramid == NULL)    return(0);  if (subband_pyramid->matrix == NULL)    return(0);  if (subband_pyramid->num_levels != 0)    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntAddMean): Subband-pyramid number of levels is not zero");      return(1);    }    if (QccWAVSubbandPyramidIntSubbandSize(subband_pyramid,                                         0,                                         &subband_num_rows,                                         &subband_num_cols))    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntAddMean): Error calling QccWAVSubbandPyramidIntSubbandSize()");      return(1);    }  for (subband_row = 0; subband_row < subband_num_rows; subband_row++)    for (subband_col = 0; subband_col < subband_num_cols; subband_col++)      subband_pyramid->matrix[subband_row][subband_col] += mean;    return(0);}int QccWAVSubbandPyramidIntRasterScan(const QccWAVSubbandPyramidInt                                      *subband_pyramid,                                      QccVectorInt scanned_coefficients){  int num_subbands;  int subband;  int subband_num_rows, subband_num_cols;  int subband_row_offset, subband_col_offset;  int row, col;  int coefficient;    if (subband_pyramid == NULL)    return(0);  if (scanned_coefficients == NULL)    return(0);    num_subbands =    QccWAVSubbandPyramidIntNumLevelsToNumSubbands(subband_pyramid->num_levels);    coefficient = 0;  for (subband = 0; subband < num_subbands; subband++)    {      if (QccWAVSubbandPyramidIntSubbandSize(subband_pyramid,                                             subband,                                             &subband_num_rows,                                             &subband_num_cols))        {          QccErrorAddMessage("(QccWAVSubbandPyramidIntRasterScan): Error calling QccWAVSubbandPyramidIntSubbandSize()");          return(1);        }      if (QccWAVSubbandPyramidIntSubbandOffsets(subband_pyramid,                                                subband,                                                &subband_row_offset,                                                &subband_col_offset))        {          QccErrorAddMessage("(QccWAVSubbandPyramidIntRasterScan): Error calling QccWAVSubbandPyramidIntSubbandOffsets()");          return(1);        }            for (row = 0; row < subband_num_rows; row++)        for (col = 0; col < subband_num_cols; col++)          scanned_coefficients[coefficient++] =            subband_pyramid->matrix            [subband_row_offset + row]            [subband_col_offset + col];    }    return(0);}int QccWAVSubbandPyramidIntInverseRasterScan(QccWAVSubbandPyramidInt                                             *subband_pyramid,                                             const QccVectorInt                                             scanned_coefficients){  int num_subbands;  int subband;  int subband_num_rows, subband_num_cols;  int subband_row_offset, subband_col_offset;  int row, col;  int coefficient;  if (subband_pyramid == NULL)    return(0);  if (scanned_coefficients == NULL)    return(0);    num_subbands =    QccWAVSubbandPyramidIntNumLevelsToNumSubbands(subband_pyramid->num_levels);    coefficient = 0;  for (subband = 0; subband < num_subbands; subband++)    {      if (QccWAVSubbandPyramidIntSubbandSize(subband_pyramid,                                             subband,                                             &subband_num_rows,                                             &subband_num_cols))        {          QccErrorAddMessage("(QccWAVSubbandPyramidIntInverseRasterScan): Error calling QccWAVSubbandPyramidIntSubbandSize()");          return(1);        }      if (QccWAVSubbandPyramidIntSubbandOffsets(subband_pyramid,                                                subband,                                                &subband_row_offset,                                                &subband_col_offset))        {          QccErrorAddMessage("(QccWAVSubbandPyramidIntInverseRasterScan): Error calling QccWAVSubbandPyramidIntSubbandOffsets()");          return(1);        }            for (row = 0; row < subband_num_rows; row++)        for (col = 0; col < subband_num_cols; col++)          subband_pyramid->matrix            [subband_row_offset + row]            [subband_col_offset + col] =            scanned_coefficients[coefficient++];    }    return(0);}int QccWAVSubbandPyramidIntDWT(QccWAVSubbandPyramidInt *subband_pyramid,                               int num_levels,                               const QccWAVWavelet *wavelet){  int return_value;  if (subband_pyramid == NULL)    return(0);  if (wavelet == NULL)    return(0);    if (subband_pyramid->num_levels != 0)    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntDWT): Subband pyramid is already decomposed");      goto Error;    }  subband_pyramid->num_levels = num_levels;    if (QccWAVWaveletDWT2DInt(subband_pyramid->matrix,                            subband_pyramid->num_rows,                            subband_pyramid->num_cols,                            subband_pyramid->origin_row,                            subband_pyramid->origin_col,                            subband_pyramid->subsample_pattern_row,                            subband_pyramid->subsample_pattern_col,                            num_levels,                            wavelet))    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntDWT): Error calling QccWAVWaveletDWT2DInt()");      goto Error;    }    return_value = 0;  goto Return; Error:  return_value = 1; Return:  return(return_value);}int QccWAVSubbandPyramidIntInverseDWT(QccWAVSubbandPyramidInt *subband_pyramid,                                      const QccWAVWavelet *wavelet){  int return_value;    if (subband_pyramid == NULL)    return(0);  if (wavelet == NULL)    return(0);    if (subband_pyramid->num_levels <= 0)    return(0);  if (QccWAVWaveletInverseDWT2DInt(subband_pyramid->matrix,                                   subband_pyramid->num_rows,                                   subband_pyramid->num_cols,                                   subband_pyramid->origin_row,                                   subband_pyramid->origin_col,                                   subband_pyramid->subsample_pattern_row,                                   subband_pyramid->subsample_pattern_col,                                   subband_pyramid->num_levels,                                   wavelet))    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntInverseDWT): Error calling QccWAVWaveletDWT2DInt()");      goto Error;    }    subband_pyramid->num_levels = 0;    return_value = 0;  goto Return; Error:  return_value = 1; Return:  return(return_value);}int QccWAVSubbandPyramidIntShapeAdaptiveDWT(QccWAVSubbandPyramidInt                                            *subband_pyramid,                                            QccWAVSubbandPyramidInt *mask,                                            int num_levels,                                            const QccWAVWavelet *wavelet){  int return_value;  if (subband_pyramid == NULL)    return(0);  if (mask == NULL)    return(0);  if (wavelet == NULL)    return(0);    if (subband_pyramid->num_levels != 0)    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntShapeAdaptiveDWT): Subband pyramid is already decomposed");      goto Error;    }  if ((subband_pyramid->num_rows != mask->num_rows) ||      (subband_pyramid->num_cols != mask->num_cols))    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntShapeAdaptiveDWT): Subband pyramid and mask must have same number of rows and columns");      goto Error;    }  if (QccWAVWaveletShapeAdaptiveDWT2DInt(subband_pyramid->matrix,                                         mask->matrix,                                         subband_pyramid->num_rows,                                         subband_pyramid->num_cols,                                         num_levels,                                         wavelet))    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntShapeAdaptiveDWT): Error calling QccWAVWaveletShapeAdaptiveDWT2DInt()");      goto Error;    }    subband_pyramid->num_levels = num_levels;  mask->num_levels = num_levels;  return_value = 0;  goto Return; Error:  return_value = 1; Return:  return(return_value);}int QccWAVSubbandPyramidIntInverseShapeAdaptiveDWT(QccWAVSubbandPyramidInt                                                   *subband_pyramid,                                                   QccWAVSubbandPyramidInt                                                   *mask,                                                   const QccWAVWavelet *wavelet){  int return_value;  if (subband_pyramid == NULL)    return(0);  if (mask == NULL)    return(0);  if (wavelet == NULL)    return(0);    if (subband_pyramid->num_levels <= 0)    return(0);    if ((subband_pyramid->num_rows != mask->num_rows) ||      (subband_pyramid->num_cols != mask->num_cols))    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntInverseShapeAdaptiveDWT): Subband pyramid and mask must have same number of rows and columns");      goto Error;    }    if (subband_pyramid->num_levels != mask->num_levels)    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntInverseShapeAdaptiveDWT): Subband pyramid and mask must have same number of levels of decomposition");      goto Error;    }    if (QccWAVWaveletInverseShapeAdaptiveDWT2DInt(subband_pyramid->matrix,                                                mask->matrix,                                                subband_pyramid->num_rows,                                                subband_pyramid->num_cols,                                                subband_pyramid->num_levels,                                                wavelet))    {      QccErrorAddMessage("(QccWAVSubbandPyramidIntInverseShapeAdaptiveDWT): Error calling QccWAVWaveletInverseShapeAdaptiveDWT2DInt()");      goto Error;    }    subband_pyramid->num_levels = 0;  mask->num_levels = 0;    return_value = 0;  goto Return; Error:  return_value = 1; Return:  return(return_value);}

⌨️ 快捷键说明

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