struct sout_stream_sys_t
{
bridged_es_t *p_es;
- vlc_mutex_t *p_lock;
decoder_t *p_decoder;
image_handler_t *p_image; /* filter for resizing */
{
sout_stream_t *p_stream = (sout_stream_t *)p_this;
sout_stream_sys_t *p_sys;
- vlc_object_t *p_libvlc = VLC_OBJECT( p_this->p_libvlc );
vlc_value_t val;
config_ChainParse( p_stream, CFG_PREFIX, ppsz_sout_options,
p_stream->p_sys = p_sys;
p_sys->b_inited = false;
- var_Create( p_libvlc, "mosaic-lock", VLC_VAR_MUTEX );
- var_Get( p_libvlc, "mosaic-lock", &val );
- p_sys->p_lock = val.p_address;
-
p_sys->psz_id = var_CreateGetString( p_stream, CFG_PREFIX "id" );
p_sys->i_height =
p_sys->p_decoder = vlc_object_create( p_stream, sizeof( decoder_t ) );
if( !p_sys->p_decoder )
return NULL;
- vlc_object_attach( p_sys->p_decoder, p_stream );
p_sys->p_decoder->p_module = NULL;
p_sys->p_decoder->fmt_in = *p_fmt;
p_sys->p_decoder->b_pace_control = false;
}
p_sys->b_inited = true;
- vlc_mutex_lock( p_sys->p_lock );
+ vlc_global_lock( VLC_MOSAIC_MUTEX );
p_bridge = GetBridge( p_stream );
if ( p_bridge == NULL )
p_es->pp_last = &p_es->p_picture;
p_es->b_empty = false;
- vlc_mutex_unlock( p_sys->p_lock );
+ vlc_global_unlock( VLC_MOSAIC_MUTEX );
if ( p_sys->i_height || p_sys->i_width )
{
if( p_sys->p_vf2 )
filter_chain_Delete( p_sys->p_vf2 );
- vlc_mutex_lock( p_sys->p_lock );
+ vlc_global_lock( VLC_MOSAIC_MUTEX );
p_bridge = GetBridge( p_stream );
p_es = p_sys->p_es;
var_Destroy( p_libvlc, "mosaic-struct" );
}
- vlc_mutex_unlock( p_sys->p_lock );
+ vlc_global_unlock( VLC_MOSAIC_MUTEX );
if ( p_sys->p_image )
{
sout_stream_sys_t *p_sys = p_stream->p_sys;
bridged_es_t *p_es = p_sys->p_es;
- vlc_mutex_lock( p_sys->p_lock );
+ vlc_global_lock( VLC_MOSAIC_MUTEX );
*p_es->pp_last = p_picture;
p_picture->p_next = NULL;
p_es->pp_last = &p_picture->p_next;
- vlc_mutex_unlock( p_sys->p_lock );
+ vlc_global_unlock( VLC_MOSAIC_MUTEX );
}
static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,