[vlc-commits] stream_extractor: archive: add archive_skip_decompressed

Filip Roséen git at videolan.org
Tue Jul 24 15:42:21 CEST 2018


vlc/vlc-3.0 | branch: master | Filip Roséen <filip at atch.se> | Tue Jul 24 14:28:56 2018 +0200| [42df6b34a74cc5d436f43701cd4ecb9f10a0b564] | committer: Jean-Baptiste Kempf

stream_extractor: archive: add archive_skip_decompressed

Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
(cherry picked from commit 732058913798092a5c23811d0c03af5dc33fe56b)
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=42df6b34a74cc5d436f43701cd4ecb9f10a0b564
---

 modules/stream_extractor/archive.c | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/modules/stream_extractor/archive.c b/modules/stream_extractor/archive.c
index b58453ab8c..1e4c122e7f 100644
--- a/modules/stream_extractor/archive.c
+++ b/modules/stream_extractor/archive.c
@@ -577,6 +577,21 @@ static ssize_t Read( stream_extractor_t *p_extractor, void* p_data, size_t i_siz
     return i_ret;
 }
 
+static int archive_skip_decompressed( stream_extractor_t* p_extractor, uint64_t i_skip )
+{
+    while( i_skip )
+    {
+        ssize_t i_read = Read( p_extractor, NULL, i_skip );
+
+        if( i_read < 1 )
+            return VLC_EGENERIC;
+
+        i_skip -= i_read;
+    }
+
+    return VLC_SUCCESS;
+}
+
 static int Seek( stream_extractor_t* p_extractor, uint64_t i_req )
 {
     private_sys_t* p_sys = p_extractor->p_sys;
@@ -618,18 +633,8 @@ static int Seek( stream_extractor_t* p_extractor, uint64_t i_req )
             i_offset = 0;
         }
 
-        /* SKIP _DECOMPRESSED_ DATA */
-
-        while( i_skip )
-        {
-            ssize_t i_read = Read( p_extractor, NULL, i_skip );
-
-            if( i_read < 1 )
-                return VLC_EGENERIC;
-
-            i_offset += i_read;
-            i_skip   -= i_read;
-        }
+        if( archive_skip_decompressed( p_extractor, i_skip ) )
+            return VLC_EGENERIC;
     }
 
     p_sys->i_offset = i_req;



More information about the vlc-commits mailing list