23 #ifndef _CONVOLUTIONAL_INTERLEAVER_H_
24 #define _CONVOLUTIONAL_INTERLEAVER_H_
34 template<
class symbol_type>
60 void transform (symbol_type *out,
const symbol_type *in,
int nsymbols);
66 std::vector<interleaver_fifo<symbol_type> *>
m_fifo;
69 template<
class symbol_type>
76 assert (fifo_size_incr >= 1);
79 m_fifo_size_incr = fifo_size_incr;
81 m_fifo.resize (nbanks);
84 for (
int i = 0; i < nbanks; i++)
88 for (
int i = 0; i < nbanks; i++)
94 template<
class symbol_type>
97 for (
int i = 0; i < m_nbanks; i++)
101 template<
class symbol_type>
void
105 for (
int i = 0; i < m_nbanks; i++)
109 template<
class symbol_type>
int
112 int m = m_nbanks * m_fifo_size_incr;
113 return m * (m_nbanks - 1);
116 template<
class symbol_type>
void
118 const symbol_type *in,
122 for (
int i = 0; i < nsymbols; i++)
123 out[i] = transform (in[i]);