]> git.sesse.net Git - vlc/blobdiff - src/audio_output/dec.c
threads: Make sure we don't re-create a thread if the object has already one.
[vlc] / src / audio_output / dec.c
index 2c53d83632bf16a0fb5f9ae7705c895b3fa79e39..a9eb16ac117172f9050c36a25dd69513afe74856 100644 (file)
@@ -28,7 +28,7 @@
 # include "config.h"
 #endif
 
-#include <vlc/vlc.h>
+#include <vlc_common.h>
 
 #ifdef HAVE_ALLOCA_H
 #   include <alloca.h>
@@ -57,14 +57,25 @@ static aout_input_t * DecNew( vlc_object_t * p_this, aout_instance_t * p_aout,
     {
         msg_Err( p_aout, "too many audio channels (%u)",
                  p_format->i_channels );
-        goto error;
+        return NULL;
+    }
+    if( p_format->i_channels <= 0 )
+    {
+        msg_Err( p_aout, "no audio channels" );
+        return NULL;
     }
 
     if( p_format->i_rate > 192000 )
     {
         msg_Err( p_aout, "excessive audio sample frequency (%u)",
                  p_format->i_rate );
-        goto error;
+        return NULL;
+    }
+    if( p_format->i_rate < 4000 )
+    {
+        msg_Err( p_aout, "too low audio sample frequency (%u)",
+                 p_format->i_rate );
+        return NULL;
     }
 
     /* We can only be called by the decoder, so no need to lock
@@ -79,10 +90,7 @@ static aout_input_t * DecNew( vlc_object_t * p_this, aout_instance_t * p_aout,
 
     p_input = malloc(sizeof(aout_input_t));
     if ( p_input == NULL )
-    {
-        msg_Err( p_aout, "out of memory" );
         goto error;
-    }
     memset( p_input, 0, sizeof(aout_input_t) );
 
     vlc_mutex_init( &p_input->lock );
@@ -310,6 +318,11 @@ int aout_DecPlay( aout_instance_t * p_aout, aout_input_t * p_input,
         return -1;
     }
 
+#ifndef FIXME
+    /* This hack for #transcode{acodec=...}:display to work -- Courmisch */
+    if( i_input_rate == 0 )
+        i_input_rate = INPUT_RATE_DEFAULT;
+#endif
     if( i_input_rate > INPUT_RATE_DEFAULT * AOUT_MAX_INPUT_RATE ||
         i_input_rate < INPUT_RATE_DEFAULT / AOUT_MAX_INPUT_RATE )
     {