| 28 | |
| 29 | template<typename B> |
| 30 | void |
| 31 | Encoder_LDPC_DVBS2<B>::_encode(const B* U_K, B* X_N, const size_t /*frame_id*/) |
| 32 | { |
| 33 | std::copy(U_K, U_K + this->K, X_N); |
| 34 | std::fill(X_N + this->K, X_N + this->N, 0); |
| 35 | |
| 36 | B* Px = X_N + this->K; |
| 37 | const int* p = dvbs2.EncValues.data(); |
| 38 | int xPos = 0; |
| 39 | |
| 40 | for (int y = 0; y < dvbs2.N_LINES; y++) |
| 41 | { |
| 42 | int nbPos = (*p++); |
| 43 | |
| 44 | for (int l = 0; l < dvbs2.M; l++) |
| 45 | { |
| 46 | int bit = (int)U_K[xPos]; |
| 47 | if (bit == 1) |
| 48 | { |
| 49 | for (int q = 0; q < nbPos; q++) |
| 50 | { |
| 51 | // int position = (p[q] + (xPos % dvbs2.M) * dvbs2.Q) % dvbs2.NmK; |
| 52 | int position = (p[q] + l * dvbs2.Q) % dvbs2.NmK; |
| 53 | Px[position] ^= bit; |
| 54 | } |
| 55 | } |
| 56 | xPos++; |
| 57 | } |
| 58 | p += nbPos; |
| 59 | } |
| 60 | |
| 61 | for (int i = 1; i < dvbs2.NmK; i++) |
| 62 | Px[i] = Px[i] ^ Px[i - 1]; |
| 63 | } |
| 64 | |
| 65 | // ==================================================================================== explicit template instantiation |
| 66 | #include "Tools/types.h" |
nothing calls this directly
no outgoing calls
no test coverage detected