comparison src/cs/layer1/gtt_include/ctm/diag_deinterleaver.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
5 *
6
7 * COPYRIGHT (C) 2000 BY ERICSSON EUROLAB DEUTSCHLAND GmbH
8
9 * 90411 NUERNBERG, GERMANY, Tel Int + 49 911 5217 100
10
11 *
12
13 * The program(s) may be used and/or copied only with the
14
15 * written permission from Ericsson or in accordance
16
17 * with the terms and conditions stipulated in the agreement or
18
19 * contract under which the program(s) have been supplied.
20
21 *
22
23 *******************************************************************************
24
25 *
26
27 * File : diag_interleaver.h
28
29 * Purpose : diagonal (chain) deinterleaver routine
30
31 *
32
33 *******************************************************************************
34
35 */
36
37 #ifndef diag_deinterleaver_h
38
39 #define diag_deinterleaver_h "$Id: $"
40
41 #include "l1_confg.h"
42
43 /*
44
45 *******************************************************************************
46
47 * INCLUDE FILES
48
49 *******************************************************************************
50
51 */
52
53
54
55 #include "init_interleaver.h"
56
57
58
59 /*
60
61 *******************************************************************************
62
63 * DECLARATION OF PROTOTYPES
64
65 *******************************************************************************
66
67 */
68
69
70
71 /* ---------------------------------------------------------------------- */
72
73 /* diag_deinterleaver: */
74
75 /* Corresponding deinterleaver to diag_interleaver. */
76
77 /* An arbitrary number of bits can be interleaved, depending of the */
78
79 /* length of the vector "in". The vector "out", which must have the same */
80
81 /* length than "in", contains the interleaved samples. */
82
83 /* All states (memory etc.) of the interleaver are stored in the variable */
84
85 /* *intl_state. Therefore, a pointer to this variable must be handled to */
86
87 /* this function. This variable initially has to be initialized by the */
88
89 /* function init_interleaver, which offers also the possibility to */
90
91 /* specify the dimensions of the deinterleaver matrix. */
92
93 /* ---------------------------------------------------------------------- */
94
95
96
97 void diag_deinterleaver(WORD16 *out,
98
99 WORD16 *in,
100
101 WORD16 num_valid_bits,
102
103 interleaver_state_t *intl_state);
104
105
106
107 /* ---------------------------------------------------------------------- */
108
109 /* shift_deinterleaver: */
110
111 /* Shift of the deinterleaver buffer by <shift> samples. */
112
113 /* shift>0 -> shift to the right */
114
115 /* shift<0 -> shift to the left */
116
117 /* The elements from <insert_bits> are inserted into the resulting space. */
118
119 /* The vector <insert_bits> must have at least abs(shift) elements. */
120
121 /* ---------------------------------------------------------------------- */
122
123
124
125 void shift_deinterleaver(WORD16 shift,
126
127 WORD16 *insert_bits,
128
129 interleaver_state_t *ptr_state);
130
131
132 #if(NEW_WKA_PATCH==1)
133 void just_shift(WORD16 shift, WORD16* in_bits, interleaver_state_t *intl_state);
134 #endif
135
136 #if (TTY_SYNC_MCU == 1)
137 void flush_and_shift_deinterleaver(WORD16 shift,WORD16 *insert_bits,interleaver_state_t *ptr_state);
138 #endif
139
140 #if(TTY_SYNC_MCU_2==1)
141 WORD16 flush_diag_deint(WORD16 *out, WORD16 *in, interleaver_state_t *intl_state);
142 void zero_pad_deint(interleaver_state_t *intl_state);
143 #endif
144
145 #if(OPTIMISED==1)
146 void new_diag_deinterleaver(WORD16 *out,
147 WORD16 jump,
148 WORD16 *flush_vector,
149 WORD16 *in,
150 WORD16 num_valid_bits,
151 interleaver_state_t *intl_state);
152 #endif
153
154 #endif
155