summaryrefslogtreecommitdiff
path: root/gr-dtv/lib/atsc/atsc_viterbi_decoder_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-dtv/lib/atsc/atsc_viterbi_decoder_impl.cc')
-rw-r--r--gr-dtv/lib/atsc/atsc_viterbi_decoder_impl.cc15
1 files changed, 6 insertions, 9 deletions
diff --git a/gr-dtv/lib/atsc/atsc_viterbi_decoder_impl.cc b/gr-dtv/lib/atsc/atsc_viterbi_decoder_impl.cc
index c80731000b..e02649861e 100644
--- a/gr-dtv/lib/atsc/atsc_viterbi_decoder_impl.cc
+++ b/gr-dtv/lib/atsc/atsc_viterbi_decoder_impl.cc
@@ -43,23 +43,20 @@ atsc_viterbi_decoder_impl::atsc_viterbi_decoder_impl()
*/
// the -4 is for the 4 sync symbols
- int fifo_size = ATSC_DATA_SEGMENT_LENGTH - 4 - viterbi[0].delay();
+ const int fifo_size = ATSC_DATA_SEGMENT_LENGTH - 4 - viterbi[0].delay();
+ fifo.reserve(NCODERS);
for (int i = 0; i < NCODERS; i++)
- fifo[i] = new fifo_t(fifo_size);
+ fifo.emplace_back(fifo_size);
reset();
}
-atsc_viterbi_decoder_impl::~atsc_viterbi_decoder_impl()
-{
- for (int i = 0; i < NCODERS; i++)
- delete fifo[i];
-}
+atsc_viterbi_decoder_impl::~atsc_viterbi_decoder_impl() {}
void atsc_viterbi_decoder_impl::reset()
{
for (int i = 0; i < NCODERS; i++)
- fifo[i]->reset();
+ fifo[i].reset();
}
std::vector<float> atsc_viterbi_decoder_impl::decoder_metrics() const
@@ -111,7 +108,7 @@ int atsc_viterbi_decoder_impl::work(int noutput_items,
dbindex = dbwhere >> 3;
shift = dbwhere & 0x7;
out_copy[dbindex] = (out_copy[dbindex] & ~(0x03 << shift)) |
- (fifo[encoder]->stuff(dibits[encoder][k]) << shift);
+ (fifo[encoder].stuff(dibits[encoder][k]) << shift);
} /* Symbols fed into one encoder */
} /* Encoders */