[vlc-devel] [vlc-commits] TS: fix ts-dump error handling, remove a useless variable
Kaarlo Räihä
kaarlo.raiha at gmail.com
Thu Feb 2 16:08:51 CET 2012
2012/1/25 Rémi Denis-Courmont <git at videolan.org>
> vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Wed Jan 25
> 18:30:36 2012 +0200| [21145a5977bd146890017d0eccfdb4d317e8e7ea] |
> committer: Rémi Denis-Courmont
>
> TS: fix ts-dump error handling, remove a useless variable
>
> >
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=21145a5977bd146890017d0eccfdb4d317e8e7ea
> ---
>
> modules/demux/ts.c | 64
> ++++++++++++++++++++++++---------------------------
> 1 files changed, 30 insertions(+), 34 deletions(-)
>
> diff --git a/modules/demux/ts.c b/modules/demux/ts.c
> index 89602b4..bc771d7 100644
> --- a/modules/demux/ts.c
> +++ b/modules/demux/ts.c
> @@ -392,7 +392,6 @@ struct demux_sys_t
> char *psz_file; /* file to dump data in */
> FILE *p_file; /* filehandle */
> uint64_t i_write; /* bytes written */
> - bool b_file_out; /* dump mode enabled */
>
> /* */
> bool b_start_record;
> @@ -590,12 +589,9 @@ static int Open( vlc_object_t *p_this )
> p_sys->i_write = 0;
> p_sys->buffer = NULL;
> p_sys->p_file = NULL;
> - p_sys->b_file_out = false;
> - p_sys->psz_file = var_CreateGetString( p_demux, "ts-dump-file" );
> - if( *p_sys->psz_file != '\0' )
> + p_sys->psz_file = var_InheritString( p_demux, "ts-dump-file" );
> + if( p_sys->psz_file != NULL )
> {
> - p_sys->b_file_out = true;
> -
> b_append = var_CreateGetBool( p_demux, "ts-dump-append" );
> if ( b_append )
> psz_mode = "ab";
> @@ -607,31 +603,33 @@ static int Open( vlc_object_t *p_this )
> msg_Info( p_demux, "dumping raw stream to standard output" );
> p_sys->p_file = stdout;
> }
> - else if( ( p_sys->p_file = vlc_fopen( p_sys->psz_file, psz_mode )
> ) == NULL )
>
Is the #include <vlc_fs.h> /* vlc_fopen for file-dump mode */ needed
anymore?
> - {
> - msg_Err( p_demux, "cannot create `%s' for writing",
> p_sys->psz_file );
> - p_sys->b_file_out = false;
> - }
> -
> - if( p_sys->b_file_out )
> + else
> {
> - /* Determine how many packets to read. */
> - int bufsize = var_CreateGetInteger( p_demux, "ts-dump-size" );
> - p_sys->i_ts_read = (int) (bufsize / p_sys->i_packet_size);
> - if( p_sys->i_ts_read <= 0 )
> + p_sys->p_file = vlc_fopen( p_sys->psz_file, psz_mode );
> + if( p_sys->p_file == NULL )
> {
> - p_sys->i_ts_read = 1500 / p_sys->i_packet_size;
> + msg_Err( p_demux, "cannot write to file `%s': %m",
> + p_sys->psz_file );
> + free( p_sys->psz_file );
> + vlc_mutex_destroy( &p_sys->csa_lock );
> + free( p_sys );
> + return VLC_EGENERIC;
> }
> - p_sys->buffer = xmalloc( p_sys->i_packet_size *
> p_sys->i_ts_read );
> - msg_Info( p_demux, "%s raw stream to file `%s' reading
> packets %d",
> - b_append ? "appending" : "dumping", p_sys->psz_file,
> - p_sys->i_ts_read );
> }
> - }
>
> - /* Fill p_demux field */
> - if( p_sys->b_file_out )
> + /* Determine how many packets to read. */
> + int bufsize = var_CreateGetInteger( p_demux, "ts-dump-size" );
> + p_sys->i_ts_read = (int) (bufsize / p_sys->i_packet_size);
> + if( p_sys->i_ts_read <= 0 )
> + {
> + p_sys->i_ts_read = 1500 / p_sys->i_packet_size;
> + }
> + p_sys->buffer = xmalloc( p_sys->i_packet_size * p_sys->i_ts_read
> );
> + msg_Info( p_demux, "%s raw stream to file `%s' reading packets
> %d",
> + b_append ? "appending" : "dumping", p_sys->psz_file,
> + p_sys->i_ts_read );
> p_demux->pf_demux = DemuxFile;
> + }
> else
> p_demux->pf_demux = Demux;
> p_demux->pf_control = Control;
> @@ -709,7 +707,7 @@ static int Open( vlc_object_t *p_this )
> p_sys->b_es_id_pid = var_CreateGetBool( p_demux, "ts-es-id-pid" );
>
> char* psz_string = var_CreateGetString( p_demux, "ts-out" );
> - if( psz_string && *psz_string && !p_sys->b_file_out )
> + if( psz_string && *psz_string && !p_sys->p_file )
> {
> char *psz = strchr( psz_string, ':' );
> int i_port = 0;
> @@ -822,14 +820,15 @@ static int Open( vlc_object_t *p_this )
> p_sys->b_force_seek_per_percent = true;
> }
>
> - while( !p_sys->b_file_out && p_sys->i_pmt_es <= 0 &&
> - vlc_object_alive( p_demux ) )
> + if( p_sys->p_file != NULL )
> + return VLC_SUCCESS;
> +
> + while( p_sys->i_pmt_es <= 0 && vlc_object_alive( p_demux ) )
> {
> if( p_demux->pf_demux( p_demux ) != 1 )
> break;
> }
>
> -
> return VLC_SUCCESS;
> }
>
> @@ -900,15 +899,12 @@ static void Close( vlc_object_t *p_this )
> free( p_sys->programs_list.p_values );
>
> /* If in dump mode, then close the file */
> - if( p_sys->b_file_out )
> + if( p_sys->p_file != NULL )
> {
> msg_Info( p_demux ,"closing %s (%"PRId64" KiB dumped)",
> p_sys->psz_file, p_sys->i_write / 1024 );
> -
> if( p_sys->p_file != stdout )
> - {
> fclose( p_sys->p_file );
> - }
> }
> /* When streaming, close the port */
> if( p_sys->fd > -1 )
> @@ -1178,7 +1174,7 @@ static int Control( demux_t *p_demux, int i_query,
> va_list args )
> int64_t *pi64;
> int i_int;
>
> - if( p_sys->b_file_out )
> + if( p_sys->p_file != NULL )
> return demux_vaControlHelper( p_demux->s, 0, -1, 0, 1, i_query,
> args );
>
> switch( i_query )
>
> _______________________________________________
> vlc-commits mailing list
> vlc-commits at videolan.org
> http://mailman.videolan.org/listinfo/vlc-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20120202/9646e73a/attachment.html>
More information about the vlc-devel
mailing list