]> git.sesse.net Git - vlc/blobdiff - modules/demux/live555.cpp
* a few more
[vlc] / modules / demux / live555.cpp
index 77fe3f0c928df3f4afeec820d188bdb620b6ce73..7e62c2c056d01e1c8742a535b1f89de5eb200ae5 100644 (file)
@@ -39,6 +39,7 @@
 #   include <winsock2.h>
 #endif
 
+#include "UsageEnvironment.hh"
 #include "BasicUsageEnvironment.hh"
 #include "GroupsockHelper.hh"
 #include "liveMedia.hh"
@@ -674,7 +675,7 @@ static int SessionsSetup( demux_t *p_demux )
                 }
                 else if( !strncmp( sub->codecName(), "G726", 4 ) )
                 {
-                    tk->fmt.i_codec = VLC_FOURCC( 'g', '7', '2', '6' ); 
+                    tk->fmt.i_codec = VLC_FOURCC( 'g', '7', '2', '6' );
                     tk->fmt.audio.i_rate = 8000;
                     tk->fmt.audio.i_channels = 1;
                     if( !strcmp( sub->codecName()+5, "40" ) )
@@ -743,7 +744,14 @@ static int SessionsSetup( demux_t *p_demux )
                 }
                 else if( !strcmp( sub->codecName(), "SPEEX" ) )
                 {
-                    tk->fmt.i_codec = VLC_FOURCC( 's', 'p', 'x', ' ' );
+                    tk->fmt.i_codec = VLC_FOURCC( 's', 'p', 'x', 'r' );
+                   if ( sub->rtpTimestampFrequency() )
+                       tk->fmt.audio.i_rate = sub->rtpTimestampFrequency();
+                    else
+                   {
+                       msg_Warn( p_demux,"Using 8kHz as default sample rate." );
+                       tk->fmt.audio.i_rate = 8000;
+                   }
                 }
             }
             else if( !strcmp( sub->mediumName(), "video" ) )
@@ -898,7 +906,9 @@ static int Play( demux_t *p_demux )
 
         /* Retrieve the timeout value and set up a timeout prevention thread */
         p_sys->i_timeout = p_sys->rtsp->sessionTimeoutParameter();
-        if( p_sys->i_timeout > 0 && !p_sys->p_timeout )
+        if( p_sys->i_timeout <= 0 )
+            p_sys->i_timeout = 60; /* default value from RFC2326 */
+        if( !p_sys->p_timeout )
         {
             msg_Dbg( p_demux, "We have a timeout of %d seconds",  p_sys->i_timeout );
             p_sys->p_timeout = (timeout_thread_t *)vlc_object_create( p_demux, sizeof(timeout_thread_t) );
@@ -1031,12 +1041,10 @@ static int Demux( demux_t *p_demux )
 
             es_out_Control( p_demux->out, ES_OUT_RESET_PCR );
             tk->b_rtcp_sync = VLC_TRUE;
-#if 0
             /* reset PCR */
             tk->i_pts = 0;
             p_sys->i_pcr = 0;
             i_pcr = 0;
-#endif
         }
     }
 
@@ -1556,7 +1564,7 @@ static void TaskInterrupt( void *p_private )
 }
 
 /*****************************************************************************
- *  
+ *
  *****************************************************************************/
 static void TimeoutPrevention( timeout_thread_t *p_timeout )
 {