From 90e3d52ac35fd4ee8451ed4a20f69f18c30f6c4b Mon Sep 17 00:00:00 2001 From: Adam Waldron Date: Tue, 7 Nov 2023 17:34:49 -0800 Subject: [PATCH 1/4] chore: add docs for content steering --- docs/content-steering.md | 34 ++++++++++++++++++++++++++++++++++ docs/supported-features.md | 1 + 2 files changed, 35 insertions(+) create mode 100644 docs/content-steering.md diff --git a/docs/content-steering.md b/docs/content-steering.md new file mode 100644 index 000000000..bca54db0c --- /dev/null +++ b/docs/content-steering.md @@ -0,0 +1,34 @@ +# Content Steering + +Content Steering provides content creators a method of runtime control over +the location where segments are fetched via a content steering server and +pathways defined in the content manifest. For a working example visit +https://www.content-steering.com/. + +HLS and DASH each define their own specific Content Steering tags and properties +that prescribe how the client will fetch the content steering manifest as well +as make steering decisions. `#EXT-X-CONTENT-STEERING` and `` respectively. + +For reference, HLS spec section 4.4.6.6: +https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-4.4.6.6 + +DASH-IF: +https://dashif.org/docs/DASH-IF-CTS-00XX-Content-Steering-Community-Review.pdf + +Both protocols rely on a content steering server to provide steering guidance. +VHS will request the content steering manifest from the location defined in the +content steering tag in the `.m3u8` or `.mpd` and refresh the steering manifest +at an interval defined in that manifest. + +Content steering manifest response will look something like this: +``` +{ + "VERSION": 1, + "TTL": 300, + "RELOAD-URI": "https://steeringservice.com/app/instance12345?session=abc", + "CDN-PRIORITY": ["beta","alpha"] +} +``` +Where `CDN-PRIORITY` represents either `PATHWAY-PRIORITY` for HLS or `SERVICE-LOCATION-PRIORITY` for DASH. This priority collection of keys will match with either a `PATHWAY-ID` or `serviceLocation` (HLS and DASH respectively) associated with a location where VHS can fetch segments. + +VHS will attempt to fetch segments from the locations defined in the steering manifest response, in the order, then during playback provide quality of experience metrics back to the steering server which can then adjust the steering decision accordingly. diff --git a/docs/supported-features.md b/docs/supported-features.md index c47b10247..09ee282ca 100644 --- a/docs/supported-features.md +++ b/docs/supported-features.md @@ -65,6 +65,7 @@ not meant serve as an exhaustive list. tracks * [AES-128] segment encryption * DASH In-manifest EventStream and Event tags are automatically translated into HTML5 metadata cues +* [Content Steering](content-steering.md) for both HLS and DASH. ## Notable Missing Features From 63a76a50e851fc7d91889b940afe11814274c1de Mon Sep 17 00:00:00 2001 From: Adam Waldron Date: Tue, 7 Nov 2023 17:52:44 -0800 Subject: [PATCH 2/4] notable and missing support --- docs/content-steering.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/content-steering.md b/docs/content-steering.md index bca54db0c..5758d5562 100644 --- a/docs/content-steering.md +++ b/docs/content-steering.md @@ -32,3 +32,16 @@ Content steering manifest response will look something like this: Where `CDN-PRIORITY` represents either `PATHWAY-PRIORITY` for HLS or `SERVICE-LOCATION-PRIORITY` for DASH. This priority collection of keys will match with either a `PATHWAY-ID` or `serviceLocation` (HLS and DASH respectively) associated with a location where VHS can fetch segments. VHS will attempt to fetch segments from the locations defined in the steering manifest response, in the order, then during playback provide quality of experience metrics back to the steering server which can then adjust the steering decision accordingly. + +## Notable Support + +### HLS + * Pathway Cloning +### DASH + * queryBeforeStart + * proxyServerURL + +## Currently Missing Support + +### DASH + * Flexible Insertion of URL Parameters, see: ISO/IEC 23009-1 [2], clause I.3 \ No newline at end of file From 3b5d2a9198d45624a13879027d5b74d9c8fdaa22 Mon Sep 17 00:00:00 2001 From: Adam Waldron Date: Wed, 8 Nov 2023 13:59:16 -0800 Subject: [PATCH 3/4] grammar fixes --- docs/content-steering.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/content-steering.md b/docs/content-steering.md index 5758d5562..cc4e12f20 100644 --- a/docs/content-steering.md +++ b/docs/content-steering.md @@ -1,12 +1,12 @@ # Content Steering Content Steering provides content creators a method of runtime control over -the location where segments are fetched via a content steering server and +the location from which segments are fetched via a content steering server and pathways defined in the content manifest. For a working example visit https://www.content-steering.com/. HLS and DASH each define their own specific Content Steering tags and properties -that prescribe how the client will fetch the content steering manifest as well +that prescribe how the client should fetch the content steering manifest as well as make steering decisions. `#EXT-X-CONTENT-STEERING` and `` respectively. For reference, HLS spec section 4.4.6.6: @@ -20,7 +20,7 @@ VHS will request the content steering manifest from the location defined in the content steering tag in the `.m3u8` or `.mpd` and refresh the steering manifest at an interval defined in that manifest. -Content steering manifest response will look something like this: +A content steering manifest response will look something like this: ``` { "VERSION": 1, @@ -29,9 +29,9 @@ Content steering manifest response will look something like this: "CDN-PRIORITY": ["beta","alpha"] } ``` -Where `CDN-PRIORITY` represents either `PATHWAY-PRIORITY` for HLS or `SERVICE-LOCATION-PRIORITY` for DASH. This priority collection of keys will match with either a `PATHWAY-ID` or `serviceLocation` (HLS and DASH respectively) associated with a location where VHS can fetch segments. +`CDN-PRIORITY` represents either `PATHWAY-PRIORITY` for HLS or `SERVICE-LOCATION-PRIORITY` for DASH. This list of keys in priority order will match with either a `PATHWAY-ID` or `serviceLocation` (HLS and DASH respectively) associated with a location where VHS can fetch segments. -VHS will attempt to fetch segments from the locations defined in the steering manifest response, in the order, then during playback provide quality of experience metrics back to the steering server which can then adjust the steering decision accordingly. +VHS will attempt to fetch segments from the locations defined in the steering manifest response in the order. Then, during playback, VHS will provide quality of experience metrics back to the steering server which can adjust the steering guidance accordingly. ## Notable Support From 944685846e7da1803389ffc97611fa7e79c008bd Mon Sep 17 00:00:00 2001 From: Adam Waldron Date: Mon, 13 Nov 2023 10:33:07 -0800 Subject: [PATCH 4/4] fix DASH missing support title --- docs/content-steering.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content-steering.md b/docs/content-steering.md index cc4e12f20..7bb21c034 100644 --- a/docs/content-steering.md +++ b/docs/content-steering.md @@ -44,4 +44,4 @@ VHS will attempt to fetch segments from the locations defined in the steering ma ## Currently Missing Support ### DASH - * Flexible Insertion of URL Parameters, see: ISO/IEC 23009-1 [2], clause I.3 \ No newline at end of file + * Extended HTTP GET request parametrization, see: ISO/IEC 23009-1 [2], clause I.3 \ No newline at end of file