ГОСТ Р 53556.12-2014
for
(7=0;
i<N/2: i++) {
signalf2*i]
=
tempiij;
signalf2*i+l] = templn/2+iJ:
J
}
Инверсная перестановка
P:
if (Mono_I/uMDCT) {
for (i=
0:
i<N;
/+=
4) {
(signalQ{i+2J, signal0[i+3j) = (signalQ{i+2], signalOfi+2]);
I
I
Шаги подъема для прямого и инверсного
Int-DCT-
IV:
void lifiingStep2and3(IN732* signal\, 1NTS2* liftBuffer, int N)
/
copyINT22(signal
1.
liftBuffer, N/2):
shifiNormalize = DCTlVs(/rt2_fixpt(liftBuffer, N/2) +
1;
if(shifiNormalize > SHIFT_FOR_ERROR_FEEDBAСK)
/
shifiRightlNT32(liftBuffer, N/2.
shifiNormalize - SH!FT_FOR_ERROR_FEEDBAСК);
shifiNormalize
=
SHIFT_FOR_ERR()R_FEEDBACK:
I
for
(A=0;
k<N/2: k++)f
1
liftBufferIk]
•=
signal)Ik] << (shifiNormalize
-
);
/
errorFeedback
= 0:
for (k=0: k<N/2: k++) {
liftBufferlk]
=
shiftRoundIN732withErrorFeedback(liftBuffer(k}.
&errorFeedback, shifiNormalize):
I
i
void liftingStep4(INT32* signal
0.
INT32* liftBuffer. int N) f
copy!NTb2(signalQ, liftBuffer. N/2):
shifiNormalize
=
DCT\\sqrt2Ji.xpKliftBuffer. N/2):
for(k=Q; k<N/2; k++) /
47