]> git.sesse.net Git - vlc/blobdiff - modules/stream_out/es.c
vlc_cond_init: really remove useless parameter
[vlc] / modules / stream_out / es.c
index 0f67ed85dbdd92f6ec2b16bc5ea6baedc976196a..907aa17a1f37e02021412c86720403fd898a1989 100644 (file)
@@ -29,7 +29,7 @@
 # include "config.h"
 #endif
 
-#include <vlc/vlc.h>
+#include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_input.h>
 #include <vlc_sout.h>
@@ -225,10 +225,12 @@ static char * es_print_url( char *psz_fmt, vlc_fourcc_t i_fourcc, int i_count,
 
     if( psz_fmt == NULL || !*psz_fmt )
     {
-        psz_fmt = "stream-%n-%c.%m";
+        psz_fmt = (char*)"stream-%n-%c.%m";
     }
 
     p = psz_dst = malloc( 4096 );
+    if( !psz_dst )
+        return NULL;
     memset( p, 0, 4096 );
     for( ;; )
     {
@@ -372,6 +374,7 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
                     _("There is no suitable stream-output access module for \"%s/%s://%s\"."),
                           psz_access,
                           psz_mux, psz_dst );
+        free( psz_dst );
         return( NULL );
     }
 
@@ -387,23 +390,32 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
                           "for \"%s/%s://%s\"."),
                           psz_access, psz_mux, psz_dst );
         sout_AccessOutDelete( p_access );
+        free( psz_dst );
         return( NULL );
     }
+    free( psz_dst );
 
     id = malloc( sizeof( sout_stream_id_t ) );
+    if( !id )
+    {
+        sout_MuxDelete( p_mux );
+        sout_AccessOutDelete( p_access );
+        return NULL;
+    }
     id->p_mux = p_mux;
     id->p_input = sout_MuxAddStream( p_mux, p_fmt );
 
     if( id->p_input == NULL )
     {
-        free( id );
-
         sout_MuxDelete( p_mux );
         sout_AccessOutDelete( p_access );
         free( id );
         return NULL;
     }
 
+    if( !sout_AccessOutCanControlPace( p_access ) )
+        p_sout->i_out_pace_nocontrol++;
+
     return id;
 }
 
@@ -413,6 +425,8 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
     sout_access_out_t *p_access = id->p_mux->p_access;
     sout_MuxDelete( id->p_mux );
     sout_MuxDeleteStream( id->p_mux, id->p_input );
+    if( !sout_AccessOutCanControlPace( p_access ) )
+        p_stream->p_sout->i_out_pace_nocontrol--;
     sout_AccessOutDelete( p_access );
 
     free( id );