blob: 4e8df415bd5bda23afcd4c734c30447bafc55944 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
--[[
Copyright: Ren Tatsumoto and contributors
License: GNU GPL, version 3 or later; http://www.gnu.org/licenses/gpl.html
Subtitle class provides methods for storing and comparing subtitle lines.
]]
local mp = require('mp')
local Subtitle = {
['text'] = '',
['secondary'] = '',
['start'] = -1,
['end'] = -1,
}
function Subtitle:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
function Subtitle:now(secondary)
local prefix = secondary and "secondary-" or ""
local this = self:new {
['text'] = mp.get_property(prefix .. "sub-text"),
['start'] = mp.get_property_number(prefix .. "sub-start"),
['end'] = mp.get_property_number(prefix .. "sub-end"),
}
if this:is_valid() then
return this:delay(mp.get_property_native("sub-delay") - mp.get_property_native("audio-delay"))
else
return nil
end
end
function Subtitle:delay(delay)
self['start'] = self['start'] + delay
self['end'] = self['end'] + delay
return self
end
function Subtitle:is_valid()
return self['start'] and self['end'] and self['start'] >= 0 and self['end'] > self['start']
end
Subtitle.__eq = function(lhs, rhs)
return lhs['text'] == rhs['text']
end
Subtitle.__lt = function(lhs, rhs)
return lhs['start'] < rhs['start']
end
return Subtitle
|