ГОСТ Р 53556.12-2014
shiftLeftIN732(data, N. preShift);
’
preModulationDCTJ’ixptidata. xr. xi. N):
fftShift
=
srfftJixpKxr. xi. N/2);
postModulationDCT,Jixpt(xr, xi. data. N);
shiftNormalize
=
(\oglint(N) - 2)/2
+
preShift -fftShift;
sqrtlNonnalize
=
(loglint(N)
-
2) % 2;
if(sqrf2Nonnalize) {
for (i=0: i<N: i++)
midtHalfSqrtH&data[iJ);
/
return shiftNormalize;
Предварительная модуляция для
DCT-W:
void preModulationDCT_fixpt(h\T32 *x. IN732 *xr. /N732 *xi. int N) (
forii=0:i<N/4;i++) (
rotateIN732((4*i
+1
)*S/NEJMTA_S/ZE/(2*N).
xfN-\-2*i].x{2*i],
&xifi],&xr[i}):
rotateМП2<(4
*/+3;
*SINE_DATA_S1ZE/(2*N).
1
x[2
*/+
j.-x[N-2-2*iJ.
1
1
<&xr[N/2
-
-ij,&xifN/2
-
-ij):
J
I
Постмодуляция для DCT-IV:
void postModulationDCTSIXP{(IN732 *xr, lN732 *xi. IN732
*v,
int N)
/
V
.
10] =xr Ц)]:
x IN-
1/
=-xi fO};
for (i=]: i <N/4: i
++> /
rotate/NT32 <2*i*S/NE_DATA_S/ZE/N.
xr [ij.-xi [i],
&x(2*i] ,&x]N-2*i-\]);
rotatelN732(2 *i*SINE_DAТА_SIZE/N.
xr lN/2-i], xi lN/2-i].
&x f2*i-\] ,&x fN-2*i]):
49