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

📄 subband_pyramid3d_int.c

📁 spiht for linux this is used to decod and encode vedio i wich all enjoy
💻 C
📖 第 1 页 / 共 4 页
字号:
                                      subband_pyramid->origin_frame,                                      subband_pyramid->origin_row,                                      subband_pyramid->origin_col,                                      subband_pyramid->subsample_pattern_frame,                                      subband_pyramid->subsample_pattern_row,                                      subband_pyramid->subsample_pattern_col,                                      temporal_num_levels,                                      spatial_num_levels,                                      wavelet))        {          QccErrorAddMessage("(QccWAVSubbandPyramid3DIntDWT): Error calling QccWAVWaveletPacketDWT3DInt()");          goto Error;        }      break;    default:      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntDWT): Unrecognized transform type");      goto Error;    }    return_value = 0;  goto Return; Error:  return_value = 1; Return:  return(return_value);}int QccWAVSubbandPyramid3DIntInverseDWT(QccWAVSubbandPyramid3DInt                                        *subband_pyramid,                                        const QccWAVWavelet *wavelet){  int return_value;    if (subband_pyramid == NULL)    return(0);  if (wavelet == NULL)    return(0);    if ((subband_pyramid->spatial_num_levels <= 0) &&      (subband_pyramid->temporal_num_levels <= 0))    return(0);  switch (subband_pyramid->transform_type)    {    case QCCWAVSUBBANDPYRAMID3DINT_DYADIC:      if (QccWAVWaveletInverseDyadicDWT3DInt(subband_pyramid->volume,                                             subband_pyramid->num_frames,                                             subband_pyramid->num_rows,                                             subband_pyramid->num_cols,                                             subband_pyramid->origin_frame,                                             subband_pyramid->origin_row,                                             subband_pyramid->origin_col,                                             subband_pyramid->subsample_pattern_frame,                                             subband_pyramid->subsample_pattern_row,                                             subband_pyramid->subsample_pattern_col,                                             subband_pyramid->spatial_num_levels,                                             wavelet))        {          QccErrorAddMessage("(QccWAVSubbandPyramid3DIntInverseDWT): Error calling QccWAVWaveletDyadicInverseDWT3DInt()");          goto Error;        }      break;    case QCCWAVSUBBANDPYRAMID3DINT_PACKET:      if (QccWAVWaveletInversePacketDWT3DInt(subband_pyramid->volume,                                             subband_pyramid->num_frames,                                             subband_pyramid->num_rows,                                             subband_pyramid->num_cols,                                             subband_pyramid->origin_frame,                                             subband_pyramid->origin_row,                                             subband_pyramid->origin_col,                                             subband_pyramid->subsample_pattern_frame,                                             subband_pyramid->subsample_pattern_row,                                             subband_pyramid->subsample_pattern_col,                                             subband_pyramid->temporal_num_levels,                                             subband_pyramid->spatial_num_levels,                                             wavelet))        {          QccErrorAddMessage("(QccWAVSubbandPyramid3DIntInverseDWT): Error calling QccWAVWaveletPacketInverseDWT3DInt()");          goto Error;        }      break;    default:      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntInverseDWT): Unrecognized transform type");      goto Error;    }    subband_pyramid->spatial_num_levels = 0;  subband_pyramid->temporal_num_levels = 0;    return_value = 0;  goto Return; Error:  return_value = 1; Return:  return(return_value);}int QccWAVSubbandPyramid3DIntShapeAdaptiveDWT(QccWAVSubbandPyramid3DInt                                              *subband_pyramid,                                              QccWAVSubbandPyramid3DInt *mask,                                              int transform_type,                                              int temporal_num_levels,                                              int spatial_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->spatial_num_levels ||      subband_pyramid->temporal_num_levels)    {      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntShapeAdaptiveDWT): Subband pyramid is already decomposed");      goto Error;    }    if ((subband_pyramid->num_frames != mask->num_frames) ||      (subband_pyramid->num_rows != mask->num_rows) ||      (subband_pyramid->num_cols != mask->num_cols))    {      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntShapeAdaptiveDWT): Subband pyramid and mask must have same number of frames, rows, and columns");      goto Error;    }    switch (transform_type)    {    case QCCWAVSUBBANDPYRAMID3DINT_DYADIC:      subband_pyramid->transform_type = QCCWAVSUBBANDPYRAMID3DINT_DYADIC;      mask->transform_type = QCCWAVSUBBANDPYRAMID3DINT_DYADIC;      if (spatial_num_levels != temporal_num_levels)        {          QccErrorAddMessage("(QccWAVSubbandPyramid3DIntDWT): Spatial and temporal number of levels must be identical for a dyadic transform");          goto Error;        }      subband_pyramid->spatial_num_levels =        subband_pyramid->temporal_num_levels = spatial_num_levels;      mask->spatial_num_levels =        mask->temporal_num_levels = spatial_num_levels;      if (QccWAVWaveletShapeAdaptiveDyadicDWT3DInt(subband_pyramid->volume,                                                   mask->volume,                                                   subband_pyramid->num_frames,                                                   subband_pyramid->num_rows,                                                   subband_pyramid->num_cols,                                                   spatial_num_levels,                                                   wavelet))        {          QccErrorAddMessage("(QccWAVSubbandPyramid3DIntShapeAdaptiveDWT): Error calling QccWAVWaveletShapeAdaptiveDyadicDWT3DInt()");          goto Error;        }      break;    case QCCWAVSUBBANDPYRAMID3DINT_PACKET:      subband_pyramid->transform_type = QCCWAVSUBBANDPYRAMID3DINT_PACKET;      subband_pyramid->spatial_num_levels = spatial_num_levels;      subband_pyramid->temporal_num_levels = temporal_num_levels;      mask->transform_type = QCCWAVSUBBANDPYRAMID3DINT_PACKET;      mask->spatial_num_levels = spatial_num_levels;      mask->temporal_num_levels = temporal_num_levels;      if (QccWAVWaveletShapeAdaptivePacketDWT3DInt(subband_pyramid->volume,                                                   mask->volume,                                                   subband_pyramid->num_frames,                                                   subband_pyramid->num_rows,                                                   subband_pyramid->num_cols,                                                   temporal_num_levels,                                                   spatial_num_levels,                                                   wavelet))        {          QccErrorAddMessage("(QccWAVSubbandPyramid3DIntShapeAdaptiveDWT): Error calling QccWAVWaveletShapeAdaptivePacketDWT3DInt()");          goto Error;        }      break;    default:      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntShapeAdaptiveDWT): Unrecognized transform type");      goto Error;    }    return_value = 0;  goto Return; Error:  return_value = 1; Return:  return(return_value);}int QccWAVSubbandPyramid3DIntInverseShapeAdaptiveDWT(QccWAVSubbandPyramid3DInt                                                     *subband_pyramid,                                                     QccWAVSubbandPyramid3DInt                                                     *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->spatial_num_levels <= 0) &&      (subband_pyramid->temporal_num_levels <= 0))    return(0);    if ((subband_pyramid->num_frames != mask->num_frames) ||      (subband_pyramid->num_rows != mask->num_rows) ||      (subband_pyramid->num_cols != mask->num_cols))    {      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntInverseShapeAdaptiveDWT): Subband pyramid and mask must have same number of frames, rows, and columns");      goto Error;    }    if ((subband_pyramid->spatial_num_levels != mask->spatial_num_levels) ||      (subband_pyramid->temporal_num_levels != mask->temporal_num_levels))    {      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntInverseShapeAdaptiveDWT): Subband pyramid and mask must have same number of levels of decomposition");      goto Error;    }    switch (subband_pyramid->transform_type)    {    case QCCWAVSUBBANDPYRAMID3DINT_DYADIC:      if (QccWAVWaveletInverseShapeAdaptiveDyadicDWT3DInt(subband_pyramid->volume,                                                          mask->volume,                                                          subband_pyramid->num_frames,                                                          subband_pyramid->num_rows,                                                          subband_pyramid->num_cols,                                                          subband_pyramid->spatial_num_levels,                                                          wavelet))        {          QccErrorAddMessage("(QccWAVSubbandPyramid3DIntInverseShapeAdaptiveDWT): Error calling QccWAVWaveletInverseShapeAdaptiveDyadicDWT3DInt)");          goto Error;        }      break;    case QCCWAVSUBBANDPYRAMID3DINT_PACKET:      if (QccWAVWaveletInverseShapeAdaptivePacketDWT3DInt(subband_pyramid->volume,                                                          mask->volume,                                                          subband_pyramid->num_frames,                                                          subband_pyramid->num_rows,                                                          subband_pyramid->num_cols,                                                          subband_pyramid->temporal_num_levels,                                                          subband_pyramid->spatial_num_levels,                                                          wavelet))        {          QccErrorAddMessage("(QccWAVSubbandPyramid3DIntInverseShapeAdaptiveDWT): Error calling QccWAVWaveletInverseShapeAdaptiveDyadicDWT3DInt)");          goto Error;        }      break;    default:      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntInverseShapeAdaptiveDWT): Unrecognized transform type");      goto Error;    }    subband_pyramid->spatial_num_levels = 0;  subband_pyramid->temporal_num_levels = 0;  mask->spatial_num_levels = 0;  mask->temporal_num_levels = 0;    return_value = 0;  goto Return; Error:  return_value = 1; Return:  return(return_value);}int QccWAVSubbandPyramid3DIntPacketToDyadic(QccWAVSubbandPyramid3DInt                                            *subband_pyramid,                                            int num_levels){  int return_value;  QccWAVWavelet lazy_wavelet_transform;  QccWAVWaveletInitialize(&lazy_wavelet_transform);  if (subband_pyramid == NULL)    return(0);  if (subband_pyramid->volume == NULL)    return(0);  if (subband_pyramid->transform_type != QCCWAVSUBBANDPYRAMID3DINT_PACKET)    {      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntPacketToDyadic): Subband pyramid is not a packet decomposition");      goto Error;    }  if (QccWAVWaveletCreate(&lazy_wavelet_transform, "LWT.int.lft", "symmetric"))    {      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntPacketToDyadic): Error calling QccWAVWaveletCreate()");      goto Error;    }        if (QccWAVSubbandPyramid3DIntInverseDWT(subband_pyramid,                                          &lazy_wavelet_transform))    {      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntPacketToDyadic): Error calling QccWAVSubbandPyramid3DIntInverseDWT()");      goto Error;    }  if (QccWAVSubbandPyramid3DIntDWT(subband_pyramid,                                   QCCWAVSUBBANDPYRAMID3DINT_DYADIC,                                   num_levels,                                   num_levels,                                   &lazy_wavelet_transform))    {      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntPacketToDyadic): Error calling QccWAVSubbandPyramid3DIntDWT()");      goto Error;    }  return_value = 0;  goto Return; Error:  return_value = 1; Return:  QccWAVWaveletFree(&lazy_wavelet_transform);  return(return_value);}int QccWAVSubbandPyramid3DIntDyadicToPacket(QccWAVSubbandPyramid3DInt                                            *subband_pyramid,                                            int temporal_num_levels,                                            int spatial_num_levels){  int return_value;  QccWAVWavelet lazy_wavelet_transform;  QccWAVWaveletInitialize(&lazy_wavelet_transform);  if (subband_pyramid == NULL)    return(0);  if (subband_pyramid->volume == NULL)    return(0);  if (subband_pyramid->transform_type != QCCWAVSUBBANDPYRAMID3DINT_DYADIC)    {      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntDyadicToPacket): Subband pyramid is not a dyadic decomposition");      goto Error;    }  if (QccWAVWaveletCreate(&lazy_wavelet_transform, "LWT.int.lft", "symmetric"))    {      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntDyadicToPacket): Error calling QccWAVWaveletCreate()");      goto Error;    }        if (QccWAVSubbandPyramid3DIntInverseDWT(subband_pyramid,                                          &lazy_wavelet_transform))    {      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntDyadicToPacket): Error calling QccWAVSubbandPyramid3DIntInverseDWT()");      goto Error;    }  if (QccWAVSubbandPyramid3DIntDWT(subband_pyramid,                                   QCCWAVSUBBANDPYRAMID3DINT_PACKET,                                   temporal_num_levels,                                   spatial_num_levels,                                   &lazy_wavelet_transform))    {      QccErrorAddMessage("(QccWAVSubbandPyramid3DIntDyadicToPacket): Error calling QccWAVSubbandPyramid3DIntDWT()");      goto Error;    }  return_value = 0;  goto Return; Error:  return_value = 1; Return:  QccWAVWaveletFree(&lazy_wavelet_transform);  return(return_value);}

⌨️ 快捷键说明

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