Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Uniform client workflow for multi-DRM scenarios #343

Closed
wants to merge 50 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
6d0aac2
Initial draft implementing issue 300
sandersaares Jul 5, 2019
ce08af9
XSD update
sandersaares Sep 4, 2019
aabb9c5
Text and words
sandersaares Sep 5, 2019
d81e845
Editorial adjustments to DRM selection algorithm
sandersaares Sep 6, 2019
52248e1
Fix bad HTML
sandersaares Sep 6, 2019
498d178
Text grooming and imaging
sandersaares Oct 2, 2019
7afb217
Reacting to Laurent review comments
sandersaares Oct 2, 2019
68bba17
Merge changes from master
sandersaares Oct 2, 2019
734f0bb
Wording
sandersaares Oct 2, 2019
284e172
Formatting
sandersaares Oct 2, 2019
015519f
decoding -> playback
sandersaares Oct 3, 2019
14aa381
Client architecture for DRM
sandersaares Oct 8, 2019
37b3815
Maintenance of Robustness based on review comments
sandersaares Oct 8, 2019
b4445fa
Make note of the cenc/cbcs CMAF profile issue
sandersaares Oct 8, 2019
055b2cb
More on robustness
sandersaares Oct 8, 2019
749651c
EME tidy
sandersaares Oct 8, 2019
a83d7e8
Content ID text clarifications
sandersaares Oct 9, 2019
8dd8e6f
Wording
sandersaares Oct 9, 2019
468026c
Try to clarify laurl precedence text
sandersaares Oct 9, 2019
8e73df8
cbcs/cenc resolve CMAF conflict and improve text
sandersaares Oct 9, 2019
52eb355
Content protection data in CMAF containers
sandersaares Oct 9, 2019
9d7ee47
Role of moof/pssh in key hierarchy
sandersaares Oct 10, 2019
f9b7bb8
Add "big picture" DRM diagram
sandersaares Oct 10, 2019
bcd544c
Additional Constraints reprocessing
sandersaares Oct 10, 2019
5fba375
Licnese is a term
sandersaares Oct 10, 2019
f7424d4
Diagrams for hierarchy
sandersaares Oct 10, 2019
705e31f
Diagram tidy
sandersaares Oct 11, 2019
1b74212
CDMs also play a role in robustness enforcement
sandersaares Oct 11, 2019
0f81ae1
Clarify default_kid scoping matters
sandersaares Oct 11, 2019
e13cdcf
Formatting
sandersaares Oct 11, 2019
2284e49
Content protection policies
sandersaares Oct 11, 2019
0aecb35
What to do about multiple laurl/authzurl
sandersaares Oct 21, 2019
9b140f6
state update psshs - just say what is clear
sandersaares Oct 21, 2019
75fade4
EME does support proactive refresh
sandersaares Oct 21, 2019
24af199
Implementing changes from latest review
sandersaares Nov 13, 2019
d7d6445
Reference PlayReady on cenc/cbcs concurrent use
sandersaares Nov 14, 2019
fd601ba
Adjusted algorithms to consider multiple URLs in laurl/authzurl set
sandersaares Nov 14, 2019
7965673
Separate periodic re-auth and hierarchy topics
sandersaares Nov 14, 2019
5d39f0a
Add warning about re-initialization at period boundaries
sandersaares Nov 14, 2019
9750a07
Fix typo
sandersaares Nov 14, 2019
92aee08
Formatting
sandersaares Nov 18, 2019
6153431
Wording
sandersaares Nov 18, 2019
622e19f
Updated moof/pssh for HLS compatibility
sandersaares Nov 18, 2019
3977f63
Add HLS-LowLatency reference
sandersaares Nov 18, 2019
75596bf
Reference adjustments for default_key key hierarchy
sandersaares Nov 18, 2019
e84b13e
Remove field in JWT examples that should not be present
sandersaares Nov 18, 2019
098b681
JWT examples serialized form to match
sandersaares Nov 18, 2019
d23d059
Example token update
sandersaares Nov 18, 2019
8e51650
Minor text unification/clarification
sandersaares Nov 18, 2019
6286a81
DASH-CMAF says that each segment is one fragment
sandersaares Nov 25, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,052 changes: 853 additions & 199 deletions 90-Security.inc.md

