X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fstream_out%2Fmosaic_bridge.c;h=4a8e6382e5c7eb0b8e82fa9bf70c967855e08ed0;hb=6cab63a2e5e4a53e135ee455244b89b1601f4e2a;hp=f26e84ea23551bfb21df9bce95648b37f785d952;hpb=acbad93b8b447ac9f776a53bf3e8f74f15132fe4;p=vlc diff --git a/modules/stream_out/mosaic_bridge.c b/modules/stream_out/mosaic_bridge.c index f26e84ea23..4a8e6382e5 100644 --- a/modules/stream_out/mosaic_bridge.c +++ b/modules/stream_out/mosaic_bridge.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -79,8 +80,6 @@ static void ReleasePicture( picture_t *p_pic ) { assert( p_pic ); - if( --p_pic->i_refcount > 0 ) - return; if( p_pic->p_sys ) { @@ -90,9 +89,12 @@ static void ReleasePicture( picture_t *p_pic ) } else { - free( p_pic->p_q ); - free( p_pic->p_data_orig ); - free( p_pic ); + if( --p_pic->i_refcount == 0 ) + { + free( p_pic->p_q ); + free( p_pic->p_data_orig ); + free( p_pic ); + } } } @@ -168,33 +170,33 @@ static int yCallback( vlc_object_t *, char const *, #define CFG_PREFIX "sout-mosaic-bridge-" -vlc_module_begin(); - set_shortname( N_( "Mosaic bridge" ) ); - set_description(N_("Mosaic bridge stream output") ); - set_capability( "sout stream", 0 ); - add_shortcut( "mosaic-bridge" ); +vlc_module_begin () + set_shortname( N_( "Mosaic bridge" ) ) + set_description(N_("Mosaic bridge stream output") ) + set_capability( "sout stream", 0 ) + add_shortcut( "mosaic-bridge" ) add_string( CFG_PREFIX "id", "Id", NULL, ID_TEXT, ID_LONGTEXT, - false ); + false ) add_integer( CFG_PREFIX "width", 0, NULL, WIDTH_TEXT, - WIDTH_LONGTEXT, true ); + WIDTH_LONGTEXT, true ) add_integer( CFG_PREFIX "height", 0, NULL, HEIGHT_TEXT, - HEIGHT_LONGTEXT, true ); + HEIGHT_LONGTEXT, true ) add_string( CFG_PREFIX "sar", "1:1", NULL, RATIO_TEXT, - RATIO_LONGTEXT, false ); + RATIO_LONGTEXT, false ) add_string( CFG_PREFIX "chroma", 0, NULL, CHROMA_TEXT, CHROMA_LONGTEXT, - false ); + false ) add_module_list( CFG_PREFIX "vfilter", "video filter2", - NULL, NULL, VFILTER_TEXT, VFILTER_LONGTEXT, false ); + NULL, NULL, VFILTER_TEXT, VFILTER_LONGTEXT, false ) add_integer_with_range( CFG_PREFIX "alpha", 255, 0, 255, NULL, - ALPHA_TEXT, ALPHA_LONGTEXT, false ); - add_integer( CFG_PREFIX "x", -1, NULL, X_TEXT, X_LONGTEXT, false ); - add_integer( CFG_PREFIX "y", -1, NULL, Y_TEXT, Y_LONGTEXT, false ); + ALPHA_TEXT, ALPHA_LONGTEXT, false ) + add_integer( CFG_PREFIX "x", -1, NULL, X_TEXT, X_LONGTEXT, false ) + add_integer( CFG_PREFIX "y", -1, NULL, Y_TEXT, Y_LONGTEXT, false ) - set_callbacks( Open, Close ); -vlc_module_end(); + set_callbacks( Open, Close ) +vlc_module_end () static const char *const ppsz_sout_options[] = { "id", "width", "height", "sar", "vfilter", "chroma", "alpha", "x", "y", NULL @@ -353,7 +355,7 @@ static sout_stream_id_t * Add( sout_stream_t *p_stream, es_format_t *p_fmt ) //p_sys->p_decoder->p_cfg = p_sys->p_video_cfg; p_sys->p_decoder->p_module = - module_need( p_sys->p_decoder, "decoder", "$codec", 0 ); + module_need( p_sys->p_decoder, "decoder", "$codec", false ); if( !p_sys->p_decoder->p_module || !p_sys->p_decoder->pf_decode_video ) { @@ -433,7 +435,7 @@ static sout_stream_id_t * Add( sout_stream_t *p_stream, es_format_t *p_fmt ) /* Create user specified video filters */ psz_chain = var_GetNonEmptyString( p_stream, CFG_PREFIX "vfilter" ); - msg_Dbg( p_stream, "psz_chain: %s\n", psz_chain ); + msg_Dbg( p_stream, "psz_chain: %s", psz_chain ); if( psz_chain ) { p_sys->p_vf2 = filter_chain_New( p_stream, "video filter2", false, @@ -473,6 +475,9 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id ) if( p_sys->p_decoder->p_module ) module_unneed( p_sys->p_decoder, p_sys->p_decoder->p_module ); + if( p_sys->p_decoder->p_description ) + vlc_meta_Delete( p_sys->p_decoder->p_description ); + vlc_object_detach( p_sys->p_decoder ); vlc_object_release( p_sys->p_decoder );