Merge branch 'exp_api_change'
[opus.git] / libcelt / modes.c
index 3f59284..b60c9bd 100644 (file)
@@ -85,11 +85,13 @@ static const unsigned char band_allocation[] = {
 };
 #endif
 
-#ifdef FIXED_POINT
-#include "static_modes_fixed.c"
-#else
-#include "static_modes_float.c"
-#endif
+#ifndef CUSTOM_MODES_ONLY
+ #ifdef FIXED_POINT
+  #include "static_modes_fixed.c"
+ #else
+  #include "static_modes_float.c"
+ #endif
+#endif /* CUSTOM_MODES_ONLY */
 
 #ifndef M_PI
 #define M_PI 3.141592653
@@ -276,6 +278,7 @@ CELTMode *celt_mode_create(celt_int32 Fs, int frame_size, int *error)
       goto failure;
 #endif 
 
+#ifndef CUSTOM_MODES_ONLY
    for (i=0;i<TOTAL_MODES;i++)
    {
       int j;
@@ -290,6 +293,8 @@ CELTMode *celt_mode_create(celt_int32 Fs, int frame_size, int *error)
          }
       }
    }
+#endif /* CUSTOM_MODES_ONLY */
+
 #ifndef CUSTOM_MODES
    if (error)
       *error = CELT_BAD_ARG;
@@ -429,6 +434,7 @@ void celt_mode_destroy(CELTMode *mode)
    int i;
    if (mode == NULL)
       return;
+#ifndef CUSTOM_MODES_ONLY
    for (i=0;i<TOTAL_MODES;i++)
    {
       if (mode == static_mode_list[i])
@@ -436,7 +442,7 @@ void celt_mode_destroy(CELTMode *mode)
          return;
       }
    }
-
+#endif /* CUSTOM_MODES_ONLY */
    celt_free((celt_int16*)mode->eBands);
    celt_free((celt_int16*)mode->allocVectors);
    
@@ -445,6 +451,7 @@ void celt_mode_destroy(CELTMode *mode)
 
    celt_free((celt_int16*)mode->cache.index);
    celt_free((unsigned char*)mode->cache.bits);
+   celt_free((unsigned char*)mode->cache.caps);
    clt_mdct_clear(&mode->mdct);
 
    celt_free((CELTMode *)mode);