@@ -3,6 +3,7 @@ import { lexicalParse } from "./lexical-parse";
33import type { Tag } from "./lexical-parse" ;
44import type {
55 DateRange ,
6+ Key ,
67 MasterPlaylist ,
78 MediaInitializationSection ,
89 MediaPlaylist ,
@@ -92,12 +93,18 @@ function formatMediaPlaylist(tags: Tag[]): MediaPlaylist {
9293 let segmentStart = - 1 ;
9394
9495 let map : MediaInitializationSection | undefined ;
96+ let key : Key | undefined ;
9597 tags . forEach ( ( [ name , value ] , index ) => {
9698 if ( name === "EXT-X-MAP" ) {
9799 // TODO: We might be better off passing on segments to |parseSegment| and look up
98100 // the last valid map.
99101 map = value ;
100102 }
103+ if ( name === "EXT-X-KEY" ) {
104+ // TODO: We might be better off passing on segments to |parseSegment| and look up
105+ // the last valid key.
106+ key = value ;
107+ }
101108
102109 // TODO: When we have EXT-X-KEY support, we're better off passing a full list of segments
103110 // to |parseSegment|, maybe?
@@ -116,7 +123,7 @@ function formatMediaPlaylist(tags: Tag[]): MediaPlaylist {
116123 const segmentTags = tags . slice ( segmentStart , index + 1 ) ;
117124 const uri = nextLiteral ( segmentTags , segmentTags . length - 2 ) ;
118125
119- const segment = parseSegment ( segmentTags , uri , map ) ;
126+ const segment = parseSegment ( segmentTags , uri , map , key ) ;
120127 segments . push ( segment ) ;
121128
122129 segmentStart = - 1 ;
@@ -166,6 +173,7 @@ function isSegmentTag(name: Tag[0]) {
166173 case "EXT-X-MAP" :
167174 case "EXT-X-CUE-OUT" :
168175 case "EXT-X-CUE-IN" :
176+ case "EXT-X-KEY" :
169177 return true ;
170178 }
171179 return false ;
@@ -175,6 +183,7 @@ function parseSegment(
175183 tags : Tag [ ] ,
176184 uri : string ,
177185 map ?: MediaInitializationSection ,
186+ key ?: Key ,
178187) : Segment {
179188 let duration : number | undefined ;
180189 let discontinuity : boolean | undefined ;
@@ -206,6 +215,7 @@ function parseSegment(
206215 duration,
207216 discontinuity,
208217 map,
218+ key,
209219 programDateTime,
210220 spliceInfo,
211221 } ;
0 commit comments