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

📄 lifting_int_cdf9_7.c

📁 spiht for linux this is used to decod and encode vedio i wich all enjoy
💻 C
📖 第 1 页 / 共 2 页
字号:
            default:              QccErrorAddMessage("(QccWAVLiftingAnalysisIntCohenDaubechiesFeauveau9_7): Undefined boundary method");              return(1);            }          break;        }      break;    }    return(0);}static void QccWAVCDF97SynthesisIntSymmetricEvenEven(QccVectorInt signal,                                                     int signal_length){  int index;    for (index = 0; index < signal_length; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index + 1], 11, 5);  for (index = 1; index < signal_length; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index - 1], 3563, 11);  for (index = 0; index < signal_length; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index + 1], 153, 9);  for (index = 1; index < signal_length; index += 2)    signal[index] = signal[index - 1] - signal[index];  signal[0] -=    QccWAVLiftingIntRound(2 * signal[1], 1817, 11);  for (index = 2; index < signal_length; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index + 1] + signal[index - 1], 1817, 11);  for (index = 1; index < signal_length - 2; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index - 1] + signal[index + 1], 113, 6);  signal[signal_length - 1] -=    QccWAVLiftingIntRound(2 * signal[signal_length - 2], 113, 6);    signal[0] +=    QccWAVLiftingIntRound(2 * signal[1], 217, 11);  for (index = 2; index < signal_length; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index + 1] + signal[index - 1], 217, 11);    for (index = 1; index < signal_length - 2; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index - 1] + signal[index + 1], 203, 6);  signal[signal_length - 1] +=    QccWAVLiftingIntRound(2 * signal[signal_length - 2], 203, 6);  }static void QccWAVCDF97SynthesisIntSymmetricEvenOdd(QccVectorInt signal,                                                    int signal_length){  int index;    for (index = 1; index < signal_length; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index - 1], 11, 5);  for (index = 0; index < signal_length; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index + 1], 3563, 11);  for (index = 1; index < signal_length; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index - 1], 153, 9);  for (index = 0; index < signal_length; index += 2)    signal[index] = signal[index + 1] - signal[index];  for (index = 1; index < signal_length - 2; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index + 1] + signal[index - 1], 1817, 11);  signal[signal_length - 1] -=    QccWAVLiftingIntRound(2 * signal[signal_length - 2], 1817, 11);    signal[0] -=    QccWAVLiftingIntRound(2 * signal[1], 113, 6);  for (index = 2; index < signal_length; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index - 1] + signal[index + 1], 113, 6);  for (index = 1; index < signal_length - 2; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index + 1] + signal[index - 1], 217, 11);  signal[signal_length - 1] +=    QccWAVLiftingIntRound(2 * signal[signal_length - 2], 217, 11);  signal[0] +=    QccWAVLiftingIntRound(2 * signal[1], 203, 6);  for (index = 2; index < signal_length; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index - 1] + signal[index + 1], 203, 6);}static void QccWAVCDF97SynthesisIntSymmetricOddEven(QccVectorInt signal,                                                    int signal_length){  int index;    for (index = 0; index < signal_length - 2; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index + 1], 11, 5);  signal[signal_length - 1] +=      QccWAVLiftingIntRound(signal[signal_length - 2], 11, 5);  for (index = 1; index < signal_length; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index - 1], 3563, 11);  for (index = 0; index < signal_length - 2; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index + 1], 153, 9);  signal[signal_length - 1] -=      QccWAVLiftingIntRound(signal[signal_length - 2], 153, 9);  for (index = 1; index < signal_length; index += 2)    signal[index] = signal[index - 1] - signal[index];  signal[0] -=    QccWAVLiftingIntRound(2 * signal[1], 1817, 11);  for (index = 2; index < signal_length - 2; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index + 1] + signal[index - 1], 1817, 11);  signal[signal_length - 1] -=    QccWAVLiftingIntRound(2 * signal[signal_length - 2], 1817, 11);  for (index = 1; index < signal_length - 1; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index - 1] + signal[index + 1], 113, 6);    signal[0] +=    QccWAVLiftingIntRound(2 * signal[1], 217, 11);  for (index = 2; index < signal_length - 2; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index + 1] + signal[index - 1], 217, 11);  signal[signal_length - 1] +=    QccWAVLiftingIntRound(2 * signal[signal_length - 2], 217, 11);  for (index = 1; index < signal_length - 1; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index - 1] + signal[index + 1], 203, 6);}static void QccWAVCDF97SynthesisIntSymmetricOddOdd(QccVectorInt signal,                                                   int signal_length){  int index;    for (index = 1; index < signal_length; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index - 1], 11, 5);  for (index = 0; index < signal_length - 2; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index + 1], 3563, 11);  signal[signal_length - 1] +=    QccWAVLiftingIntRound(signal[signal_length - 2], 3563, 11);  for (index = 1; index < signal_length; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index - 1], 153, 9);  for (index = 0; index < signal_length - 2; index += 2)    signal[index] = signal[index + 1] - signal[index];  signal[signal_length - 1] =    signal[signal_length - 2] - signal[signal_length - 1];  for (index = 1; index < signal_length; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index + 1] + signal[index - 1], 1817, 11);  signal[0] -=    QccWAVLiftingIntRound(2 * signal[1], 113, 6);  for (index = 2; index < signal_length - 2; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index - 1] + signal[index + 1], 113, 6);  signal[signal_length - 1] -=    QccWAVLiftingIntRound(2 * signal[signal_length - 2], 113, 6);    for (index = 1; index < signal_length; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index + 1] + signal[index - 1], 217, 11);    signal[0] +=    QccWAVLiftingIntRound(2 * signal[1], 203, 6);  for (index = 2; index < signal_length - 2; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index - 1] + signal[index + 1], 203, 6);  signal[signal_length - 1] +=    QccWAVLiftingIntRound(2 * signal[signal_length - 2], 203, 6);  }static void QccWAVCDF97SynthesisIntPeriodicEvenEven(QccVectorInt signal,                                                    int signal_length){  int index;    for (index = 0; index < signal_length; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index + 1], 11, 5);  for (index = 1; index < signal_length; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index - 1], 3563, 11);  for (index = 0; index < signal_length; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index + 1], 153, 9);  for (index = 1; index < signal_length; index += 2)    signal[index] = signal[index - 1] - signal[index];  signal[0] -=    QccWAVLiftingIntRound(signal[1] + signal[signal_length - 1], 1817, 11);  for (index = 2; index < signal_length; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index + 1] + signal[index - 1], 1817, 11);  for (index = 1; index < signal_length - 2; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index - 1] + signal[index + 1], 113, 6);  signal[signal_length - 1] -=    QccWAVLiftingIntRound(signal[signal_length - 2] + signal[0], 113, 6);    signal[0] +=    QccWAVLiftingIntRound(signal[1] + signal[signal_length - 1], 217, 11);  for (index = 2; index < signal_length; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index + 1] + signal[index - 1], 217, 11);    for (index = 1; index < signal_length - 2; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index - 1] + signal[index + 1], 203, 6);  signal[signal_length - 1] +=    QccWAVLiftingIntRound(signal[signal_length - 2] + signal[0], 203, 6);  }static void QccWAVCDF97SynthesisIntPeriodicEvenOdd(QccVectorInt signal,                                                   int signal_length){  int index;    for (index = 1; index < signal_length; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index - 1], 11, 5);  for (index = 0; index < signal_length; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index + 1], 3563, 11);  for (index = 1; index < signal_length; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index - 1], 153, 9);  for (index = 0; index < signal_length; index += 2)    signal[index] = signal[index + 1] - signal[index];  for (index = 1; index < signal_length - 1; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index + 1] + signal[index - 1], 1817, 11);  signal[signal_length - 1] -=    QccWAVLiftingIntRound(signal[0] + signal[signal_length - 2], 1817, 11);    signal[0] -=    QccWAVLiftingIntRound(signal[signal_length - 1] + signal[1], 113, 6);  for (index = 2; index < signal_length; index += 2)    signal[index] -=      QccWAVLiftingIntRound(signal[index - 1] + signal[index + 1], 113, 6);    for (index = 1; index < signal_length - 1; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index + 1] + signal[index - 1], 217, 11);  signal[signal_length - 1] +=    QccWAVLiftingIntRound(signal[0] + signal[signal_length - 2], 217, 11);    signal[0] +=    QccWAVLiftingIntRound(signal[signal_length - 1] + signal[1], 203, 6);  for (index = 2; index < signal_length; index += 2)    signal[index] +=      QccWAVLiftingIntRound(signal[index - 1] + signal[index + 1], 203, 6);  }int QccWAVLiftingSynthesisIntCohenDaubechiesFeauveau9_7(QccVectorInt signal,                                                        int signal_length,                                                        int phase,                                                        int boundary){  if (signal == NULL)    return(0);    if (!signal_length)    return(0);    if (signal_length == 1)    return(0);    if (boundary == QCCWAVWAVELET_BOUNDARY_BOUNDARY_WAVELET)    {      QccErrorAddMessage("(QccWAVLiftingSynthesisIntCohenDaubechiesFeauveau9_7): Boundary wavelets not supported");      return(1);    }    switch (phase)    {    case QCCWAVWAVELET_PHASE_EVEN:      switch (signal_length % 2)        {        case 0:          switch (boundary)            {            case QCCWAVWAVELET_BOUNDARY_SYMMETRIC_EXTENSION:              QccWAVCDF97SynthesisIntSymmetricEvenEven(signal, signal_length);              break;                          case QCCWAVWAVELET_BOUNDARY_PERIODIC_EXTENSION:              QccWAVCDF97SynthesisIntPeriodicEvenEven(signal, signal_length);              break;                          default:              QccErrorAddMessage("(QccWAVLiftingSynthesisIntCohenDaubechiesFeauveau9_7): Undefined boundary method");              return(1);            }          break;                  case 1:          switch (boundary)            {            case QCCWAVWAVELET_BOUNDARY_SYMMETRIC_EXTENSION:              QccWAVCDF97SynthesisIntSymmetricOddEven(signal, signal_length);              break;                          case QCCWAVWAVELET_BOUNDARY_PERIODIC_EXTENSION:              QccErrorAddMessage("(QccWAVLiftingSynthesisIntCohenDaubechiesFeauveau9_7): Signal length must be even for periodic extension");              return(1);              break;                          default:              QccErrorAddMessage("(QccWAVLiftingSynthesisIntCohenDaubechiesFeauveau9_7): Undefined boundary method");              return(1);            }          break;        }      break;    case QCCWAVWAVELET_PHASE_ODD:      switch (signal_length % 2)        {        case 0:          switch (boundary)            {            case QCCWAVWAVELET_BOUNDARY_SYMMETRIC_EXTENSION:              QccWAVCDF97SynthesisIntSymmetricEvenOdd(signal, signal_length);              break;                          case QCCWAVWAVELET_BOUNDARY_PERIODIC_EXTENSION:              QccWAVCDF97SynthesisIntPeriodicEvenOdd(signal, signal_length);              break;                          default:              QccErrorAddMessage("(QccWAVLiftingSynthesisIntCohenDaubechiesFeauveau9_7): Undefined boundary method");              return(1);            }          break;                  case 1:          switch (boundary)            {            case QCCWAVWAVELET_BOUNDARY_SYMMETRIC_EXTENSION:              QccWAVCDF97SynthesisIntSymmetricOddOdd(signal, signal_length);              break;                          case QCCWAVWAVELET_BOUNDARY_PERIODIC_EXTENSION:              QccErrorAddMessage("(QccWAVLiftingSynthesisIntCohenDaubechiesFeauveau9_7): Signal length must be even for periodic extension");              return(1);              break;                          default:              QccErrorAddMessage("(QccWAVLiftingSynthesisIntCohenDaubechiesFeauveau9_7): Undefined boundary method");              return(1);            }          break;        }      break;    }  return(0);}

⌨️ 快捷键说明

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