Vadim Yanitskiy has submitted this change and it was merged.

Change subject: core/conv/conv_acc.c: delete reset_decoder()
......................................................................


core/conv/conv_acc.c: delete reset_decoder()

Currently this implementation exposes nothing than
osmo_conv_decode_acc(), so it wasn't possible to call
reset_decoder() from outside.

The method itself was used to initialize accumulated
path metrics and the starting state of encoder. Now
this code is moved to generate_trellis().

Moreover, setting accumulated path metrics inside
existing loop is a bit faster that calling memset().

Change-Id: I8f17cebf468cf0106927ccee091cfb2896649cb2
---
M src/conv_acc.c
1 file changed, 13 insertions(+), 20 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/conv_acc.c b/src/conv_acc.c
index c4545d7..7f03628 100644
--- a/src/conv_acc.c
+++ b/src/conv_acc.c
@@ -413,32 +413,27 @@
                        rc = gen_state_info(&trellis->vals[i],
                                i, outputs, code);
                }
+
+               if (rc < 0)
+                       goto fail;
+
+               /* Set accumulated path metrics to zero */
+               trellis->sums[i] = 0;
        }
 
-       if (rc < 0)
-               goto fail;
+       /**
+        * For termination other than tail-biting, initialize the zero state
+        * as the encoder starting state. Initialize with the maximum
+        * accumulated sum at length equal to the constraint length.
+        */
+       if (code->term != CONV_TERM_TAIL_BITING)
+               trellis->sums[0] = INT8_MAX * code->N * code->K;
 
        return trellis;
 
 fail:
        free_trellis(trellis);
        return NULL;
-}
-
-/* Reset decoder
- * Set accumulated path metrics to zero. For termination other than
- * tail-biting, initialize the zero state as the encoder starting state.
- * Initialize with the maximum accumulated sum at length equal to the
- * constraint length.
- */
-static void reset_decoder(struct vdecoder *dec, int term)
-{
-       int ns = dec->trellis->num_states;
-
-       memset(dec->trellis->sums, 0, sizeof(int16_t) * ns);
-
-       if (term != CONV_TERM_TAIL_BITING)
-               dec->trellis->sums[0] = INT8_MAX * dec->n * dec->k;
 }
 
 static void _traceback(struct vdecoder *dec,
@@ -640,8 +635,6 @@
        const int *punc, uint8_t *out, int len, int term)
 {
        int8_t depunc[dec->len * dec->n];
-
-       reset_decoder(dec, term);
 
        if (punc) {
                depuncture(seq, punc, depunc, dec->len * dec->n);

-- 
To view, visit https://gerrit.osmocom.org/2967
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I8f17cebf468cf0106927ccee091cfb2896649cb2
Gerrit-PatchSet: 4
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Vadim Yanitskiy <axilira...@gmail.com>
Gerrit-Reviewer: Harald Welte <lafo...@gnumonks.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Tom Tsou <t...@tsou.cc>
Gerrit-Reviewer: Vadim Yanitskiy <axilira...@gmail.com>

Reply via email to