]> git.sesse.net Git - vlc/blobdiff - modules/audio_mixer/trivial.c
Added aout pause support.
[vlc] / modules / audio_mixer / trivial.c
index 629b08663f03e067fce4635080c142520c180bc7..5c93d9b8e26e08c310d848693a8fbce7eeb4d177 100644 (file)
@@ -29,7 +29,9 @@
 # include "config.h"
 #endif
 
-#include <vlc/vlc.h>
+#include <stddef.h>
+#include <vlc_common.h>
+#include <vlc_plugin.h>
 #include <vlc_aout.h>
 
 /*****************************************************************************
@@ -45,7 +47,7 @@ static void DoWork    ( aout_instance_t *, aout_buffer_t * );
 vlc_module_begin();
     set_category( CAT_AUDIO );
     set_subcategory( SUBCAT_AUDIO_MISC );
-    set_description( _("Trivial audio mixer") );
+    set_description( N_("Trivial audio mixer") );
     set_capability( "audio mixer", 1 );
     set_callbacks( Create, NULL );
 vlc_module_end();
@@ -78,10 +80,10 @@ static void DoWork( aout_instance_t * p_aout, aout_buffer_t * p_buffer )
     int i_nb_channels = aout_FormatNbChannels( &p_aout->mixer.mixer );
     int i_nb_bytes = p_buffer->i_nb_samples * sizeof(int32_t)
                       * i_nb_channels;
-    byte_t * p_in;
-    byte_t * p_out;
+    uint8_t * p_in;
+    uint8_t * p_out;
 
-    while ( p_input->b_error )
+    while ( p_input->b_error || p_input->b_paused )
     {
         p_input = p_aout->pp_inputs[++i];
         /* This can't crash because if no input has b_error == 0, the
@@ -102,8 +104,7 @@ static void DoWork( aout_instance_t * p_aout, aout_buffer_t * p_buffer )
         {
             aout_buffer_t * p_old_buffer;
 
-            if ( i_available_bytes > 0 )
-                p_aout->p_libvlc->pf_memcpy( p_out, p_in, i_available_bytes );
+            vlc_memcpy( p_out, p_in, i_available_bytes );
             i_nb_bytes -= i_available_bytes;
             p_out += i_available_bytes;
 
@@ -119,8 +120,7 @@ static void DoWork( aout_instance_t * p_aout, aout_buffer_t * p_buffer )
         }
         else
         {
-            if ( i_nb_bytes > 0 )
-                p_aout->p_libvlc->pf_memcpy( p_out, p_in, i_nb_bytes );
+            vlc_memcpy( p_out, p_in, i_nb_bytes );
             p_input->p_first_byte_to_mix = p_in + i_nb_bytes;
             break;
         }
@@ -133,7 +133,8 @@ static void DoWork( aout_instance_t * p_aout, aout_buffer_t * p_buffer )
         aout_buffer_t * p_deleted;
 
         p_input = p_aout->pp_inputs[i];
-        if ( p_input->b_error ) continue;
+        if ( p_input->b_error || p_input->b_paused )
+            continue;
         p_fifo = &p_input->fifo;
         p_deleted = p_fifo->p_first;
         while ( p_deleted != NULL )