mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-11-12 20:15:10 +00:00
fix(dash): treat a caption subtitle also marked SDH as SDH
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
from unshackle.core.manifests.dash import DASH
|
||||
|
||||
CAPTION = '<Role schemeIdUri="urn:mpeg:dash:role:2011" value="caption"/>'
|
||||
SDH = '<Accessibility schemeIdUri="urn:tva:metadata:cs:AudioPurposeCS:2007" value="2"/>'
|
||||
|
||||
|
||||
def test_caption_role_is_closed_caption() -> None:
|
||||
element = ET.fromstring(f"<AdaptationSet>{CAPTION}</AdaptationSet>")
|
||||
assert DASH.is_closed_caption(element) is True
|
||||
assert DASH.is_sdh(element) is False
|
||||
|
||||
|
||||
def test_caption_role_with_sdh_value_is_sdh_only() -> None:
|
||||
# a Subtitle cannot be both CC and SDH, so a set marked both used to fail the whole title
|
||||
element = ET.fromstring(f"<AdaptationSet>{CAPTION}{SDH}</AdaptationSet>")
|
||||
assert DASH.is_closed_caption(element) is False
|
||||
assert DASH.is_sdh(element) is True
|
||||
@@ -1293,8 +1293,8 @@ class DASH:
|
||||
|
||||
@staticmethod
|
||||
def is_closed_caption(adaptation_set: Element) -> bool:
|
||||
"""Whether the Adaptation Set is a Closed Caption Subtitle."""
|
||||
return any(
|
||||
"""Whether the Adaptation Set is a Closed Caption Subtitle. A caption that is also marked SDH counts as SDH."""
|
||||
return not DASH.is_sdh(adaptation_set) and any(
|
||||
(x.get("schemeIdUri"), x.get("value")) == ("urn:mpeg:dash:role:2011", "caption")
|
||||
for x in adaptation_set.findall("Role")
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user