[vlc-commits] stream_extractor: archive: add archive_skip_decompressed
Filip Roséen
git at videolan.org
Tue Jul 24 15:37:42 CEST 2018
vlc | branch: master | Filip Roséen <filip at atch.se> | Tue Jul 24 14:28:56 2018 +0200| [7c9b2e02bb8904a589f4f33da41476d53c30d3b4] | committer: Jean-Baptiste Kempf
stream_extractor: archive: add archive_skip_decompressed
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7c9b2e02bb8904a589f4f33da41476d53c30d3b4
---
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 ad0a38ca62..43b4056360 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