diff options
author | Thomas Habets <thomas@habets.se> | 2020-08-29 23:18:16 +0100 |
---|---|---|
committer | Martin Braun <martin@gnuradio.org> | 2020-09-07 05:14:14 -0700 |
commit | d2c9de98b52e7e9a4918190b1e7079496d2a13b6 (patch) | |
tree | 74b9de2495d7e4ab79dd13bbf6338ca2fb1e2501 /gr-fec/lib/polar_decoder_sc_systematic.cc | |
parent | 0d1d600ab622075a4e56e66642e67fc5c983450e (diff) |
fec: Remove manual memory management
This removes almost all manual memory management in gr-fec/.
`scl_list` is a bit of magic, so requires more thinking.
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) |