]> git.sesse.net Git - vlc/commitdiff
* Move sgimb demux to the playlist demux, and port it to the new playlist API
authorDerk-Jan Hartman <hartman@videolan.org>
Sat, 1 Jul 2006 19:23:39 +0000 (19:23 +0000)
committerDerk-Jan Hartman <hartman@videolan.org>
Sat, 1 Jul 2006 19:23:39 +0000 (19:23 +0000)
modules/demux/Modules.am
modules/demux/playlist/Modules.am
modules/demux/playlist/asx.c
modules/demux/playlist/playlist.c
modules/demux/playlist/playlist.h
modules/demux/playlist/sgimb.c [moved from modules/demux/sgimb.c with 88% similarity]

index 81d3e107c6046d03fa2593a3f195b74123b34773..b7158cc2ba376215ad1ef3700658f3ae021010c0 100644 (file)
@@ -15,7 +15,6 @@ SOURCES_ps = ps.c ps.h
 SOURCES_mod = mod.c
 SOURCES_pva = pva.c
 SOURCES_aiff = aiff.c
-SOURCES_sgimb = sgimb.c
 SOURCES_mjpeg = mjpeg.c
 SOURCES_subtitle = subtitle.c
 SOURCES_ty = ty.c
index 2985b5bf934f1016c1fb63742978ab88773d689a..00a971b799618dde7dc99ba5f00d8ea3ab63c2e3 100644 (file)
@@ -11,6 +11,7 @@ SOURCES_playlist = \
        xspf.h \
        shoutcast.c \
        asx.c \
+       sgimb.c \
        $(NULL)
 
 
index cc6a5c2a534652357b12c0a17a089ca2f51d00f6..675fa32ae564b1029b94ac797e15d6b463ebb08a 100644 (file)
@@ -32,7 +32,6 @@
 
 #include <vlc/vlc.h>
 #include <vlc/input.h>
-#include <vlc/intf.h>
 
 #include <errno.h>                                                 /* ENOMEM */
 #include "playlist.h"
index 3bd54dfbd6a4435d5f49f51e012b5bde4924ee27..410465038a5fd3562e8182768c89977a2504231f 100644 (file)
@@ -101,6 +101,11 @@ vlc_module_begin();
         add_shortcut( "asx-open" );
         set_capability( "demux2", 10 );
         set_callbacks( E_(Import_ASX), E_(Close_ASX) );
+    add_submodule();
+        set_description( _("Kasenna MediaBase parser") );
+        add_shortcut( "sgimb" );
+        set_capability( "demux2", 10 );
+        set_callbacks( E_(Import_SGIMB), E_(Close_SGIMB) );
 vlc_module_end();
 
 
index 24622691497cda29d63795d96eeaf2e516c05b2d..9ab4af04e176b9f67df681bc3522114485b7365f 100644 (file)
@@ -56,6 +56,9 @@ void E_(Close_Shoutcast) ( vlc_object_t * );
 int E_(Import_ASX) ( vlc_object_t * );
 void E_(Close_ASX) ( vlc_object_t * );
 
+int E_(Import_SGIMB) ( vlc_object_t * );
+void E_(Close_SGIMB) ( vlc_object_t * );
+
 #define INIT_PLAYLIST_STUFF \
     int i_parent_id; \
     vlc_bool_t b_play; \
similarity index 88%
rename from modules/demux/sgimb.c
rename to modules/demux/playlist/sgimb.c
index fa6ca9a6d045c155a5aa7a65e3568a30242ee0c1..7d2d8146542569ea8b53fd26f9d70a3ccb070005 100644 (file)
 
 #include <vlc/vlc.h>
 #include <vlc/input.h>
-#include <vlc_playlist.h>
-
-/*****************************************************************************
- * Module descriptor
- *****************************************************************************/
-static int  Activate  ( vlc_object_t * );
-static void Deactivate( vlc_object_t * );
-
-vlc_module_begin();
-    set_description( _("Kasenna MediaBase parser") );
-    set_category( CAT_INPUT );
-    set_subcategory( SUBCAT_INPUT_DEMUX );
-    set_capability( "demux2", 170 );
-    set_callbacks( Activate, Deactivate );
-    add_shortcut( "sgimb" );
-vlc_module_end();
+#include "playlist.h"
 
 /*****************************************************************************
  * Local prototypes
@@ -147,7 +132,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args );
 /*****************************************************************************
  * Activate: initializes m3u demux structures
  *****************************************************************************/
