[vlc-devel] commit: Remove sout-keep from the input code ( Rémi Denis-Courmont )

git version control git at videolan.org
Wed Jun 4 20:16:11 CEST 2008


vlc | branch: master | Rémi Denis-Courmont <rdenis at simphalempin.com> | Wed Jun  4 20:34:38 2008 +0300| [e3c6b242570ec32867138f9bd11414400814431b]

Remove sout-keep from the input code

It needs to be done by the parent (VLM or playlist)

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e3c6b242570ec32867138f9bd11414400814431b
---

 src/input/input.c          |  114 +++----------------------------------------
 src/input/input_internal.h |    2 -
 2 files changed, 8 insertions(+), 108 deletions(-)

diff --git a/src/input/input.c b/src/input/input.c
index 0b1e087..33f0ddd 100644
--- a/src/input/input.c
+++ b/src/input/input.c
@@ -87,9 +87,6 @@ static void SlaveSeek( input_thread_t *p_input );
 static void InputMetaUser( input_thread_t *p_input, vlc_meta_t *p_meta );
 static void InputUpdateMeta( input_thread_t *p_input, vlc_meta_t *p_meta );
 
-static sout_instance_t *SoutFind( vlc_object_t *p_parent, input_item_t *p_item, bool * );
-static void SoutKeep( sout_instance_t * );
-
 static void DemuxMeta( input_thread_t *p_input, vlc_meta_t *p_meta, demux_t *p_demux );
 static void AccessMeta( input_thread_t * p_input, vlc_meta_t *p_meta );
 static void AppendAttachment( int *pi_attachment, input_attachment_t ***ppp_attachment,
@@ -185,8 +182,6 @@ static input_thread_t *Create( vlc_object_t *p_parent, input_item_t *p_item,
     TAB_INIT( p_input->p->i_attachment, p_input->p->attachment );
     p_input->p->p_es_out = NULL;
     p_input->p->p_sout  = NULL;
-    p_input->p->b_owns_its_sout = true;
-    p_input->p->b_sout_keep  = false;
     p_input->p->b_out_pace_control = false;
     p_input->i_pts_delay = 0;
 
@@ -293,10 +288,7 @@ static input_thread_t *Create( vlc_object_t *p_parent, input_item_t *p_item,
 
     /* */
     if( p_sout )
-    {
         p_input->p->p_sout = p_sout;
-        p_input->p->b_owns_its_sout = false;
-    }
 
     memset( &p_input->p->counters, 0, sizeof( p_input->p->counters ) );
     vlc_mutex_init( &p_input->p->counters.counters_lock );
@@ -320,13 +312,8 @@ static void Destructor( input_thread_t * p_input )
     stats_TimerDump( p_input, STATS_TIMER_INPUT_LAUNCHING );
     stats_TimerClean( p_input, STATS_TIMER_INPUT_LAUNCHING );
 #ifdef ENABLE_SOUT
-    if( priv->b_owns_its_sout && priv->p_sout )
-    {
-        if( priv->b_sout_keep )
-            SoutKeep( priv->p_sout );
-        else
-            sout_DeleteInstance( priv->p_sout );
-    }
+    if( priv->p_sout )
+        sout_DeleteInstance( priv->p_sout );
 #endif
     vlc_gc_decref( p_input->p->input.p_item );
 
@@ -347,15 +334,7 @@ static void Destructor( input_thread_t * p_input )
 input_thread_t *__input_CreateThread( vlc_object_t *p_parent,
                                       input_item_t *p_item )
 {
-    bool b_sout_keep;
-    sout_instance_t *p_sout = SoutFind( p_parent, p_item, &b_sout_keep );
-    input_thread_t *p_input =  __input_CreateThreadExtended( p_parent, p_item, NULL, p_sout );
-
-    if( !p_input && p_sout )
-        SoutKeep( p_sout );
-
-    p_input->p->b_sout_keep = b_sout_keep;
-    return p_input;
+    return __input_CreateThreadExtended( p_parent, p_item, NULL, NULL );
 }
 
 /* */
@@ -395,18 +374,11 @@ input_thread_t *__input_CreateThreadExtended( vlc_object_t *p_parent,
 int __input_Read( vlc_object_t *p_parent, input_item_t *p_item,
                    bool b_block )
 {
-    bool b_sout_keep;
-    sout_instance_t *p_sout = SoutFind( p_parent, p_item, &b_sout_keep );
     input_thread_t *p_input;
 
-    p_input = Create( p_parent, p_item, NULL, false, p_sout );
+    p_input = Create( p_parent, p_item, NULL, false, NULL );
     if( !p_input )
-    {
-        if( p_sout )
-            SoutKeep( p_sout );
         return VLC_EGENERIC;
-    }
-    p_input->p->b_sout_keep = b_sout_keep;
 
     if( b_block )
     {
@@ -499,8 +471,10 @@ void input_StopThread( input_thread_t *p_input )
 
 sout_instance_t * input_DetachSout( input_thread_t *p_input )
 {
-    p_input->p->b_owns_its_sout = false;
-    return p_input->p->p_sout;
+    sout_instance_t *p_sout = p_input->p->p_sout;
+    vlc_object_detach( p_sout );
+    p_input->p->p_sout = NULL;
+    return p_sout;
 }
 
 /*****************************************************************************
@@ -1390,78 +1364,6 @@ static void End( input_thread_t * p_input )
     p_input->b_dead = true;
 }
 
-static sout_instance_t *SoutFind( vlc_object_t *p_parent, input_item_t *p_item, bool *pb_sout_keep )
-{
-    bool b_keep_sout = var_CreateGetBool( p_parent, "sout-keep" );
-    sout_instance_t *p_sout = NULL;
-    int i;
-
-    /* Search sout-keep options
-     * XXX it has to be done here, but it is duplicated work :( */
-    vlc_mutex_lock( &p_item->lock );
-    for( i = 0; i < p_item->i_options; i++ )
-    {
-        const char *psz_option = p_item->ppsz_options[i];
-        if( !psz_option )
-            continue;
-        if( *psz_option == ':' )
-            psz_option++;
-
-        if( !strcmp( psz_option, "sout-keep" ) )
-            b_keep_sout = true;
-        else if( !strcmp( psz_option, "no-sout-keep" ) || !strcmp( psz_option, "nosout-keep" ) )
-            b_keep_sout = false;
-    }
-    vlc_mutex_unlock( &p_item->lock );
-
-    /* Find a potential sout to reuse
-     * XXX it might be unusable but this will be checked later */
-    if( b_keep_sout )
-    {
-        playlist_t *p_playlist = vlc_object_find( p_parent->p_libvlc,
-                VLC_OBJECT_PLAYLIST, FIND_CHILD );
-        if( p_playlist )
-        {
-            vlc_mutex_lock( &p_playlist->gc_lock );
-            p_sout = vlc_object_find( p_playlist, VLC_OBJECT_SOUT, FIND_CHILD );
-            if( p_sout )
-            {
-                if( p_sout->p_parent != VLC_OBJECT( p_playlist ) )
-                {
-                    vlc_object_release( p_sout );
-                    p_sout = NULL;
-                }
-                else
-                {
-                    vlc_object_detach( p_sout );    /* Remove it from the GC */
-                    vlc_object_release( p_sout );
-                }
-            }
-            vlc_mutex_unlock( &p_playlist->gc_lock );
-            vlc_object_release( p_playlist );
-        }
-    }
-
-    if( pb_sout_keep )
-        *pb_sout_keep = b_keep_sout;
-
-    return p_sout;
-}
-
-static void SoutKeep( sout_instance_t *p_sout )
-{
-    playlist_t * p_playlist = vlc_object_find( p_sout, VLC_OBJECT_PLAYLIST,
-                                                FIND_PARENT );
-    if( p_playlist )
-    {
-        msg_Dbg( p_sout, "sout has been kept" );
-        vlc_object_attach( p_sout, p_playlist );
-        vlc_object_release( p_playlist );
-    }
-    else
-        sout_DeleteInstance( p_sout );
-}
-
 /*****************************************************************************
  * Control
  *****************************************************************************/
diff --git a/src/input/input_internal.h b/src/input/input_internal.h
index 110868f..dfa59b6 100644
--- a/src/input/input_internal.h
+++ b/src/input/input_internal.h
@@ -104,9 +104,7 @@ struct input_thread_private_t
     /* Output */
     es_out_t    *p_es_out;
     sout_instance_t *p_sout;            /* XXX Move it to es_out ? */
-    bool      b_sout_keep;
     bool      b_out_pace_control; /*     idem ? */
-    bool      b_owns_its_sout;
 
     /* Main input properties */
     input_source_t input;




More information about the vlc-devel mailing list