[vlc-devel] [PATCH 1/3] Improve low FPS support.

Paulo Vitor Magacho da Silva pvmagacho at gmail.com
Tue Nov 25 08:30:29 CET 2014


---
 modules/access/live555.cpp      | 13 +++++++------
 modules/codec/avcodec/video.c   |  4 ++--
 src/input/clock.c               |  2 +-
 src/video_output/video_output.c |  2 +-
 4 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/modules/access/live555.cpp b/modules/access/live555.cpp
index b14898c..4442b9b 100644
--- a/modules/access/live555.cpp
+++ b/modules/access/live555.cpp
@@ -1217,8 +1217,9 @@ static int Play( demux_t *p_demux )
     {
         /* The PLAY */
         p_sys->rtsp->sendPlayCommand( *p_sys->ms, default_live555_callback, p_sys->f_npt_start, -1, 1 );
+        const int i_timeout = var_InheritInteger( p_demux, "ipv4-timeout" );
 
-        if( !wait_Live555_response(p_demux) )
+        if( !wait_Live555_response(p_demux, i_timeout) )
         {
             msg_Err( p_demux, "RTSP PLAY failed %s", p_sys->env->getResultMsg() );
             return VLC_EGENERIC;
@@ -1386,14 +1387,14 @@ static int Demux( demux_t *p_demux )
         */
     }
     else if( !p_sys->b_multicast && !p_sys->b_paused &&
-              p_sys->b_no_data && ( p_sys->i_no_data_ti > 34 ) )
+              p_sys->b_no_data && ( p_sys->i_no_data_ti > 68 ) )
     {
         bool b_rtsp_tcp = var_GetBool( p_demux, "rtsp-tcp" ) ||
                                 var_GetBool( p_demux, "rtsp-http" );
 
         if( !b_rtsp_tcp && p_sys->rtsp && p_sys->ms )
         {
-            msg_Warn( p_demux, "no data received in 10s. Switching to TCP" );
+            msg_Warn( p_demux, "no data received in 20s. Switching to TCP" );
             if( RollOverTcp( p_demux ) )
             {
                 msg_Err( p_demux, "TCP rollover failed, aborting" );
@@ -1401,14 +1402,14 @@ static int Demux( demux_t *p_demux )
             }
             return 1;
         }
-        msg_Err( p_demux, "no data received in 10s, aborting" );
+        msg_Err( p_demux, "no data received in 20s, aborting" );
         return 0;
     }
     else if( !p_sys->b_multicast && !p_sys->b_paused &&
-             ( p_sys->i_no_data_ti > 34 ) )
+             ( p_sys->i_no_data_ti > 68 ) )
     {
         /* EOF ? */
-        msg_Warn( p_demux, "no data received in 10s, eof ?" );
+        msg_Warn( p_demux, "no data received in 20s, eof ?" );
         return 0;
     }
     return p_sys->b_error ? 0 : 1;
diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
index 5ba6e2e..fafe4f9 100644
--- a/modules/codec/avcodec/video.c
+++ b/modules/codec/avcodec/video.c
@@ -515,7 +515,7 @@ static picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block )
     }
 
     if( !p_dec->b_pace_control && (p_sys->i_late_frames > 0) &&
-        (mdate() - p_sys->i_late_frames_start > INT64_C(5000000)) )
+        (mdate() - p_sys->i_late_frames_start > INT64_C(60000000)) )
     {
         if( p_sys->i_pts > VLC_TS_INVALID )
         {
@@ -524,7 +524,7 @@ static picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block )
         if( p_block )
             block_Release( p_block );
         p_sys->i_late_frames--;
-        msg_Err( p_dec, "more than 5 seconds of late video -> "
+        msg_Err( p_dec, "more than 60 seconds of late video -> "
                  "dropping frame (computer too slow ?)" );
         return NULL;
     }
diff --git a/src/input/clock.c b/src/input/clock.c
index 1419f8f..8f4acf9 100644
--- a/src/input/clock.c
+++ b/src/input/clock.c
@@ -430,7 +430,7 @@ int input_clock_ConvertTS( input_clock_t *cl,
     /* */
     if( *pi_ts0 > VLC_TS_INVALID )
     {
-        *pi_ts0 = ClockStreamToSystem( cl, *pi_ts0 + AvgGet( &cl->drift ) );
+        *pi_ts0 = ClockStreamToSystem( cl, *pi_ts0 /* AvgGet( &cl->drift ) */ );
         if( *pi_ts0 > cl->i_ts_max )
             cl->i_ts_max = *pi_ts0;
         *pi_ts0 += i_ts_delay;
diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index 2a6fe2a..820199d 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -66,7 +66,7 @@ static void VoutDestructor(vlc_object_t *);
 /**
  * Late pictures having a delay higher than this value are thrashed.
  */
-#define VOUT_DISPLAY_LATE_THRESHOLD (INT64_C(20000))
+#define VOUT_DISPLAY_LATE_THRESHOLD (INT64_C(5000000))
 
 /* Better be in advance when awakening than late... */
 #define VOUT_MWAIT_TOLERANCE (INT64_C(4000))
-- 
1.9.3 (Apple Git-50)




More information about the vlc-devel mailing list