-static int Activate( vlc_object_t * p_this )
+int E_(Import_SGIMB)( vlc_object_t * p_this )
 {
     demux_t *p_demux = (demux_t *)p_this;
     demux_sys_t *p_sys;
@@ -185,6 +170,8 @@ static int Activate( vlc_object_t * p_this )
             p_sys->i_sid = 0;
             p_sys->b_rtsp_kasenna = VLC_FALSE;
             p_sys->b_concert = VLC_FALSE;
+            
+            msg_Dbg( p_demux, "using sgimb playlist import");
 
             return VLC_SUCCESS;
         }
@@ -195,7 +182,7 @@ static int Activate( vlc_object_t * p_this )
 /*****************************************************************************
  * Deactivate: frees unused data
  *****************************************************************************/
-static void Deactivate( vlc_object_t *p_this )
+void E_(Close_SGIMB)( vlc_object_t *p_this )
 {
     demux_t *p_demux = (demux_t*)p_this;
     demux_sys_t *p_sys = p_demux->p_sys;
@@ -333,21 +320,10 @@ static int ParseLine ( demux_t *p_demux, char *psz_line )
 static int Demux ( demux_t *p_demux )
 {
     demux_sys_t     *p_sys = p_demux->p_sys;
-    playlist_t      *p_playlist;
-    playlist_item_t *p_item;
+    input_item_t    *p_child = NULL;
     char            *psz_line;
 
-    p_playlist = (playlist_t *) vlc_object_find( p_demux, VLC_OBJECT_PLAYLIST,
-                                                 FIND_ANYWHERE );
-    if( !p_playlist )
-    {
-        msg_Err( p_demux, "can't find playlist" );
-        return -1;
-    }
-
-    p_item = playlist_LockItemGetByInput( p_playlist,
-                        ((input_thread_t *)p_demux->p_parent)->input.p_item );
-    playlist_ItemToNode( p_playlist, p_item );
+    INIT_PLAYLIST_STUFF;
 
     while( ( psz_line = stream_ReadLine( p_demux->s ) ) )
     {
@@ -401,48 +377,44 @@ static int Demux ( demux_t *p_demux )
         free( temp );
     }
 
-    msg_Err( p_playlist, "SGIMB playlist handling is broken" );
-#if 0
-    p_child = playlist_ItemNew( p_playlist, p_sys->psz_uri,
-                      p_sys->psz_name ? p_sys->psz_name : p_sys->psz_uri );
-
-    if( !p_child || !p_child->input.psz_uri )
+    p_child = input_ItemNewWithType( (vlc_object_t *)p_playlist, p_sys->psz_uri,
+                      p_sys->psz_name ? p_sys->psz_name : p_sys->psz_uri,
+                      0, NULL, p_sys->i_duration, ITEM_TYPE_NET );
+    
+    if( !p_child )
     {
         msg_Err( p_demux, "A valid playlistitem could not be created" );
         return VLC_EGENERIC;
     }
 
+    vlc_input_item_CopyOptions( p_current->p_input, p_child );
     if( p_sys->i_packet_size && p_sys->psz_mcast_ip )
     {
         char *psz_option;
         p_sys->i_packet_size += 1000;
         asprintf( &psz_option, "mtu=%i", p_sys->i_packet_size );
-        playlist_ItemAddOption( p_child, psz_option );
+        vlc_input_item_AddOption( p_child, psz_option );
         free( psz_option );
     }
     if( !p_sys->psz_mcast_ip )
     {
         char *psz_option;
         asprintf( &psz_option, "rtsp-caching=5000" );
-        playlist_ItemAddOption( p_child, psz_option );
+        vlc_input_item_AddOption( p_child, psz_option );
         free( psz_option );
     }
     if( !p_sys->psz_mcast_ip && p_sys->b_rtsp_kasenna )
     {
         char *psz_option;
         asprintf( &psz_option, "rtsp-kasenna" );
-        playlist_ItemAddOption( p_child, psz_option );
+        vlc_input_item_AddOption( p_child, psz_option );
         free( psz_option );
     }
 
-    playlist_ItemSetDuration( p_child, p_sys->i_duration );
-    playlist_NodeAddItem( p_playlist, p_child, p_item->pp_parents[0]->i_view, p_item, PLAYLIST_APPEND, PLAYLIST_END );
-    playlist_CopyParents( p_item, p_child );
-    playlist_Control( p_playlist, PLAYLIST_VIEWPLAY,
-                           p_playlist->status.i_view,
-                           p_playlist->status.p_item, NULL );
-#endif
-    vlc_object_release( p_playlist );
+    playlist_AddWhereverNeeded( p_playlist, p_child, p_current,
+                                 p_item_in_category, (i_parent_id > 0 )? VLC_TRUE : VLC_FALSE,
+                                 PLAYLIST_APPEND );
+    HANDLE_PLAY_AND_RELEASE
     return VLC_SUCCESS;
 }