summaryrefslogtreecommitdiff
path: root/gr-fec/lib/polar_decoder_sc_systematic.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-fec/lib/polar_decoder_sc_systematic.cc')
-rw-r--r--gr-fec/lib/polar_decoder_sc_systematic.cc28
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)