Large diffs are not rendered by default.

29 changes: 29 additions & 0 deletions Diagrams/Security/DrmBigPicture.wsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
@startuml

[DASH presentation] as DASH

[DASH client] as Client

node "Data protected by DRM system" {
[Content keys] as Key

[Media platform] as MediaPlatform
[DRM system] as DRM
}

[License server] as LicenseServer
[Authorization service] as Authz

Client -down-> DASH : Get MPD\nGet segments
Client -> MediaPlatform : Provide segments
Client -down-> DRM : Activate\nProvide licenses

DRM -> MediaPlatform : Decrypted samples
MediaPlatform --> DRM : Encrypted samples

DRM -> Key : Use

Client -up-> LicenseServer : Get licenses
Client -up-> Authz : Get authorization tokens

@enduml
17 changes: 17 additions & 0 deletions Diagrams/Security/KeyHierarchy.wsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
@startuml

[Root key] as Root

cloud "DRM system specific key association logic" as Mid

[Leaf key] as Leaf1
[Leaf key] as Leaf2
[Leaf key] as Leaf3

Root --> Mid

Mid --> Leaf1
Mid --> Leaf2
Mid --> Leaf3

@enduml
28 changes: 28 additions & 0 deletions Diagrams/Security/KeyHierarchyAndDefaultKid.wsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
@startuml

[Root key] as Root
[Leaf key] as A
[Leaf key] as B
[Leaf key] as C

package "MPD" {
[default_KID] as DKID
}

Root -- A
Root -- B
Root -- C

DKID -> Root

package "CMAF" {
[tenc]
[sgpd]
}

[tenc] -> Root
[sgpd] -up-> A
[sgpd] -up-> B
[sgpd] -up-> C

@enduml
19 changes: 19 additions & 0 deletions Diagrams/Security/LicenseRequestConcept.wsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
@startuml

participant "DASH client" as Client
participant "DRM system" as CDM
participant "License server" as LS

Client -> CDM : Activate for KID 123
CDM -> CDM : Check stored licenses

alt If no usable license for KID 123 is stored
CDM -> Client : License request (opaque blob)
Client -> LS : License request (opaque blob)
LS -> Client : License response (opaque blob)
Client -> CDM : License response (opaque blob)
end

CDM -> Client : Ready to decrypt KID 123

@enduml
14 changes: 14 additions & 0 deletions Diagrams/Security/LicenseRequestModel-BaselineArchitecture.wsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
@startuml

participant "DASH client" as Client
participant "Authorization service" as Authz
participant "License server" as LS

Client -> Authz : Get authorization token
Authz -> Authz : Check if user is authorized
Authz -> Client : Token
Client -> LS : Get license\n(Token attached)
LS -> LS : Validate token
LS -> Client : License

@enduml
13 changes: 13 additions & 0 deletions Diagrams/Security/LicenseRequestModel-TransparentArchitecture.wsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
@startuml

participant "DASH client" as Client
participant "License proxy" as Proxy
participant "License server" as LS

Client -> Proxy : Get license
Proxy -> Proxy : Check if user is authorized
Proxy -> LS : Get license\n(Proprietary proof of authorization attached)
LS -> Proxy : License
Proxy -> Client : License

@enduml
23 changes: 23 additions & 0 deletions Diagrams/Security/ReductionOfKeys.wsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
@startuml

participant "DASH client" as Client
participant "DRM system" as DRM
participant "Authorization service" as Authz
participant "License server" as LS

Client -> DRM : Configure to decrypt:\n* Key 1 (SD video)\n* Key 2 (HD video)\n* Key 3 (4K video)\n* Key 4 (stereo audio)\n* Key 5 (7.1 audio)
DRM -> Client : License requests for keys 1-5

Client -> Authz : Authorize keys 1-5
note left of Authz: User has not purchased 4K quality\nservice plan - cannot use 4K key
Authz -> Client : Keys 1, 2, 4 and 5 authorized\nKey 3 (4K video) not authorized

Client -> LS : Request licenses
note left of LS: User's DRM system implementation is not robust enough\nfor HD quality - will not release HD key
LS -> Client : Licenses for keys 1 (SD), 4 (stereo) and 5 (7.1 audio)

