diff --git a/Android.bp b/Android.bp
index b5ebb72..6060256 100644
--- a/Android.bp
+++ b/Android.bp
@@ -94,7 +94,7 @@
 
     apex_available: [
         "//apex_available:platform",
-        "com.android.bluetooth",
+        "com.android.btservices",
         "com.android.media.swcodec",
     ],
     min_sdk_version: "29",
diff --git a/libAACdec/include/aacdecoder_lib.h b/libAACdec/include/aacdecoder_lib.h
index d7928c0..02596b2 100644
--- a/libAACdec/include/aacdecoder_lib.h
+++ b/libAACdec/include/aacdecoder_lib.h
@@ -431,6 +431,10 @@
 #include "machine_type.h"
 #include "FDK_audio.h"
 
+#define AACDECODER_LIB_VL0 3
+#define AACDECODER_LIB_VL1 2
+#define AACDECODER_LIB_VL2 0
+
 #include "genericStds.h"
 /**
  * \brief  AAC decoder error codes.
diff --git a/libAACdec/src/aacdec_drc.cpp b/libAACdec/src/aacdec_drc.cpp
index 760a9ba..abb9af7 100644
--- a/libAACdec/src/aacdec_drc.cpp
+++ b/libAACdec/src/aacdec_drc.cpp
@@ -1,7 +1,7 @@
 /* -----------------------------------------------------------------------------
 Software License for The Fraunhofer FDK AAC Codec Library for Android
 
-© Copyright  1995 - 2020 Fraunhofer-Gesellschaft zur Förderung der angewandten
+© Copyright  1995 - 2023 Fraunhofer-Gesellschaft zur Förderung der angewandten
 Forschung e.V. All rights reserved.
 
  1.    INTRODUCTION
@@ -217,7 +217,6 @@
   self->progRefLevel = pParams->targetRefLevel;
   self->progRefLevelPresent = 0;
   self->presMode = -1;
-  self->uniDrcPrecedence = 0;
 
   aacDecoder_drcReset(self);
 }
@@ -353,12 +352,6 @@
       self->numOutChannels = (INT)value;
       self->update = 1;
       break;
-    case UNIDRC_PRECEDENCE:
-      if (self == NULL) {
-        return AAC_DEC_INVALID_HANDLE;
-      }
-      self->uniDrcPrecedence = (UCHAR)value;
-      break;
     default:
       return AAC_DEC_SET_PARAM_FAIL;
   } /* switch(param) */
@@ -1258,7 +1251,6 @@
   /* switch on/off processing */
   self->enable = ((p->boost > (FIXP_DBL)0) || (p->cut > (FIXP_DBL)0) ||
                   (p->applyHeavyCompression == ON) || (p->targetRefLevel >= 0));
-  self->enable = (self->enable && !self->uniDrcPrecedence);
 
   self->prevAacNumChannels = aacNumChannels;
   self->update = 0;
diff --git a/libAACdec/src/aacdec_drc.h b/libAACdec/src/aacdec_drc.h
index 2bb945d..f2c1390 100644
--- a/libAACdec/src/aacdec_drc.h
+++ b/libAACdec/src/aacdec_drc.h
@@ -1,7 +1,7 @@
 /* -----------------------------------------------------------------------------
 Software License for The Fraunhofer FDK AAC Codec Library for Android
 
-© Copyright  1995 - 2020 Fraunhofer-Gesellschaft zur Förderung der angewandten
+© Copyright  1995 - 2023 Fraunhofer-Gesellschaft zur Förderung der angewandten
 Forschung e.V. All rights reserved.
 
  1.    INTRODUCTION
@@ -133,8 +133,7 @@
   APPLY_HEAVY_COMPRESSION,
   DEFAULT_PRESENTATION_MODE,
   ENCODER_TARGET_LEVEL,
-  MAX_OUTPUT_CHANNELS,
-  UNIDRC_PRECEDENCE
+  MAX_OUTPUT_CHANNELS
 } AACDEC_DRC_PARAM;
 
 /**
diff --git a/libAACdec/src/aacdec_drc_types.h b/libAACdec/src/aacdec_drc_types.h
index d4393f7..c4c0794 100644
--- a/libAACdec/src/aacdec_drc_types.h
+++ b/libAACdec/src/aacdec_drc_types.h
@@ -1,7 +1,7 @@
 /* -----------------------------------------------------------------------------
 Software License for The Fraunhofer FDK AAC Codec Library for Android
 
-© Copyright  1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten
+© Copyright  1995 - 2023 Fraunhofer-Gesellschaft zur Förderung der angewandten
 Forschung e.V. All rights reserved.
 
  1.    INTRODUCTION
@@ -207,11 +207,6 @@
                                 position in the bitstream (only one per frame) */
   UINT drcPayloadPosition[MAX_DRC_THREADS]; /* Used to store the DRC payload
                                                positions in the bitstream */
