[vlc-devel] commit: record: implement record-file (Erwan Tulou )

git version control git at videolan.org
Sat Aug 29 21:00:01 CEST 2009


vlc | branch: master | Erwan Tulou <erwan10 at videolan.org> | Sat Aug 29 20:26:42 2009 +0200| [5f3617586ccbc443b089cc36a52f97b1fd84e94e] | committer: Erwan Tulou 

record: implement record-file

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5f3617586ccbc443b089cc36a52f97b1fd84e94e
---

 modules/stream_out/record.c |   35 +++++++++++++++++++++++++++++------
 1 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/modules/stream_out/record.c b/modules/stream_out/record.c
index e9bd810..44cf424 100644
--- a/modules/stream_out/record.c
+++ b/modules/stream_out/record.c
@@ -306,21 +306,31 @@ static int OutputNew( sout_stream_t *p_stream,
                       const char *psz_muxer, const char *psz_prefix, const char *psz_extension  )
 {
     sout_stream_sys_t *p_sys = p_stream->p_sys;
+    char *psz_file;
     char *psz_output;
     int i_count;
 
-    if( asprintf( &psz_output, "std{access=file,mux='%s',dst='%s%s%s'}",
-                  psz_muxer, psz_prefix, psz_extension ? "." : "", psz_extension ? psz_extension : "" ) < 0 )
-        return -1;
+    if( asprintf( &psz_file, "%s%s%s",
+                  psz_prefix, psz_extension ? "." : "", psz_extension ? psz_extension : "" ) < 0 )
+    {
+        psz_file = NULL;
+        goto error;
+    }
+
+    if( asprintf( &psz_output, "std{access=file,mux='%s',dst='%s'}",
+                  psz_muxer, psz_file ) < 0 )
+    {
+        psz_output = NULL;
+        goto error;
+    }
 
     /* Create the output */
     msg_Dbg( p_stream, "Using record output `%s'", psz_output );
-    p_sys->p_out = sout_StreamNew( p_stream->p_sout, psz_output );
 
-    free( psz_output );
+    p_sys->p_out = sout_StreamNew( p_stream->p_sout, psz_output );
 
     if( !p_sys->p_out )
-        return -1;
+        goto error;
 
     /* Add es */
     i_count = 0;
@@ -333,7 +343,20 @@ static int OutputNew( sout_stream_t *p_stream,
             i_count++;
     }
 
+    if( psz_file && psz_extension )
+        var_SetString( p_stream->p_libvlc, "record-file", psz_file );
+
+    free( psz_file );
+    free( psz_output );
+
     return i_count;
+
+error:
+
+    free( psz_file );
+    free( psz_output );
+    return -1;
+
 }
 
 static void OutputStart( sout_stream_t *p_stream )




More information about the vlc-devel mailing list