add matrix interleave for voice frames (untested)

This commit is contained in:
Harald Welte 2011-05-27 10:59:09 +02:00
parent a9885473d2
commit e3032cd897
2 changed files with 28 additions and 0 deletions

View File

@ -57,3 +57,26 @@ void block_deinterleave(uint32_t K, uint32_t a, const uint8_t *in, uint8_t *out)
out[i-1] = in[k-1];
}
}
/* EN 300 395-2 Section 5.5.3 Matrix interleaving (voice */
void matrix_interleave(uint32_t lines, uint32_t columns,
const uint8_t *in, uint8_t *out)
{
int i, j;
for (i = 0; i < columns; i++) {
for (j = 0; j < lines; j++)
out[i*lines + columns] = in[j*columns + lines];
}
}
void matrix_deinterleave(uint32_t lines, uint32_t columns,
const uint8_t *in, uint8_t *out)
{
int i, j;
for (i = 0; i < columns; i++) {
for (j = 0; j < lines; j++)
out[j*columns + lines] = in[i*lines + columns];
}
}

View File

@ -9,4 +9,9 @@
void block_interleave(uint32_t K, uint32_t a, const uint8_t *in, uint8_t *out);
void block_deinterleave(uint32_t K, uint32_t a, const uint8_t *in, uint8_t *out);
void matrix_interleave(uint32_t lines, uint32_t columns,
const uint8_t *in, uint8_t *out);
void matrix_deinterleave(uint32_t lines, uint32_t columns,
const uint8_t *in, uint8_t *out);
#endif /* TETRA_INTERLEAVE_H */