-
-  UCHAR
-  uniDrcPrecedence; /* Flag for signalling that uniDrc is active and takes
-                       precedence over legacy DRC */
-
   UCHAR applyExtGain; /* Flag is 1 if extGain has to be applied, otherwise 0. */
 
   FIXP_DBL additionalGainPrev; /* Gain of previous frame to be applied to the
diff --git a/libAACdec/src/aacdecoder.cpp b/libAACdec/src/aacdecoder.cpp
index d5f0cea..ad8ce0d 100644
--- a/libAACdec/src/aacdecoder.cpp
+++ b/libAACdec/src/aacdecoder.cpp
@@ -1,7 +1,7 @@
 /* -----------------------------------------------------------------------------
 Software License for The Fraunhofer FDK AAC Codec Library for Android
 
-© Copyright  1995 - 2021 Fraunhofer-Gesellschaft zur Förderung der angewandten
+© Copyright  1995 - 2023 Fraunhofer-Gesellschaft zur Förderung der angewandten
 Forschung e.V. All rights reserved.
 
  1.    INTRODUCTION
@@ -912,43 +912,6 @@
       }
       *count -= readBits;
     } break;
-    case EXT_UNI_DRC: {
-      DRC_DEC_ERROR drcErr = DRC_DEC_OK;
-      DRC_DEC_CODEC_MODE drcDecCodecMode = DRC_DEC_CODEC_MODE_UNDEFINED;
-      INT nBitsRemaining = FDKgetValidBits(hBs);
-      INT readBits;
-
-      switch (self->streamInfo.aot) {
-        case AOT_AAC_LC:
-        case AOT_SBR:
-        case AOT_PS:
-          drcDecCodecMode = DRC_DEC_MPEG_4_AAC;
-          break;
-        default:
-          error = AAC_DEC_PARSE_ERROR;
-          goto bail;
-      }
-
-      drcErr = FDK_drcDec_SetCodecMode(self->hUniDrcDecoder, drcDecCodecMode);
-      if (drcErr) {
-        error = AAC_DEC_PARSE_ERROR;
-        goto bail;
-      }
-
-      drcErr = FDK_drcDec_ReadUniDrc(self->hUniDrcDecoder, hBs);
-      if (drcErr) {
-        error = AAC_DEC_PARSE_ERROR;
-        goto bail;
-      }
-      readBits = (INT)nBitsRemaining - (INT)FDKgetValidBits(hBs);
-      if (readBits > *count) { /* Read too much. Something went wrong! */
-        error = AAC_DEC_PARSE_ERROR;
-      }
-      *count -= readBits;
-      /* Skip any trailing bits */
-      FDKpushFor(hBs, *count);
-      *count = 0;
-    } break;
     case EXT_LDSAC_DATA:
     case EXT_SAC_DATA:
       /* Read MPEG Surround Extension payload */
@@ -3310,12 +3273,6 @@
       FDKmemcpy(drcChMap, self->chMapping, (8) * sizeof(UCHAR));
     }
 
