diff -Naur main/libmpdemux/demuxer.c main-new/libmpdemux/demuxer.c --- main/libmpdemux/demuxer.c 2003-08-07 14:40:14.000000000 +0200 +++ main-new/libmpdemux/demuxer.c 2003-08-15 22:09:24.000000000 +0200 @@ -1255,7 +1255,7 @@ #endif #ifdef STREAMING_LIVE_DOT_COM case DEMUXER_TYPE_RTP: { - demux_open_rtp(demuxer); + demuxer = demux_open_rtp(demuxer); break; } #endif diff -Naur main/libmpdemux/demux_rtp.cpp main-new/libmpdemux/demux_rtp.cpp --- main/libmpdemux/demux_rtp.cpp 2003-07-27 12:15:10.000000000 +0200 +++ main-new/libmpdemux/demux_rtp.cpp 2003-08-15 22:35:34.000000000 +0200 @@ -119,7 +119,7 @@ int rtspStreamOverTCP = 0; -extern "C" void demux_open_rtp(demuxer_t* demuxer) { +extern "C" demuxer_t* demux_open_rtp(demuxer_t* demuxer) { do { TaskScheduler* scheduler = BasicTaskScheduler::createNew(); if (scheduler == NULL) break; @@ -254,6 +254,19 @@ rtpState->flags |= flags; } } while (0); + + + if(demux_is_multiplexed_rtp_stream(demuxer)) + { + demuxer_t *od; + stream_t *s; + + s = new_ds_stream(demuxer->video); + od = demux_open(s, DEMUXER_TYPE_UNKNOWN, -1, -1, -1, NULL); + demuxer = new_demuxers_demuxer(od, od, od); + } + + return demuxer; } extern "C" int demux_is_mpeg_rtp_stream(demuxer_t* demuxer) { diff -Naur main/libmpdemux/demux_rtp.h main-new/libmpdemux/demux_rtp.h --- main/libmpdemux/demux_rtp.h 2003-07-27 12:11:42.000000000 +0200 +++ main-new/libmpdemux/demux_rtp.h 2003-08-15 22:05:42.000000000 +0200 @@ -19,7 +19,7 @@ // Open a RTP demuxer (which was initiated either from a SDP file, // or from a RTSP URL): -void demux_open_rtp(demuxer_t* demuxer); +demuxer_t* demux_open_rtp(demuxer_t* demuxer); // Test whether a RTP demuxer is for a MPEG stream: int demux_is_mpeg_rtp_stream(demuxer_t* demuxer);