[vlc-devel] [PATCH 2/5] sout: simplify sout_StreamChainDelete() semantics

Rémi Denis-Courmont remi at remlab.net
Sun Oct 11 15:28:23 CEST 2020


Le sunnuntaina 11. lokakuuta 2020, 16.22.56 EEST Rémi Denis-Courmont a écrit :
> Delete instances up to the second parameter exclusive, instead of
> inclusive.
> ---
>  include/vlc_sout.h                | 2 +-
>  modules/stream_out/duplicate.c    | 2 +-
>  modules/stream_out/record.c       | 4 ++--
>  src/missing.c                     | 4 ++--
>  src/stream_output/stream_output.c | 6 ++----
>  5 files changed, 8 insertions(+), 10 deletions(-)
> 
> diff --git a/include/vlc_sout.h b/include/vlc_sout.h
> index c0701360a4..6f4d557cea 100644
> --- a/include/vlc_sout.h
> +++ b/include/vlc_sout.h
> @@ -193,7 +193,7 @@ struct sout_stream_t
>      void              *p_sys;
>  };
> 
> -VLC_API void sout_StreamChainDelete(sout_stream_t *p_first, sout_stream_t
> *p_last ); +VLC_API void sout_StreamChainDelete(sout_stream_t *first,
> sout_stream_t *end); VLC_API sout_stream_t
> *sout_StreamChainNew(vlc_object_t *parent,
>          const char *psz_chain, sout_stream_t *p_next, sout_stream_t
> **p_last) VLC_USED;
> 
> diff --git a/modules/stream_out/duplicate.c b/modules/stream_out/duplicate.c
> index 313d1da939..128213edc0 100644
> --- a/modules/stream_out/duplicate.c
> +++ b/modules/stream_out/duplicate.c
> @@ -193,7 +193,7 @@ static void Close( vlc_object_t * p_this )
>      msg_Dbg( p_stream, "closing a duplication" );
>      for( int i = 0; i < p_sys->i_nb_streams; i++ )
>      {
> -        sout_StreamChainDelete(p_sys->pp_streams[i],
> p_sys->pp_last_streams[i]); +       
> sout_StreamChainDelete(p_sys->pp_streams[i], p_stream->p_next); free(
> p_sys->ppsz_select[i] );
>      }
>      free( p_sys->pp_streams );
> diff --git a/modules/stream_out/record.c b/modules/stream_out/record.c
> index 70dee74934..2d8e557f9c 100644
> --- a/modules/stream_out/record.c
> +++ b/modules/stream_out/record.c
> @@ -170,7 +170,7 @@ static void Close( vlc_object_t * p_this )
>      sout_stream_sys_t *p_sys = p_stream->p_sys;
> 
>      if( p_sys->p_out )
> -        sout_StreamChainDelete( p_sys->p_out, p_sys->p_out );
> +        sout_StreamChainDelete( p_sys->p_out, NULL );
> 
>      TAB_CLEAN( p_sys->i_id, p_sys->id );
>      free( p_sys->psz_prefix );
> @@ -491,7 +491,7 @@ static void OutputStart( sout_stream_t *p_stream )
>                  id->id = NULL;
>              }
>              if( p_sys->p_out )
> -                sout_StreamChainDelete( p_sys->p_out, p_sys->p_out );
> +                sout_StreamChainDelete( p_sys->p_out, NULL );
>              p_sys->p_out = NULL;
> 
>              if( i_es > i_best_es )
> diff --git a/src/missing.c b/src/missing.c
> index 45fddf177f..0053f5816e 100644
> --- a/src/missing.c
> +++ b/src/missing.c
> @@ -151,9 +151,9 @@ noreturn void sout_MuxFlush(sout_mux_t *mux,
> sout_input_t *input) }
> 
>  noreturn void sout_StreamChainDelete(sout_stream_t *first,
> -                                     sout_stream_t *last)
> +                                     sout_stream_t *end)
>  {
> -    (void) first; (void) last;
> +    (void) first; (void) end;
>      vlc_assert_unreachable ();
>  }
> 
> diff --git a/src/stream_output/stream_output.c
> b/src/stream_output/stream_output.c index 76c479efa7..d66223ed61 100644
> --- a/src/stream_output/stream_output.c
> +++ b/src/stream_output/stream_output.c
> @@ -757,15 +757,13 @@ static void sout_StreamDelete( sout_stream_t *p_stream
> ) *  if NULL, all modules are destroyed
>   *  if not NULL, modules following it must be destroyed separately
>   */
> -void sout_StreamChainDelete(sout_stream_t *p_first, sout_stream_t *p_last)
> +void sout_StreamChainDelete(sout_stream_t *p_first, sout_stream_t *end)
>  {
> -    while(p_first != NULL)
> +    while (p_first != end)
>      {

Could assert that p_first is not NULL here.

>          sout_stream_t *p_next = p_first->p_next;
> 
>          sout_StreamDelete(p_first);
> -        if(p_first == p_last)
> -           break;
>          p_first = p_next;
>      }
>  }


-- 
Реми Дёни-Курмон
http://www.remlab.net/





More information about the vlc-devel mailing list