Client -> DRM : Ingest licenses
note over DRM: Device does not have sufficiently secure 7.1\noutput - will not decrypt using the 7.1 audio key
DRM -> Client: Configuration complete\nAvailable keys: 1 (SD), 4 (stereo)

@enduml
20 changes: 20 additions & 0 deletions Diagrams/Security/SoftwareComponents.wsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
@startuml

package "Media platform" {
[Media playback] as MediaSource
[DRM system] as PlatformDrm
}

package "App" {
package "Libraries" {
[DASH client] as Player
}

[Solution-specific logic and configuration] as AppLogic
}

Player -down-> PlatformDrm
Player -down-> MediaSource
Player -up-> AppLogic

@enduml
275 changes: 275 additions & 0 deletions Images/Security/AuthzTokenSharingAndSelection.graphml

Large diffs are not rendered by default.

Binary file added Images/Security/AuthzTokenSharingAndSelection.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
173 changes: 173 additions & 0 deletions Images/Security/CapabilityNegotiation.graphml

Large diffs are not rendered by default.

Binary file added Images/Security/CapabilityNegotiation.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
358 changes: 358 additions & 0 deletions Images/Security/KeyHierarchy-NightlyUpdates.graphml

Large diffs are not rendered by default.

Binary file added Images/Security/KeyHierarchy-NightlyUpdates.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
193 changes: 193 additions & 0 deletions Images/Security/SelectionAlgorithm-SystemConfigurations.graphml
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
<!--Created by yEd 3.19-->
<key attr.name="Description" attr.type="string" for="graph" id="d0"/>
<key for="port" id="d1" yfiles.type="portgraphics"/>
<key for="port" id="d2" yfiles.type="portgeometry"/>
<key for="port" id="d3" yfiles.type="portuserdata"/>
<key attr.name="url" attr.type="string" for="node" id="d4"/>
<key attr.name="description" attr.type="string" for="node" id="d5"/>
<key for="node" id="d6" yfiles.type="nodegraphics"/>
<key for="graphml" id="d7" yfiles.type="resources"/>
<key attr.name="url" attr.type="string" for="edge" id="d8"/>
<key attr.name="description" attr.type="string" for="edge" id="d9"/>
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
<graph edgedefault="directed" id="G">
<data key="d0"/>
<node id="n0">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="30.0" width="157.0" x="264.5" y="304.0"/>
<y:Fill color="#BDD7EE" transparent="false"/>
<y:BorderStyle color="#9CC3E5" raised="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#2E75B5" verticalTextPosition="bottom" visible="true" width="123.390625" x="16.8046875" xml:space="preserve" y="5.6494140625">system_configurations<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n1">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="30.0" width="105.0" x="526.0" y="223.0"/>
<y:Fill color="#F7CBAC" transparent="false"/>
<y:BorderStyle color="#F4B183" raised="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#C55A11" verticalTextPosition="bottom" visible="true" width="80.693359375" x="12.1533203125" xml:space="preserve" y="5.6494140625">system ID 111<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n2">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="30.0" width="105.0" x="526.0" y="304.0"/>
<y:Fill color="#F7CBAC" transparent="false"/>
<y:BorderStyle color="#F4B183" raised="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#C55A11" verticalTextPosition="bottom" visible="true" width="80.693359375" x="12.1533203125" xml:space="preserve" y="5.6494140625">system ID 222<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n3">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="30.0" width="105.0" x="526.0" y="385.0"/>
<y:Fill color="#F7CBAC" transparent="false"/>
<y:BorderStyle color="#F4B183" raised="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#C55A11" verticalTextPosition="bottom" visible="true" width="80.693359375" x="12.1533203125" xml:space="preserve" y="5.6494140625">system ID 333<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n4">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="30.0" width="207.0" x="692.5" y="223.0"/>
<y:Fill color="#FEE599" transparent="false"/>
<y:BorderStyle color="#FFD965" raised="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#A37B00" verticalTextPosition="bottom" visible="true" width="179.763671875" x="13.6181640625" xml:space="preserve" y="5.6494140625">map(default_kid -&gt; configuration)<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n5">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="30.0" width="105.0" x="692.5" y="320.0"/>
<y:Fill color="#DFA9FE" transparent="false"/>
<y:BorderStyle color="#C765FF" raised="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#7900BF" verticalTextPosition="bottom" visible="true" width="89.388671875" x="7.8056640625" xml:space="preserve" y="5.6494140625">default_kid AAA<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n6">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="30.0" width="105.0" x="827.5" y="320.0"/>
<y:Fill color="#DFA9FE" transparent="false"/>
<y:BorderStyle color="#C765FF" raised="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#7900BF" verticalTextPosition="bottom" visible="true" width="89.388671875" x="7.8056640625" xml:space="preserve" y="5.6494140625">default_kid BBB<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n7">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="30.0" width="157.0" x="692.5" y="385.0"/>
<y:Fill color="#FFA69E" transparent="false"/>
<y:BorderStyle color="#FF6556" raised="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#AB0E00" verticalTextPosition="bottom" visible="true" width="144.712890625" x="6.1435546875" xml:space="preserve" y="5.6494140625">DRM system configuration<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<edge id="e0" source="n0" target="n1">
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:Point x="506.0" y="319.0"/>
<y:Point x="506.0" y="238.0"/>
</y:Path>
<y:LineStyle color="#8F8F8F" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e1" source="n0" target="n2">
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#8F8F8F" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e2" source="n0" target="n3">
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:Point x="506.0" y="319.0"/>
<y:Point x="506.0" y="400.0"/>
</y:Path>
<y:LineStyle color="#8F8F8F" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/>
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="54.70703125" x="16.084399220394232" xml:space="preserve" y="-21.3505859375">Keyed on<y:LabelModel><y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/></y:LabelModel><y:ModelParameter><y:SmartEdgeLabelModelParameter angle="6.283185307179586" distance="12.0" distanceToCenter="true" position="left" ratio="0.21256273271814796" segment="0"/></y:ModelParameter><y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/></y:EdgeLabel>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e3" source="n1" target="n4">
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#8F8F8F" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e4" source="n4" target="n5">
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:Point x="796.0" y="300.0"/>
<y:Point x="745.0" y="300.0"/>
</y:Path>
<y:LineStyle color="#8F8F8F" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e5" source="n4" target="n6">
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:Point x="796.0" y="300.0"/>
<y:Point x="880.0" y="300.0"/>
</y:Path>
<y:LineStyle color="#8F8F8F" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/>
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="54.70703125" x="-57.353515625" xml:space="preserve" y="21.32470703125">Keyed on<y:LabelModel><y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/></y:LabelModel><y:ModelParameter><y:SmartEdgeLabelModelParameter angle="0.0" distance="30.0" distanceToCenter="true" position="right" ratio="0.5" segment="0"/></y:ModelParameter><y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/></y:EdgeLabel>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e6" source="n5" target="n7">
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="-26.0" ty="0.0"/>
<y:LineStyle color="#8F8F8F" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
</graph>
<data key="d7">
<y:Resources/>
</data>
</graphml>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions References.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@
"3GPP26.116": {
"title": "3GPP TS 26.116 (03/2016): Television (TV) over 3GPP services; Video Profiles."
},
"jws": {
"aliasOf": "rfc7515"
},
"ATSC3": {
"href": "https://https://www.atsc.org/wp-content/uploads/2017/10/A300-2017-ATSC-3-System-Standard-1.pdf",
"title": "ATSC Standard: A/300:2017 “ATSC3.0 System”",
Expand All @@ -53,5 +56,15 @@
"MPEGDASHCMAFPROFILE": {
"title": "N18641 WD of ISO/IEC 23009-1 4th edition AMD 1 Client event and timed metadata processing",
"publisher": "ISO/IEC JTC1/SC29/WG11 MPEG"
},
"MSPR-EncryptionModes": {
"title": "PlayReady Content Encryption Modes",
"publisher": "Microsoft",
"href": "https://docs.microsoft.com/en-us/playready/packaging/content-encryption-modes"
},
"HLS-LowLatency": {
"title": "Protocol Extension for Low-Latency HLS (Preliminary Specification)",
"publisher": "Apple",
"href": "https://developer.apple.com/documentation/http_live_streaming/protocol_extension_for_low-latency_hls_preliminary_specification"
}
}