vlc | branch: master | Francois Cartegnie <[email protected]> | Fri Jul 7 16:31:19 2017 +0200| [8ab7f9b9ed05832e16e42ae7b3f39179c406f557] | committer: Francois Cartegnie
sout: transcode: set codecs fmt cat and use copy should not modify upstream fmt, which could also change until release. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8ab7f9b9ed05832e16e42ae7b3f39179c406f557 --- modules/stream_out/transcode/transcode.c | 62 +++++++++++++++----------------- 1 file changed, 29 insertions(+), 33 deletions(-) diff --git a/modules/stream_out/transcode/transcode.c b/modules/stream_out/transcode/transcode.c index 25ac5ae71f..73b53c7a2f 100644 --- a/modules/stream_out/transcode/transcode.c +++ b/modules/stream_out/transcode/transcode.c @@ -458,6 +458,29 @@ static void Close( vlc_object_t * p_this ) free( p_sys ); } +static void DeleteSoutStreamID( sout_stream_id_sys_t *id ) +{ + if( id ) + { + if( id->p_decoder ) + { + es_format_Clean( &id->p_encoder->fmt_in ); + es_format_Clean( &id->p_encoder->fmt_out ); + vlc_object_release( id->p_decoder ); + } + + if( id->p_encoder ) + { + es_format_Clean( &id->p_encoder->fmt_in ); + es_format_Clean( &id->p_encoder->fmt_out ); + vlc_object_release( id->p_encoder ); + } + + vlc_mutex_destroy(&id->fifo.lock); + free( id ); + } +} + static sout_stream_id_sys_t *Add( sout_stream_t *p_stream, const es_format_t *p_fmt ) { @@ -478,7 +501,9 @@ static sout_stream_id_sys_t *Add( sout_stream_t *p_stream, if( !id->p_decoder ) goto error; id->p_decoder->p_module = NULL; - id->p_decoder->fmt_in = *p_fmt; + es_format_Init( &id->p_decoder->fmt_out, p_fmt->i_cat, 0 ); + es_format_Init( &id->p_decoder->fmt_in, p_fmt->i_cat, 0 ); + es_format_Copy( &id->p_decoder->fmt_in, p_fmt ); id->p_decoder->b_frame_drop_allowed = false; /* Create encoder object */ @@ -488,6 +513,7 @@ static sout_stream_id_sys_t *Add( sout_stream_t *p_stream, id->p_encoder->p_module = NULL; /* Create destination format */ + es_format_Init( &id->p_encoder->fmt_in, p_fmt->i_cat, 0 ); es_format_Init( &id->p_encoder->fmt_out, p_fmt->i_cat, 0 ); id->p_encoder->fmt_out.i_id = p_fmt->i_id; id->p_encoder->fmt_out.i_group = p_fmt->i_group; @@ -522,24 +548,7 @@ static sout_stream_id_sys_t *Add( sout_stream_t *p_stream, return id; error: - if( id ) - { - if( id->p_decoder ) - { - vlc_object_release( id->p_decoder ); - id->p_decoder = NULL; - } - - if( id->p_encoder ) - { - es_format_Clean( &id->p_encoder->fmt_out ); - vlc_object_release( id->p_encoder ); - id->p_encoder = NULL; - } - - vlc_mutex_destroy(&id->fifo.lock); - free( id ); - } + DeleteSoutStreamID( id ); return NULL; } @@ -565,20 +574,7 @@ static void Del( sout_stream_t *p_stream, sout_stream_id_sys_t *id ) if( id->id ) sout_StreamIdDel( p_stream->p_next, id->id ); - if( id->p_decoder ) - { - vlc_object_release( id->p_decoder ); - id->p_decoder = NULL; - } - - if( id->p_encoder ) - { - es_format_Clean( &id->p_encoder->fmt_out ); - vlc_object_release( id->p_encoder ); - id->p_encoder = NULL; - } - vlc_mutex_destroy(&id->fifo.lock); - free( id ); + DeleteSoutStreamID( id ); } static int Send( sout_stream_t *p_stream, sout_stream_id_sys_t *id, _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
