Vector Optimized Library of Kernels  3.0.0
Architecture-tuned implementations of math kernels

Overview

encode given data for POLAR code

Dispatcher Prototype

void volk_8u_x3_encodepolar_8u(unsigned char* frame, const unsigned char*
frozen_bit_mask, const unsigned char* frozen_bits, const unsigned char* info_bits,
unsigned int frame_size, unsigned int info_bit_size)

Inputs

  • frame: buffer for encoded frame
  • frozen_bit_mask: bytes with 0xFF for frozen bit positions or 0x00 otherwise.
  • frozen_bits: values of frozen bits, 1 bit per byte
  • info_bits: info bit values, 1 bit per byte
  • frame_size: power of 2 value for frame size.
  • info_bit_size: number of info bits in a frame

Outputs

  • frame: polar encoded frame.

Example

int frame_exp = 10;
int frame_size = 0x01 << frame_exp;
int num_info_bits = frame_size;
int num_frozen_bits = frame_size - num_info_bits;
// function sets frozenbit positions to 0xff and all others to 0x00.
unsigned char* frozen_bit_mask = get_frozen_bit_mask(frame_size, num_frozen_bits);
// set elements to desired values. Typically all zero.
unsigned char* frozen_bits = (unsigned char) volk_malloc(sizeof(unsigned char) *
num_frozen_bits, volk_get_alignment());
unsigned char* frame = (unsigned char) volk_malloc(sizeof(unsigned char) * frame_size,
volk_get_alignment()); unsigned char* temp = (unsigned char)
volk_malloc(sizeof(unsigned char) * frame_size, volk_get_alignment());
unsigned char* info_bits = get_info_bits_to_encode(num_info_bits);
volk_8u_x3_encodepolar_8u_x2_generic(frame, temp, frozen_bit_mask, frozen_bits,
info_bits, frame_size);
volk_free(frozen_bit_mask);
volk_free(frozen_bits);
volk_free(frame);
volk_free(temp);
volk_free(info_bits);
size_t volk_get_alignment(void)
Get the machine alignment in bytes.
Definition: volk.tmpl.c:90
static void volk_8u_x3_encodepolar_8u_x2_generic(unsigned char *frame, unsigned char *temp, const unsigned char *frozen_bit_mask, const unsigned char *frozen_bits, const unsigned char *info_bits, unsigned int frame_size)
Definition: volk_8u_x3_encodepolar_8u_x2.h:85
__VOLK_DECL_BEGIN VOLK_API void * volk_malloc(size_t size, size_t alignment)
Allocate size bytes of data aligned to alignment.
Definition: volk_malloc.c:38
VOLK_API void volk_free(void *aptr)
Free's memory allocated by volk_malloc.
Definition: volk_malloc.c:80