From ae8dbb4d776461c8945570594d67d8bb9b7100c5 Mon Sep 17 00:00:00 2001 From: Sylvain Munaut Date: Thu, 24 Nov 2011 17:47:32 +0100 Subject: core/conv: Add utility methods to know length of coded/decoded vectors Signed-off-by: Sylvain Munaut --- src/conv.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'src') diff --git a/src/conv.c b/src/conv.c index 0be65109..ac39e29f 100644 --- a/src/conv.c +++ b/src/conv.c @@ -41,6 +41,40 @@ #include +/* ------------------------------------------------------------------------ */ +/* Common */ +/* ------------------------------------------------------------------------ */ + +int +osmo_conv_get_input_length(const struct osmo_conv_code *code, int len) +{ + return len <= 0 ? code->len : len; +} + +int +osmo_conv_get_output_length(const struct osmo_conv_code *code, int len) +{ + int pbits, in_len, out_len; + + /* Input length */ + in_len = osmo_conv_get_input_length(code, len); + + /* Output length */ + out_len = in_len * code->N; + + if (code->term == CONV_TERM_FLUSH) + out_len += code->N * (code->K - 1); + + /* Count punctured bits */ + if (code->puncture) { + for (pbits=0; code->puncture[pbits] >= 0; pbits++); + out_len -= pbits; + } + + return out_len; +} + + /* ------------------------------------------------------------------------ */ /* Encoding */ /* ------------------------------------------------------------------------ */ -- cgit v1.2.3