diff options
Diffstat (limited to 'gr-fec/lib/polar_decoder_sc_systematic.cc')
-rw-r--r-- | gr-fec/lib/polar_decoder_sc_systematic.cc | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/gr-fec/lib/polar_decoder_sc_systematic.cc b/gr-fec/lib/polar_decoder_sc_systematic.cc index 20fbad2d38..cd8f3db586 100644 --- a/gr-fec/lib/polar_decoder_sc_systematic.cc +++ b/gr-fec/lib/polar_decoder_sc_systematic.cc @@ -30,34 +30,24 @@ generic_decoder::sptr polar_decoder_sc_systematic::make( polar_decoder_sc_systematic::polar_decoder_sc_systematic( int block_size, int num_info_bits, std::vector<int> frozen_bit_positions) : polar_decoder_common( - block_size, num_info_bits, frozen_bit_positions, std::vector<uint8_t>()) + block_size, num_info_bits, frozen_bit_positions, std::vector<uint8_t>()), + d_llr_vec(block_size * (block_power() + 1)), + d_u_hat_vec(block_size * (block_power() + 1)), + d_frame_vec(block_size) { - d_llr_vec = (float*)volk_malloc(sizeof(float) * block_size * (block_power() + 1), - volk_get_alignment()); - memset(d_llr_vec, 0, sizeof(float) * block_size * (block_power() + 1)); - d_u_hat_vec = (unsigned char*)volk_malloc(block_size * (block_power() + 1), - volk_get_alignment()); - memset(d_u_hat_vec, 0, sizeof(unsigned char) * block_size * (block_power() + 1)); - d_frame_vec = (unsigned char*)volk_malloc(block_size, volk_get_alignment()); - memset(d_frame_vec, 0, sizeof(unsigned char) * block_size); } -polar_decoder_sc_systematic::~polar_decoder_sc_systematic() -{ - volk_free(d_llr_vec); - volk_free(d_u_hat_vec); - volk_free(d_frame_vec); -} +polar_decoder_sc_systematic::~polar_decoder_sc_systematic() {} void polar_decoder_sc_systematic::generic_work(void* in_buffer, void* out_buffer) { const float* in = (const float*)in_buffer; unsigned char* out = (unsigned char*)out_buffer; - initialize_decoder(d_u_hat_vec, d_llr_vec, in); - sc_decode(d_llr_vec, d_u_hat_vec); - volk_encode_block(d_frame_vec, d_u_hat_vec); - extract_info_bits_reversed(out, d_frame_vec); + initialize_decoder(d_u_hat_vec.data(), d_llr_vec.data(), in); + sc_decode(d_llr_vec.data(), d_u_hat_vec.data()); + volk_encode_block(d_frame_vec.data(), d_u_hat_vec.data()); + extract_info_bits_reversed(out, d_frame_vec.data()); } void polar_decoder_sc_systematic::sc_decode(float* llrs, unsigned char* u) |