Кресты / Говнокод #19759 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
// TODO: Refactor to one call of 'refineIndexes'
  std::vector<float32_t> *refined_left_1_3 = rec.refineIndexes(LEFT_CHANNEL, std::get<1>(p_l1) * ATT_3dB, INTERP_LINEAR, CROSS_RISE);
  std::vector<float32_t> *refined_right_1_3 = rec.refineIndexes(RIGHT_CHANNEL, std::get<1>(p_r1) * ATT_3dB, INTERP_LINEAR, CROSS_RISE);
  std::vector<float32_t> *refined_left_1_6 = rec.refineIndexes(LEFT_CHANNEL, std::get<1>(p_l1) * ATT_6dB, INTERP_LINEAR, CROSS_FALL);
  std::vector<float32_t> *refined_right_1_6 = rec.refineIndexes(RIGHT_CHANNEL, std::get<1>(p_r1) * ATT_6dB, INTERP_LINEAR, CROSS_FALL);
  std::vector<float32_t> *refined_left_2_3 = rec.refineIndexes(LEFT_CHANNEL, std::get<1>(p_l2) * ATT_3dB, INTERP_PARABOLIC, CROSS_RISE);
  std::vector<float32_t> *refined_right_2_3 = rec.refineIndexes(RIGHT_CHANNEL, std::get<1>(p_r2) * ATT_3dB, INTERP_PARABOLIC, CROSS_RISE);
  std::vector<float32_t> *refined_left_2_6 = rec.refineIndexes(LEFT_CHANNEL, std::get<1>(p_l2) * ATT_6dB, INTERP_PARABOLIC, CROSS_FALL);
  std::vector<float32_t> *refined_right_2_6 = rec.refineIndexes(RIGHT_CHANNEL, std::get<1>(p_r2) * ATT_6dB, INTERP_PARABOLIC, CROSS_FALL);
  
  bool exists_att_3dB = refined_left_1_3->size() > 0 && refined_right_1_3->size() > 0 && refined_left_2_3->size() > 0 && refined_right_2_3->size() > 0;
  bool exists_att_6dB = refined_left_1_6->size() > 0 && refined_right_1_6->size() > 0 && refined_left_2_6->size() > 0 && refined_right_2_6->size() > 0;

  if (exists_att_3dB || exists_att_6dB)  {
    float32_t rdTOA_l_3, rdTOA_r_3, rdBW_3, rdSW_3, rdTOA_l_6, rdTOA_r_6, rdBW_6, rdSW_6;
    if (exists_att_3dB && !exists_att_6dB) {
      rdTOA_l_6 = rdTOA_l_3 = refined_left_2_3->back() - refined_left_1_3->front();
      rdTOA_r_6 = rdTOA_r_3 = refined_right_2_3->back() - refined_right_1_3->front();
      rdBW_6 = rdBW_3 = refined_left_2_3->back() - refined_right_2_3->back();
      rdSW_6 = rdSW_3 = refined_left_1_3->front() - refined_right_1_3->front();
    } 
    else if (!exists_att_3dB && exists_att_6dB) {
      rdTOA_l_6 = rdTOA_l_3 = refined_left_2_6->back() - refined_left_1_6->front();
      rdTOA_r_6 = rdTOA_r_3 = refined_right_2_6->back() - refined_right_1_6->front();
      rdBW_6 = rdBW_3 = refined_left_2_6->back() - refined_right_2_6->back();
      rdSW_6 = rdSW_3 = refined_left_1_6->front() - refined_right_1_6->front();
    }
    else {
      rdTOA_l_3 = refined_left_2_3->back() - refined_left_1_3->front();
      rdTOA_r_3 = refined_right_2_3->back() - refined_right_1_3->front();
      rdBW_3 = refined_left_2_3->back() - refined_right_2_3->back();
      rdSW_3 = refined_left_1_3->front() - refined_right_1_3->front();
      rdTOA_l_6 = refined_left_2_6->back() - refined_left_1_6->front();
      rdTOA_r_6 = refined_right_2_6->back() - refined_right_1_6->front();
      rdBW_6 = refined_left_2_6->back() - refined_right_2_6->back();
      rdSW_6 = refined_left_1_6->front() - refined_right_1_6->front();
    }
    float32_t rdTOA_l = (rdTOA_l_3 + rdTOA_l_6) / 2f;
    float32_t rdTOA_r =(rdTOA_r_3 + rdTOA_r_6) / 2f;
    float32_t rdBW = (rdBW_3 + rdBW_6) / 2f;
    float32_t rdSW = (rdSW_3 + rdSW_6) / 2f;

    //TODO: Watch for group delay compensation!
    float32_t rdeltaTOA = (rdTOA_l + rdTOA_r - 2 * groupDelay) / (2.0 * AUDIO_SAMPLE_RATE_EXACT);
    float32_t rdeltaBlastWave = rdBW / AUDIO_SAMPLE_RATE_EXACT;
    float32_t rdeltaShockWave = rdSW / AUDIO_SAMPLE_RATE_EXACT;
    //..................................................
  if (sd_init_status == SD_OK && current_settings.log) logFile.close();

  refined_left_1_3->clear();
  refined_right_1_3->clear();
  refined_left_2_3->clear();
  refined_right_2_3->clear();
  refined_left_1_6->clear();
  refined_right_1_6->clear();
  refined_left_2_6->clear();
  refined_right_2_6->clear();

  delete refined_left_1_3;
  delete refined_right_1_3;
  delete refined_left_2_3;
  delete refined_right_2_3;
  delete refined_left_1_6;
  delete refined_right_1_6;
  delete refined_left_2_6;
  delete refined_right_2_6;

50 часов без сна... Чувствую я пожалею завтра о том, что сегодня это написал.

Запостил: FMB FMB, (Updated )

Комментарии (9) RSS

  • Был у меня такой случай: пришлось мало спать 2 недели (не более 2х часов в сутки). Потом не спал около 60 часов к ряду, тк понял что мне не хватает 10ти часов. Ну и конечно да, почти всегда, пока не спал - писал код.

    Так вот в последние 4тверо суток я проэкт таки запилил и все работало.

    Но вот в оставшейся части проэкта в последние несколько суток код мало того что скатился в говно, так там даже не появилось ни одного исключения. Вместо исключений везде юзал вереницы ифов и кодов возврата.

    После запиливания проекта я был не много не мало удивлен такому неожиданному повороту событий. И меня озарило... Я понял почему линуксятники пишут на сишке... В свободное от лекций время им тоже приходится не спать, чтобы комитить в ведро...
    Ответить
      • Так всё зависит от выбранного eh.

        dwarf он практически zero-cost, в 99% неисключительных случаев.
        В sjlj там да. В реале всем похер, потому что тормоза всегда сидят в неоптимальных алгоритмах.
        Ответить
        • > dwarf он практически zero-cost
          Zero cost он всё-таки только для путей без исключений. А выброс-поимка исключения не бесплатные...
          Ответить
          • >dwarf он практически zero-cost [в 99% неисключительных случаев]

            ЦИТИРУЙ ВЫРВАННОЕ ИЗ КОНТЕКСТА
            @
            ДОБЛЕСТНО УТОЧНЯЙ
            Ответить
    • >Вместо исключений везде юзал вереницы ифов и кодов возврата.
      Go?

      Опасно тебе отвечать, человек-копипаста.
      Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8