File tree Expand file tree Collapse file tree 2 files changed +54
-1
lines changed Expand file tree Collapse file tree 2 files changed +54
-1
lines changed Original file line number Diff line number Diff line change @@ -429,7 +429,9 @@ export function mapFragmentIntersection(
429429 }
430430 if ( ( oldFrag as any ) && ( newFrag as any ) ) {
431431 intersectionFn ( oldFrag , newFrag , i , newFrags ) ;
432- if ( oldFrag . url && oldFrag . url !== newFrag . url ) {
432+ const uriBefore = oldFrag . relurl ;
433+ const uriAfter = newFrag . relurl ;
434+ if ( uriBefore && notEqualAfterStrippingQueries ( uriBefore , uriAfter ) ) {
433435 newDetails . playlistParsingError = getSequenceError (
434436 `media sequence mismatch ${ newFrag . sn } :` ,
435437 oldDetails ,
@@ -600,3 +602,17 @@ export function reassignFragmentLevelIndexes(levels: Level[]) {
600602 } ) ;
601603 } ) ;
602604}
605+
606+ function notEqualAfterStrippingQueries (
607+ uriBefore : string ,
608+ uriAfter : string | undefined ,
609+ ) : boolean {
610+ if ( uriBefore !== uriAfter && uriAfter ) {
611+ return stripQuery ( uriBefore ) !== stripQuery ( uriAfter ) ;
612+ }
613+ return false ;
614+ }
615+
616+ function stripQuery ( uri : string ) : string {
617+ return uri . replace ( / \? [ ^ ? ] * $ / , '' ) ;
618+ }
Original file line number Diff line number Diff line change @@ -1677,6 +1677,43 @@ video_5432.m4s`;
16771677 } ) ;
16781678 } ) ;
16791679
1680+ it ( 'does not error between updates when only the query part of the URI changes' , function ( ) {
1681+ const playlist1 = `#EXTM3U
1682+ #EXT-X-VERSION:6
1683+ #EXT-X-TARGETDURATION:3
1684+ #EXT-X-MEDIA-SEQUENCE:5428
1685+ #EXT-X-DISCONTINUITY-SEQUENCE:31
1686+ #EXT-X-MAP:URI="video_init.mp4"
1687+ #EXTINF:2.000,
1688+ video_5428.m4s?t=1
1689+ #EXTINF:2.000,
1690+ video_5429.m4s?t=1
1691+ #EXTINF:2.000,
1692+ video_5430.m4s?t=1
1693+ #EXTINF:2.000,
1694+ video_5431.m4s?t=1` ;
1695+ // Media sequence increased by one but two segments removed.
1696+ const playlist2 = `#EXTM3U
1697+ #EXT-X-VERSION:6
1698+ #EXT-X-TARGETDURATION:3
1699+ #EXT-X-MEDIA-SEQUENCE:5429
1700+ #EXT-X-DISCONTINUITY-SEQUENCE:31
1701+ #EXT-X-MAP:URI="video_init.mp4"
1702+ #EXTINF:2.000,
1703+ video_5429.m4s?t=2
1704+ #EXTINF:2.000,
1705+ video_5430.m4s?t=2
1706+ #EXTINF:2.000,
1707+ video_5431.m4s?t=2
1708+ #EXTINF:2.000,
1709+ video_5432.m4s?t=2` ;
1710+ const details1 = parseLevelPlaylist ( playlist1 ) ;
1711+ const details2 = parseLevelPlaylist ( playlist2 ) ;
1712+ details2 . fragments [ 0 ] . base . url += '?base=changed' ;
1713+ mergeDetails ( details1 , details2 , logger ) ;
1714+ expect ( details2 . playlistParsingError ) . to . be . null ;
1715+ } ) ;
1716+
16801717 it ( 'maps dateranges based on latest EXT-X-PROGRAM-DATE-TIME' , function ( ) {
16811718 const playlist1 = `#EXTM3U
16821719#EXT-X-VERSION:6
You can’t perform that action at this time.
0 commit comments