Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  04_hugemem.patch   Sprache: unbekannt

 
diff --git a/src/resample.c b/src/resample.c
--- a/src/resample.c
+++ b/src/resample.c
@@ -56,16 +56,18 @@
    (e.g. 2/3), and get rid of the rounding operations in the inner loop.
    The latter both reduces CPU time and makes the algorithm more SIMD-friendly.
 */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
 
+#define RESAMPLE_HUGEMEM 1
+
 #ifdef OUTSIDE_SPEEX
 #include <stdlib.h>
 static void *speex_alloc(int size) {return calloc(size,1);}
 static void *speex_realloc(void *ptr, int size) {return realloc(ptr, size);}
 static void speex_free(void *ptr) {free(ptr);}
 #ifndef EXPORT
 #define EXPORT
 #endif
@@ -633,25 +645,26 @@ static int update_filter(SpeexResamplerS
          st->oversample >>= 1;
       if (st->oversample < 1)
          st->oversample = 1;
    } else {
       /* up-sampling */
       st->cutoff = quality_map[st->quality].upsample_bandwidth;
    }
 
-#ifdef RESAMPLE_FULL_SINC_TABLE
-   use_direct = 1;
-   if (INT_MAX/sizeof(spx_word16_t)/st->den_rate < st->filt_len)
-      goto fail;
-#else
-   /* Choose the resampling type that requires the least amount of memory */
-   use_direct = st->filt_len*st->den_rate <= st->filt_len*st->oversample+8
-                && INT_MAX/sizeof(spx_word16_t)/st->den_rate >= st->filt_len;
+   use_direct =
+#ifdef RESAMPLE_HUGEMEM
+      /* Choose the direct resampler, even with higher initialization costs,
+         when resampling any multiple of 100 to 44100. */
+      st->den_rate <= 441
+#else
+      /* Choose the resampling type that requires the least amount of memory */
+      st->filt_len*st->den_rate <= st->filt_len*st->oversample+8
 #endif
+                && INT_MAX/sizeof(spx_word16_t)/st->den_rate >= st->filt_len;
    if (use_direct)
    {
       min_sinc_table_length = st->filt_len*st->den_rate;
    } else {
       if ((INT_MAX/sizeof(spx_word16_t)-8)/st->oversample < st->filt_len)
          goto fail;
 
       min_sinc_table_length = st->filt_len*st->oversample+8;

[ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge