def parse_vts(
self, title: IFO0Title, disable_rff: bool, vobidcellids_to_take: list[tuple[int, int]],
target_vts: IFOX, output_folder: SPath, vob_input_files: Sequence[SPath]
) -> tuple[vs.VideoNode, list[int], list[tuple[int, int]], list[int]]:
admap = target_vts.vts_vobu_admap
all_ranges = [
x for a in vobidcellids_to_take for x in get_sectorranges_for_vobcellpair(target_vts, a)
]
vts_indices = list[int]()
for a in all_ranges:
start_index = admap.index(a[0])
try:
end_index = admap.index(a[1] + 1) - 1
except ValueError:
end_index = len(admap) - 1
vts_indices.extend([start_index, end_index])
rawnode = core.dvdsrc2.FullVts(str(self.iso_path), vts=title.title_set_nr, ranges=vts_indices)
staff = self._extract_data(rawnode)
if not disable_rff:
rnode = apply_rff_video(rawnode, staff.rff, staff.tff, staff.prog, staff.progseq)
_vobids = apply_rff_array(staff.vobids, staff.rff, staff.tff, staff.progseq)
else:
rnode = rawnode
_vobids = staff.vobids
return rnode, staff.rff, _vobids, vts_indices