diff --git a/libAACdec/src/aacdecoder_lib.cpp b/libAACdec/src/aacdecoder_lib.cpp
index 8863da5..50efb0f 100644
--- a/libAACdec/src/aacdecoder_lib.cpp
+++ b/libAACdec/src/aacdecoder_lib.cpp
@@ -791,36 +791,29 @@
         const UINT         flags)
 {
     AAC_DECODER_ERROR ErrorStatus;
-    INT layer;
-    INT nBits;
-    INT interleaved = self->outputInterleaved;
-    HANDLE_FDK_BITSTREAM hBs;
     int fTpInterruption = 0;  /* Transport originated interruption detection. */
     int fTpConceal = 0;       /* Transport originated concealment. */
-    INT_PCM *pTimeData = NULL;
-    INT timeDataSize = 0;
-
 
     if (self == NULL) {
       return AAC_DEC_INVALID_HANDLE;
     }
-
-    pTimeData = self->pcmOutputBuffer;
-    timeDataSize = sizeof(self->pcmOutputBuffer)/sizeof(*self->pcmOutputBuffer);
+    INT interleaved = self->outputInterleaved;
+    INT_PCM *pTimeData = self->pcmOutputBuffer;
+    INT timeDataSize = sizeof(self->pcmOutputBuffer)/sizeof(*self->pcmOutputBuffer);
 
     if (flags & AACDEC_INTR) {
       self->streamInfo.numLostAccessUnits = 0;
     }
 
-    hBs = transportDec_GetBitstream(self->hInput, 0);
+    HANDLE_FDK_BITSTREAM hBs = transportDec_GetBitstream(self->hInput, 0);
 
     /* Get current bits position for bitrate calculation. */
-    nBits = FDKgetValidBits(hBs);
+    INT nBits = FDKgetValidBits(hBs);
     if (! (flags & (AACDEC_CONCEAL | AACDEC_FLUSH) ) )
     {
       TRANSPORTDEC_ERROR err;
 
-      for(layer = 0; layer < self->nrOfLayers; layer++)
+      for(INT layer = 0; layer < self->nrOfLayers; layer++)
       {
         err = transportDec_ReadAccessUnit(self->hInput, layer);
         if (err != TRANSPORTDEC_OK) {
diff --git a/libAACenc/src/metadata_main.cpp b/libAACenc/src/metadata_main.cpp
index e920793..90f8f4e 100644
--- a/libAACenc/src/metadata_main.cpp
+++ b/libAACenc/src/metadata_main.cpp
@@ -488,14 +488,12 @@
 {
     FDK_METADATA_ERROR err = METADATA_OK;
 
-    INT dynrng, compr;
-    DRC_PROFILE profileDrc  = convertProfile(pMetadata->mpegDrc.drc_profile);
-    DRC_PROFILE profileComp = convertProfile(pMetadata->etsiAncData.comp_profile);
-
     if ( (pMetadata==NULL) || (hDrcComp==NULL) ) {
       err = METADATA_INVALID_HANDLE;
       return err;
     }
+    DRC_PROFILE profileDrc  = convertProfile(pMetadata->mpegDrc.drc_profile);
+    DRC_PROFILE profileComp = convertProfile(pMetadata->etsiAncData.comp_profile);
 
     /* first, check if profile is same as last frame
      * otherwise, update setup */
@@ -511,8 +509,8 @@
     }
 
     /* in case of embedding external values, copy this now (limiter may overwrite them) */
-    dynrng = decodeDynrng(pMetadata->mpegDrc.dyn_rng_ctl[0], pMetadata->mpegDrc.dyn_rng_sgn[0]);
-    compr  = decodeCompr(pMetadata->etsiAncData.compression_value);
+    INT dynrng = decodeDynrng(pMetadata->mpegDrc.dyn_rng_ctl[0], pMetadata->mpegDrc.dyn_rng_sgn[0]);
+    INT compr  = decodeCompr(pMetadata->etsiAncData.compression_value);
 
     /* Call compressor */
     if (FDK_DRC_Generator_Calc(hDrcComp,
