]> git.sesse.net Git - vlc/blobdiff - src/audio_output/filters.c
Removes trailing spaces. Removes tabs.
[vlc] / src / audio_output / filters.c
index 197dcd296989c7d8b220d466a24b3d6fd2f8fdc3..cf7cafefc0283d244c4510f9e857dc4bc867143a 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * filters.c : audio output filters management
  *****************************************************************************
- * Copyright (C) 2002-2004 the VideoLAN team
+ * Copyright (C) 2002-2007 the VideoLAN team
  * $Id$
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
 /*****************************************************************************
  * Preamble
  *****************************************************************************/
-#include <stdlib.h>                            /* calloc(), malloc(), free() */
-#include <string.h>
-
 #include <vlc/vlc.h>
+#include <vlc_interface.h>
 
 #ifdef HAVE_ALLOCA_H
 #   include <alloca.h>
 #endif
 
-#include "audio_output.h"
+#include <vlc_aout.h>
 #include "aout_internal.h"
 
 /*****************************************************************************
@@ -150,6 +148,9 @@ int aout_FiltersCreatePipeline( aout_instance_t * p_aout,
     if( *pi_nb_filters + 1 > AOUT_MAX_FILTERS )
     {
         msg_Err( p_aout, "max filter reached (%d)", AOUT_MAX_FILTERS );
+        intf_UserFatal( p_aout, VLC_FALSE, _("Audio filtering failed"),
+                        _("The maximum number of filters (%d) was reached."),
+                        AOUT_MAX_FILTERS );
         return -1;
     }
 
@@ -194,6 +195,9 @@ int aout_FiltersCreatePipeline( aout_instance_t * p_aout,
     {
         ReleaseFilter( pp_filters[0] );
         msg_Err( p_aout, "max filter reached (%d)", AOUT_MAX_FILTERS );
+        intf_UserFatal( p_aout, VLC_FALSE, _("Audio filtering failed"),
+                        _("The maximum number of filters (%d) was reached."),
+                        AOUT_MAX_FILTERS );
         return -1;
     }
     pp_filters[1] = FindFilter( p_aout, &pp_filters[0]->output,
@@ -214,6 +218,9 @@ int aout_FiltersCreatePipeline( aout_instance_t * p_aout,
         {
             ReleaseFilter( pp_filters[0] );
             msg_Err( p_aout, "max filter reached (%d)", AOUT_MAX_FILTERS );
+            intf_UserFatal( p_aout, VLC_FALSE, _("Audio filtering failed"),
+                            _("The maximum number of filters (%d) was reached."),
+                            AOUT_MAX_FILTERS );
             return -1;
         }
         pp_filters[1] = FindFilter( p_aout, &pp_filters[0]->output,
@@ -256,6 +263,7 @@ void aout_FiltersDestroyPipeline( aout_instance_t * p_aout,
                                   int i_nb_filters )
 {
     int i;
+    (void)p_aout;
 
     for ( i = 0; i < i_nb_filters; i++ )
     {
@@ -282,10 +290,10 @@ void aout_FiltersHintBuffers( aout_instance_t * p_aout,
         aout_filter_t * p_filter = pp_filters[i];
 
         int i_output_size = p_filter->output.i_bytes_per_frame
-                             * p_filter->output.i_rate
+                             * p_filter->output.i_rate * AOUT_MAX_INPUT_RATE
                              / p_filter->output.i_frame_length;
         int i_input_size = p_filter->input.i_bytes_per_frame
-                             * p_filter->input.i_rate
+                             * p_filter->input.i_rate * AOUT_MAX_INPUT_RATE
                              / p_filter->input.i_frame_length;
 
         p_first_alloc->i_bytes_per_sec = __MAX( p_first_alloc->i_bytes_per_sec,
@@ -346,6 +354,9 @@ void aout_FiltersPlay( aout_instance_t * p_aout,
             aout_BufferFree( *pp_input_buffer );
             *pp_input_buffer = p_output_buffer;
         }
+
+        if( p_output_buffer->i_nb_samples <= 0 )
+            break;
     }
 }