| 96 | |
| 97 | template<typename B, typename R> |
| 98 | int |
| 99 | Decoder_RS<B, R>::_decode_siho(const R* Y_N, int8_t* CWD, B* V_K, const size_t frame_id) |
| 100 | { |
| 101 | // auto t_load = std::chrono::steady_clock::now(); // ----------------------------------------------------------- |
| 102 | // LOAD |
| 103 | tools::hard_decide(Y_N, YH_Nb.data(), this->N); |
| 104 | spu::tools::Bit_packer::pack(YH_Nb.data(), YH_N.data(), this->N, 1, false, this->m); |
| 105 | // auto d_load = std::chrono::steady_clock::now() - t_load; |
| 106 | |
| 107 | // auto t_decod = std::chrono::steady_clock::now(); // -------------------------------------------------------- |
| 108 | // DECODE |
| 109 | auto status = this->_decode(YH_N.data(), frame_id); |
| 110 | // auto d_decod = std::chrono::steady_clock::now() - t_decod; |
| 111 | CWD[0] = !status; |
| 112 | // auto t_store = std::chrono::steady_clock::now(); // --------------------------------------------------------- |
| 113 | // STORE |
| 114 | spu::tools::Bit_packer::unpack(YH_N.data() + this->n_rdncy, V_K, this->K, 1, false, this->m); |
| 115 | // auto d_store = std::chrono::steady_clock::now() - t_store; |
| 116 | |
| 117 | // (*this)[dec::tsk::decode_siho].update_timer(dec::tm::decode_siho::load, d_load); |
| 118 | // (*this)[dec::tsk::decode_siho].update_timer(dec::tm::decode_siho::decode, d_decod); |
| 119 | // (*this)[dec::tsk::decode_siho].update_timer(dec::tm::decode_siho::store, d_store); |
| 120 | |
| 121 | return status; |
| 122 | } |
| 123 | |
| 124 | template<typename B, typename R> |
| 125 | int |