comparison src/cs/layer1/gtt_include/ctm/diag_interleaver.h @ 0:4e78acac3d88

src/{condat,cs,gpf,nucleus}: import from Selenite
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 16 Oct 2020 06:23:26 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4e78acac3d88
1 /*
2 *******************************************************************************
3 *
4 * COPYRIGHT (C) 2000 BY ERICSSON EUROLAB DEUTSCHLAND GmbH
5 * 90411 NUERNBERG, GERMANY, Tel Int + 49 911 5217 100
6 *
7 * The program(s) may be used and/or copied only with the
8 * written permission from Ericsson or in accordance
9 * with the terms and conditions stipulated in the agreement or
10 * contract under which the program(s) have been supplied.
11 *
12 *******************************************************************************
13 *
14 * File : diag_interleaver.h
15 * Purpose : diagonal (chain) interleaver routine
16 *
17 *******************************************************************************
18 */
19 #ifndef diag_interleaver_h
20 #define diag_interleaver_h "$Id: $"
21
22 /*
23 *******************************************************************************
24 * INCLUDE FILES
25 *******************************************************************************
26 */
27
28 #include "init_interleaver.h"
29
30
31 /*
32 *******************************************************************************
33 * DECLARATION OF PROTOTYPES
34 *******************************************************************************
35 */
36
37 /* ---------------------------------------------------------------------- */
38 /* diag_interleaver: */
39 /* Diagonal (chain) interleaver, based on block-by-block processing. */
40 /* An arbitrary number of bits can be interleaved, depending of the */
41 /* value num_bits. The vector "out", which must have the same */
42 /* length than "in", contains the interleaved samples. */
43 /* All states (memory etc.) of the interleaver are stored in the variable */
44 /* *intl_state. Therefore, a pointer to this variable must be handled to */
45 /* this function. This variable initially has to be initialized by the */
46 /* function init_interleaver, which offers also the possibility to */
47 /* specify the dimensions of the interleaver matrix. */
48 /* ---------------------------------------------------------------------- */
49
50 void diag_interleaver(WORD16 *out,
51 WORD16 *in,
52 WORD16 num_bits,
53 interleaver_state_t *intl_state);
54
55 /* ---------------------------------------------------------------------- */
56 /* diag_interleaver_flush: */
57 /* Execution of the diagonal (chain) interleaver without writing in new */
58 /* samples. The number of calculated output samples is returned via the */
59 /* value *num_bits. */
60 /* ---------------------------------------------------------------------- */
61
62 void diag_interleaver_flush(WORD16 *out,
63 WORD16 *num_bits,
64 interleaver_state_t *intl_state);
65
66 #endif
67