From 5d9d39f40e9aa81acf8a2ebc816e12436a1c5724 Mon Sep 17 00:00:00 2001 From: Alex Giladi Date: Sat, 7 Mar 2026 16:43:54 -0800 Subject: [PATCH 1/8] Fix XML formatting in example_G29-1.mpd --- example_G29-1.mpd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example_G29-1.mpd b/example_G29-1.mpd index 7b9cb96..b43a3dc 100644 --- a/example_G29-1.mpd +++ b/example_G29-1.mpd @@ -1,4 +1,4 @@ - + http://cdn1.example.com/ From e2ec6d60833a2828b7203426597c06d8967d1e8c Mon Sep 17 00:00:00 2001 From: Alex Giladi Date: Sat, 29 Nov 2025 22:13:17 -0700 Subject: [PATCH 2/8] Formatting into RTF for inclusion into the Word version of the spec --- xml2rtf.sh | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 xml2rtf.sh diff --git a/xml2rtf.sh b/xml2rtf.sh new file mode 100755 index 0000000..ad016f6 --- /dev/null +++ b/xml2rtf.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Check if an input file is provided +if [ -z "$1" ]; then + echo "Usage: ./xml2rtf.sh " + exit 1 +fi + +INPUT_FILE="$1" +# Create an output filename (e.g., data.xml -> data.rtf) +OUTPUT_FILE="${INPUT_FILE%.*}.rtf" + +# Check if 'highlight' is installed +if ! command -v highlight &> /dev/null; then + echo "Error: 'highlight' is not installed." + echo "Please run: brew install highlight" + exit 1 +fi + +echo "Converting $INPUT_FILE to $OUTPUT_FILE..." + +# 1. xmllint --format: Indents and pretty-prints the XML +# 2. highlight: Converts to RTF with B&W styling +# --syntax=xml: Tells the tool it is processing XML +# --out-format=rtf: Sets output to Rich Text +# --style=bw: Uses the built-in Black & White theme (Bold/Italic only) +# --font="Courier New": Sets a monospaced font +# --font-size=24: Sets font size (approx 12pt in RTF context) + +xmllint --format "$INPUT_FILE" | \ +highlight --syntax=xml \ + --out-format=rtf \ + --style=print \ + --font="Courier New" \ + --font-size=9 \ + > "$OUTPUT_FILE" + +echo "Done! Saved to $OUTPUT_FILE" From be378ed244c0759613a1bb1f73ef5eff4c00cc04 Mon Sep 17 00:00:00 2001 From: Alex Giladi Date: Sat, 7 Mar 2026 21:00:21 -0700 Subject: [PATCH 3/8] fixing Alternative MPD attribute names --- DASH-MPD.xsd | 4 ++-- example_G23.mpd | 2 +- example_G29-1.mpd | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DASH-MPD.xsd b/DASH-MPD.xsd index be7a593..7aed6e8 100644 --- a/DASH-MPD.xsd +++ b/DASH-MPD.xsd @@ -1189,7 +1189,7 @@ - + @@ -1205,7 +1205,7 @@ - + diff --git a/example_G23.mpd b/example_G23.mpd index c34f919..a8477ec 100644 --- a/example_G23.mpd +++ b/example_G23.mpd @@ -4,7 +4,7 @@ http://liveserver.com/live/live1/ - + diff --git a/example_G29-1.mpd b/example_G29-1.mpd index b43a3dc..c148e89 100644 --- a/example_G29-1.mpd +++ b/example_G29-1.mpd @@ -4,7 +4,7 @@ - + From ffd5e06f41918c2a6741d4e1c19ed2986f2e1545 Mon Sep 17 00:00:00 2001 From: Alex Giladi Date: Sat, 7 Mar 2026 22:33:08 -0700 Subject: [PATCH 4/8] ABNF rules for specific descriptors and events --- DASH.abnf | 233 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 DASH.abnf diff --git a/DASH.abnf b/DASH.abnf new file mode 100644 index 0000000..9f9045b --- /dev/null +++ b/DASH.abnf @@ -0,0 +1,233 @@ +; ============================================================================= +; DASH-MPD-values.abnf +; +; Combined ABNF definitions for ISO/IEC 23009-1:2026 (DASH 6th Edition) +; Companion file to DASH-MPD.xsd for automated MPD value validation. +; +; Naming conventions: +; - The spec text uses underscores in some rule names (e.g. +; DECIMAL_DIGITS, AUDIO-RECEIVER_MIX-VALUE). RFC 5234 only allows +; hyphens in rule names, so all underscores have been normalized to +; hyphens in this file (DECIMAL-DIGITS, AUDIO-RECEIVER-MIX-VALUE). +; - The spec defines DECIMAL_DIGITS / DECIMAL-DIGITS redundantly in +; several places; they are unified here as a single shared rule. +; +; External rules referenced but defined elsewhere: +; host, port - IETF RFC 3986 (as augmented by RFC 6874) +; http-URI, https-URI - IETF RFC 9110 Section 4.2 +; ============================================================================= + + +; ============================================================================= +; 5.3.11.2 - Preselection Descriptor +; Scheme: urn:mpeg:dash:preselection:2016 +; ============================================================================= + +PRESELECTION-DESCRIPTOR-VALUE = TAG-VALUE "," ID-LIST + +ID-LIST = ID-VALUE *( WHITESPACE ID-VALUE ) + ; NOTE: The spec text shows [ WHITESPACE ID-VALUE ] + ; (i.e. exactly 1 or 2 IDs), but the prose describes + ; "a white space separated list" which implies any number. + ; Written here as *() for practical use; the spec text + ; may need a correction. + +TAG-VALUE = STRING + +ID-VALUE = 1*DIGIT + +WHITESPACE = 1*WSP + + +; ============================================================================= +; 5.8.5.2 - MP4 Protection +; Scheme: urn:mpeg:dash:mp4protection:2011 +; ============================================================================= + +MP4-PROTECTION-VALUE = VERSIONED-4CC + +VERSIONED-4CC = CCCC [ CCCC-VERSION ] + +CCCC = ALPHA ALPHA ALPHA ALPHA + +CCCC-VERSION = ":" 1*8HEXDIG + + +; ============================================================================= +; 5.8.5.3 - CA_descriptor +; Scheme: urn:mpeg:dash:13818:1:CA_descriptor:2011 +; ============================================================================= + +CA-DESCRIPTOR-VALUE = LHEX LHEX LHEX LHEX + +LHEX = DIGIT / "a" / "b" / "c" / "d" / "e" / "f" + + +; ============================================================================= +; 5.8.5.4 - Frame Packing +; Scheme: urn:mpeg:dash:14496:10:frame_packing_arrangement_type:2011 +; urn:mpeg:dash:13818:1:stereo_video_format_type:2011 +; ============================================================================= + +FRAME-PACKING-ARRANGEMENT-TYPE-VALUE = VIDEO-FRAME-PACKING-TYPE + +STEREO-VIDEO-FORMAT-TYPE = VIDEO-FRAME-PACKING-TYPE + +VIDEO-FRAME-PACKING-TYPE = 1*2DIGIT + + +; ============================================================================= +; 5.8.5.6 - DASH Role Scheme +; Scheme: urn:mpeg:dash:role:2011 +; ============================================================================= + +ROLE-VALUE = "caption" / "subtitle" / "main" / "alternate" + / "supplementary" +ROLE-VALUE =/ "commentary" / "dub" / "description" / "sign" + / "metadata" +ROLE-VALUE =/ "enhanced audio intelligibility" / "emergency" +ROLE-VALUE =/ "forced subtitle" / "easyreader" / "karaoke" + + +; ============================================================================= +; 5.8.5.7 - DASH Multiple Views Scheme (Stereo ID) +; Scheme: urn:mpeg:dash:stereoid:2011 +; ============================================================================= + +STEROID-VALUE = VIEW-INDICATOR *( SP VIEW-INDICATOR ) + +VIEW-INDICATOR = LEFT-VIEW-INDICATOR / RIGHT-VIEW-INDICATOR + +LEFT-VIEW-INDICATOR = "l" DECIMAL-DIGITS + +RIGHT-VIEW-INDICATOR = "r" DECIMAL-DIGITS + + +; ============================================================================= +; 5.8.5.8 - DASH UTC Timing Schemes +; ============================================================================= + +; --- urn:mpeg:dash:utc:ntp:2014 / urn:mpeg:dash:utc:sntp:2014 --- + +NTP-VALUE = TIME-SERVER *( WS TIME-SERVER ) + +TIME-SERVER = host [ ":" port ] + ; host and port per IETF RFC 3986 / RFC 6874 + +; --- urn:mpeg:dash:utc:http-head:2014 +; urn:mpeg:dash:utc:http-xsdate:2014 +; urn:mpeg:dash:utc:http-iso:2014 +; urn:mpeg:dash:utc:http-ntp:2014 --- + +HTTP-VALUE = httpurl *( WS httpurl ) + ; httpurl = http-URI / https-URI per IETF RFC 9110 + +; --- urn:mpeg:dash:utc:direct:2014 --- + +DIRECT-VALUE = [ "-" ] 4DIGIT "-" 2DIGIT "-" 2DIGIT + "T" 2DIGIT ":" 2DIGIT ":" 2DIGIT + [ "Z" / ( "+" / "-" ) 2DIGIT ":" 2DIGIT ] + + +; ============================================================================= +; 5.8.5.9 - Audio Receiver Mix +; Scheme: urn:mpeg:dash:audio-receiver-mix:2014 +; ============================================================================= + +AUDIO-RECEIVER-MIX-VALUE = ADAPTATION-SET-ID + +ADAPTATION-SET-ID = DECIMAL-DIGITS + + +; ============================================================================= +; 5.8.5.10 - MPD Adaptation Set Linking +; Scheme: urn:mpeg:dash:mpd-as-linking:2015 +; ============================================================================= + +MPD-AS-LINKING-VALUE = MPD-URL [ WSP TIMELINE-OFFSET ] + +MPD-URL = httpurl + ; http-URI / https-URI per IETF RFC 9110 + +TIMELINE-OFFSET = "timeOffset=" [ "-" ] DECIMAL-DIGITS + + +; ============================================================================= +; 5.8.5.11 - Sub-Asset Identifier +; Scheme: urn:mpeg:dash:sai:2015 +; ============================================================================= + +SAI-VALUE = *VCHAR + + +; ============================================================================= +; 5.8.5.13 - Quality Ranking Equivalence +; Scheme: urn:mpeg:dash:qr-equivalence:2018 +; ============================================================================= + +QR-EQUIVALENCE-VALUE = AS-ID *( WSP AS-ID ) + +AS-ID = DECIMAL-DIGITS + + +; ============================================================================= +; 5.8.7 - Supplementary Video (VVC picture-in-picture) +; SupVideoInfo@processingInfo value syntax +; ============================================================================= + +processingInfo = dataUnitsReplaceable 1*( SP regionId ) + +dataUnitsReplaceable = "0" / "1" + +regionId = 1*DIGIT + + + +; ============================================================================= +; Annex H.2.3 - Static Spatial Relationship Description (SRD) +; Scheme: urn:mpeg:dash:srd:2014 +; ============================================================================= + +STATIC-SRD-VALUE = source-id "," object-x "," object-y "," + object-width "," object-height + [ "," total-width + [ "," total-height + [ "," spatial-set-id ] ] ] + +source-id = DECIMAL-DIGITS +spatial-set-id = DECIMAL-DIGITS +object-x = DECIMAL-DIGITS +object-y = DECIMAL-DIGITS +object-width = DECIMAL-DIGITS +object-height = DECIMAL-DIGITS +total-width = DECIMAL-DIGITS +total-height = DECIMAL-DIGITS + + +; ============================================================================= +; Annex H.2.4 - Dynamic Spatial Relationship Description (SRD) +; Scheme: urn:mpeg:dash:srd:dynamic:2016 +; ============================================================================= + +DYNAMIC-SRD-VALUE = source-id "," coordinate-id [ "," spatial-set-id ] + +coordinate-id = STRING + + +; ============================================================================= +; Shared terminal rules +; ============================================================================= + +DECIMAL-DIGITS = 1*DIGIT + +STRING = *VCHAR + +; WS is used in the spec as an alias for whitespace between tokens +WS = 1*WSP + +; httpurl is a placeholder for http-URI / https-URI from RFC 9110 +; Parsers should accept both schemes. +; httpurl = http-URI / https-URI ; defined in IETF RFC 9110 sec. 4.2 + +; HEXDIG is already defined in RFC 5234 core rules. +; LHEX is the lowercase-only subset used by the CA_descriptor scheme. From 31566506d4dd2acbba084b79b3ad5da8c7669dc7 Mon Sep 17 00:00:00 2001 From: ZmGorynych Date: Sun, 8 Mar 2026 09:54:12 -0600 Subject: [PATCH 5/8] ABNF fixes due to prose --- DASH.abnf | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/DASH.abnf b/DASH.abnf index 9f9045b..daef921 100644 --- a/DASH.abnf +++ b/DASH.abnf @@ -26,11 +26,6 @@ PRESELECTION-DESCRIPTOR-VALUE = TAG-VALUE "," ID-LIST ID-LIST = ID-VALUE *( WHITESPACE ID-VALUE ) - ; NOTE: The spec text shows [ WHITESPACE ID-VALUE ] - ; (i.e. exactly 1 or 2 IDs), but the prose describes - ; "a white space separated list" which implies any number. - ; Written here as *() for practical use; the spec text - ; may need a correction. TAG-VALUE = STRING @@ -85,8 +80,8 @@ ROLE-VALUE = "caption" / "subtitle" / "main" / "alternate" / "supplementary" ROLE-VALUE =/ "commentary" / "dub" / "description" / "sign" / "metadata" -ROLE-VALUE =/ "enhanced audio intelligibility" / "emergency" -ROLE-VALUE =/ "forced subtitle" / "easyreader" / "karaoke" +ROLE-VALUE =/ "enhanced-audio-intelligibility" / "emergency" +ROLE-VALUE =/ "forced-subtitle" / "easyreader" / "karaoke" ; ============================================================================= @@ -95,12 +90,7 @@ ROLE-VALUE =/ "forced subtitle" / "easyreader" / "karaoke" ; ============================================================================= STEROID-VALUE = VIEW-INDICATOR *( SP VIEW-INDICATOR ) - -VIEW-INDICATOR = LEFT-VIEW-INDICATOR / RIGHT-VIEW-INDICATOR - -LEFT-VIEW-INDICATOR = "l" DECIMAL-DIGITS - -RIGHT-VIEW-INDICATOR = "r" DECIMAL-DIGITS +VIEW-INDICATOR = ("l"/"r") 1*DIGIT ; ============================================================================= @@ -125,7 +115,7 @@ HTTP-VALUE = httpurl *( WS httpurl ) ; --- urn:mpeg:dash:utc:direct:2014 --- DIRECT-VALUE = [ "-" ] 4DIGIT "-" 2DIGIT "-" 2DIGIT - "T" 2DIGIT ":" 2DIGIT ":" 2DIGIT + "T" 2DIGIT ":" 2DIGIT ":" 2DIGIT ["." 1*DIGIT] [ "Z" / ( "+" / "-" ) 2DIGIT ":" 2DIGIT ] From aea2015b5959e66475d74574be0530113b90dd3d Mon Sep 17 00:00:00 2001 From: ZmGorynych Date: Sun, 8 Mar 2026 09:56:35 -0600 Subject: [PATCH 6/8] ABNF fixes, cont'd --- DASH.abnf | 8 -------- 1 file changed, 8 deletions(-) diff --git a/DASH.abnf b/DASH.abnf index daef921..9629c59 100644 --- a/DASH.abnf +++ b/DASH.abnf @@ -4,14 +4,6 @@ ; Combined ABNF definitions for ISO/IEC 23009-1:2026 (DASH 6th Edition) ; Companion file to DASH-MPD.xsd for automated MPD value validation. ; -; Naming conventions: -; - The spec text uses underscores in some rule names (e.g. -; DECIMAL_DIGITS, AUDIO-RECEIVER_MIX-VALUE). RFC 5234 only allows -; hyphens in rule names, so all underscores have been normalized to -; hyphens in this file (DECIMAL-DIGITS, AUDIO-RECEIVER-MIX-VALUE). -; - The spec defines DECIMAL_DIGITS / DECIMAL-DIGITS redundantly in -; several places; they are unified here as a single shared rule. -; ; External rules referenced but defined elsewhere: ; host, port - IETF RFC 3986 (as augmented by RFC 6874) ; http-URI, https-URI - IETF RFC 9110 Section 4.2 From 1856c7b4aa6a93dcc669c962e8d8004f2d11ff6f Mon Sep 17 00:00:00 2001 From: ZmGorynych Date: Sun, 8 Mar 2026 10:25:12 -0600 Subject: [PATCH 7/8] minBufferTime override added to PeriodType --- DASH-MPD.xsd | 1 + 1 file changed, 1 insertion(+) diff --git a/DASH-MPD.xsd b/DASH-MPD.xsd index 7aed6e8..4cf3085 100644 --- a/DASH-MPD.xsd +++ b/DASH-MPD.xsd @@ -185,6 +185,7 @@ + From 83fb056d40cab58b701cb423541f8b6c7ef589d5 Mon Sep 17 00:00:00 2001 From: ZmGorynych Date: Tue, 17 Mar 2026 23:15:17 -0600 Subject: [PATCH 8/8] Added MPD.ContentSteering to align with the FDIS text --- DASH-MPD.xsd | 1 + 1 file changed, 1 insertion(+) diff --git a/DASH-MPD.xsd b/DASH-MPD.xsd index 4cf3085..8f1af03 100644 --- a/DASH-MPD.xsd +++ b/DASH-MPD.xsd @@ -107,6 +107,7 @@ +