@ -20,7 +20,7 @@ public class HlsPlaylistFilterTests
@@ -20,7 +20,7 @@ public class HlsPlaylistFilterTests
private HlsPlaylistFilter _ hlsPlaylistFilter ;
[Test]
public void _ h lsPlaylistFilter_ShouldRewriteProgramDateTime( )
public void H lsPlaylistFilter_ShouldRewriteProgramDateTime( )
{
var start = new DateTimeOffset ( 2 0 2 1 , 1 0 , 9 , 8 , 0 , 0 , TimeSpan . FromHours ( - 5 ) ) ;
string [ ] input = NormalizeLineEndings (
@ -50,9 +50,8 @@ live001139.ts").Split(Environment.NewLine);
@@ -50,9 +50,8 @@ live001139.ts").Split(Environment.NewLine);
# EXT - X - VERSION : 6
# EXT - X - TARGETDURATION : 4
# EXT - X - MEDIA - SEQUENCE : 1 1 3 7
# EXT - X - DISCONTINUITY - SEQUENCE : 0
# EXT - X - DISCONTINUITY - SEQUENCE : 1
# EXT - X - INDEPENDENT - SEGMENTS
# EXT - X - DISCONTINUITY
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 1 - 1 0 - 0 9 T08 : 0 0 : 0 0.000 - 0 5 0 0
live001137 . ts
@ -66,7 +65,7 @@ live001139.ts
@@ -66,7 +65,7 @@ live001139.ts
}
[Test]
public void _ h lsPlaylistFilter_ShouldLimitSegments( )
public void H lsPlaylistFilter_ShouldLimitSegments( )
{
var start = new DateTimeOffset ( 2 0 2 1 , 1 0 , 9 , 8 , 0 , 0 , TimeSpan . FromHours ( - 5 ) ) ;
string [ ] input = NormalizeLineEndings (
@ -96,9 +95,8 @@ live001139.ts").Split(Environment.NewLine);
@@ -96,9 +95,8 @@ live001139.ts").Split(Environment.NewLine);
# EXT - X - VERSION : 6
# EXT - X - TARGETDURATION : 4
# EXT - X - MEDIA - SEQUENCE : 1 1 3 7
# EXT - X - DISCONTINUITY - SEQUENCE : 0
# EXT - X - DISCONTINUITY - SEQUENCE : 1
# EXT - X - INDEPENDENT - SEGMENTS
# EXT - X - DISCONTINUITY
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 1 - 1 0 - 0 9 T08 : 0 0 : 0 0.000 - 0 5 0 0
live001137 . ts
@ -109,7 +107,7 @@ live001138.ts
@@ -109,7 +107,7 @@ live001138.ts
}
[Test]
public void _ h lsPlaylistFilter_ShouldAddDiscontinuity( )
public void H lsPlaylistFilter_ShouldAddDiscontinuity( )
{
var start = new DateTimeOffset ( 2 0 2 1 , 1 0 , 9 , 8 , 0 , 0 , TimeSpan . FromHours ( - 5 ) ) ;
string [ ] input = NormalizeLineEndings (
@ -144,9 +142,8 @@ live001139.ts").Split(Environment.NewLine);
@@ -144,9 +142,8 @@ live001139.ts").Split(Environment.NewLine);
# EXT - X - VERSION : 6
# EXT - X - TARGETDURATION : 4
# EXT - X - MEDIA - SEQUENCE : 1 1 3 7
# EXT - X - DISCONTINUITY - SEQUENCE : 0
# EXT - X - DISCONTINUITY - SEQUENCE : 1
# EXT - X - INDEPENDENT - SEGMENTS
# EXT - X - DISCONTINUITY
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 1 - 1 0 - 0 9 T08 : 0 0 : 0 0.000 - 0 5 0 0
live001137 . ts
@ -161,7 +158,7 @@ live001139.ts
@@ -161,7 +158,7 @@ live001139.ts
}
[Test]
public void _ hlsPlaylistFilter_ShouldFilterOldSegments ( )
public void HlsPlaylistFilter_ShouldFilterOldSegmentsBeyondMax ( )
{
var start = new DateTimeOffset ( 2 0 2 1 , 1 0 , 9 , 8 , 0 , 0 , TimeSpan . FromHours ( - 5 ) ) ;
string [ ] input = NormalizeLineEndings (
@ -181,7 +178,7 @@ live001138.ts
@@ -181,7 +178,7 @@ live001138.ts
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 1 - 1 0 - 0 8 T08 : 3 4 : 5 7.320 - 0 5 0 0
live001139 . ts ").Split(Environment.NewLine);
TrimPlaylistResult result = _ hlsPlaylistFilter . TrimPlaylist ( start , start . AddSeconds ( 6 ) , input ) ;
TrimPlaylistResult result = _ hlsPlaylistFilter . TrimPlaylist ( start , start . AddSeconds ( 6 ) , input , 1 ) ;
result . PlaylistStart . Should ( ) . Be ( start . AddSeconds ( 8 ) ) ;
result . Sequence . Should ( ) . Be ( 1 1 3 9 ) ;
@ -191,9 +188,8 @@ live001139.ts").Split(Environment.NewLine);
@@ -191,9 +188,8 @@ live001139.ts").Split(Environment.NewLine);
# EXT - X - VERSION : 6
# EXT - X - TARGETDURATION : 4
# EXT - X - MEDIA - SEQUENCE : 1 1 3 9
# EXT - X - DISCONTINUITY - SEQUENCE : 0
# EXT - X - DISCONTINUITY - SEQUENCE : 1
# EXT - X - INDEPENDENT - SEGMENTS
# EXT - X - DISCONTINUITY
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 1 - 1 0 - 0 9 T08 : 0 0 : 0 8.000 - 0 5 0 0
live001139 . ts
@ -201,7 +197,7 @@ live001139.ts
@@ -201,7 +197,7 @@ live001139.ts
}
[Test]
public void _ h lsPlaylistFilter_ShouldFilterOldDiscontinuity( )
public void H lsPlaylistFilter_ShouldFilterOldDiscontinuity( )
{
var start = new DateTimeOffset ( 2 0 2 1 , 1 0 , 9 , 8 , 0 , 0 , TimeSpan . FromHours ( - 5 ) ) ;
string [ ] input = NormalizeLineEndings (
@ -224,23 +220,337 @@ live001139.ts").Split(Environment.NewLine);
@@ -224,23 +220,337 @@ live001139.ts").Split(Environment.NewLine);
TrimPlaylistResult result = _ hlsPlaylistFilter . TrimPlaylist ( start , start . AddSeconds ( 6 ) , input ) ;
result . PlaylistStart . Should ( ) . Be ( start . AddSeconds ( 8 ) ) ;
result . Sequence . Should ( ) . Be ( 1 1 3 9 ) ;
result . PlaylistStart . Should ( ) . Be ( start ) ;
result . Sequence . Should ( ) . Be ( 1 1 3 7 ) ;
result . Playlist . Should ( ) . Be (
NormalizeLineEndings (
@ "#EXTM3U
# EXT - X - VERSION : 6
# EXT - X - TARGETDURATION : 4
# EXT - X - MEDIA - SEQUENCE : 1 1 3 9
# EXT - X - MEDIA - SEQUENCE : 1 1 3 7
# EXT - X - DISCONTINUITY - SEQUENCE : 1
# EXT - X - INDEPENDENT - SEGMENTS
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 1 - 1 0 - 0 9 T08 : 0 0 : 0 0.000 - 0 5 0 0
live001137 . ts
# EXT - X - DISCONTINUITY
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 1 - 1 0 - 0 9 T08 : 0 0 : 0 4.000 - 0 5 0 0
live001138 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 1 - 1 0 - 0 9 T08 : 0 0 : 0 8.000 - 0 5 0 0
live001139 . ts
"));
}
[Test]
public void HlsPlaylistFilter_Should_Increment_DiscontinuityCount ( )
{
var start = new DateTimeOffset ( 2 0 2 2 , 5 , 2 5 , 2 0 , 8 , 0 , TimeSpan . FromHours ( - 5 ) ) ;
string [ ] input = NormalizeLineEndings (
@ "#EXTM3U
# EXT - X - VERSION : 6
# EXT - X - TARGETDURATION : 4
# EXT - X - MEDIA - SEQUENCE : 0
# EXT - X - DISCONTINUITY
# EXT - X - INDEPENDENT - SEGMENTS
# EXT - X - DISCONTINUITY
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 8 : 5 5.981 - 0 5 0 0
live000000 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 8 : 5 9.985 - 0 5 0 0
live000001 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 9 : 0 3.989 - 0 5 0 0
live000002 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 9 : 0 7.993 - 0 5 0 0
live000003 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 9 : 1 1.997 - 0 5 0 0
live000004 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 9 : 1 6.001 - 0 5 0 0
live000005 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 9 : 2 0.005 - 0 5 0 0
live000006 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 9 : 2 4.009 - 0 5 0 0
live000007 . ts
# EXTINF : 3.970633 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 9 : 2 8.013 - 0 5 0 0
live000008 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 9 : 3 1.983 - 0 5 0 0
live000009 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 9 : 3 5.987 - 0 5 0 0
live000010 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 9 : 3 9.991 - 0 5 0 0
live000011 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 9 : 4 3.995 - 0 5 0 0
live000012 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 9 : 4 7.999 - 0 5 0 0
live000013 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 9 : 5 2.003 - 0 5 0 0
live000014 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 0 9 : 5 6.007 - 0 5 0 0
live000015 . ts
# EXTINF : 3.970633 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 0 : 0 0.011 - 0 5 0 0
live000016 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 0 : 0 3.982 - 0 5 0 0
live000017 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 0 : 0 7.986 - 0 5 0 0
live000018 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 0 : 1 1.990 - 0 5 0 0
live000019 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 0 : 1 5.994 - 0 5 0 0
live000020 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 0 : 1 9.998 - 0 5 0 0
live000021 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 0 : 2 4.002 - 0 5 0 0
live000022 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 0 : 2 8.006 - 0 5 0 0
live000023 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 0 : 3 2.010 - 0 5 0 0
live000024 . ts
# EXTINF : 3.970633 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 0 : 3 6.014 - 0 5 0 0
live000025 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 0 : 3 9.985 - 0 5 0 0
live000026 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 0 : 4 3.989 - 0 5 0 0
live000027 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 0 : 4 7.993 - 0 5 0 0
live000028 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 0 : 5 1.997 - 0 5 0 0
live000029 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 0 : 5 6.001 - 0 5 0 0
live000030 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 0 0.005 - 0 5 0 0
live000031 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 0 4.009 - 0 5 0 0
live000032 . ts
# EXTINF : 3.970633 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 0 8.013 - 0 5 0 0
live000033 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 1 1.983 - 0 5 0 0
live000034 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 1 5.987 - 0 5 0 0
live000035 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 1 9.991 - 0 5 0 0
live000036 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 2 3.995 - 0 5 0 0
live000037 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 2 7.999 - 0 5 0 0
live000038 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 3 2.003 - 0 5 0 0
live000039 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 3 6.007 - 0 5 0 0
live000040 . ts
# EXTINF : 3.970633 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 4 0.011 - 0 5 0 0
live000041 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 4 3.982 - 0 5 0 0
live000042 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 4 7.986 - 0 5 0 0
live000043 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 5 1.990 - 0 5 0 0
live000044 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 5 5.994 - 0 5 0 0
live000045 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 5 9.998 - 0 5 0 0
live000046 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 0 4.002 - 0 5 0 0
live000047 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 0 8.006 - 0 5 0 0
live000048 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 1 2.010 - 0 5 0 0
live000049 . ts
# EXTINF : 3.970633 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 1 6.014 - 0 5 0 0
live000050 . ts
# EXTINF : 4.004000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 1 9.985 - 0 5 0 0
live000051 . ts
# EXTINF : 0.433767 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 2 3.989 - 0 5 0 0
live000052 . ts
# EXT - X - DISCONTINUITY
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 3 0.007 - 0 5 0 0
live000053 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 3 4.007 - 0 5 0 0
live000054 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 3 8.007 - 0 5 0 0
live000055 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 4 2.007 - 0 5 0 0
live000056 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 4 6.007 - 0 5 0 0
live000057 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 5 0.007 - 0 5 0 0
live000058 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 5 4.007 - 0 5 0 0
live000059 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 5 8.007 - 0 5 0 0
live000060 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 0 2.007 - 0 5 0 0
live000061 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 0 6.007 - 0 5 0 0
live000062 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 1 0.007 - 0 5 0 0
live000063 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 1 4.007 - 0 5 0 0
live000064 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 1 8.007 - 0 5 0 0
live000065 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 2 2.007 - 0 5 0 0
live000066 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 2 6.007 - 0 5 0 0
live000067 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 3 0.007 - 0 5 0 0
live000068 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 3 4.007 - 0 5 0 0
live000069 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 3 8.007 - 0 5 0 0
live000070 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 4 2.007 - 0 5 0 0
live000071 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 4 6.007 - 0 5 0 0
live000072 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 5 0.007 - 0 5 0 0
live000073 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 5 4.007 - 0 5 0 0
live000074 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 5 8.007 - 0 5 0 0
live000075 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 3 : 0 2.007 - 0 5 0 0
live000076 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 3 : 0 6.007 - 0 5 0 0
live000077 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 3 : 1 0.007 - 0 5 0 0
live000078 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 3 : 1 4.007 - 0 5 0 0
live000079 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 3 : 1 8.007 - 0 5 0 0
live000080 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 3 : 2 2.007 - 0 5 0 0
live000081 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 3 : 2 6.007 - 0 5 0 0
live000082 . ts ").Split(Environment.NewLine);
TrimPlaylistResult result = _ hlsPlaylistFilter . TrimPlaylist ( start , start . AddSeconds ( 2 2 0 ) , input ) ;
// result.PlaylistStart.Should().Be(start);
result . Sequence . Should ( ) . Be ( 5 6 ) ;
result . Playlist . Should ( ) . Be (
NormalizeLineEndings (
@ "#EXTM3U
# EXT - X - VERSION : 6
# EXT - X - TARGETDURATION : 4
# EXT - X - MEDIA - SEQUENCE : 5 6
# EXT - X - DISCONTINUITY - SEQUENCE : 2
# EXT - X - INDEPENDENT - SEGMENTS
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 4 0.441 - 0 5 0 0
live000056 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 4 4.441 - 0 5 0 0
live000057 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 4 8.441 - 0 5 0 0
live000058 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 5 2.441 - 0 5 0 0
live000059 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 1 : 5 6.441 - 0 5 0 0
live000060 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 0 0.441 - 0 5 0 0
live000061 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 0 4.441 - 0 5 0 0
live000062 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 0 8.441 - 0 5 0 0
live000063 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 1 2.441 - 0 5 0 0
live000064 . ts
# EXTINF : 4.000000 ,
# EXT - X - PROGRAM - DATE - TIME : 2 0 2 2 - 0 5 - 2 5 T20 : 1 2 : 1 6.441 - 0 5 0 0
live000065 . ts
"));
}
private static string NormalizeLineEndings ( string str ) = >
str
. Replace ( "\r\n" , "\n" )