-    /* deactivate legacy DRC in case uniDrc is active, i.e. uniDrc payload is
-     * present and one of DRC or Loudness Normalization is switched on */
-    aacDecoder_drcSetParam(
-        self->hDrcInfo, UNIDRC_PRECEDENCE,
-        FDK_drcDec_GetParam(self->hUniDrcDecoder, DRC_DEC_IS_ACTIVE));
-
     /* Extract DRC control data and map it to channels (without bitstream delay)
      */
     mapped = aacDecoder_drcProlog(
diff --git a/libAACdec/src/aacdecoder_lib.cpp b/libAACdec/src/aacdecoder_lib.cpp
index 0c83191..ef0515c 100644
--- a/libAACdec/src/aacdecoder_lib.cpp
+++ b/libAACdec/src/aacdecoder_lib.cpp
@@ -1,7 +1,7 @@
 /* -----------------------------------------------------------------------------
 Software License for The Fraunhofer FDK AAC Codec Library for Android
 
-© Copyright  1995 - 2021 Fraunhofer-Gesellschaft zur Förderung der angewandten
+© Copyright  1995 - 2023 Fraunhofer-Gesellschaft zur Förderung der angewandten
 Forschung e.V. All rights reserved.
 
  1.    INTRODUCTION
@@ -1681,7 +1681,7 @@
 
       {
         if ((FDK_drcDec_GetParam(self->hUniDrcDecoder, DRC_DEC_IS_ACTIVE)) &&
-            !(self->flags[0] & AC_RSV603DA)) {
+            (self->flags[0] & AC_USAC)) {
           /* Apply DRC gains*/
           int ch, drcDelay = 0;
           int needsDeinterleaving = 0;
@@ -1689,8 +1689,6 @@
           FIXP_DBL channelGain[(8)];
           int reverseInChannelMap[(8)];
           int reverseOutChannelMap[(8)];
-          int numDrcOutChannels = FDK_drcDec_GetParam(
-              self->hUniDrcDecoder, DRC_DEC_TARGET_CHANNEL_COUNT_SELECTED);
           FDKmemclear(channelGain, sizeof(channelGain));
           for (ch = 0; ch < (8); ch++) {
             reverseInChannelMap[ch] = ch;
@@ -1713,17 +1711,6 @@
           drcDelay += CConcealment_GetDelay(&self->concealCommonData) *
                       self->streamInfo.frameSize;
 
-          for (ch = 0; ch < self->streamInfo.numChannels; ch++) {
-            UCHAR mapValue = FDK_chMapDescr_getMapValue(
-                &self->mapDescr, (UCHAR)ch, self->chMapIndex);
-            if (mapValue < (8)) reverseInChannelMap[mapValue] = ch;
-          }
-          for (ch = 0; ch < (int)numDrcOutChannels; ch++) {
-            UCHAR mapValue = FDK_chMapDescr_getMapValue(
-                &self->mapDescr, (UCHAR)ch, numDrcOutChannels);
-            if (mapValue < (8)) reverseOutChannelMap[mapValue] = ch;
-          }
-
           /* The output of SBR and MPS is interleaved. Deinterleaving may be
            * necessary for FDK_drcDec_ProcessTime, which accepts deinterleaved
            * audio only. */
@@ -1758,11 +1745,9 @@
           FDK_drcDec_Preprocess(self->hUniDrcDecoder);
 
           /* apply DRC1 gain sequence */
-          for (ch = 0; ch < self->streamInfo.numChannels; ch++) {
-            FDK_drcDec_ProcessTime(self->hUniDrcDecoder, drcDelay, DRC_DEC_DRC1,
-                                   ch, reverseInChannelMap[ch] - ch, 1,
-                                   drcWorkBuffer, self->streamInfo.frameSize);
-          }
+          FDK_drcDec_ProcessTime(self->hUniDrcDecoder, drcDelay, DRC_DEC_DRC1,
+                                 0, 0, self->streamInfo.numChannels,
+                                 drcWorkBuffer, self->streamInfo.frameSize);
           /* apply downmix */
           FDK_drcDec_ApplyDownmix(
               self->hUniDrcDecoder, reverseInChannelMap, reverseOutChannelMap,
@@ -1770,12 +1755,10 @@
               &self->streamInfo.numChannels); /* self->streamInfo.numChannels
                                                  may change here */
           /* apply DRC2/3 gain sequence */
-          for (ch = 0; ch < self->streamInfo.numChannels; ch++) {
-            FDK_drcDec_ProcessTime(self->hUniDrcDecoder, drcDelay,
-                                   DRC_DEC_DRC2_DRC3, ch,
-                                   reverseOutChannelMap[ch] - ch, 1,
-                                   drcWorkBuffer, self->streamInfo.frameSize);
-          }
+          FDK_drcDec_ProcessTime(self->hUniDrcDecoder, drcDelay,
+                                 DRC_DEC_DRC2_DRC3, 0, 0,
+                                 self->streamInfo.numChannels, drcWorkBuffer,
+                                 self->streamInfo.frameSize);
 
           if (needsDeinterleaving) {
             FDK_interleave(
diff --git a/libAACenc/include/aacenc_lib.h b/libAACenc/include/aacenc_lib.h
index f0f23b4..4f8f223 100644
--- a/libAACenc/include/aacenc_lib.h
+++ b/libAACenc/include/aacenc_lib.h
@@ -1005,6 +1005,10 @@
 #include "machine_type.h"
 #include "FDK_audio.h"
 
+#define AACENCODER_LIB_VL0 4
+#define AACENCODER_LIB_VL1 0
+#define AACENCODER_LIB_VL2 1
+
 /**
  *  AAC encoder error codes.
  */
@@ -1086,7 +1090,7 @@
                       write edit lists for gapless playback. The decoder may not
                       know how much delay is introdcued by SBR, since it may not
                       know if SBR is active at all (implicit signaling),
-                      therefore the deocder must take into account any delay
+                      therefore the decoder must take into account any delay
                       caused by the SBR module. */
 
   UCHAR confBuf[64]; /*!< Configuration buffer in binary format as an
diff --git a/libFDK/include/FDK_archdef.h b/libFDK/include/FDK_archdef.h
index 95601bb..3d0cddf 100644
--- a/libFDK/include/FDK_archdef.h
+++ b/libFDK/include/FDK_archdef.h
@@ -219,6 +219,13 @@
 #define POW2COEFF_16BIT
 #define LDCOEFF_16BIT
 
+#elif defined(__riscv)
+#define ARCH_PREFER_MULT_32x16
+#define SINETABLE_16BIT
+#define POW2COEFF_16BIT
+#define LDCOEFF_16BIT
+#define WINDOWTABLE_16BIT
+
 #else
 #warning >>>> Please set architecture characterization defines for your platform (FDK_HIGH_PERFORMANCE)! <<<<
 
diff --git a/libSBRdec/src/lpp_tran.h b/libSBRdec/src/lpp_tran.h
index 51b4395..21c4101 100644
--- a/libSBRdec/src/lpp_tran.h
+++ b/libSBRdec/src/lpp_tran.h
@@ -1,7 +1,7 @@
 /* -----------------------------------------------------------------------------
 Software License for The Fraunhofer FDK AAC Codec Library for Android
 
-© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten
+© Copyright  1995 - 2023 Fraunhofer-Gesellschaft zur Förderung der angewandten
 Forschung e.V. All rights reserved.
 
  1.    INTRODUCTION
@@ -207,7 +207,7 @@
                                             inverse filtering levels */
 
   PATCH_PARAM
-  patchParam[MAX_NUM_PATCHES]; /*!< new parameter set for patching */
+  patchParam[MAX_NUM_PATCHES + 1]; /*!< new parameter set for patching */
   WHITENING_FACTORS
   whFactors;     /*!< the pole moving factors for certain
                     whitening levels as indicated     in the bitstream
