@@ -52,6 +52,7 @@ type v3* = object
5252 res* : (int , int )
5353 v* : seq [ClipLayer ]
5454 a* : seq [ClipLayer ]
55+ s* : seq [ClipLayer ]
5556 effects* : seq [Action ]
5657 clips2* : Option [seq [Clip2 ]] # Optional because tl might be non-linear.
5758
@@ -144,6 +145,7 @@ proc initLinearTimeline*(src: ptr string, tb: AvRational, bg: RGBColor, mi: Medi
144145
145146 var vspace: seq [ClipLayer ] = @ []
146147 var aspace: seq [ClipLayer ] = @ []
148+ var sspace: seq [ClipLayer ] = @ []
147149
148150 if mi.v.len > 0 :
149151 var vlayer = ClipLayer (lang: mi.v[0 ].lang, c: @ [])
@@ -161,7 +163,15 @@ proc initLinearTimeline*(src: ptr string, tb: AvRational, bg: RGBColor, mi: Medi
161163 alayer.c.add (audioClip)
162164 aspace.add (alayer)
163165
164- result = v3 (tb: tb, v: vspace, a: aspace, bg: bg, effects: effects)
166+ for i in 0 ..< mi.s.len:
167+ var slayer = ClipLayer (lang: mi.s[i].lang, c: @ [])
168+ for clip in clips:
169+ var subtitleClip = clip
170+ subtitleClip.stream = i.int32
171+ slayer.c.add (subtitleClip)
172+ sspace.add (slayer)
173+
174+ result = v3 (tb: tb, v: vspace, a: aspace, s: sspace, bg: bg, effects: effects)
165175
166176 if result .timelineIsEmpty:
167177 error " Timeline is empty, nothing to do."
@@ -217,6 +227,7 @@ proc toNonLinear*(src: ptr string, tb: AvRational, bg: RGBColor, mi: MediaInfo,
217227
218228 var vspace: seq [ClipLayer ] = @ []
219229 var aspace: seq [ClipLayer ] = @ []
230+ var sspace: seq [ClipLayer ] = @ []
220231
221232 if mi.v.len > 0 :
222233 var vlayer = ClipLayer (lang: mi.v[0 ].lang, c: @ [])
@@ -234,7 +245,15 @@ proc toNonLinear*(src: ptr string, tb: AvRational, bg: RGBColor, mi: MediaInfo,
234245 alayer.c.add (audioClip)
235246 aspace.add (alayer)
236247
237- result = v3 (tb: tb, v: vspace, a: aspace, bg: bg, clips2: some (clips2))
248+ for i in 0 ..< mi.s.len:
249+ var slayer = ClipLayer (lang: mi.s[i].lang, c: @ [])
250+ for clip in clips:
251+ var subtitleClip = clip
252+ subtitleClip.stream = i.int32
253+ slayer.c.add (subtitleClip)
254+ sspace.add (slayer)
255+
256+ result = v3 (tb: tb, v: vspace, a: aspace, s: sspace, bg: bg, clips2: some (clips2))
238257 result .effects = effects
239258
240259 if result .timelineIsEmpty:
@@ -275,6 +294,7 @@ proc toNonLinear2*(src: ptr string, tb: AVRational, bg: RGBColor, mi: MediaInfo,
275294
276295 var vspace: seq [ClipLayer ] = @ []
277296 var aspace: seq [ClipLayer ] = @ []
297+ var sspace: seq [ClipLayer ] = @ []
278298
279299 if mi.v.len > 0 :
280300 var vlayer = ClipLayer (lang: mi.v[0 ].lang, c: @ [])
@@ -292,7 +312,15 @@ proc toNonLinear2*(src: ptr string, tb: AVRational, bg: RGBColor, mi: MediaInfo,
292312 alayer.c.add (audioClip)
293313 aspace.add (alayer)
294314
295- result = v3 (tb: tb, v: vspace, a: aspace, bg: bg, clips2: some (clips2))
315+ for i in 0 ..< mi.s.len:
316+ var slayer = ClipLayer (lang: mi.s[i].lang, c: @ [])
317+ for clip in clips:
318+ var subtitleClip = clip
319+ subtitleClip.stream = i.int32
320+ slayer.c.add (subtitleClip)
321+ sspace.add (slayer)
322+
323+ result = v3 (tb: tb, v: vspace, a: aspace, s: sspace, bg: bg, clips2: some (clips2))
296324 result .effects = effects
297325
298326 if result .timelineIsEmpty:
0 commit comments