コード例 #1
0
ファイル: compare.c プロジェクト: george-hopkins/pkg-webrtc
void CompareComplex16(struct SnrResult* snr, OMX_SC16* actual,
                      OMX_SC16* expected, int size) {
    double realSignalPower = 0;
    double imagSignalPower = 0;
    double complexSignalPower = 0;
    double realNoisePower = 0;
    double imagNoisePower = 0;
    double complexNoisePower = 0;
    int k;
    for (k = 0; k < size; ++k) {
        double x2;
        double y2;

        if (verbose > 255) {
            printf("%4d: (%10d, %10d) (%10d, %10d)\n", k,
                   actual[k].Re, actual[k].Im,
                   expected[k].Re, expected[k].Im);
        }

        x2 = pow((double) expected[k].Re, 2);
        y2 = pow((double) expected[k].Im, 2);
        realSignalPower += x2;
        imagSignalPower += y2;
        complexSignalPower += x2 + y2;

        x2 = pow((double) actual[k].Re - expected[k].Re, 2);
        y2 = pow((double) actual[k].Im - expected[k].Im, 2);

        realNoisePower += x2;
        imagNoisePower += y2;
        complexNoisePower += x2 + y2;
    }

    snr->real_snr_ = CalculateSNR(realSignalPower, realNoisePower);
    snr->imag_snr_ = CalculateSNR(imagSignalPower, imagNoisePower);
    snr->complex_snr_ = CalculateSNR(complexSignalPower, complexNoisePower);
}
コード例 #2
0
ファイル: compare.c プロジェクト: windyuuy/opera
void CompareFloat(struct SnrResult* snr, OMX_F32* actual,
                  OMX_F32* expected, int size) {
  double signal_power = 0;
  double noise_power = 0;

  int k;
  for (k = 0; k < size; ++k) {
    double x2;

    x2 = pow((double) expected[k], 2);

    signal_power += x2;

    x2 = pow((double) actual[k] - expected[k], 2);

    noise_power += x2;
  }

  snr->real_snr_ = CalculateSNR(signal_power, noise_power);
  snr->imag_snr_ = -10000;
  snr->complex_snr_ = snr->real_snr_;
}
コード例 #3
0
ファイル: compare.c プロジェクト: windyuuy/opera
void CompareReal16(struct SnrResult* snr, OMX_S16* actual,
                   OMX_S16* expected, int size) {
  double real_signal_power = 0;
  double real_noise_power = 0;

  int k;
  for (k = 0; k < size; ++k) {
    double x2;

    x2 = pow((double) expected[k], 2);

    real_signal_power += x2;

    x2 = pow((double) actual[k] - expected[k], 2);

    real_noise_power += x2;
  }

  snr->real_snr_ = CalculateSNR(real_signal_power, real_noise_power);
  snr->imag_snr_ = -10000;
  snr->complex_snr_ = -10000;
}