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

📄 lifting_cdf5_3.c

📁 spiht for linux this is used to decod and encode vedio i wich all enjoy
💻 C
📖 第 1 页 / 共 2 页
字号:
        }      break;    }    return(0);}static void QccWAVCDF53SynthesisSymmetricEvenEven(QccVector signal,                                                  int signal_length){  int index;    for (index = 1; index < signal_length; index += 2)    signal[index] *= -M_SQRT2;    signal[0] =    signal[0] / M_SQRT2 - signal[1] / 2;  for (index = 2; index < signal_length; index += 2)    signal[index] =      signal[index] / M_SQRT2 -      (signal[index + 1] + signal[index - 1]) / 4;    for (index = 1; index < signal_length - 2; index += 2)    signal[index] += (signal[index - 1] + signal[index + 1]) / 2;  signal[signal_length - 1] += signal[signal_length - 2];}static void QccWAVCDF53SynthesisSymmetricEvenOdd(QccVector signal,                                                 int signal_length){  int index;    for (index = 0; index < signal_length; index += 2)    signal[index] *= -M_SQRT2;  for (index = 1; index < signal_length - 2; index += 2)    signal[index] =      signal[index] / M_SQRT2 - (signal[index + 1] + signal[index - 1]) / 4;  signal[signal_length - 1] =     signal[signal_length - 1] / M_SQRT2 - signal[signal_length - 2] / 2;    signal[0] += signal[1];  for (index = 2; index < signal_length; index += 2)    signal[index] += (signal[index - 1] + signal[index + 1]) / 2;  }static void QccWAVCDF53SynthesisSymmetricOddEven(QccVector signal,                                                 int signal_length){  int index;    for (index = 1; index < signal_length; index += 2)    signal[index] *= -M_SQRT2;    signal[0] =     signal[0] / M_SQRT2 - signal[1] / 2;  for (index = 2; index < signal_length - 2; index += 2)    signal[index] =       signal[index] / M_SQRT2 -      (signal[index + 1] + signal[index - 1]) / 4;  signal[signal_length - 1] =     signal[signal_length - 1] / M_SQRT2 - signal[signal_length - 2] / 2;    for (index = 1; index < signal_length; index += 2)    signal[index] += (signal[index - 1] + signal[index + 1]) / 2;  }static void QccWAVCDF53SynthesisSymmetricOddOdd(QccVector signal,                                                int signal_length){  int index;    for (index = 0; index < signal_length; index += 2)    signal[index] *= -M_SQRT2;  for (index = 1; index < signal_length; index += 2)    signal[index] =       signal[index] / M_SQRT2 - (signal[index + 1] + signal[index - 1]) / 4;  signal[0] += signal[1];  for (index = 2; index < signal_length - 2; index += 2)    signal[index] += (signal[index - 1] + signal[index + 1]) / 2;  signal[signal_length - 1] += signal[signal_length - 2];  }static void QccWAVCDF53SynthesisPeriodicEvenEven(QccVector signal,                                                 int signal_length){  int index;    for (index = 1; index < signal_length; index += 2)    signal[index] *= -M_SQRT2;    signal[0] =    signal[0] / M_SQRT2 - (signal[1] + signal[signal_length - 1]) / 4;  for (index = 2; index < signal_length; index += 2)    signal[index] =      signal[index] / M_SQRT2 -      (signal[index + 1] + signal[index - 1]) / 4;    for (index = 1; index < signal_length - 2; index += 2)    signal[index] += (signal[index - 1] + signal[index + 1]) / 2;  signal[signal_length - 1] +=    (signal[signal_length - 2] + signal[0]) / 2;}static void QccWAVCDF53SynthesisPeriodicEvenOdd(QccVector signal,                                                int signal_length){  int index;  for (index = 0; index < signal_length; index += 2)    signal[index] *= -M_SQRT2;  for (index = 1; index < signal_length - 1; index += 2)    signal[index] = signal[index] / M_SQRT2 -      (signal[index + 1] + signal[index - 1]) / 4;  signal[signal_length - 1] = signal[signal_length - 1] / M_SQRT2 -    (signal[0] + signal[signal_length - 2]) / 4;    signal[0] +=    (signal[signal_length - 1] + signal[1]) / 2;  for (index = 2; index < signal_length; index += 2)    signal[index] += (signal[index - 1] + signal[index + 1]) / 2;}static void QccWAVCDF53SynthesisBoundaryEvenEven(QccVector signal,                                                 int signal_length){  int index;    for (index = 1; index < signal_length; index += 2)    signal[index] *= -M_SQRT2;    signal[0] =    signal[0] / M_SQRT2 - (3 * signal[1] - signal[3]) / 4;  for (index = 2; index < signal_length; index += 2)    signal[index] =      signal[index] / M_SQRT2 -      (signal[index + 1] + signal[index - 1]) / 4;    for (index = 1; index < signal_length - 2; index += 2)    signal[index] += (signal[index - 1] + signal[index + 1]) / 2;  signal[signal_length - 1] +=    (3 * signal[signal_length - 2] - signal[signal_length - 4]) / 2;}static void QccWAVCDF53SynthesisBoundaryEvenOdd(QccVector signal,                                                int signal_length){  int index;    for (index = 0; index < signal_length; index += 2)    signal[index] *= -M_SQRT2;    for (index = 1; index < signal_length - 2; index += 2)    signal[index] =       signal[index] / M_SQRT2 - (signal[index + 1] + signal[index - 1]) / 4;  signal[signal_length - 1] =     signal[signal_length - 1] / M_SQRT2 -     (3 * signal[signal_length - 2] - signal[signal_length - 4]) / 4;    signal[0] +=    (3 * signal[1] - signal[3]) / 2;  for (index = 2; index < signal_length; index += 2)    signal[index] += (signal[index - 1] + signal[index + 1]) / 2;}static void QccWAVCDF53SynthesisBoundaryOddEven(QccVector signal,                                                int signal_length){  int index;    for (index = 1; index < signal_length; index += 2)    signal[index] *= -M_SQRT2;    signal[0] =    signal[0] / M_SQRT2 - (3 * signal[1] - signal[3]) / 4;  for (index = 2; index < signal_length - 2; index += 2)    signal[index] =       signal[index] / M_SQRT2 -      (signal[index + 1] + signal[index - 1]) / 4;  signal[signal_length - 1] =     signal[signal_length - 1] / M_SQRT2 -    (3 * signal[signal_length - 2] - signal[signal_length - 4]) / 4;    for (index = 1; index < signal_length; index += 2)    signal[index] += (signal[index - 1] + signal[index + 1]) / 2;  }static void QccWAVCDF53SynthesisBoundaryOddOdd(QccVector signal,                                               int signal_length){  int index;    for (index = 0; index < signal_length; index += 2)    signal[index] *= -M_SQRT2;  for (index = 1; index < signal_length; index += 2)    signal[index] =       signal[index] / M_SQRT2 - (signal[index + 1] + signal[index - 1]) / 4;    signal[0] += (3 * signal[1] - signal[3]) / 2;  for (index = 2; index < signal_length - 2; index += 2)    signal[index] += (signal[index - 1] + signal[index + 1]) / 2;  signal[signal_length - 1] +=     (3 * signal[signal_length - 2] - signal[signal_length - 4]) / 2;  }int QccWAVLiftingSynthesisCohenDaubechiesFeauveau5_3(QccVector signal,                                                     int signal_length,                                                     int phase,                                                     int boundary){  if (signal == NULL)    return(0);    if (!signal_length)    return(0);    if (signal_length == 1)    {      if (phase == QCCWAVWAVELET_PHASE_EVEN)        signal[0] /= M_SQRT2;      else        signal[0] *= M_SQRT2;      return(0);    }    if ((boundary == QCCWAVWAVELET_BOUNDARY_BOUNDARY_WAVELET) &&      ((signal_length == 2) || (signal_length == 3)))    boundary = QCCWAVWAVELET_BOUNDARY_SYMMETRIC_EXTENSION;    switch (phase)    {    case QCCWAVWAVELET_PHASE_EVEN:      switch (signal_length % 2)        {        case 0:          switch (boundary)            {            case QCCWAVWAVELET_BOUNDARY_SYMMETRIC_EXTENSION:              QccWAVCDF53SynthesisSymmetricEvenEven(signal, signal_length);              break;                          case QCCWAVWAVELET_BOUNDARY_PERIODIC_EXTENSION:              QccWAVCDF53SynthesisPeriodicEvenEven(signal, signal_length);              break;                          case QCCWAVWAVELET_BOUNDARY_BOUNDARY_WAVELET:              QccWAVCDF53SynthesisBoundaryEvenEven(signal, signal_length);              break;                          default:              QccErrorAddMessage("(QccWAVLiftingSynthesisCohenDaubechiesFeauveau5_3): Undefined boundary method");              return(1);            }          break;                  case 1:          switch (boundary)            {            case QCCWAVWAVELET_BOUNDARY_SYMMETRIC_EXTENSION:              QccWAVCDF53SynthesisSymmetricOddEven(signal, signal_length);              break;                          case QCCWAVWAVELET_BOUNDARY_PERIODIC_EXTENSION:              QccErrorAddMessage("(QccWAVLiftingSynthesisCohenDaubechiesFeauveau5_3): Signal length must be even for periodic extension");              return(1);              break;                          case QCCWAVWAVELET_BOUNDARY_BOUNDARY_WAVELET:              QccWAVCDF53SynthesisBoundaryOddEven(signal, signal_length);              break;                          default:              QccErrorAddMessage("(QccWAVLiftingSynthesisCohenDaubechiesFeauveau5_3): Undefined boundary method");              return(1);            }          break;        }      break;    case QCCWAVWAVELET_PHASE_ODD:      switch (signal_length % 2)        {        case 0:          switch (boundary)            {            case QCCWAVWAVELET_BOUNDARY_SYMMETRIC_EXTENSION:              QccWAVCDF53SynthesisSymmetricEvenOdd(signal, signal_length);              break;                          case QCCWAVWAVELET_BOUNDARY_PERIODIC_EXTENSION:              QccWAVCDF53SynthesisPeriodicEvenOdd(signal, signal_length);              break;                          case QCCWAVWAVELET_BOUNDARY_BOUNDARY_WAVELET:              QccWAVCDF53SynthesisBoundaryEvenOdd(signal, signal_length);              break;                          default:              QccErrorAddMessage("(QccWAVLiftingSynthesisCohenDaubechiesFeauveau5_3): Undefined boundary method");              return(1);            }          break;                  case 1:          switch (boundary)            {            case QCCWAVWAVELET_BOUNDARY_SYMMETRIC_EXTENSION:              QccWAVCDF53SynthesisSymmetricOddOdd(signal, signal_length);              break;                          case QCCWAVWAVELET_BOUNDARY_PERIODIC_EXTENSION:              QccErrorAddMessage("(QccWAVLiftingSynthesisCohenDaubechiesFeauveau5_3): Signal length must be even for periodic extension");              return(1);              break;                          case QCCWAVWAVELET_BOUNDARY_BOUNDARY_WAVELET:              QccWAVCDF53SynthesisBoundaryOddOdd(signal, signal_length);              break;                          default:              QccErrorAddMessage("(QccWAVLiftingSynthesisCohenDaubechiesFeauveau5_3): Undefined boundary method");              return(1);            }          break;        }      break;    }  return(0);}

⌨️ 快捷键说明

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