]> git.sesse.net Git - vlc/blobdiff - src/input/stream_demux.c
stream_Demux: pretend to be in sout-all mode (fixes: #3050)
[vlc] / src / input / stream_demux.c
index 90e6d9130b3753cd6c39505799c1eadc45ac8272..2d07eaecf9c2ee063d260b6204e34ba861fb250f 100644 (file)
@@ -64,13 +64,14 @@ stream_t *__stream_DemuxNew( vlc_object_t *p_obj, const char *psz_demux,
     s = stream_CommonNew( p_obj );
     if( s == NULL )
         return NULL;
+    s->psz_path  = strdup(""); /* N/A */
     s->pf_read   = DStreamRead;
     s->pf_peek   = DStreamPeek;
     s->pf_control= DStreamControl;
     s->pf_destroy= DStreamDelete;
 
     s->p_sys = p_sys = malloc( sizeof( *p_sys) );
-    if( s->p_sys == NULL )
+    if( !s->psz_path || !s->p_sys )
     {
         stream_CommonDelete( s );
         return NULL;
@@ -219,7 +220,6 @@ static int DStreamControl( stream_t *s, int i_query, va_list args )
     stream_sys_t *p_sys = s->p_sys;
     int64_t    *p_i64;
     bool *p_b;
-    int        *p_int;
 
     switch( i_query )
     {
@@ -259,11 +259,6 @@ static int DStreamControl( stream_t *s, int i_query, va_list args )
             return VLC_SUCCESS;
         }
 
-        case STREAM_GET_MTU:
-            p_int = (int*) va_arg( args, int * );
-            *p_int = 0;
-            return VLC_SUCCESS;
-
         case STREAM_CONTROL_ACCESS:
         case STREAM_GET_CONTENT_TYPE:
         case STREAM_SET_RECORD_STATE:
@@ -289,6 +284,9 @@ static void* DStreamThread( vlc_object_t* p_this )
         return NULL;
     }
 
+    /* stream_Demux cannot apply DVB filters.
+     * Get all programs and let the E/S output sort them out. */
+    demux_Control( p_demux, DEMUX_SET_GROUP, -1, NULL );
     p_sys->p_demux = p_demux;
 
     /* Main loop */