[vlc-commits] VLSub: Clean & simplify hash calculation
Hugo Beauzée-Luyssen
git at videolan.org
Tue Apr 17 14:02:20 CEST 2018
vlc/vlc-3.0 | branch: master | Hugo Beauzée-Luyssen <hugo at beauzee.fr> | Mon Apr 16 17:17:27 2018 +0200| [5aed59dd1c18078419101dd0a72154ea019fcb74] | committer: Hugo Beauzée-Luyssen
VLSub: Clean & simplify hash calculation
Don't attempt to generate the hash by downloading the entire media in
case the stream isn't seekable.
(cherry picked from commit c11a6535cc6915dc81a79daead0dd65654bf3336)
Signed-off-by: Hugo Beauzée-Luyssen <hugo at beauzee.fr>
> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=5aed59dd1c18078419101dd0a72154ea019fcb74
---
share/lua/extensions/VLSub.lua | 71 +++++++-----------------------------------
1 file changed, 12 insertions(+), 59 deletions(-)
diff --git a/share/lua/extensions/VLSub.lua b/share/lua/extensions/VLSub.lua
index 79567d0153..c853d2a856 100644
--- a/share/lua/extensions/VLSub.lua
+++ b/share/lua/extensions/VLSub.lua
@@ -1334,74 +1334,27 @@ openSub = {
openSub.getFileInfo()
- if not openSub.file.path then
- setError(lang["mess_not_found"])
- return false
- end
-
local data_start = ""
local data_end = ""
local size
local chunk_size = 65536
-- Get data for hash calculation
- if openSub.file.is_archive then
- vlc.msg.dbg("[VLSub] Read hash data from stream")
-
- local file = vlc.stream(openSub.file.uri)
- local dataTmp1 = ""
- local dataTmp2 = ""
- size = chunk_size
-
- data_start = file:read(chunk_size)
-
- while data_end do
- size = size + string.len(data_end)
- dataTmp1 = dataTmp2
- dataTmp2 = data_end
- data_end = file:read(chunk_size)
- collectgarbage()
- end
- data_end = string.sub((dataTmp1..dataTmp2), -chunk_size)
- elseif not file_exist(openSub.file.path)
- and openSub.file.stat then
- vlc.msg.dbg("[VLSub] Read hash data from stream")
-
- local file = vlc.stream(openSub.file.uri)
-
- if not file then
- vlc.msg.dbg("[VLSub] No stream")
- return false
- end
-
- size = openSub.file.stat.size
- local decal = size%chunk_size
-
- data_start = file:read(chunk_size)
+ vlc.msg.dbg("[VLSub] Read hash data from stream")
- -- "Seek" to the end
- file:read(decal)
+ local file = vlc.stream(openSub.file.uri)
- for i = 1, math.floor(((size-decal)/chunk_size))-2 do
- file:read(chunk_size)
- end
-
- data_end = file:read(chunk_size)
-
- file = nil
- else
- vlc.msg.dbg("[VLSub] Read hash data from file")
- local file = vlc.io.open(openSub.file.path, "rb")
- if not file then
- vlc.msg.dbg("[VLSub] No stream")
- return false
- end
-
- data_start = file:read(chunk_size)
- size = file:seek("end", -chunk_size) + chunk_size
- data_end = file:read(chunk_size)
- file = nil
+ size = file:getsize()
+ data_start = file:read(chunk_size)
+ if not size then
+ vlc.msg.warn("[VLSub] Failed to get stream size")
+ return false
+ end
+ if not file:seek( size - chunk_size ) then
+ vlc.msg.warn("[VLSub] Failed to seek to the end of the stream")
+ return false
end
+ data_end = file:read(chunk_size)
-- Hash calculation
local lo = size
More information about the vlc-commits
mailing list