@ -17,6 +17,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
@@ -17,6 +17,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Always randomize start points for all collections the first time they are used
- Previously, only collections scheduled during the first day of a playout build had their start points randomized
- Allow multiple ETV instances when multiple config folders are used
- Maintain collection progress when refreshing a classic playout
- Classic playouts save a checkpoint for each day they build, and refresh rewinds to the checkpoint for the current day
- Checkpoints were only saved when a build happened to stop on a day boundary, so playouts with long items (movies, long blocks) were often missing the checkpoint for the current day, and refreshing those restarted every collection from the beginning
- Checkpoints are now saved whenever a build crosses midnight
- Fix green line sometimes seen with NVIDIA and AMD/VAAPI encoding
- Both bugs were in ffmpeg, and ETV's patched ffmpeg 8.1.2 is required for the fixes
@ -166,7 +166,9 @@ public class ContinuePlayoutTests : PlayoutBuilderTestBase
@@ -166,7 +166,9 @@ public class ContinuePlayoutTests : PlayoutBuilderTestBase
}
playout.Anchor.NextStartOffset.ShouldBe(finish);
playout.ProgramScheduleAnchors.Count.ShouldBe(1);
// the continue anchor, plus a checkpoint for the midnight this build ended on
@ -216,7 +218,8 @@ public class ContinuePlayoutTests : PlayoutBuilderTestBase
@@ -216,7 +218,8 @@ public class ContinuePlayoutTests : PlayoutBuilderTestBase
@ -240,7 +243,8 @@ public class ContinuePlayoutTests : PlayoutBuilderTestBase
@@ -240,7 +243,8 @@ public class ContinuePlayoutTests : PlayoutBuilderTestBase
@ -329,9 +333,10 @@ public class ContinuePlayoutTests : PlayoutBuilderTestBase
@@ -329,9 +333,10 @@ public class ContinuePlayoutTests : PlayoutBuilderTestBase
result.AddedItems.Count.ShouldBe(53);
}
playout.ProgramScheduleAnchors.Count.ShouldBe(2);
// a checkpoint for each of the two midnights the build crossed, plus the continue anchor
@ -339,11 +344,14 @@ public class ContinuePlayoutTests : PlayoutBuilderTestBase
@@ -339,11 +344,14 @@ public class ContinuePlayoutTests : PlayoutBuilderTestBase
lastCheckpoint.EnumeratorState.Index.ShouldBe(3);
// we need to mess up the ordering to trigger the problematic behavior
// this simulates the way the rows are loaded with EF
@ -460,9 +468,10 @@ public class ContinuePlayoutTests : PlayoutBuilderTestBase
@@ -460,9 +468,10 @@ public class ContinuePlayoutTests : PlayoutBuilderTestBase
@ -115,6 +116,58 @@ public class MultiDayBuildTests : PlayoutBuilderTestBase
@@ -115,6 +116,58 @@ public class MultiDayBuildTests : PlayoutBuilderTestBase
$"[tz {TimeZoneInfo.Local.Id}] refresh reset collection progress (was {before}, now {after})");
$"[tz {TimeZoneInfo.Local.Id}] {missing.Count} day(s) in the build window had no checkpoint, "
+$"first: {missing.FirstOrDefault()}");
}
privatestaticintHeadIndex(Playoutplayout)=>
playout.ProgramScheduleAnchors
.Filter(a=>a.AnchorDateisnull)
@ -125,7 +178,10 @@ public class MultiDayBuildTests : PlayoutBuilderTestBase
@@ -125,7 +178,10 @@ public class MultiDayBuildTests : PlayoutBuilderTestBase
@ -139,9 +195,14 @@ public class MultiDayBuildTests : PlayoutBuilderTestBase
@@ -139,9 +195,14 @@ public class MultiDayBuildTests : PlayoutBuilderTestBase
@ -159,26 +220,29 @@ public class MultiDayBuildTests : PlayoutBuilderTestBase
@@ -159,26 +220,29 @@ public class MultiDayBuildTests : PlayoutBuilderTestBase
@ -2119,9 +2119,15 @@ public class NewPlayoutTests : PlayoutBuilderTestBase
@@ -2119,9 +2119,15 @@ public class NewPlayoutTests : PlayoutBuilderTestBase