From 7f3caf941e1c3cdcf09491a16c857a0cfc3a8415 Mon Sep 17 00:00:00 2001
From: Koen Vos <koen.vos@skype.net>
Date: Wed, 26 Oct 2011 08:03:31 -0400
Subject: [PATCH] Fixes another minor bug introduced in 43a0de4af15

---
 silk/fixed/encode_frame_FIX.c | 16 +++++++++-------
 silk/float/encode_frame_FLP.c | 16 +++++++++-------
 2 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/silk/fixed/encode_frame_FIX.c b/silk/fixed/encode_frame_FIX.c
index 34a480c2e..1f27131be 100644
--- a/silk/fixed/encode_frame_FIX.c
+++ b/silk/fixed/encode_frame_FIX.c
@@ -199,6 +199,15 @@ TOC(NSQ)
             } else if( gainsID == gainsID_upper ) {
                 nBits = nBits_upper;
             } else {
+                /* Restore part of the input state */
+                if( iter > 0 ) {
+                    silk_memcpy( psRangeEnc, &sRangeEnc_copy, sizeof( ec_enc ) );
+                    silk_memcpy( &psEnc->sCmn.sNSQ, &sNSQ_copy, sizeof( silk_nsq_state ) );
+                    psEnc->sCmn.indices.Seed = seed_copy;
+                    psEnc->sCmn.ec_prevLagIndex = ec_prevLagIndex_copy;
+                    psEnc->sCmn.ec_prevSignalType = ec_prevSignalType_copy;
+                }
+
                 /*****************************************/
                 /* Noise shaping quantization            */
                 /*****************************************/
@@ -310,13 +319,6 @@ TOC(ENCODE_PULSES)
 
             /* Unique identifier of gains vector */
             gainsID = silk_gains_ID( psEnc->sCmn.indices.GainsIndices, psEnc->sCmn.nb_subfr );
-
-            /* Restore part of the input state */
-            silk_memcpy( psRangeEnc, &sRangeEnc_copy, sizeof( ec_enc ) );
-            silk_memcpy( &psEnc->sCmn.sNSQ, &sNSQ_copy, sizeof( silk_nsq_state ) );
-            psEnc->sCmn.indices.Seed = seed_copy;
-            psEnc->sCmn.ec_prevLagIndex = ec_prevLagIndex_copy;
-            psEnc->sCmn.ec_prevSignalType = ec_prevSignalType_copy;
         }
     }
 
diff --git a/silk/float/encode_frame_FLP.c b/silk/float/encode_frame_FLP.c
index 635b964bc..717b1e0a9 100644
--- a/silk/float/encode_frame_FLP.c
+++ b/silk/float/encode_frame_FLP.c
@@ -201,6 +201,15 @@ TOC(NSQ)
             } else if( gainsID == gainsID_upper ) {
                 nBits = nBits_upper;
             } else {
+                /* Restore part of the input state */
+                if( iter > 0 ) {
+                    silk_memcpy( psRangeEnc, &sRangeEnc_copy, sizeof( ec_enc ) );
+                    silk_memcpy( &psEnc->sCmn.sNSQ, &sNSQ_copy, sizeof( silk_nsq_state ) );
+                    psEnc->sCmn.indices.Seed = seed_copy;
+                    psEnc->sCmn.ec_prevLagIndex = ec_prevLagIndex_copy;
+                    psEnc->sCmn.ec_prevSignalType = ec_prevSignalType_copy;
+                }
+
                 /*****************************************/
                 /* Noise shaping quantization            */
                 /*****************************************/
@@ -309,13 +318,6 @@ TOC(ENCODE_PULSES)
             for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) {
                 sEncCtrl.Gains[ i ] = pGains_Q16[ i ] / 65536.0f;
             }
-
-            /* Restore part of the input state */
-            silk_memcpy( psRangeEnc, &sRangeEnc_copy, sizeof( ec_enc ) );
-            silk_memcpy( &psEnc->sCmn.sNSQ, &sNSQ_copy, sizeof( silk_nsq_state ) );
-            psEnc->sCmn.indices.Seed = seed_copy;
-            psEnc->sCmn.ec_prevLagIndex = ec_prevLagIndex_copy;
-            psEnc->sCmn.ec_prevSignalType = ec_prevSignalType_copy;
         }
     }
 
-- 
GitLab