[vlc-devel] [RFC PATCH 2/2] access/demux: Make use of live-network-caching variable

Julian Scheel julian at jusst.de
Wed Apr 8 12:14:22 CEST 2015


Use either network-caching or live-network-caching depending on whether a
source is seekable or not.

Signed-off-by: Julian Scheel <julian at jusst.de>
---
 modules/access/avio.c            | 10 +++++++++-
 modules/access/file.c            |  4 +++-
 modules/access/ftp.c             |  4 +++-
 modules/access/http.c            |  4 +++-
 modules/access/live555.cpp       |  4 +++-
 modules/access/mms/mmsh.c        |  4 +++-
 modules/access/mms/mmstu.c       |  4 +++-
 modules/access/rtp/rtp.c         |  2 +-
 modules/access/rtsp/access.c     |  2 +-
 modules/access/tcp.c             |  2 +-
 modules/access/udp.c             |  2 +-
 modules/access/vnc.c             |  2 +-
 modules/demux/dash/dash.cpp      |  4 +++-
 modules/stream_filter/hds/hds.c  |  2 +-
 modules/stream_filter/httplive.c |  3 ++-
 15 files changed, 38 insertions(+), 15 deletions(-)

diff --git a/modules/access/avio.c b/modules/access/avio.c
index 50ef585..e2e0cde 100644
--- a/modules/access/avio.c
+++ b/modules/access/avio.c
@@ -435,7 +435,15 @@ static int Control(access_t *access, int query, va_list args)
         return VLC_SUCCESS;
     case ACCESS_GET_PTS_DELAY: {
         int64_t *delay = va_arg(args, int64_t *);
-        *delay = INT64_C(1000) * var_InheritInteger(access, "network-caching");
+#if LIBAVFORMAT_VERSION_MAJOR < 54
+        *delay = INT64_C(1000) * !sys->context->is_streamed ?
+            var_InheritInteger(access, "network-caching") :
+            var_InheritInteger(access, "live-network-caching");
+#else
+        *delay = INT64_C(1000) * sys->context->seekable ?
+            var_InheritInteger(access, "network-caching") :
+            var_InheritInteger(access, "live-network-caching");
+#endif
         return VLC_SUCCESS;
     }
     case ACCESS_SET_PAUSE_STATE: {
diff --git a/modules/access/file.c b/modules/access/file.c
index fbe6fa6..2cd0c60 100644
--- a/modules/access/file.c
+++ b/modules/access/file.c
@@ -407,7 +407,9 @@ static int FileControl( access_t *p_access, int i_query, va_list args )
         case ACCESS_GET_PTS_DELAY:
             pi_64 = (int64_t*)va_arg( args, int64_t * );
             if (IsRemote (p_sys->fd, p_access->psz_filepath))
-                *pi_64 = var_InheritInteger (p_access, "network-caching");
+                *pi_64 = p_access->pf_seek != NoSeek ?
+                    var_InheritInteger (p_access, "network-caching") :
+                    var_InheritInteger (p_access, "live-network-caching");
             else
                 *pi_64 = var_InheritInteger (p_access, "file-caching");
             *pi_64 *= 1000;
diff --git a/modules/access/ftp.c b/modules/access/ftp.c
index e0dc371..da4073d 100644
--- a/modules/access/ftp.c
+++ b/modules/access/ftp.c
@@ -897,7 +897,9 @@ static int Control( access_t *p_access, int i_query, va_list args )
         case ACCESS_GET_PTS_DELAY:
             pi_64 = (int64_t*)va_arg( args, int64_t * );
             *pi_64 = INT64_C(1000)
-                   * var_InheritInteger( p_access, "network-caching" );
+                   * !p_access->p_sys->directory ?
+                       var_InheritInteger( p_access, "network-caching" ):
+                       var_InheritInteger( p_access, "live-network-caching" );
             break;
 
         case ACCESS_SET_PAUSE_STATE:
diff --git a/modules/access/http.c b/modules/access/http.c
index 31328ab..76cb85e 100644
--- a/modules/access/http.c
+++ b/modules/access/http.c
@@ -967,7 +967,9 @@ static int Control( access_t *p_access, int i_query, va_list args )
         case ACCESS_GET_PTS_DELAY:
             pi_64 = (int64_t*)va_arg( args, int64_t * );
             *pi_64 = INT64_C(1000)
-                * var_InheritInteger( p_access, "network-caching" );
+                * p_sys->b_seekable ?
+                    var_InheritInteger( p_access, "network-caching" ) :
+                    var_InheritInteger( p_access, "live-network-caching" );
             break;
 
         case ACCESS_GET_SIZE:
diff --git a/modules/access/live555.cpp b/modules/access/live555.cpp
index a3faa77..06005fc 100644
--- a/modules/access/live555.cpp
+++ b/modules/access/live555.cpp
@@ -1664,7 +1664,9 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
         case DEMUX_GET_PTS_DELAY:
             pi64 = (int64_t*)va_arg( args, int64_t * );
             *pi64 = INT64_C(1000)
-                  * var_InheritInteger( p_demux, "network-caching" );
+                  * ( p_sys->rtsp && p_sys->f_npt_length > 0 ) ?
+                    var_InheritInteger( p_demux, "network-caching" ) :
+                    var_InheritInteger( p_demux, "live-network-caching" );
             return VLC_SUCCESS;
 
         default:
diff --git a/modules/access/mms/mmsh.c b/modules/access/mms/mmsh.c
index d1d3c2d..c2861ac 100644
--- a/modules/access/mms/mmsh.c
+++ b/modules/access/mms/mmsh.c
@@ -250,7 +250,9 @@ static int Control( access_t *p_access, int i_query, va_list args )
         case ACCESS_GET_PTS_DELAY:
             pi_64 = (int64_t*)va_arg( args, int64_t * );
             *pi_64 = INT64_C(1000)
-                   * var_InheritInteger( p_access, "network-caching" );
+                   * !p_sys->b_broadcast ?
+                        var_InheritInteger( p_access, "network-caching" ) :
+                        var_InheritInteger( p_access, "live-network-caching" );
             break;
 
         case ACCESS_GET_PRIVATE_ID_STATE:
diff --git a/modules/access/mms/mmstu.c b/modules/access/mms/mmstu.c
index 4c0a8c2..c0b5702 100644
--- a/modules/access/mms/mmstu.c
+++ b/modules/access/mms/mmstu.c
@@ -254,7 +254,9 @@ static int Control( access_t *p_access, int i_query, va_list args )
         case ACCESS_GET_PTS_DELAY:
             pi_64 = (int64_t*)va_arg( args, int64_t * );
             *pi_64 = INT64_C(1000)
-                   * var_InheritInteger( p_access, "network-caching" );
+                   * p_sys->b_seekable ?
+                       var_InheritInteger( p_access, "network-caching" ) :
+                       var_InheritInteger( p_access, "live-network-caching" );
             break;
 
         case ACCESS_GET_PRIVATE_ID_STATE:
diff --git a/modules/access/rtp/rtp.c b/modules/access/rtp/rtp.c
index 455c0e8..be3cd58 100644
--- a/modules/access/rtp/rtp.c
+++ b/modules/access/rtp/rtp.c
@@ -381,7 +381,7 @@ static int Control (demux_t *demux, int query, va_list args)
         case DEMUX_GET_PTS_DELAY:
         {
             int64_t *v = va_arg (args, int64_t *);
-            *v = INT64_C(1000) * var_InheritInteger (demux, "network-caching");
+            *v = INT64_C(1000) * var_InheritInteger (demux, "live-network-caching");
             return VLC_SUCCESS;
         }
 
diff --git a/modules/access/rtsp/access.c b/modules/access/rtsp/access.c
index 2a52a1b..c8807e4 100644
--- a/modules/access/rtsp/access.c
+++ b/modules/access/rtsp/access.c
@@ -323,7 +323,7 @@ static int Control( access_t *p_access, int i_query, va_list args )
 
         case ACCESS_GET_PTS_DELAY:
             *va_arg( args, int64_t * ) = INT64_C(1000)
-                * var_InheritInteger(p_access, "network-caching");
+                * var_InheritInteger(p_access, "live-network-caching");
             break;
 
         case ACCESS_SET_PAUSE_STATE:
diff --git a/modules/access/tcp.c b/modules/access/tcp.c
index 3fbf7f2..9beb6c4 100644
--- a/modules/access/tcp.c
+++ b/modules/access/tcp.c
@@ -175,7 +175,7 @@ static int Control( access_t *p_access, int i_query, va_list args )
         case ACCESS_GET_PTS_DELAY:
             pi_64 = (int64_t*)va_arg( args, int64_t * );
             *pi_64 = INT64_C(1000)
-                   * var_InheritInteger( p_access, "network-caching" );
+                   * var_InheritInteger( p_access, "live-network-caching" );
             break;
 
         case ACCESS_SET_PAUSE_STATE:
diff --git a/modules/access/udp.c b/modules/access/udp.c
index c61bf8a..55f74a9 100644
--- a/modules/access/udp.c
+++ b/modules/access/udp.c
@@ -219,7 +219,7 @@ static int Control( access_t *p_access, int i_query, va_list args )
         case ACCESS_GET_PTS_DELAY:
             pi_64 = (int64_t*)va_arg( args, int64_t * );
             *pi_64 = INT64_C(1000)
-                   * var_InheritInteger(p_access, "network-caching");
+                   * var_InheritInteger(p_access, "live-network-caching");
             break;
 
         default:
diff --git a/modules/access/vnc.c b/modules/access/vnc.c
index 4a4a94f..608ce0e 100644
--- a/modules/access/vnc.c
+++ b/modules/access/vnc.c
@@ -298,7 +298,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
         case DEMUX_GET_PTS_DELAY:
             pi64 = (int64_t*)va_arg( args, int64_t * );
             *pi64 = INT64_C(1000)
-                  * var_InheritInteger( p_demux, "network-caching" );
+                  * var_InheritInteger( p_demux, "live-network-caching" );
             return VLC_SUCCESS;
 
         case DEMUX_GET_TIME:
diff --git a/modules/demux/dash/dash.cpp b/modules/demux/dash/dash.cpp
index ee9bada..c623aa3 100644
--- a/modules/demux/dash/dash.cpp
+++ b/modules/demux/dash/dash.cpp
@@ -241,7 +241,9 @@ static int  Control         (demux_t *p_demux, int i_query, va_list args)
 
         case DEMUX_GET_PTS_DELAY:
             *va_arg (args, int64_t *) = INT64_C(1000) *
-                var_InheritInteger(p_demux, "network-caching");
+                p_sys->p_dashManager->seekAble() ?
+                    var_InheritInteger(p_demux, "network-caching") :
+                    var_InheritInteger(p_demux, "live-network-caching");
              break;
 
         case DEMUX_GET_META:
diff --git a/modules/stream_filter/hds/hds.c b/modules/stream_filter/hds/hds.c
index 9a74b67..9ee209b 100644
--- a/modules/stream_filter/hds/hds.c
+++ b/modules/stream_filter/hds/hds.c
@@ -1945,7 +1945,7 @@ static int Control( stream_t *s, int i_query, va_list args )
             break;
         case STREAM_GET_PTS_DELAY:
             *va_arg (args, int64_t *) = INT64_C(1000) *
-                var_InheritInteger(s, "network-caching");
+                var_InheritInteger(s, "live-network-caching");
              break;
         case STREAM_GET_POSITION:
             *(va_arg (args, uint64_t *)) = s->p_sys->playback_offset;
diff --git a/modules/stream_filter/httplive.c b/modules/stream_filter/httplive.c
index 24b44c4..2705baf 100644
--- a/modules/stream_filter/httplive.c
+++ b/modules/stream_filter/httplive.c
@@ -2728,7 +2728,8 @@ static int Control(stream_t *s, int i_query, va_list args)
             break;
         case STREAM_GET_PTS_DELAY:
             *va_arg (args, int64_t *) = INT64_C(1000) *
-                var_InheritInteger(s, "network-caching");
+                hls_MaySeek(s) ? var_InheritInteger(s, "network-caching") :
+                    var_InheritInteger(s, "live-network-caching");
              break;
         default:
             return VLC_EGENERIC;
-- 
2.3.0





More information about the vlc-devel mailing list